2015-10-22 4 views
0

С Modelsim Я хотел бы протестировать код, но один сигнал всегда остается неинициализированным. Вот код пропущено, чтобы объяснить проблему с Modelsim:Проблема с объявлением сигнала Modelsim

-- Signal Declaration 
signal shifter   : std_logic_vector(0 to 6); 
signal led_out_temp   : std_logic;  


process (reset_reset_n) is 
begin 
    if reset_reset_n = '0' then 
     shifter <= (others => '0'); -- After reset_reset_n goes to '0' shifter is '0000000' 
     led_out_temp <= '0';   -- Always has the value 'U' 
    end if; 
end process; 

Когда я шагаю через него я могу проверить значения, но даже после того, как выйти из процесса сигнал «led_out_temp» является «U». Может кто-нибудь сказать мне, почему?

Спасибо!

+0

Этот минимальный пример не является полным. Можете ли вы предоставить полный испытательный стенд? Ваш процесс представляет собой комбинаторный процесс, поэтому 'led_out_temp' имеет поведение защелки. – Paebbels

+1

Недостаточно информации в вашем вопросе, чтобы дублировать проблему, это не [минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Общей причиной значений «U» является несколько драйверов со значением по умолчанию «U». – user1155120

ответ

0

два возможных способа проверить конструкцию

  1. Написать испытательный стенд, где вы назначаете reset_reset_n к нулю
  2. Смоделировать дизайн в Modelsim без тестбенча и заставить значение reset_reset_n до нуля перед запуском моделирования

shifter становится нулевым в вашей попытке? Если он также не будет равен нулю, вы, возможно, не вошли бы в , если.

[Edit: В том числе формат образца TestBench]

LIBRARY ieee; 
USE ieee.std_logic_1164.ALL; 
USE ieee.std_logic_unsigned.all; 

ENTITY test_tb IS 
END test_tb; 

ARCHITECTURE behavior OF test_tb IS 

    -- Component Declaration for the Unit Under Test (UUT) 
    COMPONENT name_of_your_design 
    PORT(
     reset_reset_n : IN std_logic; 
     input2 : IN std_logic 
     output : OUT std_logic_vector(3 downto 0); 
     ); 
    END COMPONENT; 

    -- Signal initializations 
    signal reset_reset_n_sig : std_logic := '0'; 
    signal input2_sig : std_logic := '0'; 
    signal output_sig : std_logic_vector(3 downto 0); 

BEGIN 

    -- Port mapping 
    instance_name: name_of_your_design PORT MAP (
     reset_reset_n => reset_reset_n_sig 
     input2 => input2_sig, 
     ouput => output_sig 
     ); 

    -- Give your test inputs here 
    process_to_give_test_inputs: process 
    begin   
     wait for 7 ns; 
     reset_reset_n <='1'; 
     wait for 3 ns; 
     reset_reset_n <='0'; 
     wait; 
    end process; 

END; 

Ref: http://vhdlguru.blogspot.in/2011/06/vhdl-code-for-4-tap-fir-filter.html

спасибо: @morteza kavakebi

+0

укажите код! –

Смежные вопросы