同步时钟亚稳态问题 的解决方案


之前讲到了亚稳态问题和成因,此处讲如何解决同步电路中亚稳态问题的解决方法。

从STA公式 ( a ) (a) (a) ( b ) (b) (b)就可以看出端倪了,重写如下

T s e t u p U F F 1 < T c l k + T c l k 2 U F F 1 − ( T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 U F F 1 ) (a) T^{UFF1}_{setup}<T_{clk}+T_{clk2UFF1}-(T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02UFF1}) \tag{a} TsetupUFF1<Tclk+Tclk2UFF1(Tclk2UFF0+TCK2QUFF0+TUFF02UFF1)(a)

T h o l d U F F 1 < T c l k 2 U F F 0 + T C K 2 Q U F F 0 + T U F F 02 U F F 1 − T c l k 2 U F F 1 (b) T^{UFF1}_{hold}<T_{clk2UFF0}+T^{UFF0}_{CK2Q}+T_{UFF02UFF1}-T_{clk2UFF1} \tag{b} TholdUFF1<Tclk2UFF0+TCK2QUFF0+TUFF02UFF1Tclk2UFF1(b)

两个式子中
T s e t u p U F F 1 T^{UFF1}_{setup} TsetupUFF1 T h o l d U F F 1 T^{UFF1}_{hold} TholdUFF1 T C K 2 Q U F F 0 T^{UFF0}_{CK2Q} TCK2QUFF0是触发器自身特性无法改变
T c l k T_{clk} Tclk是同步时钟,与电路无关
剩余的量就是引起同步电路亚稳态的原因了

1. 组合逻辑 T U F F 02 U F F 1 T_{UFF02UFF1} TUFF02UFF1

从上述公式可以看出,组合逻辑会影响建立时间和保持时间的满足。

不仅如此,在满足建立时间和保持时间的前提下,组合逻辑与时钟频率 T c l k T_{clk} Tclk有关联。

还记得下面这个式子嘛

T c l k > max ⁡ ( i , j ) 存 在 时 序 路 径 ( T s e t u p U F F j + T C K 2 Q U F F i + T U F F i 2 U F F j + T c l k 2 U F F i − T c l k 2 U F F j ) (c) T_{clk}>\max_{(i,j)存在时序路径}(T^{UFFj}_{setup} +T^{UFFi}_{CK2Q}+T_{UFFi2UFFj}+T_{clk2UFFi}-T_{clk2UFFj} ) \tag{c} Tclk>(i,j)max(TsetupUFFj+TCK2QUFFi+TUFFi2UFFj+Tclk2UFFiTclk2UFFj)(c)

真正对右式起关键作用之一的就是组合逻辑 T U F F i 2 U F F j T_{UFFi2UFFj} TUFFi2UFFj

1.1. 流水线设计

也是pipeline,意思非常简单,就是在冗长的组合逻辑中加入多级触发器,这样每个 T c l k T_{clk} Tclk两个触发器之间走过的组合逻辑路径就会减少,就可以减小 T c l k T_{clk} Tclk提高系统工作频率。

例如有一家咖啡吧有客人ABCDE依次排队买套餐。
一般为客人供给食物的策略是:员工甲放个盘子,员工乙装上薯条,员工丙放上豌豆,老板最后配上 一杯饮料,完成对客人A的服务,然后再服务下一位客人B服务,顺序依次。
但是这样的策略有个问题:员工甲给了客人盘子之后,就一直闲着直到该客人套餐购买完全结束,才 为下一个客人服务。其他员工同样存在相同的问题
而pipeline的策略是:在甲为客人A放完盘子之后,为客人B放盘子,再为客人C放盘子,直到客人E。其他员工也是这样的策略。

举加法器的例子,我们分别代入 ( c ) (c) (c)式计算

不使用流水时:
在这里插入图片描述

T c l k 1 > T s e t u p F F + T C K 2 Q F F + 3 ⋅ T a d d e r + max ⁡ ( T c l k 1 s k e w ) T_{clk1}>T^{FF}_{setup} +T^{FF}_{CK2Q}+3·T_{adder}+\max(T_{clk1skew}) Tclk1>TsetupFF+TCK2QFF+3Tadder+max(Tclk1skew)

使用流水时:
在这里插入图片描述

T c l k 2 > T s e t u p F F + T C K 2 Q F F + T a d d e r + max ⁡ ( T c l k 2 s k e w ) T_{clk2}>T^{FF}_{setup} +T^{FF}_{CK2Q}+T_{adder}+\max(T_{clk2skew}) Tclk2>TsetupFF+TCK2QFF+Tadder+max(Tclk2skew)

分析一下流水设计带来的变化

时钟频率 增加

从公式中可以看出,是用流水后加法器减少了。因为各触发器离得更近了,时钟偏斜也有所减缓,因此系统工作频率可提高。

吞吐率 增加

流水线引入后也是每个时钟周期输出一个结果,但是由于时钟频率的增加,使得吞吐率也增加

延迟 增加

此处的延迟是指一个数据从输入到输出的总时间

引入流水之前,延迟为 T c l k 1 + T C K 2 Q F F T_{clk1}+T^{FF}_{CK2Q} Tclk1+TCK2QFF,引入流水之后变成 3 T c l k 2 + T C K 2 Q F F 3T_{clk2}+T^{FF}_{CK2Q} 3Tclk2+TCK2QFF

后者更大

功耗和面积 增加

毕竟触发器多了嘛,功耗、布局布线都会增加压力

相关概念

介绍流水线的相关概念

以CPU取指令3ns、分析4ns、执行1ns为例

流水线周期: 执行最长操作所花费的时间,也是流水过程中每输出1个结果花费的时间,即4ns

操作时间: 只执行1次全部操作花费的时间,即3+4+1=8ns

n个数据流水线时间: 执行1次流水共执行n次操作花费的时间,公式 操作时间 + (n-1)×流水线周期

吞吐率: 输出结果数量 / 流水线时间。n个数据流水线吞吐率为 n / [操作时间 + (n-1)×流水线周期]

最大吞吐率: 流水过程中,单位时间内输出的结果数量,为1 / 流水线周期

【软考学习5】流水线基本概念、周期执行时间、吞吐率、加速比和效率的计算

2. 时钟偏斜(Clock Skew)

看公式就知道时钟偏斜是啥意思了,就是时钟信号到达不同触发器的时间不同

这个东西在同步电路中必然存在

● 如果CLKM到达UFF0先于UFF1,即 T c l k 2 U F F 0 − T c l k 2 U F F 1 < 0 T_{clk2UFF0}-T_{clk2UFF1} <0 Tclk2UFF0Tclk2UFF1<0,保持时间不满足,其实就是UFF1/D的变化提前了

● 如果CLKM到达UFF0晚于UFF1,即 T c l k 2 U F F 0 − T c l k 2 U F F 1 > 0 T_{clk2UFF0}-T_{clk2UFF1}>0 Tclk2UFF0Tclk2UFF1>0,建立时间不满足,其实就是UFF1/CK采样提前了

还有个时钟抖动(Clock Jitter)的概念,是指不同时期时钟周期长短不一

解决方法:时钟规划

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值