Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обычный триггер
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
kkosik
Друзья, пытаюсь запустить симуляцию триггера, но ничегошеньки не получается. На работе пришлось осваивать Либеро и Actel-евские FPGA. А в универе 2 года назад был ISE, хотя сейчас уже ни черта не помню...

Основной вопрос в Test Bench'е - не пойму вообще как в нем что писать!

Собственно код:
Код
-- trigger1.vhd
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
LIBRARY IEEE;
USE IEEE.std_logic_unsigned.all;

entity dff is
port (data, clk : in std_logic;
      q : out std_logic);
end dff;


architecture behav of dff is
begin
process (clk) begin
    if (clk'event and clk='1') then
        q <= data;
    end if;
end process;
end behav;


Тэст:
Код
-- trigger1_tb.vhd
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
LIBRARY IEEE;
USE IEEE.std_logic_unsigned.all;

entity trigger1_tb is
end trigger1_tb;

architecture tb_arch of trigger1_tb is

component dff
    port(data : in std_logic;
         clk : in std_logic;
         q : out std_logic);    
end component;

shared variable END_SIM: boolean := false;

signal D : std_logic:='0';
signal C : std_logic:='0';
signal Q : std_logic:='0';

begin
    UUT : dff
    port map (data => D,
               clk => C,
                 q => Q);

CLK_GEN: process begin
    if not END_SIM then
    C <= '0';
    wait for 10 ns;
    C <= '1';
    wait for 10 ns;
    else wait;
    end if;
end process;

STIMULUS: process begin
    D <= '1';
    wait for 200 ns;
    D <= '0';
    wait for 200 ns;
    END_SIM := TRUE;
    wait;
   end process;



end tb_arch;


Помогите разобраться, плиз! crying.gif
Ellochka
В этом тестбенче моделируются входные сигнал С и data.

Процесс CLK_GEN: оператор wait 10ns означает задержку данного процесса на 10 ns, таким образом получается, что период синхросигнала равен 1/20ns = 50МГц.

Процесс Stimulus: сигнал data в первые 200 нс принимает значение 1, далее 0. Через 400 нс после начала моделирования сигнал END_SIM выставляется в TRUE и процесс CLK_GEN прекращает изменять значение C.

В прикрепленном файле - результат моделирования.

В тестбенче описывают поведение входных сигналов. Можно использовать оператор wait, как сделано в данном примере, можно использовать оператор after. Например,

SignIn <= '1', '0' after 100 ns, '1' after 1000 ns, '0' after 500 ns;

таким образом можно описать изменение сигнала SignIn.
kkosik
Еллочка, спасибо, я представляю, что он делает примерно. Но не понимаю, почему не запускается?!
Исправил чу-чуть ТБ:
Код
-- trigger1_tb.vhd
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
LIBRARY IEEE;
USE IEEE.std_logic_unsigned.all;

entity trigger1_tb is
end trigger1_tb;

architecture tb_arch of trigger1_tb is

component dff
    port(data : in std_logic;
         clk : in std_logic;
         q : out std_logic);    
end component;

--shared variable END_SIM: boolean := false;

signal D : std_logic:='0';
signal C : std_logic:='0';
signal Q : std_logic:='0';

begin
    UUT : dff
    port map (data => D,
               clk => C,
                 q => Q);

CLK_GEN: process begin
    --if not END_SIM then
    C <= '0';
    wait for 10 ns;
    C <= '1';
    wait for 10 ns;
    C <= '0';
    wait for 10 ns;
    C <= '1';
    wait for 10 ns;
    --else wait;
    --end if;
end process;

STIMULUS: process begin
    D <= '0';
    wait for 20 ns;
    D <= '1';
    wait for 20 ns;
    D <= '0';
    wait for 20 ns;
    --END_SIM := TRUE;
    --wait;
end process;

end;


НО!! ModelSim ругается:
Код
# ** Error: (vsim-3170) Could not find 'E:\Libero_Projects\Trigger1\simulation\presynth.testbench'.
# Error loading design
# Error: Error loading design
#        Pausing macro execution
# MACRO ./run.do PAUSED at line 15

Не понимаю, в чем дело??
Ellochka
Цитата(kkosik @ Sep 10 2012, 15:49) *
НО!! ModelSim ругается:
Код
# ** Error: (vsim-3170) Could not find 'E:\Libero_Projects\Trigger1\simulation\presynth.testbench'.
# Error loading design
# Error: Error loading design
#        Pausing macro execution
# MACRO ./run.do PAUSED at line 15

Не понимаю, в чем дело??



Я запускала в iSim'e, все нормально, да и визуально тоже. При чем тут 15 строка, не понятно. А ты в ModelSim'e хоть что-нибудь запускал? возможно не подключены какие-нибудь библиотеки? С кодом все в порядке.
kkosik
Цитата
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;

Библиотеки только эти... Вроде ничего больше не добавлял. Да, другой проект работает, а мой нет...
kkosik
При попытке запуска ModelSim вылазит это:

# ** Error: (vsim-3170) Could not find 'E:\Libero_Projects\New1\simulation\presynth.testbench'.
kkosik
Понял, что проблема появляется где-то при создании проекта. Целый день потратил, но так и не разобрался...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.