2015-10-02 7 views
2

Я пытаюсь моделировать следующий код:VHDL код моделирования

entity schal is port (SW : in bit_vector(7 downto 0); 
     LED : out bit_vector(7 downto 0)); 
end schal; 


architecture BEHAVIOUR of schal is 
begin 

INOUT_PROS : process (SW) 
begin 
    LED <= SW; 

end process INOUT_PROS; 
end BEHAVIOUR; 

Я написал это сделать файл

vsim work.schal 
restart 
view wave 
radix hex 
add wave -height 25 -radix default sim:/schal/* 

force SW 01000001 
run 20ns 
force SW 01000000 
run 20ns 

вот что я получаю:

enter image description here

, поскольку вы можете видеть, как симуляция влияет на Первый бит, но не весь вектор? любая идея, как мне настроить файл do, чтобы получить правильную симуляцию?

+0

Возможно, вам стоит взглянуть на команду 'force' в руководстве Modelsim. Возможно, он рассчитывает значение в шестнадцатеричном размере по умолчанию и игнорирует дополнительные символы ... –

ответ

2

Я думаю, что ваша команда force не использует правильный синтаксис. Вы пытаетесь заставить двоичное значение, но правильный способ сделать это будет force SW 2#01000001, с 2# с указанием двоичного значения.

В ModelSim перейдите в раздел «Справка»> «Документация»> «Книжный шкаф PDF», затем откройте «Справочное руководство по командам». Это содержит документацию по всем командам, включая force.

1

Это модный момент для чтения. См. Описание аргумента value <> в разделе «Аргументы силы» в Справочном руководстве по командам.

Одномерный массив символов перечисления может быть принужден как последовательность символьных литералов или как на основе числа с поразрядной 2, 8, 10 или 16. Например, следующие значения эквивалентны для сигнал типа bit_vector (от 0 до 3):

examples

Вы могли бы отметить, что IEEE Std 1076-2008 15.5.3 на основе литералы говорит нам:

Литеральный байт - это абстрактный литерал, выраженный в форме, которая явно указывает базу. Основание должно быть не менее двух и не более шестнадцати.

Имеются стандартные литералы на основе VHDL, которые не могут быть выражены командой силы.

заметить также использование на вопрос по

force SW 01000001 

совместим с последовательности литерных например, в Command Reference Manual. Смотрите следующий ПРИМЕЧАНИЕ:


Для чисел, основанных на VHDL, ModelSim транслирует каждый 1 или 0 до соответствующего значения для перечисленных типов этого числа. Перевод контролируется таблицей переводов в файле pref.tcl. Если ModelSim не может найти перевод для 0 или 1, он использует левую границу типа сигнала (type'left) для этого значения.

Также обратите внимание от значения на вопрос и сигнала, что право наиболее положение SW сек перечисления транслирует правильно. Это говорит о том, что поведение не соответствует команде force < value> description.

В терминах VHDL вы пытаетесь использовать строковый литерал, как показано в ответе scary_jeff, а не строковый литерал для предоставления значения. (Оба без кавычек).

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

В качестве раннего пользователя MTI Modelsim симулятор первоначально поддерживал только VHDL. Проблема заключается либо в симуляторе, либо в примере.

И, конечно же, использование тестового стенда VHDL вместо внедрения последовательности моделирования в файл do.

Этот метод будет переносим между VHDL тренажеров:

entity schal_tb is 
end entity; 

architecture foo of schal_tb is 
    signal SW: bit_vector(7 downto 0); 
    signal LED: bit_vector(7 downto 0); 
begin 
DUT: 
    entity work.schal 
     port map (
      SW => SW, 
      LED => LED 
     ); 
STIMULUS: 
    process 
    begin 
     SW <= "01000001"; 
     wait for 20 ns; 
     SW <= "01000000"; 
     wait for 20 ns; 
     wait for 60 ns; -- to show 100 ns on waveform 
     wait;    -- suspends process permenently 
    end process; 
end architecture; 

И дает:

schal_tb.png

Есть также онлайн VHDL TestBench контурные генераторы, такие как Doulos VHDL Testbench generator или этого Online VHDL Testbench Template Generator.