书※目:FPGA深度解析_第七章_樊继明著
    高级FPGA设计结构、实现和优化_第六章_孟宪元译


文章目录

  • 一、亚稳态
  • (1)跨时钟域的亚稳态现象
  • (2)亚稳态的多径传输
  • 二、跨时钟域处理
  • 2.1 单bit信号跨时钟域处理
    • (1)单径两级触发器同步器
    • (2)相位控制
    • (3)多径与多级寄存器同步链
    • (4)组合逻辑信号的同步化
    • (5)快时钟域信号的同步化
  • 2.2 多bit信号的跨时钟域处理
    • (1)异步FIFO
    • (2)双口RAM

一、亚稳态

(1)跨时钟域的亚稳态现象

建立时间:输入信号在时钟上升沿来临之前,应该保持数据稳定的最短时间,否则数据不能被正常采样;
保持时间:输入信号在时钟上升沿来临之后,数据保持稳定的时间,否则数据不能被正常传输。

  对于时序电路,在不同时钟域之间进行数据传输时,因为异步时钟沿可能在任何时刻到来,当寄存器输出的信号无法满足建立时间和保持时间时,输出端的信号极有可能出现亚稳态现象。这是一个充分不必要条件,因为出现亚稳态现象,不一定是因为时序不满足建立和保持时间,也有可能由半导体工艺或者芯片在不同的环境下工作导致信号从亚稳态回到稳定状态的时间长短不一样。


(2)亚稳态的多径传输

  在图1.2中,跨时钟域信号b分别经过三个组合电路输入到异时钟域,由于每个组合逻辑电路的延迟不一样,导致信号到达目标位置时的时钟偏移也不一样,所以三条路径都有可能产生亚稳态。如右侧时序图可以知道,在某个时钟沿来临时,D1的输入端数据已经稳定,D1可以输出正确的逻辑电平;D2的输入端是在时钟沿来临之后才建立稳定的数据,因此c2比c1落后一个时钟周期,并且丢失了一个时钟时钟周期的宽度;D3的输入端在时钟沿附近发送跳变,c3很可能产生亚稳态,并经历了一个时钟周期后才建立起正确的电平。

  在图1.3中,跨时钟信号没有经过组合逻辑,而是直接经过布局布线连接到多个异时钟域目标区域,本质上和图1.2没区别,依然可能发送亚稳态。

  在图1.4中,跨时钟域信号在b2时,发生亚稳态现象。b2经过三条路径传输。由于亚稳态在不同的传输路径中收到的电气影响不同,假设c1受电源噪声影响迅速上升为高电平,c2受工艺影响落回低电平,c3继续传输了亚稳态,那么c3经过触发器之后,输出逻辑是不可预测的,可能是0,可能是1,也可能继续是亚稳态。

因此,异步信号无论是先经过多径传输至新的时钟域中,还是先传输到新的时钟域在经过多径传输,最终的结果并没有本质上的区别(一个时钟周期延时的区别)。因此需要经过处理之后,才能保证输出信号的一致行为。


二、跨时钟域处理

2.1 单bit信号跨时钟域处理

(1)单径两级触发器同步器

在单bit信号的跨时钟域传输处理中,可以使用两级触发器进行同步,注意,是处理单bit的信号。

  在图2.1中,信号c依然可能会产生亚稳态。在图2.2中,在T0时刻,信号b处于亚稳态,此时D2还没有采到任何数据,维持原来的状态,在T1时刻,D1的输入信号b已经维持稳定的电平,c输出一个逻辑正确的电平;对于D2来说,T1时刻,c的状态可能已经恢复稳定的电平,也可能是亚稳态,所以此时的d的电平是难以确定的。但在T2时刻,c的信号已经稳定,所以D2是能输出正确的逻辑电平的,即d是正确稳定的电平。

注意:使用两级触发器对异步信号进行同步处理只能减少亚稳态产生的概率,无法彻底消除亚稳态的现象,即d端仍有可能输出出现亚稳态现象。


