EETOP 创芯网论坛 (原名:电子顶级开发网)

标题: verilog复位信号问题 [打印本页]

作者: 无所谓    时间: 2016-5-31 10:05
标题: verilog复位信号问题
  verilog设计一般都有rst复位信号,以避免状态机不能复位,这是资料上说的。但是有时候硬件上没有复位信号,此时可以用软件复位或者不设置复位信号。对于软件复位:我用计数器实现一个rst复位,在modelsim和Isim仿真时都没有引起出发效果,也就是说,程序跑不起来,这是为什么,说明软件复位不行么?
对于不设置复位:在实际中,FPGA上电之后寄存器全部是0,利用好这个特点,是不是说不设置复位信号也是可行的呢?

作者: 无所谓    时间: 2016-5-31 10:11
各位有经验的可以指导指导
作者: fascinate_lyd98    时间: 2016-5-31 10:11
不管是软件复位还是硬件复位,程序不应该跑不起来;
程序跑不起来,和你程序有关。
认真检查吧。
作者: 无所谓    时间: 2016-5-31 10:14
回复 3# fascinate_lyd98
没有写软件复位之前,我在testbench文件里产生复位信号,程序可以跑起来,说明程序没有问题额
作者: 无所谓    时间: 2016-5-31 10:20
1、软件复位是不是一种可行的方案?
2、不设置复位会不会有较大干扰?
作者: 无所谓    时间: 2016-5-31 10:22
我在testbench里给复位信号,程序可以跑起来,程序应该没有问题吧
作者: 杰克淡定    时间: 2016-5-31 10:37
芯片里,最最基本的一个复位,一定是存在的,就是上电复位,电源稳定后撤销复位信号。软件复位,可以用写寄存器为0来复位,也可以用watchdog产生复位;还可以做PIN的复位,比如通过按键复位实现等等。
作者: HOM破晓    时间: 2016-5-31 15:16
你在testbench里给复位信号,程序可以跑起来,说明你主程序里的复位信号写的有问题
作者: 无所谓    时间: 2016-6-1 10:39
回复 8# HOM破晓
贴出来算了,主程序的复位有问题么
always @(posedge CLK)
begin
  if(!RST_B)
    begin
                SPIRST_B<=0;
                SPIDATA <=32'd0;
                state<=8'd4;
                dstate<=9'd0;
         end
作者: HOM破晓    时间: 2016-6-1 10:46
回复 9# 无所谓

你应该贴你用计数器写的复位信号部分
作者: 无所谓    时间: 2016-6-1 10:50
回复 10# HOM破晓
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
作者: HOM破晓    时间: 2016-6-1 11:32
回复 11# 无所谓
计数写错了,亲
作者: 无所谓    时间: 2016-6-1 14:13
回复 12# HOM破晓
哪里错了
作者: YYFFLLMMNN    时间: 2016-6-2 13:24
复位用DCM或者PLL的LOCK信号比较好。这样就不用纠结上电寄存器的值是多少了,而且有的公司的寄存器,比如Actel上电的后的值不一定是0.
作者: zombes    时间: 2016-6-5 13:41
仿真时的结果是不是不确定值x?
作者: zhuhua    时间: 2016-6-6 09:09
回复 11# 无所谓


    5'd60=>6'd60
作者: lcxi2727    时间: 2016-6-6 12:10
回复 14# YYFFLLMMNN

正解
作者: legenlay    时间: 2016-6-7 21:15
1、FPGA上电之后初始值不一定都是0;
2、计数器写的有问题




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5