Перейти к содержанию
    

Как задать значения для проверки таблицы истинности?

Имеется устройство с таким vhdl кодом:

entity New1 is
port(
    x1,x2,x3,x4,x5 : in bit;
    y1,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y2,y20,y21,y22,y23,y24,y25,y26,y
27,y28,y29,y3,y30,y31,y32,y4,y5,y6,y7,y8,y9 : out bit
    );
end New1;

architecture New1_functional of New1 is
begin
y1 <= x1 and x2 and x3 and x4 and x5;
y10 <= (not x1) and x2 and x3 and x4 and (not x5);
y11 <= (not x1) and x2 and x3 and (not x4) and x5;
y12 <= x1 and x2 and x3 and x4 and (not x5);
y13 <= (not x1) and x2 and x3 and (not x4) and (not x5);
y14 <= (not x1) and x2 and (not x3) and x4 and x5;
y15 <= (not x1) and x2 and (not x3) and x4 and (not x5);
y16 <= (not x1) and x2 and (not x3) and (not x4) and x5;
y17 <= (not x1) and x2 and (not x3) and (not x4) and (not x5);
y18 <= (not x1) and (not x2) and x3 and x4 and x5;
y19 <= (not x1) and (not x2) and x3 and x4 and (not x5);
y2 <= x1 and (not x2) and x3 and x4 and (not x5);
y20 <= (not x1) and (not x2) and x3 and (not x4) and x5;
y21 <= (not x1) and (not x2) and x3 and (not x4) and (not x5);
y22 <= (not x1) and (not x2) and (not x3) and x4 and x5;
y23 <= x1 and x2 and x3 and (not x4) and x5;
y24 <= (not x1) and (not x2) and (not x3) and x4 and (not x5);
y25 <= (not x1) and (not x2) and (not x3) and (not x4) and x5;
y26 <= (not x1) and (not x2) and (not x3) and (not x4) and (not x5);
y27 <= x1 and x2 and x3 and (not x4) and (not x5);
y28 <= x1 and x2 and (not x3) and x4 and x5;
y29 <= x1 and x2 and (not x3) and x4 and (not x5);
y3 <= x1 and (not x2) and x3 and (not x4) and x5;
y30 <= x1 and x2 and (not x3) and (not x4) and x5;
y31 <= x1 and x2 and (not x3) and (not x4) and (not x5);
y32 <= x1 and (not x2) and x3 and x4 and x5;
y4 <= x1 and (not x2) and x3 and (not x4) and (not x5);
y5 <= x1 and (not x2) and (not x3) and x4 and x5;
y6 <= x1 and (not x2) and (not x3) and x4 and (not x5);
y7 <= x1 and (not x2) and (not x3) and (not x4) and x5;
y8 <= x1 and (not x2) and (not x3) and (not x4) and (not x5);
y9 <= (not x1) and x2 and x3 and x4 and x5;
end New1_functional;

Нужно проверить таблицу истинности для всех возможных значений на входе.

Помогите написать vhdl тестовый файл, содержащий полный набор входных значений и

вывода значений выходов таблицы истинности в stdout.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имеется устройство с таким vhdl кодом:

подайте на вход 5 битный счетчик, результаты запишите в файл, далее матлабом или ПО проверяете результат работы..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подайте на вход 5 битный счетчик, результаты запишите в файл, далее матлабом или ПО проверяете результат работы..

помогите написать код для подачи на мое устройство кода с двоичного 5-разрядного счетчика.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то так

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity New1_test
port(
y1,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y2,y20,y21,y22,y23,y24,y25,y26,y27,y2
8,y29,y3,y30,y31,y32,y4,y5,y6,y7,y8,y9 : out std_logic
);
end entity;

architecture tst of New1_test is

component New1 is
port(
    x1,x2,x3,x4,x5 : in std_logic;
    y1,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19,y2,y20,y21,y22,y23,y24,y25,y26,y
27,y28,y29,y3,y30,y31,y32,y4,y5,y6,y7,y8,y9 : out std_logic
    );
end component;

signal x1,x2,x3,x4,x5 : std_logic:='0';

begin

D1:New1
port map(
    x1,
    x2,
    x3,
    x4,
    x5,
    y1,
    y10,
    y11,
    y12,
    y13,
    y14,
    y15,
    y16,
    y17,
    y18, 
    y19,
    y2,
    y20,
    y21,
    y22,
    y23,
    y24, 
    y25,
    y26,
    y27,
    y28,
    y29,
    y3,
    y30,
     y31,
    y32,
    y4,
    y5,
    y6,
    y7,
    y8, 
     y9
    );

count:process
variable cnt_v:unsiged(4 downto 0):=to_unsigned(0,5);
constant step_c:unsigned(4 downto 0):=to_unsigned(1,5);
begin
    wait for 100 ns; x5<=std_logic(cnt_v(4)); x4<=std_logic(cnt_v(3)); x3<=std_logic(cnt_v(2)); x2<=std_logic(cnt_v(1)); x1<=std_logic(cnt_v(0));
   wait for 100 ns; cnt_v:=cnt_v+step_v;
end tst;

А еще с целью уменьшения в последующем строк и назначений, можно в самом проекте изначально объявлять сигналы векторами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...