跨越鸿沟:同步世界中的异步信号
只有最初级的逻辑电路才使用单一的时钟。大多数与数据传输相关的应用都有与生俱
来的挑战,即跨越多个时钟域的数据移动,例如磁盘控制器、CDROM/DVD 控制器、调制
解调器、网卡以及网络处理器等。当信号从一个时钟域传送到另一个时钟域时,出现在新
时钟域的信号是异步信号。
在现代 IC、 ASIC 以及 FPGA 设计中,许多软件程序可以帮助工程师建立几百万门的
电路,但这些程序都无法解决信号同步问题。设计者需要了解可靠的设计技巧,以减少电
路在跨时钟域通信时的故障风险。
基础
从事多时钟设计的第一步是要理解信号稳定性问题。当一个信号跨越某个时钟域时,
对新时钟域的电路来说它就是一个异步信号。接收该信号的电路需要对其进行同步。同步
可以防止第一级存储单元(触发器)的亚稳态在新的时钟域里传播蔓延。
亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进
入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的
电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这
种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
对任何一种触发器,在时钟触发沿前后的一个小时间窗口内,输入信号必须稳定。这
一时间窗口是多种因素的函数,包括触发器设计、实现技术、运行环境以及无缓冲输出上
的负载等。输入信号陡峭的边沿可以将此窗口减至最小。随着时钟频率的升高,会出现更
多有问题的时间窗口,而随着数据频率的提升,这种窗口的命中概率则会增加。
FPGA 制造商和 IC 晶片厂用“MTBF”来标识合格的触发器,并且确定它们的特性。
“MTBF”(平均无故障时间)用统计方法描述了一个触发器的亚稳态特性,即确定某个触发
器出现故障的概率。在计算 MTBF 时,制造商部分基于输入信号改变导致触发器不稳定期
间的时间窗口长度。另外,MTBF 的计算还使用了输入信号的频率以及驱动触发器的时钟
频率。
在一个 ASIC 或 FPGA 库中,每种触发器都有时序要求,以帮助你确定容易出问题的
窗口。“建立时间”(Setup time)是指在时钟沿到来之前,触发器输入信号必须保持稳定的
时间。“保持时间”(Hold time)则是指在时钟沿之后,信号必须保持稳定的时间。这些指标
通常比较保守,以应对电源电压、工作温度、信号质量以及制造工艺等各种可能的差异。
如果一个设计满足了这些时序要求,则触发器出现错误的可能性可以忽略不计。
现代 IC 与 FPGA 设计中使用的综合工具可以保证设计能满足每个数字电路触发器对
建立与保持时间的要求。然而,异步信号却给软件提出了难题。对新的时钟域来说,从其
它时钟域传来的信号是异步的。大多数综合工具在判定异步信号是否满足触发器时序要求
时遇到了麻烦。因为它们不能确定触发器处于非稳态的时间,所以它们也就不能确定从一
个触发器通过组合逻辑到达下一个触发器的总延迟时间。所以,最好的办法是使用一些电
路来减轻异步信号的影响。
信号同步
信号同步的目的是防止新时钟域中第一级触发器的亚稳态信号对下级逻辑造成影响。
简单的同步器由两个触发器串联而成,中间没有其它组合电路。这种设计可以保证后面的
评论0