英特尔Agilex® 7嵌入式存储器用户指南

ID 683241
日期 4/10/2023
Public
文档目录

4.3.14. 时钟域交叉处的格雷码(Gray-Code)计数器传输

本小节描述时钟域交叉(CDC)处格雷码计数器位传输之间最大偏斜的影响以及建议的解决方案。格雷码计数器是从写入域向读取域传输数据时,仅1位跳变,而其他位保持稳定,反之亦然。如果目标域被锁存于亚稳态范围内(违反建立或保持时间)的数据,则只有1个位是不确定的,目标域会读取计数器值(无论旧计数器或新计数器)。该情况下,只要计数器序列未损坏,DCFIFO仍然可以工作。

以下小节示例说明格雷码计数器各个位之间的较大偏斜会导致计数器序列崩坏。取一个3-bit宽的计数器宽度,并假设其从写时钟域传输到读时钟域。假设所有计数器位相对目标时钟的延迟为0,不包括具有源时钟1个时钟周期延迟的bit[0]。就是说,当计数器达到目标寄存器时,计数器位的偏移量将为源时钟的1个时钟周期。

以下显示正确的格雷码计数器序列:

000,
001,
011,
010,
110....

然后将数据传输到读取域,并传输到目标总线寄存器。

由于bit[0]的偏斜,目标总线寄存器接收以下序列:

000,
000,
011,
011,
110....

由于偏斜,会出现2-bit跳变。如果满足时序,就可接受该序列。如果出现2-bit跳变,并且两个位都违反时序,则可能导致计数器总线停留在之后或之前的计数器值,从而损坏DCFIFO。

因此,必须将偏斜控制在一定的偏斜范围内,以确保序列不被破坏。

注: 如果您使用User Configurable Timing Constraint,就使用Timing Analyzer中的 report_max_skew和report_net_delay报告进行时序验证。对于Embedded Timing Constraint,使用skew_report.tcl分析设计中的实际偏斜和所需偏斜。