前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >同步时钟电路设计及其与异步时钟信号交互的问题

同步时钟电路设计及其与异步时钟信号交互的问题

作者头像
碎碎思
发布2020-06-30 10:26:41
1.6K0
发布2020-06-30 10:26:41
举报
文章被收录于专栏:OpenFPGA
现在以及过去的四分之一世纪中,实际上大部分数字设计都是基于使用全局时钟信号,以时钟信号控制系统中所有部件的操作。它的优点显而易见:在一个理想的全局时钟的控制下,只要电路的各个功能环节都实现了时序收敛,整个电路就可以可靠的实现预定的功能。 1.1 同步电路设计 1.1.1 同步电路的定义

所谓同步电路,即电路中的所有受时钟控制的单元,如触发器( Flip Flop)或寄存器( register)都由一个统一的全局时钟控制。如图 1.1 所示,触发器 R1 和 R2 都都由一个统一的时钟 clk 来控制时序,在 R1 和 R2 之间有一堆组合逻辑,这就是一个最简单的同步电路。

图 1.1 最简单的同步电路

由时序图可见,触发器 R1、 R2 的输出 Q1、 Q2 只有在时钟上升沿处才会改变其值,而在其他时刻寄存器的输出值都保持不变。这种触发方式我们通常称作时钟上升沿触发,相应的触发器 R1、 R2 被称作上升沿触发器,此时序电路称作上升沿触发时序电路;同样,只要我们选用不同触发方式的触发器组成电路,我们可以得到下降沿触发时序电路。 在实际电路设计中,根据不同的需求,我们既可以用到上升沿触发的时序电路,又可以用到下降沿触发的时序电路,甚至两者兼用。不过一般情况下在同步电路设计中,我们推荐使用统一的触发方式。 1.1.2 同步电路的时序收敛问题 时序电路的一个首要问题就是时序收敛问题。在同步设计中,所谓时序收敛,就是保证触发器输入端的数据在时钟信号的有效沿就达到稳定状态,即满足了触发器的建立时间(setup time);同样也保证了触发器输入端数据 在时钟有效沿过后的一段时间内保持稳定,即满足触发器的保持时间(hold time) ;图示见图 1.2。

(1) Setup time

(2) Hold time

(3) Transition time 图 1.2 setup time, hold time 和 transition time

以图 1.1 为例,第一级触发器 R1 的输出 Q1 在 T0 上升沿后得到新值,Q1 值经过一段组合逻辑后输出连接到下一级触发器 R2 的输入端 D2,经过这段组合逻辑必然要有一段延时 Tdelay 输出才能最终稳定,假设触发器 R2 建立时间为 Tsetup2,所谓满足时序收敛首先要满足时钟周期 T 〉= Tsetup2 + Tdelay;同样为了保证 D2 在 T1 时刻的值能够被无误地锁存,其值必须在一段称作 hold time 的时间段 Thold 内保持稳定。这样整个同步电路就可以可靠无误的运行下去。 要保证整个电路时序收敛的确是件复杂而庞大的任务,可幸的是,IC 设计发展到今天,设计同步电路时,我们已经可以用 RTL 来描述同步电路了,这样,在完成了同步电路系统的RTL 代码后,只要设定一些合理的约束(如时钟周期值),综合软件 DC 不但可以完成 RTL 到物理标准单元库的映射,还可以很方便实现电路的收敛。 进一步地,后端的 STA 工具,也可以对布局布线之后的电路检查时序收敛情况,以保证同步电路的有效性。值得一提的是,既然同步电路中控制电路动作的是一个全局的时钟信号,那么这个全局的时钟信号的周期数必须足够大,大到足以让电路中最长的时序路径收敛。在这里,这个最长的时序路径我们可以简单的看成电路中类似图 1.1 结构的由第一级触发器 Q1 端经一段组合逻辑到第二级触发器 D2 延时最长的一段。 1.1.3 同步设计的优点与缺陷 1.1.3.1 同步设计的优点 在功能上,同步电路设计方式具有很多的好处: z 在同步系统中,只要电路系统在时序上完全收敛,电路设计中令人头疼的竞争和冒险现象,得到了有效的避免。z 由于触发器只有在时钟边缘才改变取值,这就很大限度的减少了整个电路受噪声影响的可能。 在工程上,同步电路之所以如此受欢迎,这跟它得到 EDA 软件的广泛支持不无关系,正如前面提到的综合软件 DC 和 STA 工具,正是有了它们,同步设计才能在今天的数字设计中大行其道。 1.1.3.2 同步设计的缺陷 同步设计并不完美,也有一些问题一直困扰着同步设计者。其中,最为令人头疼的是时钟偏斜问题( clock skew)。同步设计成功有一个很重要的前提,就是所有信号在同一时钟跳变沿发生动作。但是在芯片或电路上,要做到这一点却不是那么简单。

图 1.3 时钟偏斜问题示意图

如果没有经过处理,全局时钟线到达各个时序元件的时钟端的路径就不可能相同,如图 1.3 所示, clk 到达触发器 R1 clk1 端的路径小于到达触发器 R2 clk2 端的路径。这样就得到图 1.3 所示的时钟波形。我们称这种时钟到达时间在空间上的差别叫做时钟偏斜(clockskew)。 时钟偏斜造成的后果是非常严重的,试想如果 clk2 和 clk1 的时钟信号的偏差足够大,它可能会造成整个同步电路发生同步失败。除了时钟偏斜,同步电路还受到时钟抖动( clock Jitter) 的影响,,所谓时钟抖动指的是,芯片某一给定点上时钟周期的暂歇性变化,即时钟周期在不同的时间端可能长短不一。有关时钟偏斜和时钟抖动的细节详见参考文献[1]。 不过,如今的 EDA 软件对以上提到的同步电路的缺陷都给予了很好的解决。比方说,时钟偏斜可以通过用 Astro 长时钟树的方法解决。而且现在的 EDA 软件在施加约束的时候也都考虑了时钟抖动等问题。由此,更能感到 EDA 软件对同步电路设计的推动作用。

后续更多详细内容,详见:

链接: https://pan.baidu.com/s/1fNMPOS_wYEM7sGc6pnf28A

提取码: bqdg

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档