9.1i约束 – 如何在Verilog HDL中创建寄存器(触发器)初始化值?-Altera-Intel社区-FPGA CPLD-ChipDebug

9.1i约束 – 如何在Verilog HDL中创建寄存器(触发器)初始化值?

问题描述

如何在Verilog中初始注册(触发器)值?

解决/修复方法

解决/修复方法1:

使用“初始”模块在器件上电期间控制寄存器的初始值。

您可以直接在Verilog源代码中使用“初始”模块。该模块可以通过XST综合并实现。当没有复位逻辑时,尤其使用此解决方案。

使用以下命令对初始模块进行编码以推断和实例化逻辑。

用于XST综合

“Test”是顶级文件:

模块测试(clk,ina,inb,outa,outb);

输入clk,ina,inb;

输出outa,outb;

reg outa;

reg outb;

reg [2:0]计数器;

初始

开始

计数器<= 0; //寄存器计数器的初始值为0;

OUTA <= 0; // register outa的初始值为0;

OUTB <= 1; // register outb的初始值为1;

结束

永远@(posedge clk)

开始

如果(INA)

开始

计数器<=计数器+ 1;

结束

否则如果(inb)

开始

计数器<=计数器-1;

结束

结束

永远@(posedge clk)

开始

如果(计数器== 7)

开始

OUTA <= 1;

OUTB <= 0;

结束

其他

开始

OUTA <= 0;

OUTB <= 1;

结束

结束

endmodule

解决/修复方法2:

解决此问题的另一种方法是使用INIT属性在器件上电期间控制寄存器的初始值。使用“S”值设置上电,“R”值在上电时复位。 (默认为“重置”。)

有关详细信息,请参阅(Xilinx答复12293)

请登录后发表评论

    没有回复内容