FPGA设计如何提高同步系统中的工作时钟
时钟是整个电路最重要、最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错;因而明确FPGA设计中决定系统时钟的因素,尽量较小时钟的延时对保证设计的稳定性有非常重要的意义。
1.1 建立时间与保持时间
建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold time)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。建立与保持时间的简单示意图如下图1所示。
(资料图)
图1 保持时间与建立时间的示意图
在FPGA设计的同一个模块中常常是包含组合逻辑与时序逻辑,为了保证在这些逻辑的接口处数据能稳定的被处理,那么对建立时间与保持时间建立清晰的概念非常重要。下面在认识了建立时间与保持时间的概念上思考如下的问题。
图2 同步设计中的一个基本模型
图2为统一采用一个时钟的同步设计中一个基本的模型。图中Tco是触发器的数据输出的延时;Tdelay是组合逻辑的延时;Tsetup是触发器的建立时间;Tpd为时钟的延时。如果第一个触发器D1建立时间最大为T1max,最小为T1min,组合逻辑的延时最大为T2max,最小为T2min。问第二个触发器D2立时间T3与保持时间T4应该满足什么条件,或者是知道了T3与T4那么能容许的最大时钟周期是多少。这个问题是在设计中必须考虑的问题,只有弄清了这个问题才能保证所设计的组合逻辑的延时是否满足了要求。
下面通过时序图来分析:设第一个触发器的输入为D1,输出为Q1,第二个触发器的输入为D2,输出为Q2;
时钟统一在上升沿进行采样,为了便于分析我们讨论两种情况即第一:假设时钟的延时Tpd为零,其实这种情况在FPGA设计中是常常满足的,由于在FPGA 设计中一般是采用统一的系统时钟,也就是利用从全局时钟管脚输入的时钟,这样在内部时钟的延时完全可以忽略不计。这种情况下不必考虑保持时间,因为每个数据都是保持一个时钟节拍同时又有线路的延时,也就是都是基于CLOCK的延迟远小于数据的延迟基础上,所以保持时间都能满足要求,重点是要关心建立时间,此时如果D2的建立时间满足要求那么时序图应该如图3所示。
从图中可以看出如果:
T-Tco-Tdelay>T3
即:Tdelay< T-Tco-T3
那么就满足了建立时间的要求,其中T为时钟的周期,这种情况下第二个触发器就能在第二个时钟的升沿就能稳定的采到D2,时序图如图3所示。
图3 符合要求的时序图
如果组合逻辑的延时过大使得
T-Tco-Tdelay
那么将不满足要求,第二个触发器就在第二个时钟的升沿将采到的是一个不定态,如图4所示。那么电路将不能正常的工作。
图4 组合逻辑的延时过大时序不满足要求
从而可以推出
T-Tco-T2max>=T3
这也就是要求的D2的建立时间。
从上面的时序图中也可以看出,D2的建立时间与保持时间与D1的建立与保持时间是没有关系的,而只和D2前面的组合逻辑和D1的数据传输延时有关,这也是一个很重要的结论。说明了延时没有叠加效应。
第二种情况如果时钟存在延时,这种情况下就要考虑保持时间了,同时也需要考虑建立时间。时钟出现较大的延时多是采用了异步时钟的设计方法,这种方法较难保证数据的同步性,所以实际的设计中很少采用。此时如果建立时间与保持时间都满足要求那么输出的时序如图5所示。
图5 时钟存在延时但满足时序
从图5中可以容易的看出对建立时间放宽了Tpd,所以D2的建立时间需满足要求:
Tpd+T-Tco-T2max>=T3
由于建立时间与保持时间的和是稳定的一个时钟周期,如果时钟有延时,同时数据的延时也较小那么建立时间必然是增大的,保持时间就会随之减小,如果减小到不满足D2的保持时间要求时就不能采集到正确的数据,如图6所示。
这时即T-(Tpd-Tco-T2min)
T-(Tpd+T-Tco-T2min)>=T4 即Tco+T2min-Tpd>=T4
从上式也可以看出如果Tpd=0也就是时钟的延时为0那么同样是要求Tco+T2min>T4,但是在实际的应用中由于T2的延时也就是线路的延时远远大于触发器的保持时间即T4所以不必要关系保持时间。
图6 时钟存在延时且保持时间不满足要求
综上所述,如果不考虑时钟的延时那么只需关 心建立时间,如果考虑时钟的延时那么更需关心保持时间。下面将要分析在FPGA设计中如何提高同步系统中的工作时钟。
1.2 如何提高同步系统中的工作时钟
从上面的分析可以看出同步系统时对D2建立时间T3的要求为:
T-Tco-T2max>=T3
所以很容易推出T>=T3+Tco+T2max,其中T3为D2的建立时间Tset,T2为组合逻辑的延时。在一个设计中T3和Tco都是由器件决定的固定值,可控的也只有T2也就时输入端组合逻辑的延时,所以通过尽量来减小T2就可以提高系统的工作时钟。为了达到减小T2在设计中可以用下面不同的几种方法综合来实现。
1.2.1 通过改变走线的方式来减小延时
以altera的器件为例,我们在quartus里面的timing closure floorplan可以看到有很多条条块块,我们可以将条条块块按行和按列分,每一个条块代表1个LAB,每个LAB里有8个或者是10个LE。它们的走线时延的关系如下:同一个LAB中(最快) < 同列或者同行 < 不同行且不同列。我们通过给综合器加适当的约束(约束要适量,一般以加5%裕量较为合适,比如电路工作在100Mhz,则加约束加到105Mhz就可以了,过大的约束效果反而不好,且极大增加综合时间)可以将相关的逻辑在布线时尽量布的靠近一点,从而减少走线的时延。
1.2.2 通过拆分组合逻辑的方法来减小延时
由于一般同步电路都不止一级锁存(如图8),而要使电路稳定工作,时钟周期必须满足最大延时要求,缩短最长延时路径,才可提高电路的工作频率。如图7所示:我们可以将较大的组合逻辑分解为较小的几块,中间插入触发器,这样可以提高电路的工作频率。这也是所谓“流水线”(pipelining)技术的基本原理。
对于图8的上半部分,它时钟频率受制于第二个较大的组合逻辑的延时,通过适当的方法平均分配组合逻辑,可以避免在两个触发器之间出现过大的延时,消除速度瓶颈。
图7 分割组合逻辑
图8 转移组合逻辑
那么在设计中如何拆分组合逻辑呢,更好的方法要在实践中不断的积累,但是一些良好的设计思想和方法也需要掌握。我们知道,目前大部分FPGA都基于4输入 LUT的,如果一个输出对应的判断条件大于四输入的话就要由多个LUT级联才能完成,这样就引入一级组合逻辑时延,我们要减少组合逻辑,无非就是要输入条件尽可能的少,这样就可以级联的LUT更少,从而减少了组合逻辑引起的时延。
我们平时听说的流水就是一种通过切割大的组合逻辑(在其中插入一级或多级D触发器,从而使寄存器与寄存器之间的组合逻辑减少)来提高工作频率的方法。比如一个32 位的计数器,该计数器的进位链很长,必然会降低工作频率,我们可以将其分割成4位和 8位的计数,每当4位的计数器计到15后触发一次8位的计数器,这样就实现了计数器的切割,也提高了工作频率。
在状态机中,一般也要将大的计数器移到状态机外,因为计数器这东西一般是经常是大于4输入的,如果再和其它条件一起做为状态的跳变判据的话,必然会增加LUT的级联,从而增大组合逻辑。以一个6输入的计数器为例,我们原希望当计数器计到111100后状态跳变,现在我们将计数器放到状态机外,当计数器计到111011后产生个enable信号去触发状态跳变,这样就将组合逻辑减少了。状态机一般包含三个模块,一个输出模块,一个决定下个状态是什么的模块和一个保存当前状态的模块。组成三个模块所采用的逻辑也各不相同。输出模块通常既包含组合逻辑又包含时序逻辑;决定下一个状态是什么的模块通常又组合逻辑构成;保存现在状态的通常由时序逻辑构成。三个模块的关系如下图9所示。
图9 状态机的组成
所有通常写状态机时也按照这三个模块将状态机分成三部分来写,如下面就是一种良好的状态机设计方法:
/*----------------------------------------------------This is FSM demo programDesign Name : arbiterFile Name : arbiter2.v-----------------------------------------------------*/module arbiter2 (clock , // clockreset , // Active high, syn resetreq_0 , // Request 0req_1 , // Request 1gnt_0 ,gnt_1);//-------------Input Ports-----------------------------input clock ;input reset ;input req_0 ;input req_1 ;//-------------Output Ports----------------------------output gnt_0 ;output gnt_1 ;//-------------Input ports Data Type-------------------wire clock ;wire reset ;wire req_0 ;wire req_1 ;//-------------Output Ports Data Type------------------reg gnt_0 ;reg gnt_1 ;//-------------Internal Constants--------------------------parameter SIZE = 3 ;parameter IDLE = 3"b001 ,GNT0 = 3"b010 ,GNT1 = 3"b100 ;//-------------Internal Variables---------------------------reg [SIZE-1:0] state ;// Seq part of the FSMwire [SIZE-1:0] next_state ;// combo part of FSM//----------Code startes Here------------------------assign next_state = fsm_function(req_0, req_1);function [SIZE-1:0] fsm_function;input req_0;input req_1;case(state)IDLE : if (req_0 == 1"b1)fsm_function = GNT0;else if (req_1 == 1"b1)fsm_function= GNT1;elsefsm_function = IDLE;GNT0 : if (req_0 == 1"b1)fsm_function = GNT0;elsefsm_function = IDLE;GNT1 : if (req_1 == 1"b1)fsm_function = GNT1;elsefsm_function =IDLE;default : fsm_function = IDLE;endcaseendfunctionalways@(posedge clock)beginif (reset == 1"b1)state <=IDLE;elsestate <=next_state;end//----------Output Logic-----------------------------always @ (posedge clock)beginif (reset == 1"b1) begingnt_0 <= #1 1"b0;gnt_1 <= #1 1"b0;endelse begincase(state)IDLE : begingnt_0 <= #1 1"b0;gnt_1 <= #1 1"b0;endGNT0 : begingnt_0 <= #1 1"b1;gnt_1 <= #1 1"b0;endGNT1 : begingnt_0 <= #1 1"b0;gnt_1 <= #1 1"b1;enddefault : begingnt_0 <= #1 1"b0;gnt_1 <= #1 1"b0;endendcaseendend // End Of Block OUTPUT_endmodule
状态机通常要写成3段式,从而避免出现过大的组合逻辑。
上面说的都是可以通过流水的方式切割组合逻辑的情况,但是有些情况下我们是很 难去切割组合逻辑的,在这些情况下我们又该怎么做呢?
状态机就是这么一个例子,我们不能通过往状态译码组合逻辑中加入流水。如果我们的设计中有一个几十个状态的状态机,它的状态译码逻辑将非常之巨大,毫无疑问,这极有可能是设计中的关键路径。那我们该怎么做呢?还是老思路,减少组合逻辑。我们可以对状态的输出进行分析,对它们进行重新分类,并根据这个重新定义成一组组小状态机,通过对输入进行选择(case语句)并去触发相应的小状态机,从而实现了将大的状态机切割成小的状态机。在ATA6的规范中(硬盘的标准),输入的命令大概有20十种,每一个命令又对应很多种状态,如果用一个大的状态机(状态套状态)去做那是不可想象的,我们可以通过case语句去对命令进行译码,并触发相应的状态机,这样做下来 这一个模块的频率就 可以跑得比较高了。
总结:提高工作频率的本质就是要减少寄存器到寄存器的时延,最有效的方法就是 避免出现大的组合逻辑,也就是要尽量去满足四输入的条件,减少LUT级联的数量。我们 可以通过加约束、流水、切割状态的方法提高工作频率。
在FPGA中进行时钟设计时也要注意一下几点:
1. 一个模块尽量只用一个时钟,这里的一个模块是指一个module或者是一个entity。在多时钟域的设计中涉及到跨时钟域的设计中最好有专门一个模块做时钟域的隔 离。这样做可以让综合器综合出更优的结果。
2. 除非是低功耗设计,不然不要用门控时钟--这会增加设计的不稳定性,在要用到门控时钟的地方,也要将门控信号用时钟的下降沿 打一拍再输出与时钟相与。
3. 禁止用计数器分频后的信号做其它模块的时钟,而要用改成时钟使能的方式,否则这种时钟满天飞的方式对设计的可靠性极为不利,也大大增加了静态时序分析的复杂性。
1.4 不同时钟域之间的同步
当一个设计中的两个模块分别用的是两个工作时钟,那么在它们的接口处就工作在异步模式,这时为了保证数据能正确的处理那么就要对两个模块进行同步。
这里的不同的时钟域通常是以下的两种情况:
1、 两个时钟的频率不同;
2、 虽然两个时钟的频率相同,但是它们是两个独立的时钟,其相位没有任何关系。分别如下两个图所示:
图10 两个时钟的频率完全不同
图11两个时钟的频率相同,但相位不相关
两个时钟域之间传输的数据根据不同的位宽通常采用不同的同步的方法。
1、单bit之间的同步且发送的每个pulse至少有1个周期宽度的情况
这类同步主要是用于一些控制信号自己的同步。通常的采用方法就是输出数据在接收的模块中利用两个触发器采用系统时钟打两拍,如下图12所示。对于这种同步需要说明以下几点。
图12 一位同步器设计
(1)图12中的同步电路其实叫"一位同步器",它只能用来对一位异步信号进行同步,而且这个信号的宽度必须大于本级时钟的脉冲宽度,否则有可能根本采不到这个异步信号。
(2)为什么图一中的同步电路只能用来对一位异步信号进行同步呢? (a)当有两个或更多的异步信号(控制或地址)同时进入本时域来控制本时域的电路时,如果这些信号分别都用图12中的同步电路来同步就会出现问题,由于连线延迟或其他延迟使两个或更多的异步信号(控制或地址)之间产生了skew,那么这个skew经过图12的同步器同步进入本时域后,会产生很大的skew 或产生竞争,导致本时域电路出错。
出现的问题如下图13所示:
图13 同步多个控制信号时出错
(b)如果是异步数据总线要进入本时域,同样不能用图12的电路,因为数据的变化是很随机的,其0的宽度或1的宽度和本时域时钟脉冲无关,所以图12的电路可能会采不到正确数据。
(3)注意,第二个触发器并不是避免“亚稳态的发生”,确切的说,该电路能够防止亚稳态的传播。也就是说,一旦第一个触发器发生了亚稳态(可能性存在),由于有了第二个触发器,亚稳态不会传播到第二个触发器以后的电路中去。
(4)第一级触发器发生了亚稳态,需要一个恢复时间来稳定下来,或者叫退出亚稳态。当恢复时间加上第二级触发器的建立时间(更精确的,还要减去clock skew)小于等于时钟周期的时候(这个条件还是很容易满足的,一般要求两级触发器尽量接近,中间没有任何组合逻辑,时钟的skew较小),第二级触发器就可以稳定的采样,得到稳定的确定的数据了,防止了亚稳态的传播。
(5)FF2是采样了FF1的输出,当然是FF1输出什么,FF2就输出什么。仅仅延迟了1个周期。注意,亚稳态之所以叫做亚稳态,是指一旦FF1进入,其输出电平不定,可能正确也可能错误。所以必须说明的是,虽然这种方法可以防止亚稳态的传播,但是并不能保证两级触发器之后的数据是正确的,因此,这种电路都有一定数量的错误电平数据,所以,仅适用于少量对于错误不敏感的地方。对于敏感的电路,可以采用双口RAM或FIFO。
2 输入pulse有可能小于一个时钟周期宽度情况下的同步电路
对2的情况通常采用如下图14的反馈电路。该电路的分析如下:假设输入的数据是高电平,那么由于第一个触发器FF1是高电平清零,所有输出也是高电平,采用正确。如果输入是第电平那么被FF1被强制清零,这个时候输出位零。这样就保证了输出的正确性。
图14输入pulse有可能小于一个时钟周期宽度情况下的同步电路
编辑:黄飞
标签:
推荐文章
- FPGA设计如何提高同步系统中的工作时钟
- 小鹏汽车发布「扶摇」技术架构,重新定义高端智能电动汽车标准
- 完美世界:两大核心赛道加速抢跑 转型升级巩固优势
- 全球要闻:2023年6月焦作师范高等专科学校英语四级报名时间:4月27日至5月5日
- 威胜控股(03393.HK)4月20日收盘涨0.56%,主力资金净流入42.24万港元
- 美亚娱乐资讯(00391.HK)4月20日收盘涨12.38%
- 古 人 诚 不 欺 我!
- 首台国产126千伏C4/CO2混合环保气体GIS设备投运
- 日常黑市购买推荐|资讯推荐
- 广西边城靖西多彩非遗绽放魅力 文旅融合“活”起来
- 鸿合科技(002955)4月20日主力资金净买入197.50万元 环球看点
- 银行系私行“扶摇而上”:5家AUM超2万亿,服务模式迈向集团化、专业化|世界看热讯
- 汇丰控股回应平安建议其战略重组亚洲业务:建议股东投票反对|环球速看
- 丰原药业:公司本次计提减值准备减少公司2022年度利润总额约1733万元|环球速读
- 每日热文:美国一官员挪用30万美元建动物园,为自己开的民宿引流
- 每日快讯!王者荣耀的装备被动怎么触发(王者荣耀装备被动能叠加吗)
- 贝贝小南瓜的吃法有哪些
- 全球焦点!焦点访谈:“老广交”新成色
- 第五届山西省专利奖开始申报
- 马毛帽带使用说明
- 高适诗全集_关于高适诗全集简述
- 火山引擎发布多款数据产品|快报
- 全球短讯!三生万物的寓意_三生万物
- 鼎龙股份:仙桃工厂扩产项目预计于2023年安装完毕
- 描写春天的词语和句子_赞美春天的美妙句子分享
- 双成药业:注射用比伐芦定已占据较大美国市场份额 最新快讯
- 酷讯特价机票预订官网_酷讯特价机票_环球看点
- 2022年国抽药品批次不合格率为0.63% 中药饮片不合格率居首位_世界观察
- 环球观热点:苏州开弦弓村:增建文化设施 助力乡村振兴
- 女子上班6天工资仅发41元具体详细内容是什么|世界观焦点
- 世界新动态:40岁苍井空近照曝光,皮肤白皙身材苗条,首谈出道方式
- 【环球速看料】Steam Deck年度最大竞品?ROG掌机曝光:性能超强劲
- 变更法人需要法人到场吗 环球观点
- 悬疑剧《侦察》开票 | 早鸟限时优惠感受这场“猫捉老鼠的终极游戏”
- 纯电跨界车 MINI Aceman内有"小汪"萌萌哒 环球热文
- 贵阳市外事办公室党组书记、主任刘学接受纪律审查和监察调查
- 问题学生教育方法_如何教育问题学生|世界热门
- 全球热文:SMM日评:硅下游及贸易商询单热度增加 市场刚需订单成交
- 环球观点:武汉灵活就业人员社保缴费档次表2022-2023 月缴费金额是多少?
- 患溃疡性结肠炎的人多吗? 环球新动态
- 苹果在印度一年销售超60亿美元,库克:印度是一个令人兴奋的市场-全球观热点
- 全球焦点!中泰化学(002092.SZ):南黄草湖煤矿探明储量大概147亿吨,目前还未开采
- 二手房交易费用是怎么算的
- 农业农村部发布2023年国家农作物优良品种推广目录
- 浙商证券给予招商南油增持评级,招商南油点评报告,近期获8份券商研报关注,目标均价涨幅38.18% 速讯
- 复旦复华董秘回复:公司全资子公司上海克虏伯控制系统有限公司目前主营收入来源主要为金属结构件加工业务
- 永州市第四人民医院:急救知识进校园 守护生命伴成长 焦点简讯
- 文字玩出花富得流油六怎么过|天天观焦点
- 中国石化易派客电商平台7年交易额近3万亿元_世界时快讯
- 奇幻大陆2无敌版 奇幻大陆2修改器 环球消息
- 这么会“藏”,窦骁,小看你了
- 筹一万救命钱被索要八千推广费,“轻松筹”并不轻松!-环球微动态
- 通灵股份:拟在越南设立全资孙公司 经营太阳能接线盒等业务 世界简讯
- 焦点速读:楼阳生到开封市兰考县“四不两直”调研时强调 保黄河长久安澜 护群众安居幸福
最新资讯
- 当前视点!儋州市养老买房选哪个?儋州与观澜湖购房养老对比!
- 八宝粥的功效与作用及营养价值_八宝粥的功效与作用
- 天山电子:4月18日融资买入219.45万元,融资融券余额2228.18万元
- 环球时讯:让库克张大嘴巴:顾客抱着Macintosh参加印度首家苹果零售店开幕
- 第72集团军某陆航旅开展多机型多弹种海上实弹射击训练
- 一战伤三人!波利塔诺左脚踝扭伤,鲁伊右膝钝伤拉赫马尼右脚挫伤 焦点快看
- 08年奥运会男篮战绩_08年奥运会男篮|环球新视野
- 数字化时代,如何推进阅读 热门看点
- 天奇股份:磷酸铁锂电池回收处理产线已于今年一季度建成,目前处于全面调试阶段-全球今热点
- 13分大胜亦有不同!杜锋再次完爆杨鸣,辽宁半决赛注定输给广东
- 全球热消息:这一夜,刘德华跟香港顶流合影并撕开了他们的遮羞布
- 寻觅理想粤语_寻觅理想
- 十堰检察推出“13条”措施 服务保障绿色低碳发展示范区建设
- 湖北省第十六届运动会闭幕
- 世界热资讯!4月18日基金净值:诺安优选回报混合最新净值1.883,跌0.53%
- 【世界新视野】智利三文鱼价格持续下滑
- 国内首个陆上页岩油CCUS示范区建设取得重要进展_世界报资讯
- 【全球时快讯】甘肃白银:深挖沿黄特色资源 打造游客心向往之“诗与远方”
- 黄色上床
- 科普游助双减,提供实践课堂|新动态
- 环球快消息!埃泽利:每个人都在说追梦踩踏 但为什么你要抓住他的脚呢?
- 动态焦点:新华联:预计2022年年净资产为负,拟申请重整及预重整,公司股票交易可能被实施退市风险警示
- 九里香_九里香有毒-天天热点评
- 前列腺癌的早期症状及表现图片_前列腺癌的早期症状及表现
- 人才科创赋能昆明官渡区高质量发展_看点
- 惯性离心力在哪里最小_惯性离心力
- 每日精选:2022江西文化建设硕果累累
- 今日视点:深港“反向消费”火了!深圳商圈应“趁势求变”?
- 实况足球2019球员名字汉化补丁下载(实况足球2019球员名字汉化补丁) 天天热门
- 每日消息!雷雨今夜来袭!气温满30打对折!
- 熊猫中心否认联合美国动物园摆拍事件简单介绍
- 用新技术、新服务、新速度迎接新工体——北京移动圆满完成中超联赛揭幕战通信保障 每日热点
- 知识管理系统 观焦点
- 推动折叠屏迈入3.0时代?vivo X Fold2 和 X Flip将发布
- 美国8名警察开枪94次击毙非裔男子 大陪审团:不起诉 当前关注
- 欧普康视:目前专注国内眼视光产业,没有进军俄罗斯的计划
- 山西用系统思维重塑农村电商 培育100个乡村e镇_天天速读
- 每日资讯:杭州5月1日起实施房产新政?假的!谣言内容或出自AI
- 冯绍峰新恋情曝光?与盖玥希深夜聚餐 当众打情骂俏窃窃私语
- 焦点资讯:英语闯关_关于英语闯关的简介
- 明日方舟音律联觉门票哪里买 世界新视野
- 失业金领取后果严重(2023大家千万不要领失业保险)
- 菲姿婷是哪个国家的品牌_什么档次怎么样|焦点资讯
- 浙江海盐:“一镇一品”聚合力促进县域“大平安”-全球报道
- 合肥市第四十七中学举行九年级一模质量分析会|天天速看
- CCLE2023第五届中国教育后勤展览会在南京成功举办!
- 为什么现代国家热衷于用货币来调节经济发展? 焦点热文
- 全球资讯:通化金马股东户数减少373户,户均持股11.22万元
- 最新:2023上海车展:日产Max-Out概念车亮相
- 游客向大熊猫泼水惊扰国宝 研究基地:1年禁入