Предыдущий Следующий

Шаг 9

Выполним второе задание. Для его выполнения нам необходимо используя только язык AVHDL описать поведение дешифратора. Впишите в конец файла laba2.vhd следующий текст:

library IEEE;
use IEEE.std_logic_1164.all;

entity task2 is
generic(maxdelay:time:= 20ns);
port (
indata:in STD_LOGIC_VECTOR (2 downto 0);
outdata: out STD_LOGIC_VECTOR (1 downto 0)
);
end entity task2;

architecture task2 of task2 is
begin
with indata select
outdata<="10" after maxdelay when "000" ,
"10" after maxdelay when "001" ,
"00" after maxdelay when "010" ,
"01" after maxdelay when "011" ,
"01" after maxdelay when "100" ,
"10" after maxdelay when "101" ,
"01" after maxdelay when "110" ,
"11" after maxdelay when others;
end architecture task2;

Секция entity описывает интерфейс. Входным вектором является indata, длиной 3 бита, а выходным outdata, длиной 2 бита. Заметим, что перед разделом описания портов находится раздел generic . Он определяет статическоую информацию для блока, к которому будут подключаться извне. Другими словами этот раздел обеспечивает постоянные значения для различных параметров. Тут могут задаваться временные параметры, ширина шин и т.д. В нашем случае константа maxdelay задает максимальную длительность времени прохождения сигнала от входов до выходов.

Вторым нововведением является конструкция with <variable1> select <statement>. В случае изменения значения переменной <variable1> ( в нашем случае indata) выполняется <statement> ( в нашем случае изменяется значение вектора outdata в зависимости от значения indata и это изменение устанавливается после периода времени равного maxdelay.


Предыдущий Следующий