(2)相位控制

  在单bit信号的跨时钟域同步处理时,如果一个时钟的周期和另一个时钟周期有倍数关系,并且其中一个时钟可以由内部PLL或DLL控制时,进行相位匹配处理可以消除时序冲突。但是一般不奢望能控制时钟域的相位关系。


(3)多径与多级寄存器同步链

  前面讨论了亚稳态信号的多径传输,这个问题在寄存器同步链中同样存在,在图2.3中,由于信号b分别经过不同的路径传输到同步触发器上,由于布线延迟的不一致,无法保证同时到达d1、d2、d3,这可能导致电路行为不一致的后果,造成电路功能异常会带来不必要的调试时间成本。

针对这个问题,可以先对信号b进行同步,再分发。

(4)组合逻辑信号的同步化

  与单一跨时钟域信号的多径传输不同,跨时钟域组合逻辑信号的同步化是指多个异步信号先经过组合逻辑,再由寄存器同步链同步。

由2.5图可以看出,由于b1、b2、b3信号的各个跳变沿时刻不一致,导致输入到同步链的信号翻转率大大提高,从而导致同步后的数据故障概率提高。

改为寄存器输出的好处是减低了数据的翻转率,并且不会出现毛刺信号和短脉宽信号。


(5)快时钟域信号的同步化

  当信号从快时钟域同步到慢时钟域时,有可能造成信号的丢失,如图2.8所示,信号b在慢时钟域内,导致慢时钟无法采集到该数据。在图2.9中,由于信号b的维持时间在慢时钟域一个周期对齐,依然满足不了建立和保持时间的要求,依然无法采集正确的数据。

  在处理这种脉冲宽度不够的一个做法是,想办法把脉冲宽度扩充,大到可以被慢时钟域采集,那么多大合适,一般宽度达到1.5个慢时钟周期,就能正常采集到数据。如图2.10所以,引入反馈信号,当信号b发送电平跳变时,跳变后的逻辑电平一直高电平,因此,在clk2时钟域有足够的时间对信号b进行捕捉。信号b完成同步后,通过寄存器同步链反馈回clk1时钟域,当clk1时钟域检测到信号b的高电平已经传输至ack2时,信号b返回低电平,完成信号的传输。

采用反馈电路处理跨时钟域信号的好处是明显的,任何时候都不担心信号丢失,但是这种依赖于clk1和clk2会存在一种隐患,就别人使用这个程序时,时钟域都和原来的不一样,导致电路发生灾难性错误。同时电路需要反馈信号来判断合适改变信号b,导致信号b的操作周期变长,即速度变慢了。

2.2 多bit信号的跨时钟域处理

(1)异步FIFO

异步FIFO的可以参考我的另一篇博文(点击直达)。异步FIFO是处理多bit数据跨时钟域处理的一个常用方法,其中注意的是格雷码计数器的应用。

(2)双口RAM

  双口RAM在应用上,与FIFO类似,不同的是使用双口RAM是,需要设计者自己设计握手信号的产生、同步和握手。在一般的应用中,可以把RAM地址划分为高地址空间和低地址空间,在设计中,通过对某一地址进行比较,并判断双口RAM中的数据量情况,以此控制双口RAM的读/写。

双口RAM除了需要自己管理地址以及流水线信号的产生外,控制方式本质与FIFO无太大区别。


作者:xlinxdu
版权:本文是作者整理的读书笔记,部分素材来源于参考教材或其他,侵权联系删。
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

