реклама на сайте
подробности

 
 
> Обычный триггер, Пытаюсь наваять в Libero
kkosik
сообщение Sep 10 2012, 11:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-09-12
Пользователь №: 73 445



Друзья, пытаюсь запустить симуляцию триггера, но ничегошеньки не получается. На работе пришлось осваивать Либеро и 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Ellochka
сообщение Sep 10 2012, 11:40
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 6-07-09
Из: Москва
Пользователь №: 50 965



В этом тестбенче моделируются входные сигнал С и 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.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
kkosik
сообщение Sep 10 2012, 11:49
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-09-12
Пользователь №: 73 445



Еллочка, спасибо, я представляю, что он делает примерно. Но не понимаю, почему не запускается?!
Исправил чу-чуть ТБ:
Код
-- 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

Не понимаю, в чем дело??
Go to the top of the page
 
+Quote Post
Ellochka
сообщение Sep 10 2012, 11:55
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 6-07-09
Из: Москва
Пользователь №: 50 965



Цитата(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 хоть что-нибудь запускал? возможно не подключены какие-нибудь библиотеки? С кодом все в порядке.
Go to the top of the page
 
+Quote Post
kkosik
сообщение Sep 10 2012, 11:59
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-09-12
Пользователь №: 73 445



Цитата
LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_unsigned.all;

Библиотеки только эти... Вроде ничего больше не добавлял. Да, другой проект работает, а мой нет...
Go to the top of the page
 
+Quote Post
kkosik
сообщение Sep 10 2012, 15:27
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-09-12
Пользователь №: 73 445



При попытке запуска ModelSim вылазит это:

# ** Error: (vsim-3170) Could not find 'E:\Libero_Projects\New1\simulation\presynth.testbench'.
Go to the top of the page
 
+Quote Post
kkosik
сообщение Sep 10 2012, 18:42
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 8-09-12
Пользователь №: 73 445



Понял, что проблема появляется где-то при создании проекта. Целый день потратил, но так и не разобрался...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 03:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016