Автор работы: Пользователь скрыл имя, 27 Ноября 2013 в 22:47, курсовая работа
Микросхема КР1533ИЕ13 обеспечивает параллельную запись и режим счета. Счет происходит от 0 до 16(от 0000 до 1111), следовательно Кпер.=16. Входы D1, D2, D4, D8 служат для подачи сигналов кода при параллельной записи информации. Запись в триггеры счетчика происходит асинхронно при поступлении на вход PE лог. 0 независимо от состояния других входов. При лог. 1 на входе PE и лог. 0 на входе разрешения работы SR счетчик изменяет состояние по спадам импульсов отрицательной полярности на входе С. Направление счета определяется сигналом на входе CEP: при лог. 0 происходит счет вверх, при лог. 1 - вниз.
Функциональная схема состоит из четырех одинаковых фрагментов. Каждый из фрагментов схемы включает логические элементы И, ИЛИ, НЕ и триггер, который будет представлен как отдельный элемент. Все связи между элементами являются прямыми и пронумерованы, кроме тех нумерация которых совпадает с названием входа или выхода микросхемы.
Структурная VHDL-модель микросхемы и компонентов структуры:
library IEEE;
use IEEE.std_logic_1164.all;
architecture Structure of ie13 is
component i2
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component i3
port(A,B,C:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component i4
port(A,B,C,D:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component ili
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component neili
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component nei
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component inv
port(A:in STD_LOGIC; Y:out STD_LOGIC);
end component;
component trig2
port(A,B,C:in STD_LOGIC; Y,Z:out STD_LOGIC);
end component;
component nei5
port(A,B,C,D,E:in STD_LOGIC; Y:out STD_LOGIC);
end component;
signal
s1,s2,s3,s4,s5,s6,s7,s8,s9,
begin
Comp1:inv port map(pe,npe);
Comp2:inv port map(npe,pe1);
Comp3:i3 port map (pe,cep,cet,pcc);
Comp4:inv port map (cet,ncet);
Comp5:inv port map (c,nc);
Comp6:i2 port map (d0,npe,s1);
Comp7:i2 port map(pe1,q0,s2);
Comp8:ili port map(s2,pcc,s18);
Comp9:i2 port map(s1,s18,s19);
Comp10:inv port map(s19,sd0);
Comp11:i2 port map (d1,npe,s3);
Comp12:i2 port map (pe1,q1,s4);
Comp13:i2 port map (pcc,npe,s5);
Comp14:ili port map(s4,s5,s6);
Comp15:i2 port map(s3,s6,s7);
Comp16:inv port map(s7,sd1);
Comp17:i2 port map (d2,npe,s8);
Comp18:i2 port map(pe1,q2,s9);
Comp19:i3 port map(q0,q1,pcc,s10);
Comp20:ili port map(s9,s10,s11);
Comp21:i2 port map(s8,s11,s12);
Comp22:inv port map(s12,sd2);
Comp23:i2 port map (d3,npe,s13);
Comp24:i2 port map(pe1,q3,s14);
Comp25:i4 port map(q2,q1,q0,pcc,s15);
Comp26:ili port map(s14,s15,s16);
Comp27:i2 port map(s13,s16,s17);
Comp28:inv port map(s17,sd3);
Comp29:inv port map(sr,nsr);
Comp30:nei5 port map(ncet,nq0,nq1,nq2,nq3,tc);
Comp31:trig2 port map(sd0,nc,nsr,q0,nq0);
Comp32:trig2 port map(sd1,nc,nsr,q1,nq1);
Comp33:trig2 port map(sd2,nc,nsr,q2,nq2);
Comp34:trig2 port map(sd3,nc,nsr,q3,nq3);
end Structure;
library IEEE;
use IEEE.std_logic_1164.all;
entity i2 is
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end i2;
architecture DF_i2 of i2 is
begin
Y <= A and B;
end DF_i2;
library IEEE;
use IEEE.std_logic_1164.all;
entity i3 is
port(A,B,C:in STD_LOGIC; Y:out STD_LOGIC);
end i3;
architecture DF_i3 of i3 is
begin
Y <= A and B and C;
end DF_i3;
library IEEE;
use IEEE.std_logic_1164.all;
entity i4 is
port(A,B,C,D:in STD_LOGIC; Y:out STD_LOGIC);
end i4;
architecture DF_i4 of i4 is
begin
Y <= A and B and C and D;
end DF_i4;
library IEEE;
use IEEE.std_logic_1164.all;
entity ili is
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end ili;
architecture DF_ili of ili is
begin
Y <= A or B;
end DF_ili;
library IEEE;
use IEEE.std_logic_1164.all;
entity neili is
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end neili;
architecture DF_neili of neili is
begin
Y <= not(A or B);
end DF_neili;
library IEEE;
use IEEE.std_logic_1164.all;
entity nei is
port(A,B:in STD_LOGIC; Y:out STD_LOGIC);
end nei;
architecture DF_nei of nei is
begin
Y <= not(A and B);
end DF_nei;
library IEEE;
use IEEE.std_logic_1164.all;
entity inv is
port(A:in STD_LOGIC; Y:out STD_LOGIC);
end inv;
architecture DF_inv of inv is
begin
Y <= not A ;
end DF_inv;
library IEEE;
use IEEE.std_logic_1164.all;
entity trig2 is
port(A,B,C:in STD_LOGIC; Y,Z:out STD_LOGIC);
end trig2;
architecture DF_trig2 of trig2 is
begin
T2: process(A,B,C)
Begin
if C='0' then Y<='0'; Z<='1';
elsif B'Event and B='1' then Y<=A; Z<=not A;
end if;
end process T2;
end DF_trig2;
library IEEE;
use IEEE.std_logic_1164.all;
entity nei5 is
port(A,B,C,D,E:in STD_LOGIC; Y:out STD_LOGIC);
end nei5;
architecture DF_nei5 of nei5 is
begin
Y <= (not A) and (not B) and (not C) and (not D) and (not E);
end DF_nei5;
Это VHDL-модуль architecture структурного уровня. Уровень модуля определяется наличием в нем таких типично «структурных» конструкций, как объявление компонента и конкретизация компонента. Объявление выполняется для каждого нового типа компонента. Конкретизация выполняется для каждой отдельной копии компонента в структуре. В рассматриваемую микросхему входят пять типов и семнадцать копий компонентов. Типы компонентов именуются идентификаторами i2, i3, inv, trig2, nei5. Копии компонентов именуются идентификаторами Comp1,…,Comp17,… . Связи между входами и выходами копий компонентов представляются сигналами.
Объявление компонента начинается с зарезервированного слова component, за которым следует имя компонента. Далее объявляются формальные параметры настройки (generic) и порты (port) компонента. Для каждого указываются имя, режим (in, out, inout) и тип или подтип. Объявление заканчивается парой зарезервированных слов end component. Так, первый объявляемый компонент имеет имя i2 и формальные порты A, B, Y. Все порты имеют тип STD_LOGIC. Первые два являются входными (режим in), третий – выходным (режим out). За объявлением компонентов следует объявление сигналов, используемых для представления связей между входами и выходами компонентов. В рассматриваемой структурной модели связи представляются сигналами s0,…,s19,… . Объявление сигналов начинается с зарезервированного слова signal, за которым следуют имена сигналов, их тип STD_LOGIC. Начальное значение сигналов устанавливается по умолчанию. Им является первое значение перечислимого типа STD_LOGIC, т.е. значение ‘U’.
Конкретизация компонента начинается с определения имени для копии компонента. За именем копии через символ ‘:’ следует имя компонента, введенное в его объявлении. Описание отображения параметров настройки начинается зарезервированными словами generic map, отображения портов – зарезервированными словами port map. Параметры настройки являются для компонента константами, порты – сигналами. Отображение назначает формальным параметрам или портам фактические константы или сигналы, объявленные за пределами компонента. Назначение может быть позиционным, ключевым или смешанным. Позиционное назначение использовано при конкретизации компонента Comp1. Формальному порту A ставится в соответствие входной порт pe микросхемы, порту Y – сигнал npe.
Компонентам архитектурного тела структурного уровня ставятся в соответствие объекты проекта следующего уровня иерархии. Соответствие устанавливается с помощью VHDL-модуля configuration. Каждый объект описывается двумя модулями: модулем entity и модулем architecture. Имена модулей отличаются в общем случае от имени, используемом в объявлении компонента. Имена параметров настройки и портов модуля entity также отличны (но не обязательно) от имен формальных параметров и портов компонента. Компоненту с именем i2, объявленному в архитектуре с именем Structure, ставятся в соответствие одноименный модуль entity и модуль architecture с именем DF_i2. Формальные порты A, B, Y компонента совпадают по имени с фактическими портами модуля entity. Соответствие между формальными и фактическими портами позиционное. Модуль architecture включает единственный параллельный оператор назначения сигнала, устанавливающий в качестве значения выходного порта Y значение выражения A and B.
5 РАЗРАБОТКА МОДЕЛИ ПОТОКОВОЙ
Потоковая модель является промежуточной
между поведенческой и
Разработаем потоковую VHDL-модель микросхемы КР1533ИЕ13, функциональная схема которой представлена на рисунке 5, а в разделе 4 представлена ее структурная VHDL-модель. Для всех внутренних соединений схемы введем локальные сигналы и выразим одни сигналы через другие, воспользовавшись параллельными операторами назначения сигнала:
architecture Data_Flow of ie13 is
signal s1,s2,s3,s4,s5,s6,s7,s8,s9,
begin
s1 <= d0 and npe;
s2 <= pe1 and q0;
s3 <= d1 and npe;
s4 <= pe1 and q1;
s5 <= pcc and npe;
s6 <= s4 or s5;
s7 <= s3 and s6;
s8 <= d2 and npe;
s9 <= pe1 and q2;
s10 <= q0 and q1 and pcc;
s11 <= s9 or s10;
s12 <= s8 and s11;
s13 <= d3 and npe;
s14 <= pe1 and q2;
s15 <= q2 and q1 and q0 and pcc;
s16 <= s14 or s15;
s17 <= s13 and s16;
s18 <= s2 and pcc;
s19 <= s1 and s18;
sd0 <= not s19;
sd1 <= not s7;
sd2 <= not s12;
sd3 <= not s17;
npe <= not pe;
pe1 <= not npe;
pcc <= pe and cep and cet;
ncet <= not cet;
nc <= not c;
nsr <= not sr;
process (sd0,nc,nsr)
begin
if nsr='0' then q0<='0'; nq0<='1';
elsif nc'Event and nc='1' then q0<=sd0; nq0<=not sd0;
end if;
end process;
process (sd1,nc,nsr)
begin
if nsr='0' then q1<='0'; nq1<='1';
elsif nc'Event and nc='1' then q1<=sd1; nq1<=not sd1;
end if;
end process;
process (sd2,nc,nsr)
begin
if nsr='0' then q2<='0'; nq2<='1';
elsif nc'Event and nc='1' then q2<=sd2; nq2<=not sd2;
end if;
end process;
process (sd3,nc,nsr)
begin
if nsr='0' then q3<='0'; nq3<='1';
elsif nc'Event and nc='1' then q3<=sd3; nq3<=not sd3;
end if;
end process;
tc <= (not ncet) and (not nq0) and (not q1) and (not q2) and (not nq3);
end Data_Flow;
Левая часть оператора содержит имя сигнала, будущая временная диаграмма которого определяется правой частью оператора. Правая часть состоит из последовательности транзакций. В процессе компиляции VHDL-модели, каждый параллельный оператор назначения сигнала автоматически трансформируется в отдельный оператор process, имя которого совпадает с именем оператора назначения сигнала (если такое имеется). В список чувствительности процесса включаются имена всех сигналов, входящих в правую часть оператора назначения. В исполнительную часть процесса включается один последовательный оператор назначения сигнала, который в отношении левой части и транзакций копирует исходный параллельный оператор. Заметим, если исходный оператор является условным или селективным, то в исполнительную часть процесса включаются также условные операторы if или селективный оператор case. Далее процесс со списком чувствительности трансформируется в процесс без такого списка, при этом в конец исполнительной части вставляется последовательный оператор ожидания.
Имитационное
моделирование потоковой VHDL-
Рисунок 6 - Временные диаграммы входных, выходных и внутренних сигналов
ЗАКЛЮЧЕНИЕ
В процессе выполнения моделирования микросхемы КР1533ИЕ13 была разработана поведенческая модель устройства poved_model, тестовая программа tb по средствам Test Bench, структурная модель stukturnaya_model и потоковая модель potokovaya_model. Временные диаграммы соответствуют таблице истинности микросхемы КР1533ИЕ13.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Учебник VHDL.
2. Методические указания по курсовому проектированию.