Проблема объявления сигнала 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'. Может кто-нибудь сказать мне, почему?

Спасибо!


person Norick    schedule 22.10.2015    source источник
comment
Этот минимальный пример не является полным. Можете ли вы предоставить полный тестовый стенд? Ваш процесс представляет собой комбинаторный процесс, поэтому led_out_temp имеет поведение защелки.   -  person Paebbels    schedule 22.10.2015
comment
В вашем вопросе недостаточно информации, чтобы воспроизвести проблему, это не минимальный, полный и проверяемый пример. Распространенной причиной значений `'U' является наличие нескольких драйверов со значением по умолчанию 'U'.   -  person    schedule 22.10.2015
comment
этот вопрос должен быть закрыт. добавление награды не делает вопрос лучше. Недостаточно информации, чтобы ответить на него.   -  person fgagnaire    schedule 20.07.2020


Ответы (1)


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

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

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

[Изменить: включая пример формата тестового стенда]

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;

Ссылка: https://vhdlguru.blogspot.com/2011/06/vhdl-code-for-4-tap-fir-filter.html

Спасибо: @morteza kavakebi

person vineeshvs    schedule 11.03.2017
comment
Процесс, который назначает сигнал, имеет драйвер для этого сигнала. Все его драйверы разрешаются с помощью функции разрешения пакета std_logic_1164. Разрешение может возвращать «U» по нескольким причинам, которые нельзя определить из фрагмента OP, и добавление вознаграждения не помогает. ОП не участвовал с 5 апреля 2019 г. и не предоставил минимальный, полный и проверяемый пример . - person ; 18.07.2020
comment
Код, включенный в ваш ответ, не кажется полезным. Задание вопроса в ответе обычно указывает на то, что у исходного поста есть проблемы с качеством, влияющие на его ценность в качестве поискового ресурса для тех, у кого похожие проблемы. См. Как работает система вознаграждений?. Ваша награда, похоже, бесполезна без дальнейшего участия ОП. Вы можете задать свой собственный вопрос по программированию, предоставив достаточно подробностей для ответа. Не удалось выполнить поиск Stackoverflow с терминами драйвер [vhdl] эффективно решен. - person ; 18.07.2020
comment
Ждем лучшего ответа. Я активировал награду в размере 100, срок действия которой скоро истечет - person vineeshvs; 21.07.2020