微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 当板子没有reset 键的时候,FPGA 内部怎么产生reset 信号?

当板子没有reset 键的时候,FPGA 内部怎么产生reset 信号?

时间:10-02 整理:3721RD 点击:
买的一块板子,居然一个push button都没有,reset都要自己产生,试了很多方法,都不行,原因,归结为:VHDL, 或者Verilog的初始化值都只能方针,而不可综合。
请问各位大侠,怎么用vhdl 或者其他方法产生可综合的reset 信号呢?
谢谢了。

很多方法啊
一般上电复位是通过在复位管脚出加一个电容
让上电的时候复位管脚比电源晚点时间拉高就可以实现上电复位了

做一个power on reset
就是做一个计数器!
上电后计数!计到最大后就不动了!
reg [19:0] rst_cnt;
always @(posedge clk)
if(rst_cnt!=20'hfffff)rst_cnt + 1;
wire rst = (rst_cnt!=20'hffff);

谢谢,可是问题是计数器在开始上电的时候并不是从0开始计数的,并没有初始化计数器啊。
有没有初始化计数器的设计的?
谢谢,或者有没有其他的方式产生呢?

xilinx的FPGA有GSR信号,可以用来复位所有内部寄存器

小编有没有想过你的mp3,手机每次开机也不需要按reset?
一般板子上都有power on reset电路的,就是简单的RC电路。
板子上没有的,IC也内建power on reset macro。

可以用fpga内部的pll模块中的lock信号作为reset

上次遇到一个问题,DCM永远不lock

建议仔细理解Xilinx FPGA的上电配置过程,这样就可以做出一个POR电路来。保证内部register在没有外部reset信号的情况下可以正确复位。

写个代码用计数器,可以实现自复位。一开始reset信号处于复位状态,计数满后将reset信号释放。
我的项目就是这么做的。

写个代码用计数器,可以实现自复位。一开始reset信号处于复位状态,计数满后将reset信号释放。
我的项目就是这么做的。

非常感谢啊,嘿嘿

用xilinx的话可以考虑用DCM上的lock信号作为复位信号

11# jingbot
你的意思是上电后寄存器就归零,然后再开始计数吗?

计数器的复位端接的是什么信号,上电的计数器Q端状态如果不是零,那岂不是不是从零开始计数了

我觉得FPGA内部有一个全局复位信号,在上电的时候就把所有的寄存器都复位为0了
另外,也可以利用fpga一个IO,外接阻容复位电路,我觉得也是可以当成寄存器的上电复位的

计数器上电时是可以初始化的,VHDL语句如下:
signal cnt : std_logic_vector(7 downto 0):=X"00";
然后计数延时即可。
当然用DCM的Lock信号也是可以的,如果延时比较长的话,保险起见,可以用DCM的Lock作为上面计数器的异步复位信号,等时钟正常后再计数延时。

楼上的,那个赋值综合器会忽略掉的。

9楼说的比较在理,但是在配置没有完成之前何谈复位呢?
10楼的问题是,程序开始后计数器是个什么状态这个能定吗?

回18楼,我的理解是寄存器类型都会赋初值,不指定的话综合器会给个默认值,给定的话,就按给定的设置,通过查看编译后的信息可以看到这个区别。
还有一种类型,就是CONSTANT型,也是可以通过这种方式赋值的。

原帖由 xtaixm 于 2009-9-21 14:13 发表  做一个power on reset 就是做一个计数器!上电后计数!计到最大后就不动了! reg [19:0] rst_cnt; always @(posedge clk) if(rst_cnt!=20'hfffff)rst_cnt + 1; wire rst = (rst_cnt!=20'hffff);
谢谢,可是问题是计数器在开始上电的时候并不是从0开始计数的,并没有初始化计数器啊。
有没有初始化计数器的设计的?
谢谢,或者有没有其他的方式产生呢?

计数器的值不能初始化吗?你用的什么器件啊?

1# 321liuwei321

谢谢

路过,学习了~~~

学习中,谢谢

采用计数器来实现复位,我试了下,综合后就没了。

一般就是用计数器做

必须有外部电路配合,或者内部已经有的机制,完全靠计数器肯定有问题。比如上面的
reg [19:0] rst_cnt;
always @(posedge clk)
if(rst_cnt!=20'hfffff)rst_cnt + 1;
wire rst = (rst_cnt!=20'hffff);
上电的时候没有rst_cnt,寄存器的值是随机的,如果随机在20'hfffff的话,rst信号就一直处于有效状态了

目前对这个问题仍然是一头雾水,不清楚如何在内部实现抚慰功能

内部复位似乎用的是电容

复位信号肯定是要由外部给的,送到FPGA 的IO,FPGA有专门的全局复位pin,不可能让FPGA自己产生一个复位信号给自己复位的,想想verilog中的always语句吧!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top