verilog复位信号问题
对于不设置复位:在实际中,FPGA上电之后寄存器全部是0,利用好这个特点,是不是说不设置复位信号也是可行的呢?
各位有经验的可以指导指导
不管是软件复位还是硬件复位,程序不应该跑不起来;
程序跑不起来,和你程序有关。
认真检查吧。
没有写软件复位之前,我在testbench文件里产生复位信号,程序可以跑起来,说明程序没有问题额
1、软件复位是不是一种可行的方案?
2、不设置复位会不会有较大干扰?
我在testbench里给复位信号,程序可以跑起来,程序应该没有问题吧
芯片里,最最基本的一个复位,一定是存在的,就是上电复位,电源稳定后撤销复位信号。软件复位,可以用写寄存器为0来复位,也可以用watchdog产生复位;还可以做PIN的复位,比如通过按键复位实现等等。
你在testbench里给复位信号,程序可以跑起来,说明你主程序里的复位信号写的有问题
贴出来算了,主程序的复位有问题么
always @(posedge CLK)
begin
if(!RST_B)
begin
SPIRST_B<=0;
SPIDATA <=32'd0;
state<=8'd4;
dstate<=9'd0;
end
你应该贴你用计数器写的复位信号部分
module gen_rst(clk,rst_n);
input clk;
output rst_n;
reg [5:0]rst_count;
assign rst_n = ~(rst_count>5'd50 && rst_count<5'd56);
always @(posedge clk)
begin
if(rst_count > 5'd60)
rst_count <= 5'd62;
else
rst_count <= rst_count + 1;
end
endmodule
计数写错了,亲
哪里错了
复位用DCM或者PLL的LOCK信号比较好。这样就不用纠结上电寄存器的值是多少了,而且有的公司的寄存器,比如Actel上电的后的值不一定是0.
仿真时的结果是不是不确定值x?
5'd60=>6'd60
正解
1、FPGA上电之后初始值不一定都是0;
2、计数器写的有问题
