Vhdl ModelSim和SignalTap显示的信号电平不同

Vhdl ModelSim和SignalTap显示的信号电平不同,vhdl,modelsim,Vhdl,Modelsim,我有以下信号: signal sl_dac_busy : std_logic := '1'; 当我运行ModelSim模拟时,重置状态下的信号电平显示为高电平,而使用SignalTap的模拟显示为低电平(同样处于重置状态)的相同信号 信号电平不同的可能原因是什么?我是否需要为此信号设置(附加)初始值或 谢谢 在评论中与拉塞尔讨论后,我发现我的回答中的一些观点是错误的。当然,Quartus II支持上电后触发器的初始高值,但是,Altera FPGA上的实际映射会导致ModelSim和

我有以下信号:

signal sl_dac_busy      : std_logic := '1';
当我运行ModelSim模拟时,重置状态下的信号电平显示为高电平,而使用SignalTap的模拟显示为低电平(同样处于重置状态)的相同信号

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


谢谢

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

所有Altera FPGA上的可编程触发器(截至2016年)只能按照第11节“推荐的HDL编码样式”中的规定初始化为零:

在所有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;
ieee库;
使用ieee.std_logic_1164.all;
实体FF_init1是
端口(D,CLK:标准逻辑中;
Q:输出标准(U逻辑);
结束FF_init1;
FF_init1的体系结构rtl是
信号FF:std_逻辑:='1';
开始

仅寄存器支持FF分配信号值,FPGA运行时支持if合成。否则,在体系结构主体中使用常量或赋值。我已经更正了我的答案,因为实际原因是另一个原因。我在我的设计中也看到了这种倒置的行为,但直到现在才彻底调查它。只是对上面你的Verilog评论的一个评论。。。您分配的这些初始值不仅用于模拟。比特流使用它们将FPGA初始化为已知状态,这在编程FPGA时非常方便。@Russell我没有写任何关于Verilog的内容。不,Quartus II忽略VHDL信号的初始值,因为Altera FPGA(!)上的触发器总是在通电时初始化为零。与此相反,Xilinx FPGA上的触发器也支持高达1的电源。你是对的,我指的是VHDL,而不是Verilog。。。但我敢肯定你搞错了Altera FPGA总是在通电时初始化为零。据我所知,所有基于LUT的FPGA都可以通过位流进行初始化。“你能给我指出一些奥特拉文学中的其他说法吗?”拉塞尔看了看。如果此链接不起作用,请导航至Altera网站上的Cyclone 5数据表,并输入搜索词“注册通电”。前面提到的NOT门推回仅用于支持异步设置。在阅读文献后,似乎我对寄存器初始化的实际过程是错误的。我假设比特流能够将所有寄存器初始化为非零状态,但Altera不是这样做的。他们不做他们的门推回的事情,这是出于所有的意图和目的实现相同的事情。因此,您仍然可以在Altera FPGA中安全地初始化非零值,这比在Lattice或Xilinx FPGA上进行初始化要复杂一些。