Intel® Stratix® 10嵌入式存储器用户指南

ID 683423
日期 11/19/2019
Public
文档目录

4.3.13. 时钟域交叉上的格雷码计数器传输(Gray-Code Counter Transfer at the Clock Domain Crossing)

本节介绍采用建议的解决方案在时钟域交叉(CDC)处格雷码计数器位传输之间的较大偏斜的影响。格雷码计数器是1-bit转换,而其他比特在数据从写入域传输到读取域时保持稳定,反之亦然。如果目标域在亚稳范围内(违反建立或保持时间)锁存数据,那么只有1 bit是不确定的,目标域会将计数器值读取为旧计数器或者新计数器。在这种情况下,只要计数器序列没有损坏,DCFIFO仍然可以工作。

以下部分显示了GNU C compiler (GCC)比特之间的较大偏移会破坏计数器序列的示例。取一个3-bit宽的计数器宽度,并假定它已从写时钟域转移到读时钟域。假设所有计数器比特相对于目标时钟都有0延迟,不包括bit[0](有源时钟的1个时钟周期延迟) 。也就是说,当计数器比特到达目标寄存器时,其偏移量将是源时钟的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分析设计中的实际偏斜和所需偏斜。