PGA内部寄存器的上电初值是什么? 有说是低的,有说是高的, 也有说和器件相关的,还有些人说是不确定. 对于一个系统来讲, 用户并不在意初值是高电平,或者是低电平, 用户真正关心的是寄存器的初值是不是确定可预测的,也就是说每次编译,每次上电的初值是不是一致的。
来举个例子,有个客户在调试FPGA设计,在头一个月编译的几百次结果中,一个寄存器的初值一直都是低电平。某一天改了一部分看似不相关的代码之后,这个寄存器的初值从此之后就变成高电平了。这种情况通常会让用户不知所措,非常痛苦。后来在我们的一起努力下,采用了一些措施,最终可以控制寄存器的初值.
那么到底是什么?简单说,寄存器的初值是由综合工具(synthesis tool)决定下来的,综合synthesis过后,电路网表就确定了,初值也就决定了。换句话说,初值不会随后端的布局布线过程影响。但是如果没有针对性的规则来约束综合synthesis,那么一次编译后的初值和上一次编译的初值是有可能不一样的,当然更多的时候是一样的。本文后面会对这个现象作进一步分析的.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
module top(
input wire rst,
input wire clk,
input wire d,
input wire cke,
output reg q
);
always @(posedge rst or posedge clk)
begin
if(rst==1'b1)
q <= 1'b1;
else if(cke==1'b1)
q <= d;
end
endmodule
这种带有异步置位的寄存器描述,其对应的网表如图Figure 2.2. 显然上电初值为1.
一周热门 更多>