关于fpga复位电路的设计要点分析
时间:2012-06-12 10:30 作者:赛微编辑 来源:赛微电子网
为了确保微机系统中的电路能够稳定可靠的运行,就必须适当加入一些复位电路。复位电路的首要功能就是上电复位,一般来说微机电路正常工作时,供电电源为5V±5%,即4.75~5.25V。这是因为微机电路是时序数字电路,需要有稳定的时钟信号,在电源上电时,只有当当VCC超过4.75V低于5.25V,并且晶体振荡器稳定工作时,复位信号才能被撤除,微机电路才能开始正常工作。本文介绍了fpga复位电路(fpga是什么)的几个设计要点,接下来就让我们一起学习这方面的知识。
几乎所有的fpga设计(fpga设计与应用)都会涉及到复位,但是很多工程师却并没有真正研究过复位的设计。当你在设计电路时往往会遇到一些奇奇怪怪的问题,这些问题有些就是由于复位不当引起的。对于一些同步单元,我们可以选择同步复位、异步复位或者是不复位。在ASIC设计中也许不复位行不通,但是在fpga设计中却是可行的。
一、能省略的复位应尽量省略
reset,作为一个实际存在的物理信号,需要占用FPGA内部的route资源,往往reset的fanout又多得吓人。这就很容易造成route难度上升,性能下降,编译时间增加。因此,在FPGA设计(fpga设计流程)中能省略的复位应尽量省略。
举几个我经常省略复位的地方,但不是绝对适用:
1.分频用的计数器
除非需要控制初始相位,否则分频用的计数器往往都是自由运行的,只要每个时钟加1就好。
2.移位寄存器
为了使pipeline配合正确,设计中经常会存在移位寄存器。这种情况下,你只要复位第一级寄存器,然后保持若干个周期,移位寄存器就被彻底复位了,而不用为每个bit都添加复位。移位寄存器不使用复位的又一个好处是可以利用SRL。
3.moore型状态机输出
对于那些moore型状态机的输出,你只要复位了状态机,下一个周期就会被复位。
不用复位可能会引起的一个问题是仿真时出现一堆的X。这个问题可以通过在HDL文件中为寄存器赋初值解决。
二、同步复位和异步复位
异步复位的优点:
不和时钟挂钩,EDA工具route起来更容易。
在没有时钟的时候也可以将电路复位。
输入时钟突然消失,为了防止逻辑混乱导致错误,那么就用异步复位吧,可以把PLL的lock信号当做异步复位。
异步复位的缺点:
无法进行时序分析,可能因为skew的问题造成逻辑错误。比如state[3:0]是一个状态机信号,由于异步复位的skew,可能造成state[3]比state[2]多复位了一个时钟周期。
毛刺会造成复位
有时上电可以工作,有时上电不能工作,看看是不是复位的问题。
同步复位的优点:
改善了异步复位的缺点
同步复位的缺点:
在高速时钟域比较难满足时序要求,或者为了满足时序造成编译时间增加。
总体来讲,在拿不准的情况下,用同步复位会更为可靠一些。同步复位要先将复位信号同步到该时钟域——打几拍时钟就可以了。
三、复位信号的选择
复位信号可能有多种源可供选择,常见的有外部的复位信号(例如复位电路产生的信号,push button, cpu的gpio等等),PLL的lock信号,内部逻辑产生的复位信号等等。
对于一般的逻辑,一起复位是没有问题的,但有时几个模块的复位最好有先后次序。
1.级联的锁相环
可以将第一级锁相环的lock信号经过几个时钟的延时,作为第二级锁相环的复位。
2.IODELAY和IDELAYCTRL
可以用IDELAYCTRL的rdy信号去复位IODELAY
关于fpga复位电路设计的一些知识暂时就介绍到这里,相信在小编的讲解下,各位读者朋友对此都有了更深的了解吧。复位是很容易被忽略的部分,也是比较重要的部分,起始状态一定要写对。在给每个寄存器写复位时,一定要经过深思熟虑,否则最后发现设计工作不稳定时,再去查找原因就比较困难了。
原文地址:http://www.srvee.com/test/apply/gyfpgafwdldsjydfx_70717.html |