首页 技术文章

FPGA系统复位问题探讨

2015-04-06 19:37:00 坤驰科技

1.同步复位和异步复位的写法:

//======同步复位=======

always@(posedgeclk)

if(rst)

..........

elseif(....)

//======异步复位=======

always@(posedgeclkorposedgerst)

if(rst)

.........

elseif(......)

2.应该选哪个?

就实时性而言,异步复位较同步复位慢。就稳定性而言,个人感觉同步复位相对而言比较稳定。但是具体跟电路设计就我个人比较偏向于同步复位,FPGA内的一切逻辑都在统一的时钟下动作,系统比较稳定。而异步复位,个人感觉会破坏整个系统的时钟同步机制。但是好多xilinx官方文档采用的也是异步复位。所以,系统能否稳定工作关键还在于整个系统的设计架构。


3.为什么?

在异步复位的情况下,复位信号与时钟信号的相位不能确定,会造成亚稳态。

说简单点,寄存器是在时钟的上升沿变化的,这就要求输入寄存器的信号在时钟沿之后必须稳定一段时间,否则时钟沿也在变,输入数据也在变,就不清楚到底输出会变成什么了。

复位信号也会造成一连串信号的变化,因为复位信号的不确定,所以会造成这个问题。


4.推荐的做法

推荐的做法,并不是直接使用Reset,而是异步复位-同步释放。

这种电路比较复杂,实际情况中有简化。

如果你的系统时钟是连续的话,你可以使用将Reset信号打两拍,然后上BUFG的方式。

你如果这样做了,Xilinx的工具会去分析Reset信号的时序,从而防止亚稳态的产生;你如果使用异步复位,工具是没法分析的!!

华为/中兴这样的公司,因为设计很大,加上写代码的人风格不统一,所以他们实际是在顶层里面专门建立一个复位模块,然后把异步复位时序化,这个就比较复杂了。但是总的来说,是同步的,所以不管你的子模块是写的异步复位还是同步复位,全部都变成同步的。

为了我们共同的目标“做专业的高速数据采集厂商”而共同努力!

关于坤驰科技:

坤驰科技是专注于高速数据采集信号处理高速数据存储与记录的高科技公司。坤驰科技为用户提供成熟的标准高速数据采集产品与技术,也可为用户提供定制化的高速信号采集解决方案。目前坤驰科技服务过的研究所、科研单位已达近百家。高速数据采集产品线涵盖PCIExpress、cPCI、PXIe、VPX、USB等总线,包含高速AD、DA平台、FPGA、DSP处理平台,SATA/SSD、Flash存储平台等。

全国咨询电话:400-000-4026
公司官方网站:http://www.queentest.cn
官方微博:http://e.weibo.com/queentest
官方微信:queentest或扫描:

网友热评