所谓同步电路,即电路中的所有受时钟控制的单元,如触发器( 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