ModelSim和SignalTap没有显示相同的信号电平

时间:2016-01-07 07:08:47

标签: vhdl modelsim

我确实有以下信号:

signal sl_dac_busy      : std_logic := '1';

当我运行ModelSim仿真时,复位状态中的信号电平显示高电平,而使用SignalTap的模拟显示低电平的相同信号等级(也处于重置状态)。

不同信号水平的原因可能是什么?我是否需要为此信号设置(附加)初始值或......?

谢谢!

1 个答案:

答案 0 :(得分:3)

在评论中与罗素讨论后,我发现,original and accepted答案中的一些观点是错误的。当然,Quartus-II 支持上电后触发器的初始高值,,Altera FPGA上的实际映射会导致ModelSim和SignalTap之间的差异。

所有Altera FPGA上的可编程触发器(截至2016年)只能初始化为零,如第11节“推荐的HDL编码样式”中Quartus Prime Pro Edition Handbook Volume 1: Design and Synthesis所述:

  

器件内核中的寄存器始终在所有Altera器件上上电至低(0)逻辑电平。

通过反转触发器(FF)数据输入和输出,然后将FF初始化为低电平而不是高电平,在Altera FPGA上仿真高(1)逻辑电平的初始值,如第11节所述。 ,这个FF的描述:

library ieee;
use ieee.std_logic_1164.all;
entity FF_init1 is
port (D, CLK : in  std_logic;
      Q      : out std_logic);
end FF_init1;
architecture rtl of FF_init1 is
  signal FF : std_logic := '1';
begin
  FF <= D when rising_edge(CLK);
  Q  <= FF;
end rtl;

将如下映射:

mapping

请勿忽略FF D输入端的逆变器。上电后,FF本身被初始化为低电平,但由于Q输出后的否定,它表现为实体Q的输出FF_init1的高电平初始化。在运行期间,FF在上升时钟边沿存储否定输入,在输出端再次取消。

输出端的逆变器可能会合并到后续逻辑中,因此,不能始终在输出逆变器后连接SignalTap。通常,您只能将SignalTap连接到FF输出本身,但此线与ModelSim中FF的信号值具有相反的逻辑电平。