ПЦУСБ/Лабораторная работа 1
- Лабораторная работа 1
- Лабораторная работа 2
- Лабораторная работа 3
Содержание |
Описание и моделирование системы логических функций
Задание
По таблице истинности системы логических функций составить две VHDL-модели и сравнить их на эквивалентность, выполнив моделирование на всех наборах значений входных переменных. Первая VHDL-модель системы функций должна быть построена по таблице истинности. Вторая VHDL-модель должна быть построена по минимизированной логической функции (также учитывать возможность реализации инверсии функции). Тестбенч должен:
- иметь структуру, показанную на рисунке 1, включающую 2 компонента (две VHDL модели, реализующих заданную систему функций)
- выполнять подачу входных воздействий
- выполнять сравнение выходных сигналов с VHDL моделей системы функций.
|
---|
Рисунок 1 – Структурная схема тестбенча (Edit) |
Рекомендуемый порядок выполнения работы
- Определить для каждой функции системы форму её реализации — прямую или инверсную .
- Минимизировать функцию, применив любой известный метод минимизации, например, с помощью карт Карно, диаграмм двоичного выбора и т. д.
- Составить первую VHDL-модель по таблице истинности, используя оператор
when ... else
и оператор назначения сигнала (<=). - Составить вторую VHDL-модель, описав минимизированную логическую функцию с помощью логических операторов (not, and, or, xor) и оператора назначения сигнала (<=).
- Составить тестирующую программу, порядок подачи тестирующие воздействий должен соответствовать порядку наборов из левой части таблицы истинности.
- Дополнительные требования:
- в интерфейсе VHDL-моделей 1 и 2 для входных/выходных портов использовать тип std_logic или std_logic_vector.
Задание:
y(1:0) x(2:0) 10 210 ---------- 11 000 01 001 01 010 00 011 10 100 00 101 01 110 00 111
y1 = ^x1 * ^x0 y0 = ^x2 * ^x1 + x1 * ^x0
Решение:
Файл: block1.vhd |
library ieee; use ieee.std_logic_1164.all; entity block1 is port ( x : in std_logic_vector(2 downto 0); y : out std_logic_vector(1 downto 0)); end block1; architecture tabl of block1 is begin -- tabl y <= "11" when x = "000" else "01" when x = "001" else "01" when x = "010" else "00" when x = "011" else "10" when x = "100" else "00" when x = "101" else "01" when x = "110" else "00" when x = "111" else "XX"; end tabl; |
Файл: block2.vhd |
library ieee; use ieee.std_logic_1164.all; entity block2 is port ( x : in std_logic_vector(2 downto 0); y : out std_logic_vector(1 downto 0)); end block2; architecture beh of block2 is begin -- beh y(0) <= (not x(2) and not x(1)) or (x(1) and not x(0)); y(1) <= not x(1) and not x(0); end beh; |
Файл: blocks_tb.vhd |
library ieee; use ieee.std_logic_1164.all; ------------------------------------------------------------------------------- entity blocks_tb is end blocks_tb; ------------------------------------------------------------------------------- architecture tb of blocks_tb is component block1 port ( x : in std_logic_vector(2 downto 0); y : out std_logic_vector(1 downto 0)); end component; component block2 port ( x : in std_logic_vector(2 downto 0); y : out std_logic_vector(1 downto 0)); end component; -- component ports signal x : std_logic_vector(2 downto 0) := "000"; signal y1 : std_logic_vector(1 downto 0); signal y2 : std_logic_vector(1 downto 0); signal ok : std_logic; begin -- tb -- component instantiation DUT1: block1 port map ( x => x, y => y1); -- component instantiation DUT2: block2 port map ( x => x, y => y2); x(0) <= not x(0) after 10 ns; x(1) <= not x(1) after 20 ns; x(2) <= not x(2) after 40 ns; ok <= '1' when y1 = y2 else 'X'; end tb; |
Скринкаст выполнения лабораторной работы в сокращенном объеме...
Требования к оформлению отчета
Отчет должен содержать:
- Исходную таблицу истинности
- Описание метода минимизации (для карт Карно: заполненные карты с обозначенными и пронумерованными областями оптимизации) и результирующее логическое выражение.
- Текст VHDL-модели 1, реализующей заданную функцию по таблице истинности
- Текст VHDL-модели 2, реализующей заданную функцию по минимизированным логическим уравнениям
- Текст VHDL-модели тестирующей программы (тестбенч) для всех наборов входных переменных, соответствующих таблице истинности.
- Временные диаграммы, соответствующие тестирующей программе, основных сигналов проекта (входные воздействия (сигнал
X
), выходные реакции VHDL-моделей:Y1
,Y2
, результат сравнения (сигналOk
)).
Задания
Варианты 1-11 выполняются для группы 013202.
Варианты 15-40 для группы 013201 (формула для расчета N+14, где N – номер по журналу; список группы у старосты.)
Входы | Вариант 1 | Вариант 2 | Вариант 3 | Вариант 4 | Вариант 5 | Вариант 6 | Вариант 7 | Вариант 8 |
---|---|---|---|---|---|---|---|---|
x(3:0) | a(2:0) | b(2:0) | c(2:0) | d(2:0) | e(2:0) | f(2:0) | g(2:0) | h(2:0) |
0 0 0 0
0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 |
0 0 0
0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 |
0 0 0
0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 |
1 0 0
0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 |
1 0 0
1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 |
0 0 0
0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 |
0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 1 0 |
0 0 0
0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 |
0 0 1
0 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 |
Входы | Вариант 9 | Вариант 10 | Вариант 11 | Вариант 12 | Вариант 13 | Вариант 14 | Вариант 15 | Вариант 16 |
---|---|---|---|---|---|---|---|---|
x(3:0) | a(2:0) | b(2:0) | c(2:0) | d(2:0) | e(2:0) | f(2:0) | g(2:0) | h(2:0) |
0 0 0 0
0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 |
0 0 0
0 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 |
0 0 0
0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 |
0 0 0
0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 1 |
1 0 0
1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 |
0 1 0
0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 |
0 0 0
0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 |
0 0 0
0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 |
0 0 0
0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 |
Входы | Вариант 17 | Вариант 18 | Вариант 19 | Вариант 20 | Вариант 21 | Вариант 22 | Вариант 23 | Вариант 24 |
---|---|---|---|---|---|---|---|---|
x(3:0) | a(2:0) | b(2:0) | c(2:0) | d(2:0) | e(2:0) | f(2:0) | g(2:0) | h(2:0) |
0 0 0 0
0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 |
0 0 0
0 0 1 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 0 |
0 0 0
0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 1 1 0 |
0 0 0
0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 0 |
0 0 0
0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 |
1 0 0
0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 |
1 1 0
1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 1 0 0 0 |
1 0 0
1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 |
0 0 0
0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 |
Входы | Вариант 25 | Вариант 26 | Вариант 27 | Вариант 28 | Вариант 29 | Вариант 30 | Вариант 31 | Вариант 32 |
---|---|---|---|---|---|---|---|---|
x(3:0) | a(2:0) | b(2:0) | c(2:0) | d(2:0) | e(2:0) | f(2:0) | g(2:0) | h(2:0) |
0 0 0 0
0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 |
0 0 0
1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 0 |
0 0 1
0 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 |
0 1 0
0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 1 1 0 |
0 0 0
0 0 1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 |
1 0 0
0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 1 |
1 0 0
1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 |
0 1 0
0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 |
0 0 0
0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 |
Входы | Вариант 33 | Вариант 34 | Вариант 35 | Вариант 36 | Вариант 37 | Вариант 38 | Вариант 39 | Вариант 40 |
---|---|---|---|---|---|---|---|---|
x(3:0) | a(2:0) | b(2:0) | c(2:0) | d(2:0) | e(2:0) | f(2:0) | g(2:0) | h(2:0) |
0 0 0 0
0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 |
0 0 0
0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 |
0 0 1
0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 0 |
0 0 0
0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 |
0 1 0
0 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 |
0 0 0
0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 |
0 0 0
0 1 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 |
1 0 0
1 1 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 |
1 0 0
1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 0 0 0 |