当FPGA/EPLD无复位管脚时,软件自己给自己复位,代码如下
module soft_rst_n
(
input clk , //work clk=25M,周期是40ns
input i_reset , //命令复位信号
output reg o_rst_n //输出复位信号,低有效。
);
reg [21:0] cnt ;//计数器
parameter cnt_low=30 ;//计数器数值
always @ (posedge clk) begin
if(i_reset==1)
cnt <= 23'd0 ;
else if(cnt < cnt_low)
cnt <= cnt+1'b1 ;
else if(cnt == cnt_low)
cnt <= cnt ;
else
cnt <= 23'd0 ; //给cnt赋初值
end
always @ (posedge clk) begin
if(cnt == cnt_low)
o_rst_n <= 1'b1 ;//当计数器达到cnt_low时,拉高信号
else
o_rst_n <= 1'b0 ;
end
endmodule