2022年2022年跨时钟域信号同步解决方案 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年跨时钟域信号同步解决方案 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年跨时钟域信号同步解决方案 .pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、跨时钟域信号同步的IP 解决方案作者: Rick Kelly ,Synopsys 研发经理2009 年 1 月为了确保拥有多个异步时钟域的系统级芯片(Soc)能够可靠运行, 设计人员必须使这些跨越了多个域的时钟和数据信号保持同步。尽管这并不属于新提出的要求,但随着多时钟域的越来越常见和复杂化,使得这一要求具备了新的重要意义。大规模集成加上对性能的严格要求以及频率调节都导致在许多不同频率下发生了很多时钟域跨越现象就像一场数字化的 完美风暴 。跨时钟域( CDC)问题会以许多种形式出现,其评估难度相当高。幸好,Synopsys DesignWare库产品提供了许多卓越的CDC解决方案,这些方案应用
2、简便,设计人员只需掌握在何时以及何处应用它们即可。本文解释了在时钟和数据信号从一个时钟域跨越到另一个时钟域时所发生的许多类型的同步问题。在任何情况下,本文所包含的问题都涉及到相互异步的时钟域。随着每一个问题的提出,本文将概述一个或多个DesignWare 解决方案。这些主题和解决方案包括:? 基本同步 DW_sync ? 临时事件同步 DW_pulse_sync, DW_pulseack_sync ? 简单数据传输同步 DW_data_sync, DW_data_sync_na, DW_data_sync_1c ? 数据流同步 DW_fifo_s2_sf, DW_fifo_2c_df, DW_
3、stream_sync ? 复位排序 DW_reset_sync ? 相关时钟系统数据同步 DW_data_qsync_hl, DW_data_qsync_lh 基本同步问题当来自一个时钟系统的信号将用作另一个与其不同步的时钟系统的输入时,就需要对信号进行同步以达成。而不进行同步就无法达成时序收敛。图1 所示为采用一个单寄存器来同步至目的时钟域的异步输入。伴随这种方法会出现的一个问题是,当一个触发器的数据输入处于逻辑0 至逻辑 1 之间的过渡过程当中时,发给这个触发器时钟信号时有可能产生亚稳态现象。亚稳态现象也有可能发生在触发器的建立时间或保持时间出现违反现象时。解决亚稳态事件使其达至逻辑1
4、或逻辑 0 所要求的时间量取决于建立时间或保持时间被违反的严重程度(图2)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 26 页 - - - - - - - - - Clock to Q delay 时钟至 Q 延迟FF Minimum specs 触发器最小规格图 2解决亚稳态事件所用时间当亚稳态事件持续时间长至足以影响到下一个逻辑阶段时,同步器就发生了故障。故障间平均时间(MTBF )通常计算如下:其中:fclk 是采样时钟频率fdata 是数据变化频率tres
5、是解决亚稳态所允许占用的时间T0 和 T1 是与具体触发器相关的常数(下文将进一步叙述)通常,由于在综合时会尝试在时序能够满足的条件下缩减门电路数以节省占用面积,所以设计人员无法控制至下一阶段间的时间预算。为了保持稳定一致的解决用时,设计人员可以采用一个2 个触发器组成的序列。但是,这种传统解决方案肯定会增加时延。在采用 2 个触发器的解决方案,时钟树就以减去触发器FF1 的时钟至 Q 延时后的时钟周期以及FF2 的建立时间要求为基础。对于有着相对较高数据传输速率的高速应用来说,即使两级同步器也有可能无法获得足够的MTBF ,特别是在FPGA 实现方案中。如果加入第3 级,则只有在第1 级在亚
6、稳态保持了足够长的时间,导致侵占了FF2 的建立时间的情况下,第2 级才有可能发生亚稳态事件(图3)。图 33 级同步器Sampe MTBF test MTBF 测试电路示例Error Counter 错误计数器采用这一方法, MTBF 可计算为:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 26 页 - - - - - - - - - T0 和 T1 常数与所选用的具体触发器相关,并有可能从库供应商处获得。库供应商会采用如图4 所示的电路来测定这些常数。错误计数器用于
7、测量在输入时钟处于某一特定组合的输入频率下的MTBF。通过在不同频率比率下让此电路运行,就可以测定T0 和 T1 的数值。图 4用于测定触发器常数的电路参见以下资料,可以了解更多有关亚稳态和MTBF 计算的信息:? 确保亚稳态不会破坏您的数字设计方案 ,作者: Debora Grosse, Unisys, EDN, 1994 http:/ 数字系统亚稳态特性 ,作者: Kleeman & Cantoni, IEEE Transactions on Computers, ol. C-36, No. 1, Jan., 1987 ? Google:MTBF 亚稳态同步另一个基本同步问题涉及到扫描测试
8、。扫描链经常采用保持锁存以确保在时钟域之间实现正确的扫描切换。如果在扫描测试排序时,让最后一个扫描输入循环后面直接跟一个捕获循环,且让两者的时钟均由测试时钟来驱动,则有可能无法正确捕获到跨越时钟域的功能信号(图5)。在源侧域之间插入一个锁存器能够提供1/2 时钟周期的延迟,确保了扫描测试期间的正确捕获操作,从而解决了这个问题。在不处于扫描模式时,可由一个复用器将这个锁存器旁路,实现正常功能运行。另一种解决方案是在较小型的时钟域之间插入一个负边沿触发器。图 5a 扫描测试中不受控制的偏移有可能导致跨域捕获发生违反图5b 在域之间复用一个锁存器可以确保1/2 时钟周期的保持名师资料总结 - - -
9、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 26 页 - - - - - - - - - 图 5c 一个负边沿D触发器也可保持1/2 时钟周期的保持图 5跨时钟域扫描测试问题对于基本同步来说,设计人员可以使用DesignWare 的 DW_sync 组件,此组件有以下参数:? 宽度? f_sync_type :级数? tst_mode:0 = 无保持, 1= 锁存, 2 = 负边沿触发器? verif_en ( 下文讨论;不影响综合) 在以 f_sync_type参数指定了级数后,将获得如图
10、6 所示的配置方式之一。图 6采用 DW_sync组件时可能的级数同步临时事件有些时间,您需要在一个时钟域内设置逻辑电路以告知另一个异步时钟域内的逻辑电路,有某一特定事件已经发生。一种方法是采用如图7 所示的方案,其中通过门选复位来清空源域内的脉冲。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 26 页 - - - - - - - - - 图 7a 较差的设计方案图 7b 较好但仍存在门选复位图 7c 更好的设计方案,但仍不是最佳方案图 7 另一个时钟域内事件的通知逻辑
11、在使用一个高电平有效的脉冲作为跨时钟域事件的信号时,这个脉冲的宽度必须足以确保采样操作的完成,而且必须在脉冲之间存在明显的无信号时间。为了避免采用脉冲拉伸机制,您可以使用不归零(NRZ )信号发生方式,而不要使用归零(RZ)信号发生方式。图8 所示为 clk_d 域是如何在后一种类型的信号下捕获变化的,这是一种在许多状况下难于采用的方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 26 页 - - - - - - - - - Event in clk_s :clk_s
12、 内的事件Return to :Clk_d 内捕获的归零信号Captured in :在 clk-d 内捕获的信号图 8NRZ 信号发生方式的优点为了简化时钟域之间的脉冲传递,可采用DW_pulse_sync双时钟脉冲同步器(图9)。标为 clk_s 的虚线框内的逻辑电路运行在 clk_s(源)时钟域下,而标为clk_d 的虚线框内的逻辑电路运行在clk_d (目的)时钟域内。在域之间采用NRZ 信号可以实现更高的事件处理流量,而且由于无需反馈,所要求的逻辑电路也较少。Register :可以通过 parameter, reg_event在器件外配置寄存器NRZ :跨域的 NRZ 信号Mult
13、iple :多寄存器同步器History :用于检测变化的历史寄存器图 9DW_pulse_sync双时钟脉冲同步器Multiple :多寄存器同步器Multiple :多寄存器同步器Busy state :忙碌状态NRZ feedback ack_delay=1:NRZ 反馈 ack_delay=1 :名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 26 页 - - - - - - - - - Multiple :多寄存器同步器Multiple :多寄存器同步器Busy
14、 state :忙碌状态NRZ feedback ack_delay=1:NRZ 反馈 ack_delay=1 :图 10加了确认的DW_pulseack_sync脉冲同步器如果需要反馈, 则可以采用DW_pulseack_sync ,这是一种带有确认的脉冲同步器。如图 10 所示,这个 IP 产品提供了一个NRZ反馈信号,能够比无确认版本提供更高的事件处理流量。DW_pulseack_sync还提供了可配置的标志寄存器和反馈延时。同步数据总线在从一个时钟域跨越至另一个时钟域时,在目的时钟对接近过渡状态的总线进行采样时,数据总线上有可能出现瞬时虚假数值(图 11)。例如,一条从11011001
15、 变为 01011010 的 8 位总线上有 3 个位发生了改变。在所涉及的偏移存在时序上不确定性的情况下,就有会看到8 个可能出现的数值:the initial value (11011001), the final value (01011010) and six possible intermediate values ( 11011000, 11011011, 11011010, 01011001, 01011000 and 01011011). Source :源总线Destination clk :目的时钟1st :第 1 个同步寄存器2nd :第 2 个同步寄存器Intermed
16、iate value :过渡数值Intermediate value :过渡数值图 11瞬时总线数值一种在同步数据总线时避免不想要的过渡数值的方法是,采用一个带有确认的临时事件同步器。这种逻辑可以采用以下次序对跨越时钟边界的数据进行同步交换:保持数据,发送 请接受 ,发回 已接受 ,释放数据寄存器。DW_pulseack_sync组件能够名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 26 页 - - - - - - - - - 发送必要的 请接受 和 已接受 事件。而一
17、种带确认信号的数据总线同步器DW_data_sync能更好地完成此项任务。此 IP 消除了过渡虚拟数据, 而且您可以对其进行配置,提供临时性的数据存储能力(图12)。Optional :可选用的临时数据寄存器Handshake :同步交换逻辑Send :发送控制图 12 带确认的DW_data_sync总线同步器确认延迟问题在源时钟比目的时钟快得并不多(或根本相同)时,提供一个确认信号的同步器可能会引发时延问题。如果在应用当中时延具有关键性的意义,则应考虑采用一种 提前 确认方式,即通过设置参数ack_delay = 0来进行配置。如果源时钟比目的时钟快出很多,则可以同步确认信号,而且数据可以
18、在不到目的时钟1 个周期内的时间内改变。在时延并非关键性问题时,最好采用默认的ack_delay = 1设置。如果没有使用延迟,则在本地注释块内记录此项附加说明就是一种很好的处理方式。以下是使用ack_delay = 0的通用规则 1:? clk_d 的周期不应当超过clk_s * 的周期( r_sync_type 0.25 )? clk_s 的频率不应当超过clk_d * 的频率( f_sync_type 0.25 )? 例如,在f_sync_type = r_sync_type = 2, Fclk_d = 200 M Hz时 Max Fclk_s = Fclk_d * (2 0.25) M
19、ax Fclk_s = 200 M Hz * 1.75 = 350 M Hz 如果确保目的时钟速率超过了(Fclk_s * (f_sync_type + 1.25))2,则可以使用更简单的信号同步体系。在目的时钟较快的情况下,可以对 请接受 事件进行同步,并在不到源域1 个时钟周期的时间内捕获数据。因此,也就不需要发回 已接受 事件了。在需要最大程度地减少时延和/或不必要的逻辑电路时,例如,在对一个实时时钟寄存器进行更新并将其内容发送到一个高速逻辑区块时,这种方法就较为实用。为了实现这一方法,可以采用DesignWare 的不带确认的数据总线同步器DW_ data_sync_na (图 13)
20、。此 IP 提供了比双向数据同步更高的数据吞吐量以及更少的逻辑电路,但请牢记时钟频率要求2: Fclk_d Fclk_s * (f_sync_type + 1.25).名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 26 页 - - - - - - - - - Event :事件同步逻辑电路图 13不带 ac 确认信号的DW_data_sync_na总线同步器总线同步的特殊情况如果在任一时刻,一条总线上只会有一个位发生改变(也就是格雷码格雷码过渡),则简单的多寄存器同步绝
21、对不会引发过渡虚假数据。而在接近采样时钟时有一个位发生改变时,第一个捕获此位的寄存器有可能进入亚稳态,但这个位将会转向新数值或旧有数值。在诸如跨时钟域监测计数器的应用当中,格雷码总线就较为实用。计数器数值的格雷码允许您使用较简单的同步技巧来在持续不断的监测下达成更低的时延。总线同步的另一种特殊情况涉及到一个您没有访问权的源域clk_s 。例如,您有可能要面对一个来自于没有提供源时钟的外界源的进入芯片内的相对较慢的总线。由于电路板布线时延有可能导致位与位间的时序偏移超过单个时钟周期,多寄存器同步就有可能遇到超过一个时钟周期以上的过渡虚假数值。在这种情况下,您可以使用 历史寄存器 来检测数据所发生
22、的变化,并决定何时将数据传递给芯片核心。Last value :上一次的数值New value :新数值Control :控制状态机Counter :计数器High count :高位计数图 14 DW_data_sync_1c单时钟过滤数据总线同步器针对这些情况, DesignWare提供了单时钟过滤数据总线同步器DW_data_sync_1c (图 14)。此同步器可以消除存在高位间时序偏移特性的数据过渡中的过渡数值。数据传输与数据流名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
23、 9 页,共 26 页 - - - - - - - - - 在跨时钟域传输数据时,请牢记数据传输与数据流之间的差别。在数据传输当中,在典型情况下不会长时间维持背靠背(back-to-back )式的数据发送。数据同步设计可作为一个示例,例如采用DW_data_sync的设计方案。而另一方面,数据流允许在设备提供的数据存储能力的限制范围内实现背靠背式的数据发送,例如采用FIFO。DesignWare Library 内的双时钟 FIFO 依赖于双端口RAM 的使用(图15)。源域内的推送逻辑电路负责将数据写入到RAM ,而目的域内的弹出逻辑电路负责将数据从RAM 读取。Push logic :推
24、送逻辑电路Pop logic :弹出逻辑电路FIFO Controller :FIFO 控制器Push interface :推送接口Pop interface :弹出接口图 15配合双端口RAM 的双时钟 FIFO 此设计采用了DesignWare组件 DW_ffoctl_s2_sf和 DW_ffo_s2_sf来实现一个带有状态标志位的同步(双时钟)FIFO(图 16) 。自从 1999 年建立其体系架构以来,这些组件一直在DesignWare Library IP内广受欢迎。Push logic :推送逻辑电路Pop logic :弹出逻辑电路FIFO Controller :FIFO 控
25、制器Push interface :推送接口Pop interface :弹出接口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 26 页 - - - - - - - - - 图 16配有状态标志的DesignWare双时钟 FIFO 控制器实现状态标志位的另一种方案是采用动态标志位的双时钟FIFO,它采用 DW_ ffo_2c_df和 DW_ffoctl_2c_df组件(图127)。除了动态标志位支持以外,DW_ffoctl_2c_df提供了一些新特色(在DW_ffo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年跨时钟域信号同步解决方案 2022 时钟 信号 同步 解决方案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内