同步电路设计技术及规则.docx
- 文档编号:11325421
- 上传时间:2023-02-26
- 格式:DOCX
- 页数:16
- 大小:79.53KB
同步电路设计技术及规则.docx
《同步电路设计技术及规则.docx》由会员分享,可在线阅读,更多相关《同步电路设计技术及规则.docx(16页珍藏版)》请在冰豆网上搜索。
同步电路设计技术及规则
同步电路设计技术及规则
文档作者:
日期:
2003/12/5
研究部:
日期:
文档管理员:
日期:
版权所有不得复制
1设计可靠性
4
2时序分析基础
4
3同步电路设计
5
3.1同步电路的优越性
5
3.2同步电路的设计规则
6
3.3异步设计中常见问题及其解决方法
6
3.4不建议使用电路
17
4SET和RESET信号处理
18
5时延电路处理
19
6全局信号的处理方法
20
7时序设计的可靠性保障措施
24
8ALTERA参考设计准则
25
同步电路设计技术及规则
1.设计可靠性
为了增加可编程逻辑器件电路工作的稳定性,一定要加强可编程逻辑器件设计的规范要求,要尽量采用同步电路设计。
对于设计中的异步电路,要给出不能转换为同步设计的原因,并对该部分异步电路的工作可靠性(如时钟等信号上是否有毛刺,建立-保持时间是否满足要求等)作出分析判断,提供分析报告。
2.时序分析基础
电路设计的难点在时序设计,而时序设计的实质就是满足每一个触发器的建立/保持时间的要求。
图1.1
如上图所示,以REG2为例,假定
触发器的建立时间要求为:
T_setup,保持时间要求为:
T_hold,
路径①延时为:
T1,路径②延时为:
T2,路径③延时为:
T3,
时钟周期为:
T_cycle,
Ts=(T_cycle+△T)-T1,Th=T1-△T,
令△T=T3-T2,则
条件1.如果T_setup 反之则不满足; 条件2.如果T_hold 反之则不满足。 从条件1和2我们可以看出,当△T>0时,T_hold受影响;当△T<0时,T_setup受影响。 如果我们采用的是严格的同步设计电路,即一个设计只有一个CLK,并且来自时钟PAD或时钟BUFF(全局时钟),则△T对电路的影响很小,几乎为0;如果采用的是异步电路,设计中时钟满天飞,无法保证每一个时钟都来自强大的驱动BUFF(非全局时钟),如下图所示,则△T影响较大,有时甚至超过人们想象。 这就是为什么我们建议采用同步电路进行设计的重要原因之一。 图1.2 3.同步电路设计 4.同步电路的优越性 1.同步电路比较容易使用寄存器的异步复位/置位端,以使整个电路有一个确定的初始状态; 2.在可编程逻辑器件中,使用同步电路可以避免器件受温度,电压,工艺的影响,易于消除电路的毛刺,使设计更可靠,单板更稳定; 3.同步电路可以很容易地组织流水线,提高芯片的运行速度,设计容易实现; 下图是一个设计中所要准备采用的电路,该设计采用Xilinx的FPGA器件4062xla来实现,工作频率是32.768MHz(即图中CLK频率)。 设计原打算在每隔60ns输出一个数据,即DATA。 然而,我们在设计之前,考虑到256x7的同步RAM延时可能比较大,如果在加上其后的同步RAM延时的话,估计在60ns之内很难完成。 该部分电路是整个设计中的一个关键路径,因此,我们在进行具体设计之前,先对这种电路结构进行了验证,事实证明我们的担心是对的。 正确的做法是,采用流水线方法,在256x7的RAM之后再加一个触发器,每个RAM都按60ns的速度读取数据,整个流程滞后60ns输出DATA。 其它相关信号(在其它模块中)也随之滞后60ns输出。 图1.3 4.同步电路可以很好地利用先进的设计工具,如静态时序分析工具等,为设计者提供最大便利条件,便于电路错误分析,加快设计进度。 5.同步电路的设计规则 1.尽可能在整个设计中只使用一个主时钟,同时只使用同一个时钟沿,主时钟走全局时钟网络。 2.在FPGA设计中,推荐所有输入、输出信号均应通过寄存器寄存,寄存器接口当作异步接口考虑。 3.当全部电路不能用同步电路思想设计时,即需要多个时钟来实现,则可以将全部电路分成若干局部同步电路(尽量以同一个时钟为一个模块),局部同步电路之间接口当作异步接口考虑。 4.当必须采用多个时钟设计时,每个时钟信号的时钟偏差(△T)要严格控制。 5.电路的实际最高工作频率不应大于理论最高工作频率,留有设计余量,保证芯片可靠工作。 6.电路中所有寄存器、状态机在单板上电复位时应处在一个已知的状态。 6.异步设计中常见问题及其解决方法 异步电路设计主要体现在时钟的使用上,如使用组合逻辑时钟、级连时钟和多时钟网络;另外还有采用异步置位、复位、自清零、自复位等。 这些异步电路的大量存在,一是增加设计难度,二是在出现错误时,电路分析比较困难,有时会严重影响设计进度。 很多异步设计都可以转化为同步设计,对于可以转化的逻辑必须转化,不能转化的逻辑,应将异步的部分减到最小,而其前后级仍然应该采用同步设计。 下面给出一些异步逻辑转化为同步逻辑的方法: 1.组合逻辑产生的时钟 图1.4组合逻辑产生的时钟 组合逻辑的时钟如果产生毛刺,易使触发器误翻转。 2.行波计数器/行波时钟 图1.5行波计数器 行波记数器虽然原理简单,设计方便,但级连时钟(行波时钟)最容易造成时钟偏差(△T),级数多了,很可能会影响其控制的触发器的建立/保持时间,使设计难度加大。 转换的方法是采用同步记数器,同步计数器用原理图描述可能较难,但用VHDL很简单就可以描述一个4位计数器: Counter4: Process(nreset,clk) Begin Ifnreset='0'then Cnt<=(others=>"0"); Elsifclk='1'andclk'eventthen Cnt<=cnt+1; Endif; Endprocesscounter4; 通常逻辑综合工具都会对上述描述按不同器件的特点进行不同的优化,我们并不需要关心它是逐位进位计数器还是超前进位计数器。 4.不规则的计数器 图1.6不规则的计数器 这是一个53计数器,采用计到53后产生异步复位的办法实现清0,产生毛刺是必然的。 然而最严重的是,当计数器所有bit或相关bit均在翻转时,电路有可能出错,例如: 计数器从“110011敚_>“110100 采用同步清0的办法,不仅可以有效地消除毛刺,而且能避免计数器误清0。 电路如下图所示。 图1.7规则的计数器 5.分频器 这是3和4的特例,我们推荐使用同步计数器最高位的方法,如果需要保证占空比,可以使用图1.8所示电路进行最后一次二分频。 下图是19.44MHz分频到8kMHz(分频数为2430)的电路: 图1.8分频数为2430的电路 若是奇数分频,则处理比较特殊,以5分频器为例,其要求产生的时序关系如下图所示, 很显然,该电路要用上MCLK的上沿和下研,对上图时序进行分解,得下图 图1.95分频信号时序分解 图中,COUNT0采用上沿计数,COUNT1采用下沿计数,DIV0和DIV1是分别是上沿触发器和下沿触发器的输出,DIV5_CLK是DIV0和DIV1的或门输出。 读者可根据该时序图,画出相应的原理图,或者用HDL语言进行描述。 在使用该电路时,需要注意: (1)DIV0和DIV1到DIV5_CLK的约束要严,越快越好。 不然,无法保证1: 1的占空比。 (2)MCLK频率要求较高,尽量不要出现窄脉冲,尤其是在高频电路里。 (3)COUNT1可有可无,视时钟频率高低而定。 频率越高,COUNT1越需要。 6.上升沿检测 图1.15上升沿检测 不建议采用这种电路检测信号的上升沿,因为IN为数据信号,上边容易有毛刺,使触发器误动作。 图1.16 采用时钟检测信号,出现0->1的变化即为上升沿。 7.下降沿检测 图1.17 同上升沿检测电路,这种电路对毛刺、干扰极为敏感。 图1.18 采用时钟检测信号,出现1->0的变化即为下降沿。 8.上升/下降沿检测 图1.19 采用时钟检测信号,出现变化即为上升/下降沿。 9.门控时钟 图1.21门控时钟 门控时钟是非常危险的,极易产生毛刺,使逻辑误动作。 在可编程逻辑器件中,一般使用触发器的时钟使能端,而这样,并不增加资源,只要保证建立时间,可使毛刺不起作用。 图1.22 10.锁存器 图1.23 锁存器是较危险的电路,没有确定的初始状态,输出随输入变化,这意味着毛刺可以通过锁存器。 若该电路与其它D触发器电路相连,则会影响这些触发器的建立保持时间。 除非有专用电路特别需要,在设计内部,不要使用锁存器。 图1.24 引入时钟,可以实现锁存器的功能。 总之,任何数字设计,为了成功地操作,时钟是关键。 设计不良的时钟在极限的温度、电压或制造工艺的偏差下将导致错误的行为,而设计良好的时钟应用,则是整个数字系统长期稳定工作的基础。 对于一个设计项目来说,全局时钟(或同步时钟)是最简单和最可预测的时钟,在真正的同步系统情况下,由输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器。 几乎所有的可编程逻辑器件中都有专用的全局信号引脚,它的特殊布线方式可以直接连到器件中的每一个寄存器。 只要保证输入数据的建立和保持时间满足要求(相应可编程器件的数据手册中可查到),整个同步系统就可以在全局时钟的驱动下可靠工作,所以在可能的情况下,一定要使用全局时钟。 7.不建议使用电路 1不建议使用组合逻辑时钟或门控时钟 组合逻辑很容易产生毛刺,用组合逻辑的输出作为时钟很容易使系统产生误动作。 2不建议使用行波时钟 3尽量避免采用多个时钟,多使用触发器的使能端来解决。 在可编程逻辑器件设计时,由于时钟建立应尽量避免采用多时钟网络,或者采用适当的措施减少时钟的个数。 4触发器的置/复位端尽量避免出现毛刺,及自我复位电路等,最好只用一个全局复位信号。 5禁止时钟在不同可编程器件中级连,尽量降低时钟到各个器件时钟偏差值。 同一个时钟在不同可编程器件中使用时不允许级连,而且应该保证该时钟到达不同可编程器件输入引脚的时钟偏差足够小。 因为经过多个可编程器件的延时后,难以估计该时钟在链上各个触发器时钟之间产生的大量时间偏移,如果这种时间偏移引起建立时间、保持时间难以满足的话,那么设计的逻辑就极有可能要失败了。 8.SET和RESET信号处理 在设计时应尽量保证有一全局复位信号,或保证触发器、计数器在使用前已经正确清零和状态机处于确知的状态。 寄存器的清除和置位信号,对竞争条件和冒险也非常敏感。 在设计时,应尽量直接从器件的专用引脚驱动。 另外,要考虑到有些器件上电时,触发器处于一种不确定的状态,系统设计时应加入全局复位/Reset。 这样主复位引脚就可以给设计中的每一个触发器馈送清除或置位信号,保证系统处于一个确定的初始状态。 需要注意的一点是: 不要对寄存器的置位和清除端同时施加不同信号产生的控制,因为如果出现两个信号同时有效的意外情况,会使寄存器进入不定状态。 对于状态机设计,由于有可能存在一些状态对于系统而言是摲欠ǖ臄(或称撐薰氐臄),所以除了在状态机设计时充分考虑各种可能出现的状态以及一旦进入摲欠〝状态后可以强迫状态机在下一个时钟周期内进入摵戏〝状态(一般时初始状态)外,一定要保证系统初始化时状态机就处于摵戏〝的初始状态,这里最好的办法仍然是使用全局主复位信号强迫状态机进入已知的摵戏〝状态。 9.时延电路处理 时延电路是指在可编程器件的设计中,为了能够满足电路之间时序配合的要求,利用可编程器件的内部资源而进行时序调整,如: 利用线延时或者若干串联Buffer电路,使时钟或数据滞后一段时间。 典型的,该时间即不能太长,又不能太短,以便满足设计需要。 然而,这种时延电路严重依赖器件工艺,也依赖每次的布线结果,给设计带来许多麻烦,有时会引起严重后果。 因此,必须正确处理时延电路: 1在设计中应尽量避免时延电路,绝大多数时延电路是由设计者在设计之初考虑不完善造成的。 例如,在设计中没必要地存在多个时钟电路,模块划分不合理,关键电路关键时序考虑不周等。 我们的设计经常是在功能模块划分完成之后,就急急忙忙去做具体电路,许多关键时序并没有考虑清楚,这不可避免的造成设计多次反复。 正确的做法是: 设计电路,尤其是数字电路,最关键的一环是: 设计各模块间的接口时序,确定关键电路的时序。 这个工作必须在具体电路设计之前确定下来。 2若实在无法,则尽量采用高频电路,对所需信号加触发器进行延时。 该延时只跟时钟频率和触发器个数有关,而与工艺基本无关。 10.全局信号的处理方法 全局信号处理的原则是: 时钟信号、异步清零、置位信号上不允许存在毛刺;不允许异步清零、置位信号同时有效。 11.时序设计的可靠性保障措施 (1)时钟偏差要加以控制 在同步电路里,时钟信号要连接到所有的寄存器,触发器以及锁存器等器件上。 这些巨大的负载就象一个大电容加在时钟线上,再加上时钟线本身的分布电容和电阻,这样时钟线就象分布的RC线。 由于RC线的延时是线长的函数,这样就使得连到同一根时钟线上的时钟由于距离时钟源的远近不一而产生不同的延时。 因而造成了同一时钟到达各个器件的时间不一致,使得各个以时钟为基准器件的动作也不一致,而造成时序上的混乱。 这就是同步电路时钟偏差。 要让同步电路可靠地运行,就要对时钟偏差进行控制,以使时钟偏差减小到可用的范围。 影响时钟偏差的主要有以下几个因素: 1、用于连接时钟树的连线 2、时钟树的拓扑结构 3、时钟的驱动 4、时钟线的负载 5、时钟的上升及下降时间 在通常的FPGA设计中对时钟偏差的控制主要有以下几种方法: 1、控制时钟信号尽量走可编程器件的全局时钟网络。 在可编程器件中一般都有专门的时钟驱动器及全局时钟网络,不同种类、型号的可编程器件,它们中的全局时钟网络数量不同,因此要根据不同的设计需要选择含有合适数量全局时钟网络的可编程器件。 一般来说,走全局时钟网络的时钟信号到各使用端的延时小,时钟偏差很小,基本可以忽略不计。 2、若设计中时钟信号数量很多,无法让所有的信号都走全局时钟网络,那么可以通过在设计中加约束的方法,控制不能走全局时钟网络的时钟信号的时钟偏差。 如在UCF文件中加上: NET***MAXSKEW=3; 一般而言,时钟偏差的控制值应按保持时间要求来计算: △T 3、异步接口时序裕度要足够大 局部同步电路之间接口都可以看成是异步接口,比较典型的是设计中的高低频电路接口、I/O接口,那么接口电路中后一级触发器的建立-保持时间要满足要求,时序裕度要足够大。 4、在系统时钟大于60MHz时,设计难度有所加大,建议采用流水线等设计方法。 采用流水线处理方式可以达到提高时序电路的速度,但使用的器件资源也成倍增加。 5、要保证电路设计的理论最高工作频率大于电路的实际工作频率; 最高频率是指设计软件经综合,布局,布线后,软件计算出的可工作的最高频率。 比如经过综合及布局布线后,最长的延时为20ns,则其理论最高工作频率为50MHz。 需要指出的是: 此频率跟设计有很大关系,良好的设计可使器件工作在更高的频率范围。 所谓电路的实际工作频率是指所设计的逻辑电路实际要达到的工作频率,既实际电路中所使用的时钟频率。 要使时序电路可靠地工作就必须使理论最高工作频率大于电路的实际的工作频率,但理论要高于实际的值是多少,这需要根据实际情况而定。 主要要考虑的是时钟的最大可能抖动是多少。 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1