Quartus® II 合成在编译 VHDL 源文件(提取类型整数的寄存器信号)时可能会生成上述警告。尤其是, 如果您在声明信号时不分配初始值,Quartus II 合成假定整数范围的左端是寄存器的上电值。如果您的代码稍后会将异步重置值应用于此寄存器,不等于假定的上电级别,Quartus II 合成使用复位值作为上电值,并生成上述警告消息。
例如,如果您的代码检测到类似信号:
signal count_down : integer range 0 to 255;
然后应用像这样的重置值:
process (clk, reset)
begin
if reset = '1' then
count_down elsif (rising_edge(clk)) then ...
Quartus® II 合成生成上述警告,并向count_down寄存器应用较高的上电值。
为了避免此警告,在声明整数信号时,分配相当于重置值的初始值。在上面的示例中,如果信号的初始值为 255,则不会生成警告:
signal count_down : integer range 0 to 255 := 255;
有关 Altera 设备中的寄存器上电值的更多信息,请参阅 Quartus II 手册章节推荐 HDL 编码风格(PDF)。