
- •Лабораторная работа №1 «Описание комбинационных схем в языке vhdl»
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Variable I:integer;
- •Variable stim_vector: std_logic_vector(2 downto 0);
- •Выводы по работе
Variable I:integer;
Variable stim_vector: std_logic_vector(2 downto 0);
BEGIN
FOR i IN 0 TO 15 LOOP
stim_integer <=i;
stim_vector :=to_vector(i,3);
x0<= stim_vector(0);
x1<= stim_vector(1);
x2<= stim_vector(2);
WAIT for 50 ns;
END LOOP;
ASSERT false REPORT "End of Stimulation !"
SEVERITY note;
WAIT;
END PROCESS;
END test1;
-----------------------------------------------------------------------------
Временные диаграммы:
Как видно из временных диаграмм, теперь результат совпадает с результатом, полученным в пункте 1 данной работы. Это можно объяснить тем, что вынеся оператор вычисления Z из процесса в общую операторную часть архитектурного тела, теперь вначале вычисляются сигналы Xi, а уже после выполнения процесса вычисляется и само значение Z.
9. Модифицируем программу так, чтобы учитывались задержки, полагая задержки перехода 0-1 и 1-0 равными для всех элементов.
Сделаем задержку равную 20 нс для всех элементов.
Текст программы:
-----------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE work.util_1164.all;
USE STD.textio.ALL;
ENTITY lab1_16 IS
END lab1_16;
ARCHITECTURE test1 OF lab1_16 IS
SIGNAL stim_integer: integer;
SIGNAL z,y1,y2,y3,x0,x1,x2: std_logic;
BEGIN
logic_unit:process(x0,x1,x2)
begin
y1 <= (not x0) and (not x1) and (not x2) after 20 ns; -- с уч. задержки
y2 <= x0 and (not x1) and (not x2) after 20 ns; -- с уч. задержки
y3 <= (not x0) and x1 and x2 after 20 ns; -- с уч. задержки
END process;
z <= y1 or y2 or y3 after 20 ns; -- с уч. задержки
Stimulator: PROCESS
Variable I:integer;
Variable stim_vector: std_logic_vector(2 downto 0);
BEGIN
FOR i IN 0 TO 15 LOOP
stim_integer <=i;
stim_vector :=to_vector(i,3);
x0<= stim_vector(0);
x1<= stim_vector(1);
x2<= stim_vector(2);
WAIT for 50 ns;
END LOOP;
ASSERT false REPORT "End of Stimulation !"
SEVERITY note;
WAIT;
END PROCESS;
END test1;
-----------------------------------------------------------------------------
Временные диаграммы:
Теперь мы наблюдаем все сигналы с учетом временных задержек логических элементов.
Выводы по работе
В результате выполнения данной работы мы усвоили общую структуру программы в языке VHDL и получили навыки работы в среде ModelSim.
Также в ходе выполнения данной работы мы получили начальные представления о процессах и их взаимодействиях, получили представление об основных формах представления сигналов и усвоили некоторые способы представления комбинационных схем.