异步电路的跨时钟域处理

电子说

1.3w人已加入

描述

1

异步电路的界定

异步电路不能根据时钟是否同源来界定,时钟之间没有确定的相位关系是唯一准则。 比如同一个时钟源如果经过pll分出33MHZ和50MHZ 的两个时钟,他们的相位关系会时钟变化的变化,那么他们驱动的电路也属于异步电路。

2

跨时钟域处理不当的危害和解决方案

1. 亚稳态

异步系统交互时会出现亚稳态,如果直接使用亚稳态信号,或者因处理不当导致其传播,会使整个系统结果不可预期。合理的异步电路同步器设计可以有效降低亚稳态出现的概率,但其是不可能被完全消除的。而亚稳态出现的概率和器件工艺,时钟频率,信号频率和同步器结构都有关系。

解决方案:

  1. 使用合适的同步器,包括但不限于:1bit多级打拍同步(电平信号,脉冲信号),多bit格雷码转换打拍同步,多bit Dmux同步,握手协议同步,异步FIFO同步。
  2. 若是打拍同步,需要根据工艺以及频率选择合适的打拍级数

2. 毛刺

异步系统交互时如果上游模块有信号毛刺,不当的处理会使其传播并被下游异步模块采样,可能会导致下游功能错误。同步系统内有setup检查保证毛刺在被采样前有足够的时间的消除,而异步电路只能靠设计保证毛刺不被传播和误采样。

解决方案:

  1. 上游待同步信号寄存器输出过滤毛刺
  2. 待同步信号的输出寄存器和同步器之间不能存在任何组合逻辑

3. 漏采、误采

异步系统交互时如果处理不当,可能会造成下游对传播信号漏采样或者误采样。

解决方案:

  1. 明确系统间的频率关系,采用合适的同步器
  2. 单bit待采集信号要进行位宽确认和拓展(快->慢),一般要保证信号宽度大于采集时钟加上一个margin(依据经验而定,来源是采集时钟域的setup,hold,skew,jitter等)
  3. 多bit信号不能直接打拍采样,通过格雷码或者握手,异步fifo等其他结构的同步器。

4. 再汇集

有相互关系的上游信号经过了异步处理之后到达另一个时钟域的时间是不可预期的,那么他们再次汇聚的时候会出现与预期功能不一致的错误。这又被称为再收敛(reconverge)错误。

解决方案:

  1. 多个1bit信号待同步时,必须在原时钟域完成组合汇聚和寄存处理,不能分别同步到另一个时钟域再汇聚
  2. 同源信号复制跨时钟域时,需要先进行跨时钟域,再进行复制。

5. 异步复位

如果处理不当或者没有做好相应时序检查,复位功能会有问题。

解决方案:

  1. 采用稳定的复位逻辑单元(普遍使用经典的异步复位同步释放结构)
  2. 做好recovery-removal检查
  3. 保证对接模块的异步复位不相互影响

3

异步电路跨时钟域的设计检查

  1. 明确设计规格,做好代码review
  2. 做好Clock-Domain-Crossing(CDC)检查
  3. 有条件的做好FPGA,EMU和后仿检查确认
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分