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

Как в Modelsim вывести таблицу истинности?

Имеется комбинационное устройство:

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;

 

Как в Modelsim от Mentor вывести таблицу истинности для всех возможных значений на входе?

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


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

Имеется комбинационное устройство.

Как в Modelsim от Mentor вывести таблицу истинности для всех возможных значений на входе?

 

Либо подать на вход счетчик, потом ловить выход, либо создать тестовый файл, содержащий полный набор входных значений. В последнем случае можно туда же добавить ожидаемый отклик и сравнивать результаты - будет подобие автоматического тестирования.

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


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

Тестовый файл это обычный текстовый файл состоящий из строк вида

1111

0101

1010

И так далее, затем функциями Modelsim затаскиваете его в дизайн и подаете на вход DUT.

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

Изменено пользователем hsoft

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


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

Тестовый файл это обычный текстовый файл состоящий из строк вида

1111

0101

1010

И так далее, затем функциями Modelsim затаскиваете его в дизайн и подаете на вход DUT.

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

я правильно понимаю, что в самом файле с вышеуказанным vhdl кодом это все задается?

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


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

вам надо сделать файл верхнего уровня в него воткнуть ваш модуль New1

к нему подключить провода X и Y,

создать файл со всеми вариантам входов,

в файле верхнего уровня этот файл прочесть и на входы подать, информацию с выходов снять и в файл сохранить.

 

можно полный перебор вариантов сделать просто тупо счетчиком, тогда входной файл не нужен.

 

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


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

пытался повторить вот это:

http://we.easyelectronics.ru/plis/modelsim...ego-nachat.html

не получается. vhdl файлы скомпилировались.

симуляция не работает. ошибку выдает error loading design.

Объесните как в этой программе сделать это:

вам надо сделать файл верхнего уровня в него воткнуть ваш модуль New1

у меня по всей видимости модуль верхнего уровня не видит модуль нижнего уровня.

Изменено пользователем _alex__

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


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

уже неделю разобраться не могу.

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--use IEEE.STD_LOGIC_ARITH.ALL;
--use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.numeric_std.all;

entity New1 is
port(

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

architecture New1_functional of New1 is

signal x : std_logic_vector(4 downto 0) := "00000";
signal  x1,x2,x3,x4,x5 : std_logic;

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;

process (clk)
begin
if (CLK'event and CLK ='1') then
	x <= x+ "00001";
end if; 
end process; 

x1 <= x(0);
x2 <= x(1);
x3 <= x(2);
x4 <= x(3);
x5 <= x(4);

end New1_functional;

 

в моделсиме просто задайте тактовую частоту, для CLK

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


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

получилось таки с помощью счетчика вывести значения выходов в wave.

а как вывести значения выходов в файл в виде списка двоичных чисел?

 

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


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

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

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

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

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

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

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

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

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

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