同步电路
即电路中的所有受时钟控制的单元,全部由一个统一的全局时钟控制:
- 触发器(Flip Flop)
- 寄存器(Register)
同步电路优点:
- 在同步设计中,EDA工具可以保证电路系统的时序收敛,有效避免了电路设计中竞争冒险现象。
- 由于触发器只有在时钟边缘才改变取值,很大限度地减少了整个电路受毛刺和噪声影响的可能。
缺点:
电路里面所有的触发器都由同一个时钟驱动,所以必须构建时钟树、时钟网络,因此时钟到达哥哥触发器的时间不一样,则会引入时钟偏斜和时钟抖动问题:
- 时钟偏斜( Clock Skew )
- 时钟抖动(Clock Jitter )
- 时钟树综合,需要加入大量的延迟单元,使得电路的面积和功耗大大增加
全局异步电路
全局异步设计跟同步设计最大的不同就是它的电路中的数据传输可以在任何时候发生,电路中没有一个全局的或局部的控制时钟。
异步电路优点:
- 模块化特性突出
- 对信号的延迟不敏感
- 没有时钟偏斜问题
- 有潜在的高性能特性
- 好的电磁兼容性
- 具有低功耗的特性
异步电路缺点:
- 设计复杂
- 缺少相应的EDA工具的支持
- 在大规模集成电路设计中应避免采用异步电路设计
同步异步时钟,指时钟源是不是同一个,假设是同一个PLL出来的,就能看成是同步时钟,不同PLL下即使是同频也是异步时钟
在一个性想的全局时钟控制下,只要电路的各个功能坏节都买现了时序收敛,整个电路就可以可靠工作了。由于 EDA 工具的广泛支持,采用同步电路设计的方法是目前ASIC 和 SoC 设计的基本要求。但是常大规模 ASIC 和 SoC 芯片中都采用了全局异步、局部同步的方法。因此,在设计中必须要注意 异步信号与同步电路的交互问题 。
在不同时钟域间,如何安全传递信号
跨时钟域电路主要分为以下几种:
亚稳态相关概念和原理
- 亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。
- 亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。
- 在这个期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
- 亚稳态不能从根本上消除,但可以通过采取一定的措施使其对电路造成的影响降低。
亚稳态影响衡量指标MTBF(Mean Time Between Failure),MTBF越大,亚稳态影响越小:
双锁存器电平同步器
虽然说的是锁存器,但实际上是两个触发器:
- 一个信号在过渡到另一个时钟域时,如果仅仅用一个触发器将其锁存,那么用b_clk进行采样的结果将可能是亚稳态。这也是信号在跨时钟域时应该注意的问题。
为了避免上节所述的亚稳态问题,就应当使参数 MTBF 尽可能的大,通常采用的方法是双锁存器法,即在一个信号进入另一个时钟域之前,将该信号用两个锁存器连续锁存两次,最后得到的采样结果就可以消除亚稳态问题。
双锁存器法,优点:
缺点:
- 增加了两级触发器延时;
- 高性能计算中,两个时钟周期消耗对系统性能有消极的影响。
- 当快时钟域转到慢时钟域时,易造成慢时钟采样丢失(还未来得及采样,数据就变化了)。
使用条件:
- 常用于慢时钟域转到快时钟域
- {(Clk_slow的周期)} > {(Clk_fast的周期) + (路径延时)} ,确保信号可以被Clk_fast采样到(假设Clk_fast和Clk_slow起始时刻相同求得)
- {(data数据变化间隔)}>{(Clk_slow的周期)+2*(CIk_fast的周期) +(路径延时)},确保所有的数据变化均能采集到。
结论:
- 对于典型的0.25gm 工艺 ASIC 库中的一个触发器,则 MTBF=2.01(day ) ,即触发器每两天便可能出现一次亚稳态。如果将采样时间和异步事件触发频率都提高,亚稳态出现还要频繁。
- 对于同样的参数,双锁存器法可将MTBF提升为9.57* 年,这个数值足够保证电子系统稳定地运行。
- 两级触发器已经将MTBF变得足够大
- 三级或者更多级虽然能将亚稳态出现概率 降得更低 ,但是影响电路效率
增加寄存器进行同步的方法,只是不断降低亚稳态出现概率
单bit信号跨时钟域如何传输
慢时钟到快时钟的信号传输
采用边沿检测同步器电路。这种方法通常应用在慢速向快速时钟传递过程中,可以检测输入信号的上升沿,也可以检测它的下降沿。输出的的与门间相差一个快时钟的延迟:
其时序图为:
适用条件:
- 输入数据的宽度必须比—个接受时钟周期加上一个同步触发器的hold时间要长,最安全的就是两个同步周期宽度。
- 保证: 慢时钟域的脉冲足够保持到被快时钟的同步器拿到
快时钟到慢时钟的信号传输
对于快时钟域到慢时钟域,通常采用脉冲同步器进行同步。这个电路结构中,最左边是快时钟域下的一个翻转电路。中间是慢时钟域的两级同步器,最后是慢时钟域一级触发器+一个逻辑门。
基本功能是从快时钟域取出一个单时钟宽度脉冲,然后在慢时钟域中建立另一个单时钟宽度的脉冲。对电路结构的功能分析:
限制如下:
- 输入脉冲之间的最小间隔必须等于两个同步器时钟周期。
- 如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比一个时钟周期宽。
- 当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重。
- 这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。
对单bit同步器总结:
三种同步器总结
- 电平同步器,输入信号必须保持两个接受时钟周期宽度,每一次同步之后,输入信号必须恢复到无效状态。
- 边沿检测同步器,适用于低频时钟域向高频时钟域传输,输入信号必须保持两个接受时钟周期宽度。
- 脉冲检测同步器,适用于高频时钟域向低频时钟域传输,输入的脉冲时间的距离必须保持两个接收时钟周 期以上。
采用结绳法 进行单bit信号传输
- 信号从快时钟域到慢时钟域过渡时 ,慢时钟将可能无法对变化太快的信号实现正确采样;
- 上述同步器法对两个时钟之间的关系要求很严格,而“结绳法”适合任何时钟域的过渡。
“结绳法1”
原理:
- 将快时钟信号的脉冲周期延长,等到慢时钟同步采样后再“解绳”,还原为原来的脉冲周期宽度。
- 利用数据的边沿作时钟(图中上升沿)。(可以将脉冲无限延长,直到可以采集到数据,然后复位,要考虑产生数据的频率)。
- 这种结绳法的原理是,数据作为Din_clkA ,即当数据有上升沿(0->1)时,寄存器1的输出将会稳定在高电平,此时等待CIkB采样;当CIkB完成采样后,寄存器4会输出高电平,若此时Din_clkA为低电平,那么即可完成复位,开始下一次采样等待。
- 这里需要注意的是当数据来临(上升沿)时,ClkB域需要等待3个ClkB才会在寄存器4输出并完成输入端的复位,所以Din_CIkA如果变化较快,即持续时间短于3个CIkB,也就是Din_ClkA频率大于CIkB的1/3,那么这时Din_ClkA的变化将无法被采样到,因为CIkB域需要3个CIkB才能完成采样,并且此时Din_CIkA必须是低电平才能复位,采用异步复位。
- 在慢时钟采样快时钟的时候,结绳法适合采样数据较少(即脉冲间隔较大的控制信号。即脉冲间隔Ta>3Tb;即等待3个clkB时钟后,完成复位,才允许下一个输入脉冲。
结绳法2:
结绳法3:
电路功能为:
结绳法总结
结绳的方法归结为2类:
- 利用脉冲的边沿做时钟;
- 利用脉冲的电平(部分场合要求最小脉冲宽度)做选择器或者异步复位,置位。
- 另外的关键点就是什么时候结绳结束(采集到了数据就要让对方回到初始状态)
这里的操作也有2种方法:
- 利用采集到的脉冲做异步复位,置位。
- 利用采集到的脉冲再次结绳采集做握手响应信号。
总结:
- 结绳法可以解决快时钟域向慢时钟域过渡的问题,且其适用的范围很广。
- 结绳法实现较为复杂,特别是其效率不高,在对设计性能要求较高的场合应该慎用。
传输两个同时需要的信号(b_load 和b_en)
多个控制信号跨时钟域仅仅通过简单的同步器同步有可能是不安全的
当两个信号中出现一点skew时,跨时钟域不一定能够正确在同一个时刻被采样到:
b_load和b_en同步至a_clk时钟域,如果这两个信号有一个小的ske导致在a_clk时钟域中两个信号并不是在同一时刻起作用,与在b_clk中的逻辑关系不同。
解决方法(合并信号)
将b_load和b_en信号在b_clk时钟域中合并成一个信号b_lden,然后同步至a_clk中。
对不能合并的情况
如果遇到不能合并的情况,如译码信号。如果Bdec[0]、bdec[1]间存在skew将导致同步至a_clk中后译码错误,出现误码。
在这种情况下,建议加入另一个控制信号,确保bdec[0]、bec[1]稳定时采。例如在bdec[0]、bec[1]稳定输出后一到两个周期b_clk域输出一个en信号,通知a_clk域此时可以采bdec[O]、bec[1]信号。这样可确保正确采样。
小结
采样中“快到慢”与“慢到快”在考虑问题时有什么区别?
慢到快:
快到慢:
- 亚稳态问题
- 考虑慢时钟的采样速率问题。因为根据采样定理,采样频率低于信号最高频率2倍的时候,是无法完整采样的。