«…Труд избавляет человека от трех великих зол: скуки, порока, нужды…»

ПЦУСБ/Лабораторная работа 1 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
м (Задания)
(Рекомендуемый порядок выполнения работы)
Строка 25: Строка 25:
 
# Дополнительные требования:  
 
# Дополнительные требования:  
 
#* в интерфейсе VHDL-моделей 1 и 2 для входных/выходных портов использовать тип std_logic или std_logic_vector.
 
#* в интерфейсе VHDL-моделей 1 и 2 для входных/выходных портов использовать тип std_logic или std_logic_vector.
 +
 +
 +
{{Hider|Супер шпаргалка}}
 +
 +
Задание:
 +
 +
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
 +
 +
<m>y_1 = \overline{x}_1 \overline{x}_0</m>
 +
 +
<m>y_0 = \overline{x}_2 * \overline{x}_1 + x_1 * \overline{x}_0</m>
 +
 +
Решение:
 +
 +
{{Hider|Листинг VHDL модели по таблице истинности (файл block1.vhd)}}
 +
{{Файл|block1.vhd|
 +
<source lang="vhdl">
 +
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;
 +
</source>
 +
}}
 +
{{Hider|end}}
 +
 +
 +
{{Hider|Листинг VHDL-модели по минимизированной системе логических функций (файл block2.vhd)}}
 +
{{Файл|block2.vhd|
 +
<source lang="vhdl">
 +
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;
 +
</source>
 +
}}
 +
{{Hider|end}}
 +
 +
 +
{{Hider|Листинг тестбенча (файл blocks_tb.vhd)}}
 +
{{Файл|blocks_tb.vhd|
 +
<source lang="vhdl">
 +
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;
 +
 +
-------------------------------------------------------------------------------
 +
 +
configuration block2_tb_tb_cfg of block2_tb is
 +
  for tb
 +
  end for;
 +
end block2_tb_tb_cfg;
 +
 +
-------------------------------------------------------------------------------
 +
</source>
 +
}}
 +
{{Hider|end}}
 +
 +
[http://www.bsuir.by/vhdl/wp-content/uploads/2013/labs/lab01_screencast.flv Скринкаст] выполнения лабораторной работы в сокращенном объеме...
 +
 +
<html>
 +
<object  width="1024" height="768">
 +
    <param name="movie" value="/wiki/extensions/FlvHandler/flowplayer/flowplayer-3.1.3.swf" />
 +
    <param name="allowfullscreen" value="true" />
 +
    <embed type="application/x-shockwave-flash"
 +
            width="1024" height="768"
 +
          allowfullscreen="true"
 +
          src="/wiki/extensions/FlvHandler/flowplayer/flowplayer-3.1.3.swf"
 +
          flashvars='config={"playlist":[ {"url":"http://www.bsuir.by/vhdl/wp-content/uploads/2013/labs/lab01_screencast.flv","autoPlay":false,"fadeInSpeed":0} ] }' />
 +
</object>
 +
</html>
 +
 +
{{Hider|end}}
  
 
=== Требования к оформлению отчета ===
 
=== Требования к оформлению отчета ===

Версия 21:40, 13 сентября 2013

Лекции ПЦУСБ

Лекции

Практические
Тесты

Лабораторные

Доп. материалы

Содержание

Описание и моделирование системы логических функций

Задание

По таблице истинности системы логических функций составить две VHDL-модели и сравнить их на эквивалентность, выполнив моделирование на всех наборах значений входных переменных. Первая VHDL-модель системы функций должна быть построена по таблице истинности. Вторая VHDL-модель должна быть построена по минимизированной логической функции (также учитывать возможность реализации инверсии функции). Тестбенч должен:

  • иметь структуру, показанную на рисунке 1, включающую 2 компонента (две VHDL модели, реализующих заданную систему функций)
  • выполнять подачу входных воздействий
  • выполнять сравнение выходных сигналов с VHDL моделей системы функций.
Рисунок 1 – Структурная схема тестбенча (Edit)

Рекомендуемый порядок выполнения работы

  1. Определить для каждой функции системы форму её реализации — прямую или инверсную .
  2. Минимизировать функцию, применив любой известный метод минимизации, например, с помощью карт Карно, диаграмм двоичного выбора и т. д.
  3. Составить первую VHDL-модель по таблице истинности, используя оператор when ... else и оператор назначения сигнала (<=).
  4. Составить вторую VHDL-модель, описав минимизированную логическую функцию с помощью логических операторов (not, and, or, xor) и оператора назначения сигнала (<=).
  5. Составить тестирующую программу, порядок подачи тестирующие воздействий должен соответствовать порядку наборов из левой части таблицы истинности.
  6. Дополнительные требования:
    • в интерфейсе VHDL-моделей 1 и 2 для входных/выходных портов использовать тип std_logic или std_logic_vector.

Требования к оформлению отчета

Отчет должен содержать:

  1. Исходную таблицу истинности
  2. Описание метода минимизации (для карт Карно: заполненные карты с обозначенными и пронумерованными областями оптимизации) и результирующее логическое выражение.
  3. Текст VHDL-модели 1, реализующей заданную функцию по таблице истинности
  4. Текст VHDL-модели 2, реализующей заданную функцию по минимизированным логическим уравнениям
  5. Текст VHDL-модели тестирующей программы (тестбенч) для всех наборов входных переменных, соответствующих таблице истинности.
  6. Временные диаграммы, соответствующие тестирующей программе, основных сигналов проекта (входные воздействия (сигнал 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