我确实有以下信号:
signal sl_dac_busy : std_logic := '1';
当我运行ModelSim仿真时,复位状态中的信号电平显示高电平,而使用SignalTap的模拟显示低电平的相同信号等级(也处于重置状态)。
不同信号水平的原因可能是什么?我是否需要为此信号设置(附加)初始值或......?
谢谢!
答案 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;
将如下映射:
请勿忽略FF D
输入端的逆变器。上电后,FF本身被初始化为低电平,但由于Q
输出后的否定,它表现为实体Q
的输出FF_init1
的高电平初始化。在运行期间,FF在上升时钟边沿存储否定输入,在输出端再次取消。
输出端的逆变器可能会合并到后续逻辑中,因此,不能始终在输出逆变器后连接SignalTap。通常,您只能将SignalTap连接到FF输出本身,但此线与ModelSim中FF
的信号值具有相反的逻辑电平。