- •Лабораторная работа №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);
- •Выводы по работе
Министерство образования РФ
Санкт-Петербургский государственный
Электротехнический университет «ЛЭТИ»
Кафедра ВТ
Отчет
по лабораторной работе N1
по Языкам проектирования аппаратуры
Вариант 1
Выполнили: студенты гр. 3371
Коптелов М. А.
Пронин В. О.
Проверил: преподаватель
Мурсаев А. Х.
Санкт-Петербург
2007
Лабораторная работа №1 «Описание комбинационных схем в языке vhdl»
Цель работы: изучение программы описания комбинационной схемы на языке VHDL, представляемой обучающемуся в качестве образца, и последующая ее модификация с применением некоторых базовых конструкций языка.
Исходный текст программы:
-----------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE work.util_1164.all;
USE STD.textio.ALL;
ENTITY lab1 IS
END lab1;
ARCHITECTURE test OF lab1 IS
SIGNAL stim_integer: integer;
SIGNAL z,x0,x1,x2: std_logic;
BEGIN
logic_unit:process(x0,x1,x2)
VARIABLE y1: std_logic;
begin
y1:=not x1;
z<=(x0 and x1 and x2) or
(x0 and y1 and (not x2));
END process;
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 test;
------------------------------------------------------------------------------
1. Изменим текст программы так, чтобы реализовать заданную функцию.
Заданная функция:
-
X2 X1 X0
Числовой эквивалент
Z
0 0 0
0
1
0 0 1
1
1
0 1 0
2
0
0 1 1
3
0
1 0 0
4
0
1 0 1
5
0
1 1 0
6
1
1 1 1
7
0
Реализуемая функция:
Текст измененной программы:
-----------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE work.util_1164.all;
USE STD.textio.ALL;
ENTITY lab1_8 IS
END lab1_8;
ARCHITECTURE test1 OF lab1_8 IS
SIGNAL stim_integer: integer;
SIGNAL z,x0,x1,x2: std_logic;
BEGIN
logic_unit:process(x0,x1,x2)
begin
z<=((not x0) and (not x1) and (not x2)) or (x0 and (not x1) and (not x2)) or ((not x0) and x1 and x2); -- реализуемая функция
END process;
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;
------------------------------------------------------------------------------
Временные диаграммы:
2. Перестроим программу таким образом, чтобы сигнал от генератора воздействий передавался на логическую схему в форме битового вектора.
Для этого перенесем объявление сигнала из блока stim_vector в раздел описания межблочных соединений, изменим список инициаторов процесса logic_unit и изменим в выражениях для вычисления переменных скалярные входные переменные на элементы вектора.
Текст перестроенной программы будет выглядеть след. образом:
-----------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE work.util_1164.all;
USE STD.textio.ALL;
ENTITY lab1_9 IS
END lab1_9;
ARCHITECTURE test1 OF lab1_9 IS
SIGNAL stim_integer: integer;
SIGNAL z: std_logic;
SIGNAL stim_vector: std_logic_vector(2 downto 0);
BEGIN
logic_unit:process(stim_vector)
begin
z<=((not stim_vector(0)) and (not stim_vector(1)) and (not stim_vector(2))) or
(stim_vector(0) and (not stim_vector(1)) and (not stim_vector(2))) or (
(not stim_vector(0)) and stim_vector(1) and stim_vector(2));
-- реализуемая функция в форме битового вектора
END process;
Stimulator: PROCESS