【读书笔记】Verilog的亚稳态现象和跨时钟域处理方法相关推荐

  1. 异步时钟引起的亚稳态问题和跨时钟域电路设计

    本文总结由数字电路设计的异步时钟引起的亚稳态问题,并针对亚稳态问题提出的处理方法和跨时钟域电路设计方法.重点是分析由异步时钟引起的跨时钟域CDC问题,后续将会总结由复位引起的电路亚稳态问题. 一.亚稳 ...

  2. 跨时钟域电路设计方法

    在数字电路设计过程中 ,难免会遇到某个信号需要跨越不同时钟域的情况. 如果对跨时钟域的信号不做妥善的处理,跨越时钟域后,信号可能发生亚稳态,传播亚稳态,导致电路工作异常.并且,由跨时钟域处理不当引发的 ...

  3. FPGA跨时钟域处理方法延迟法

    1.1 FPGA跨时钟域处理方法延迟法 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA跨时钟域处理方法延迟法: 5)结束语. 1.1.2 本节引言 " ...

  4. FPGA跨时钟域处理方法FIFO

    1.1 FPGA跨时钟域处理方法FIFO 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA跨时钟域处理方法FIFO: 5)结束语. 1.1.2 本节引言 &quo ...

  5. 亚稳态与信号跨时钟域介绍

    亚稳态,是由于寄存器的输入信号没有满足建立时间和保持时间,导致寄存器的输出处于一种不确定的状态. 处理跨时钟域的数据有单bit和多bit之分,而打两拍的方式常见于处理单bit数据的跨时钟域问题. 简单 ...

  6. 亚稳态及信号跨时钟域处理

    文章目录 一.亚稳态简介 二.亚稳态窗口 三.平均无故障时间(MTBF) 四.亚稳态产生场景 五.解决亚稳态的技术 5.1 单比特信号跨时钟域 5.1.1 多级同步器 5.1.2 另一种多级同步器 5 ...

  7. 跨时钟域处理方法总结

    目录 跨时钟域处理 1. 异步时序定义 2. 亚稳态 3. 同步策略 方法一:双锁存器 方法二:握手信号(结绳法) 方法三:异步双口RAM+格雷码 跨时钟域处理 为了彻底理解跨时钟域问题,多方搜集资料 ...

  8. FPGA笔记2——跨时钟域同步信号方法

    亚稳态 触发器是FPGA设计中最常用的基本器件.触发器工作过程中存在数据的建立(setup)和保持(hold)时间.对于使用上升沿触发的触发器来说,建立时间就是在时钟上升沿到来之前,触发器数据端数据保 ...

  9. 跨时钟域(CDC)设计方法之多bit信号篇(一)

    写在前面 本博客所有CDC相关的内容:跨时钟域(CDC)设计汇总 1.跨时钟域处理方法的分类 信号的跨时钟域传输可能会引入亚稳态问题,那么就需要想办法对其进行处理,从而降低亚稳态发生的概率(即提高MT ...

最新文章

  1. CDN和Web Cache领域相关的经典书籍推荐
  2. java内存shell_2019蚂蚁金服Java后端三面,详述程序员必须掌握的架构底层原理
  3. 解决ssh登录linux速度慢的问题(以centos7为例)
  4. MATLAB找不到遗传算法工具箱,用不了gatool命令的解决方案
  5. Hadoop集群搭建(27)
  6. AddMvc 和 AddMvcCore 的区别
  7. Android插件化开发之DexClassLoader动态加载dex、jar小Demo
  8. mysql主从是同步还是异步_mysql主从同步异步场景的分析
  9. day5-shutil模块
  10. Hadoop 2.5.1集群安装配置
  11. js 拾遗 js时间戳转换
  12. 转: oracle中schema指的是什么?
  13. Mybatis-语法笔记
  14. 拓端tecdat|R语言用相关网络图可视化分析汽车配置和饮酒习惯
  15. MATLAB车牌识别系统
  16. DNS介绍,哪个好,速度快稳定
  17. excel下拉列表多选框_移动Excel列表框项目
  18. [FUNC]ObjRegisterActive
  19. [JS] canvas 详解
  20. 关于open file limit问题解决

热门文章

  1. PHP中三元运算符的用法_PHP 三元运算符的使用
  2. NLP基础核心技术(语法模型和语法树)
  3. 把成语用到登峰造极的作文
  4. idea改变大于等于、不等于!=等符号的样式
  5. Xilinx 7系列FPGA PCB设计指导(二)
  6. 基于MyEclipse+Tomcat+Mysql+JSP开发得高校快餐店订餐系统
  7. 京东开普勒导购模式代码分享[java]
  8. 两天一种设计模式之——适配器模式
  9. OPPOA57T_官方线刷包_救砖包_解账户锁
  10. php织梦乱码,织梦dedecms模板乱码解决方法