手中有一块FPGA板卡,MCU一直给FPGA复位引脚高电平,也就是FPGA只上电时复位一次。
那此时有问题了,我重新下程序时,对于靠复位信号初始化为1的信号怎么办呢?
always@(posedge clk)
begin
if(nreset==1'b0)
signal <=1'b1;
else
signal <=1'b0;
end
类似于这种的,怎么办?实验证明,这种情况也能初始化signal <=1'b1成功!
之后,我做了实验,得出以下结论:
1、如果只有rst信号,rst是外部输入复位信号reset_n延迟两拍,rst可初始化
always@(posedge clk)
begin
if(rst==1'b0)
signal <=1'b1;
end
2、如果有rst,rst1,rst是外部输入复位信号reset_n延迟两拍,rst1是always块中直接赋值为1,rst可初始化
always@(posedge clk)
begin
if(rst==1'b0)
signal <=1'b1;
else if(rst1==1'b0)
signal <=1'b0;
end
3、如果有rst,rst1,rst是外部输入复位信号reset_n延迟两拍,rst1是rst延迟一拍,rst不可初始化
4、如果有rst,rst1,rst是外部输入复位信号reset_n延迟两拍,assign rst1 = rst,两者都可初始化