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

Моделирование вх/вых сигналов

Товарищи!!!Господа!!!Колеги!!!! Расскажите как вы тестируете VHDL описания схем с двунаправленными портами(inout). Я пробовал писать TestBench, пробовал набивать его в HDL Bencher. Результат один: двунапрвленные сигналы помечаются как неопределённые

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


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

А вы точно все правильно делаете(все в свое время). Попробуйте поставить PullUP на шину, может поможет.

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


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

Задавайте начальные значения сигналов типа

 

signal DQ: std_loigc :='Z';

sgnal temp: std_logic :='0';

 

В VHDL коде когда линии настроены на прием необходимо писать нечто вроде

 

DQ<='Z';

if rising_edge(clk) then

temp<= DQ;

end if;

 

Т.е. когда вы собираетесь читать из inout, то ее сначала необходимо перевести в 3-е состояние. В неопределенное состояние сигналы попадают если оба источника настроены как выходы.

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


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

Я присоединяюсь к вопросу. Но для Verilog. Как описать на нём разъём PCI?. Когда проект был маленьким и можно было по частям проверять -- это было одно, но когда приходится моделировать работу драйвера, да ещё DMA сверху... это ОООО.... Ужас!!! 8(

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


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

Товарищи!!!Господа!!!Колеги!!!! Расскажите как вы тестируете VHDL описания схем с двунаправленными портами(inout). Я пробовал писать TestBench, пробовал набивать его в HDL Bencher. Результат один: двунапрвленные сигналы помечаются как неопределённые

Да была такая проблема, давно правда. Шину ИСА запускал. Так вот помню шину данных (inout) необходимо на время записи (на енту самую шину) переводить в Z-состояние (в тестбенче ест-но).

Ну и в самом коде было примерно так:

SD <= data when wr_ena = '1' else "ZZZZZZZZ";

Все работало :biggrin:

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


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

Всем большое спасибо!!! Вроде разобрался

 

Я присоединяюсь к вопросу. Но для Verilog. Как описать на нём разъём PCI?. Когда проект был маленьким и можно было по частям проверять -- это было одно, но когда приходится моделировать работу драйвера, да ещё DMA сверху... это ОООО.... Ужас!!! 8(

 

Привожу VHDL модель которая у меня заработала. TestBench набивал в HDL Bencher, когда надо читать из (inout) шину переводил в Z-состояние. gab я Verilog пока не выучил так, что могу предложить только это...

 

entity qwqq is
   Port ( clk,r : in std_logic;
          q : inout std_logic_vector(3 downto 0));
end qwqq;
architecture Behavioral of qwqq is
Signal DF:std_logic_vector(3 downto 0);
begin
Q<=DF when r='0'else "ZZZZ";
process(clk)
begin
if (clk'event and clk='1')then
    if r='1'then DF<=Q;end if;
end if;
end process;
end Behavioral;

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


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

Вопрос моделирования двунаправленных сигналов (с использованием ModelSim) я решаю следующим образом.

Предположим, имеется модуль с контактами типа "inout". Для него создается тестовый файл (testbench) в котором подключается испытуемый модуль. Естественно, испытуемый модуль подключается к тестовым сигналам. Состояние сигналов, подключаемых к выводам компонента типа "inout" задается только в одном процессе(тестовом). Когда сигналу рисваивается 'Z' - он работает как выход.

Ниже приводится пример (испытание шинного формирователя).

 

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

 

ENTITY module_test IS

END module_test;

 

ARCHITECTURE behavior OF module_test IS

 

---- tested component declaration ----

COMPONENT bus_form

PORT(

A : INOUT std_logic_vector(7 downto 0);

B : INOUT std_logic_vector(7 downto 0);

DIRECT : IN std_logic -- when '1' A=>B else B=>A

);

END COMPONENT;

 

signal A_t : std_logic_vector(7 downto 0);

signal B_t : std_logic_vector(7 downto 0);

signal DIRECT_t : std_logic;

 

BEGIN

 

---- tested component installation ----

uut: bus_form PORT MAP(A => A_t, B => B_t, DIRECT => DIRECT_t,);

 

 

tb : process

begin

-- First test A=>B --

A_t <= "01010101";

B_t <= "ZZZZZZZZ";

DIRECT_t <= '1';

 

wait for 500 ns; -- pause

 

-- Second test B=>A --

A_t <= "ZZZZZZZZ";

B_t <= "00110011";

DIRECT_t <= '0';

 

wait for 500 ns; -- pause

 

 

end process;

 

 

END;

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


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

Это все хорошо конечно, НО а если у меня двунаправленный CE? Как мне тогда писать? Я для начала его не читаю, а сам выставляю просто CE<='1'; и ничего не выходит...

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


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

Я чего-то не совсем понял, что вы хотите?

 

Может это поможет.

test.txt

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


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

Товарищи!!!Господа!!!Колеги!!!! Расскажите как вы тестируете VHDL описания схем с двунаправленными портами(inout). Я пробовал писать TestBench, пробовал набивать его в HDL Bencher. Результат один: двунапрвленные сигналы помечаются как неопределённые

 

В модуле тестового воздействия можно ''H" и "L" использовать вместо "1" и "0", если сигнал описан как std_logic.

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


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

А зачем симулить inout. Можно создать модуль с шиной input и с шиной output, прекрасно отсимулить , а в вышестоящем модуле по иерархии объединить их в inout. Единственное, что нужно, это шину output сделать с третьим состоянием. Типа такого

 

output [7:0] bus;

reg [7:0] data;

reg dir;

 

assign bus=(dir)?data:8'hzz;

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


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

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

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

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

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

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

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

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

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

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