Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Поведенческое описание



Функционирование устройства рассматривается как процесс последовательного вычисления выражений, входящих в process. Толчком к запуску процесса является изменение (event -событие) какого либо сигнала, из входящих в список “воспринимаемых” сигналов (sensitivity list). Этот список внешне очень похож на список параметров в других языках высокого уровня. Рассмотрим поведенческую модель декодера dec2х4 (рис.1.3). Декларация интерфейса его уже приводилась, а теперь она будет пополнена архитектурой поведенческого типа.

entity dec2x4 is

port(a, b, enable: in BIT; z: out BIT_VECTOR (0 to 3));

end dec2x4;

architecture dec_seq of dec2x4 is

begin

process (a, b, enable)

variable abar, bbar: BIT;

begin

abar:= not a; --выражение 1

bbar:= not b; -- выражение 2

If enable = ‘1’ then -- выражение 3

z(3) <= not (a and b); -- выражение 4

z(2) <= not (a and bbar); -- выражение 5

z(1) <= not (abar and b); -- выражение 6

z(0) <= not (abar and bbar); -- выражение 7

else z <= “1111”;

end if;

end process;

end dec_seq;

Архитектура имеет свое имя dec_seq. О принадлежности архитектуры к описанию интерфейса dec2х4 говорит выражение: dec_seq of dec2x4. Список сигналов, которыми запускается процесс, дан в скобках: process (a, b, enable). До начала процесса, если необходимо, декларируются переменные variable abar, bbar: BIT. Зона действия их ограничена данным процессом (от begin до end process). Предположим, что в момент T произошло изменение сигнала а. Новое значение переменной abar (выражение 1) вычисляется и присваивается без задержки – мгновенно (в качестве знака присваивания в данном случае используется =). Без задержки будут вычислены выражения 2 и 3.

Далее в ходе процесса одно за другим вычисляются выражения от 4 до 7, а новые значения сигналам z(0), z(1), z(2), z(3) будут присвоены (в качестве символа оператора присвоения используется <=) лишь через некоторую, пусть даже фиктивную (бесконечно малую), задержку D. Это существенное отличие процедур присвоения для переменных и для сигналов.

Рассмотрим пример мультиплексора 4х1 (рис.1.4). Четыре входных сигнала A, B, C и D выводятся через один порт Z. Коммутация осуществляется сигналом CTRL.

Рис. 1.4. Мультиплексор 4х1.

entity MUX is

port (A, B, C, D: in BIT; CTRL: in BIT_VECTOR(0 to 1);

Z: out BIT);

end MUX;

architecture MUX_BEHAVIOR of MUX is

begin

PMUX: process (A, B, C, D, CTRL)

variable TEMP: BIT;

begin

case CTRL is

when "00" => TEMP:= A:

when "01" => TEMP:= B;

when "10" => TEMP:= C;

when "11" => TEMP:= D;

end case;

Z <= TEMP;

end process PMUX;

end MUX_BEHAVIOR;

Архитектура получила название MUX_BEHAVIOR, процесс имеет ярлык PMUX. Переменной TEMP в зависимости от значения сигнала CTRL присваивается значение одного из входных портов: A, когда CTRL имеет значение “00”; B, когда CTRL имеет значение “01”; A, когда CTRL имеет значение “10”; D, когда CTRL имеет значение “11”.

Для описания синхросигналов обычно используется атрибу EVENT. Он истинен когда происходит “событие” - изменение сигнала. Например, поведение D-триггера, показанного на рис.1.5, можно описать так:

Рис.1.5. D-триггер

entity dff is

port (data, clk: in BIT

q, notq: out BIT);

end dff;

architecture behav of dff is

begin

process (clk)

begin

if (clk’event and clk = ‘1’) then

q <= data;

notq <= not data;

end if;

end process;

end behav;

Выражение (clk’event and clk = ‘1’) задает условие: если сигнал clk меняется с ‘0’ на ‘1’





Дата публикования: 2015-03-29; Прочитано: 193 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...