Счётчик числа импульсов
ВВЕДЕНИЕ
Счётчик числа импульсов — устройство, на выходах которого получается двоичный (двоично-десятичный) код, определяемый числом поступивших импульсов. Счётчики могут строиться на двухступенчатых D-триггерах, T-триггерах и JK-триггерах.
Основной параметр счётчика — модуль счёта — максимальное число единичных сигналов, которое может быть сосчитано счётчиком. Счётчики обозначают через СТ (от англ. counter).
Счётчики классифицируют:
- по числу устойчивых состояний триггеров
- на двоичных триггерах
- на троичных триггерах
- на n-ичных триггерах
- по модулю счёта:
- двоично-десятичные (декада);
- двоичные;
- с произвольным постоянным модулем счёта;
- с переменным модулем счёта;
- по направлению счёта:
- суммирующие;
- вычитающие;
- реверсивные;
- по способу формирования внутренних связей:
- с последовательным переносом;
- с ускоренным переносом;
- с параллельным ускоренным переносом;
- со сквозным ускоренным переносом;
- с комбинированным переносом;
- кольцевые;
- по способу переключения триггера:
- синхронные;
- асинхронные;
- Счётчик Джонсона
1 ОПИСАНИЕ И ПРИНЦИП
РАБОТЫ МОДЕЛИРОВАННОГО
Микросхема КР1533ИЕ13 обеспечивает параллельную запись и режим счета. Счет происходит от 0 до 16(от 0000 до 1111), следовательно Кпер.=16. Входы D1, D2, D4, D8 служат для подачи сигналов кода при параллельной записи информации. Запись в триггеры счетчика происходит асинхронно при поступлении на вход PE лог. 0 независимо от состояния других входов. При лог. 1 на входе PE и лог. 0 на входе разрешения работы SR счетчик изменяет состояние по спадам импульсов отрицательной полярности на входе С. Направление счета определяется сигналом на входе CEP: при лог. 0 происходит счет вверх, при лог. 1 - вниз.
Для построения многоразрядных счетчиков у микросхемы есть два специальных выхода: последнего состояния Qn и переноса TC. На выходе Qn лог. 1 появляется при достижении состояния 16 при счете. В остальных случаях на выходе Qn - лог. 0. При наличии лог. 1 на выходе Qn и лог. 0 на входе SR одновременно с импульсом на входе С на выходе переноса TC появляется импульс отрицательной полярности и той же длительности.
Счетчик КР1533ИЕ13 не имеет входа установки в 0. Для этой цели на входы D1, D2, D4, D8 подают лог. 0, а на вход PE - импульс отрицательной полярности. Смена сигналов на входах CEP и SR должна происходить в момент переключения сигнала на входе С из лог. 0 в лог. 1 или в паузе между импульсами на входе С (то есть при лог. 1 на этом входе).
По импульсу отрицательной полярности на входе PE записываются сигналы кода числа 7 в триггеры счетчика (сигналы кода 0111 на входах D8, D4, D2, D0 не показаны). Импульс на его выходе TC формируется одновременно с третьим импульсом на входе С, по спаду которого счетчик переключается в состояние 0.
Если необходим реверсивный счетчик с максимально возможным быстродействием, его собирают по схеме. В этом счетчике все триггеры микросхем переключаются одновременно и его быстродействие не зависит от числа разрядов. Однако для каждого десятичного разряда, кроме первого, требуется элемент И-НЕ с числом входов, возрастающим по мере роста номера разряда.
В зависимости от
необходимого быстродействия
Рисунок 1 – Структура регистра ИЕ13.
Рисунок 2 – Условное обозначение и цоколевка ИЕ13.
Таблица 1 - Состояния мультиплексора ИЕ13.
2 РАЗРАБОТКА МОДЕЛИ ПОВЕДЕНЧЕСКОЙ
Поведенческая модель описывает отображение входов проекта в выходы, не раскрывая структуру проекта. Благодаря этому свойству поведенческая модель является основным средством формального описания проекта в следующих случаях:
- в
начале процесса
- при
наличии в проекте частей, представляющих
интеллектуальную
Разработаем поведенческую VHDL-модель микросхемы КР1533ИЕ13, условно-графическое изображение которой приведено на рисунке 2. Также на рисунке 2 показаны расположение всех выводов микросхемы. Информация и выводах служит исходными данными для построения VHDL-модуля entity, описывающего интерфейс данной микросхемы.
library IEEE;
use IEEE.std_logic_1164.all;
entity ie13 is
port(
d0: in std_logic;
d1: in std_logic;
d2: in std_logic;
d3: in std_logic;
pe: in std_logic;
cep: in std_logic;
cet: in std_logic;
sr: in std_logic;
c: in std_logic;
q0: inout std_logic;
q1: inout std_logic;
q2: inout std_logic;
q3: inout std_logic;
tc: inout std_logic);
end ie13;
Интерфейс содержит девять портов(pe, cet, cep, sr, c, d0..d3) с режимом in, 5 портов(q0..q3,tc) с режимом inout. Все порты имеют тип std_logic. Заметим, что число портов на два меньше числа выводов микросхемы. Порты соответствуют информационным выводам, исключая питание и общий.
VHDL-модуль architecture поведенческого уровня строится по таблице истинности таблица 1.
architecture Behavior of ie13 is
begin
zv: process(cep, cet, pe, sr, c, d0, d1, d2, d3)
begin
if sr='0' and c'Event and c='1' then q0<='0'; q1<='0'; q2<='0'; q3<='0'; tc<='0';
elsif sr='1' and (cep='0' or cet='0') and pe='1' then q0<=q0; q1<=q1; q2<=q2; q3<=q3;
elsif sr='1' and c'Event and c='1' and pe='0' then q0<=d0; q1<=d1; q2<=d2; q3<=d3;
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='0' and q1='0' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='0' and q1='0' and q0='1' then q1<='1'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='0' and q1='1' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='0' and q1='1' and q0='1' then q2<='1'; q1<='0'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='1' and q1='0' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='1' and q1='0' and q0='1' then q1<='1'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='1' and q1='1' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='0' and q2='1' and q1='1' and q0='1' then q3<='1'; q2<='0'; q1<='0'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='0' and q1='0' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='0' and q1='0' and q0='1' then q1<='1'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='0' and q1='1' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='0' and q1='1' and q0='1' then q2<='1'; q1<='0'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='1' and q1='0' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='1' and q1='0' and q0='1' then q1<='1'; q0<='0';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='1' and q1='1' and q0='0' then q0<='1';
elsif c'Event and c='1' and cep='1' and cet='1' and pe='1' and q3='1' and q2='1' and q1='1' and q0='1' then q3<='0'; q2<='0'; q1<='0'; q0<='0'; tc<='1';
end if;
end process zv;
end behavior;
Модуль начинается с зарезервированного слова architecture, за которым следуют имя модуля Behavior, зарезервированное слово of, имя ie13 модуля entity и процесса zv. Процесс описывает поведение микросхемы. После зарезервированного слова process следует список сигналов, события на которых запускают процесс, вызывая выполнение входящих в него операторов с первого по последний.
3 РАЗРАБОТКА ТЕСТОВОЙ ПРОГРАММЫ
Среда тестирования (Test_Bench) создается как отдельный объект проекта на языке VHDL. Все сигналы, воздействующие на тестируемый модуль, представленный VHDL-модулями ie13 и Behavior, генерируются внутри среды, поэтому VHDL-модуль entity среды с именем ie13_tb не включает параметров настройки и портов.
entity ie13_tb is
end ie13_tb;
architecture TB_ARCHITECTURE of ie13_tb is
component ie13
port(
d0: in STD_LOGIC;
d1: in STD_LOGIC;
d2: in STD_LOGIC;
d3: in STD_LOGIC;
pe: in STD_LOGIC;
cep: in STD_LOGIC;
cet: in STD_LOGIC;
c: in STD_LOGIC;
sr: in STD_LOGIC;
q0: inout STD_LOGIC;
q1: inout STD_LOGIC;
q2: inout STD_LOGIC;
q3: inout STD_LOGIC;
tc: inout STD_LOGIC);
end component;
signal d0: STD_LOGIC;
signal d1: STD_LOGIC;
signal d2: STD_LOGIC;
signal d3: STD_LOGIC;
signal pe: STD_LOGIC;
signal cep: STD_LOGIC;
signal cet: STD_LOGIC;
signal c: STD_LOGIC;
signal sr: STD_LOGIC;
signal q0: STD_LOGIC;
signal q1: STD_LOGIC;
signal q2: STD_LOGIC;
signal q3: STD_LOGIC;
signal tc: STD_LOGIC;
begin
UUT : ie13
port map(d0 => d0,
d1 => d1,
d2 => d2,
d3 => d3,
pe => pe,
cep => cep,
cet => cet,
c => c,
sr => sr,
q0 => q0,
q1 => q1,
q2 => q2,
q3 => q3,
tc => tc
);
process
begin
C<='1'; wait for 5ns;
C<='0'; wait for 5ns;
end process;
pe<='1', '0' after 10ns, '1' after 25ns;
sr<='0', '1' after 10ns, '0' after 190ns;
cep<='1', '0' after 30ns, '1' after 40ns;
cet<='1', '0' after 40ns, '1' after 60ns;
d0<='1', '0' after 30ns, '1' after 60ns, '1' after 120ns, '0' after 180ns;
d1<='1', '0' after 30ns, '1' after 60ns, '0' after 120ns, '1' after 180ns;
d2<='0', '1' after 30ns, '1' after 60ns, '0' after 120ns, '1' after 180ns;
d3<='0', '1' after 30ns, '0' after 60ns, '0' after 120ns, '0' after 180ns;
end TB_ARCHITECTURE;
Архитектура среды тестирования (VHDL-модуль architecture с именем TB_ARCHITECTURE) построена на смешанном структурно-потоковом уровне. Тестируемый модуль объявлен как компонент (component) с именем ie13 и формальными портами. Объявление компонента используется для определения одной его копии с именем UUT посредством параллельного оператора конкретизации компонента, входящего в исполнительную часть модуля architecture среды тестирования. Оператор конкретизации включает отображение формальных портов (port map) компонента на фактические одноименные сигналы, объявленные в разделе объявлений архитектуры TB_ARCHITECTURE. Все порты и сигналы имеют тип STD_LOGIC. Входные сигналы, для которых порты имеют режим in, являются внешними стимулами для тестируемого модуля и генерируются вне его. Они генерируются, за исключением сигналов s, в модуле TB_ARCHITECTURE посредством параллельных операторов назначения сигнала. Правая часть оператора содержит последовательность разделенных запятой транзакций, описывающих будущую временную диаграмму для сигнала, имя которого составляет левую часть оператора. Каждая транзакция представляется парой выражений. Первое выражение определяет значение сигнала. Второе выражение, стоящее после зарезервированного слова after, определяет время, через которое, начиная с текущего момента времени, сигнал получит значение. Второй элемент пары может опускаться, время в этом случае принимается равным нулю. Например, в результате выполнения оператора:
pe<='1', '0' after 10ns, '1' after 25ns;
Сигнал pe сначала получит значение '1', через 60нс получит значение '0' и еще через 25нс снова получит значение '1'. Таким образом, операторы назначения сигнала устанавливают последовательность событий на каждом сигнале. Для генерации тактирующих сигналов s используется специальное средство среды Active-VHDL. Это средство позволяет определить временные диаграммы сигналов, как это показано на рисунке 3.
Рисунок 3 - Генерация тактирующих сигналов.
Сигналы периодически изменяют значение с ‘0’ на ‘1’ и с ‘1’ на ‘0’, причем время цикла составляет 50ns, что обеспечивает частоту 20МГц. На протяжении 50% времени значение сигнала равно ‘0’ и на протяжении 50% времени значение равно ‘1’. VHDL-модуль configuration связывает копию UUT компонента ie13 с объектом проекта, представленным интерфейсом ie13 и архитектурным телом Behavior.
События на входных сигналах определяют порядок перезапуска процессов, моделирующих работу мультиплексоров. Процессы, в свою очередь, вычисляют временные диаграммы для выходных сигналов. На рисунке 4 показано окно временных диаграмм всех сигналов-портов микросхемы КР1533ИЕ13 в среде Active-VHDL. Окно содержит шкалу времени, изменяющегося в данном случае в диапазоне от 0нс до 200нс. Время работы микросхемы разделено на четыре фазы: сброс, параллельная загрузка, хранение и счет.
Рисунок 4 - Временные диаграммы входных и выходных сигналов регистра.
4 РАЗРАБОТКА МОДЕЛИ СТРУКТУРНОЙ
Структурная модель описывает состав компонентов проекта, типы компонентов, соединения выходов одних компонентов с входами других. Благодаря этому свойству структурная модель является основным средством формального детального описания проекта в следующих случаях:
- в
конце процесса проектирования,
когда строится или
- при
иерархической многоуровневой
Разработаем структурную VHDL-модель микросхемы КР1533ИЕ13, функциональная схема которой представлена на рисунке 5.
Рисунок 5 - функциональная схема микросхемы КР1533ИЕ13, с пронумерованными компонентами и цепями.
Функциональная схема состоит из четырех одинаковых фрагментов. Каждый из фрагментов схемы включает логические элементы И, ИЛИ, НЕ и триггер, который будет представлен как отдельный элемент. Все связи между элементами являются прямыми и пронумерованы, кроме тех нумерация которых совпадает с названием входа или выхода микросхемы.
Структурная 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. Методические указания по курсовому проектированию.