【问题标题】:Modelsim signal declaration issueModelsim 信号声明问题
【发布时间】:2015-10-22 06:53:17
【问题描述】:

我想使用 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'。谁能告诉我为什么?

谢谢!

【问题讨论】:

  • 这个最小的例子并不完整。你能提供一个完整的测试平台吗?您的进程是一个组合进程,因此led_out_temp 具有闩锁行为。
  • 您的问题中没有足够的信息来复制问题,这不是Minimal, Complete, and Verifiable example。 ''U' 值的一个常见原因是多个驱动程序的默认值为 'U'。
  • 该问题应该关闭。添加赏金并不能使它成为一个更好的问题。没有足够的信息来回答它。

标签: signals fpga modelsim


【解决方案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

【讨论】:

  • 分配信号的进程具有该信号的驱动程序。它的所有驱动程序都使用包 std_logic_1164 解析函数解析。由于多种原因,分辨率可能会返回“U”,其中一个无法从 OP 的 sn-p 中确定,并且添加赏金也无济于事。 OP 自 2019 年 4 月 5 日起没有参与,也没有提供Minimal, Complete, and Verifiable example
  • 您的答案包含的代码似乎没有用。在答案中提出问题通常表明原始帖子存在质量问题,影响其作为具有类似问题的搜索资源的价值。见How does the bounty system work?。如果没有 OP 的进一步参与,您的赏金似乎毫无用处。您可以提出自己的特定编程问题,同时提供足够的详细信息来回答。使用术语 [vhdl] 驱动程序有效解决的 Stackoverflow 搜索失败
  • 等待更好的答案。我启用了 100 的赏金,即将到期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多