Шаг 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.