aurora协议学习之时钟补偿


时钟补偿

1.什么是时钟补偿?

时钟补偿序列由6组时钟补偿指令/CC/组成,至少每隔10000个字码组发送一次,而不顾当前是否有其他的数据包或者码组在传输。当发送时钟补偿序列时,Aurora核将自动中断数据传输。每发送10000个字节,时钟补偿序列在每个线路(lane)上加12个字节的额外开销。时钟补偿应用于系统收发端使用独立的参考时钟资源的情况,它允许收发端使用的参考时钟频率的不同最大为100PPM。在收发端使用同一的参考时钟频率的时候,不需要使用时钟补偿功能。此时,WARN_CC和DO_CC都应该接低。另外,CLK_CORRECT_USE属性应该被设为false。

 

2.时钟补偿接口

所有的aurora8B/10B核上都有一个时钟补偿接口,这个接口用于控制时钟补偿序列的发送。

两个重要的端口:

DO_CC:当DO_CC为高电平时,aurora核在所有的线路上发送CC序列;

WARN_CC:当WARN_CC为高电平时,aurora核将不应答UFC(用户流控)请求。

 

DO_CC需要每隔一个时钟补偿周期置为高电平。DO_CC高电平持续时间和间隔时间与GTP/GTX收发器数据接口Lane的宽度有关。

 

WARN_CC用于aurora核使用了UFC或者NFC的情形。在DO_CC置位为高之前使WARN_CC置位,阻止UFC信息离CC序列太近,以免UFC信息与CC序列重叠而导致数据损坏。需要提前预置WARN_CC的时钟周期数与通道的线路数目和线路的宽度有关。

 

在WARN_CC和DO_CC为高电平期间,NFC信息将不会被应答。

 

3.时钟补偿功能常见用法:

(1)将时钟补偿事件发生时刻安排在数据帧的外边。

(2)将时钟补偿事件安排在数据流的特殊时刻,以避免干扰数据流。

一般情况下,不建议用户自己编写时钟补偿逻辑。使用CORE Generator software生成aurora核时会伴随产生一个标准的时钟补偿模块standard_cc_module_i。

 

4.时钟补偿对数据传输的影响

由于需要进行时钟补偿,需要在发送10000个字节后插入时钟补偿序列(对于2bytes的线路,每隔5000个时钟周期,对于4bytes的线路,每隔2500个时钟周期),用户不能够连续发送和接收数据,因为在时钟补偿过程中,数据线路将被挂起6个时钟周期。

 

5. 标准时钟补偿模块standard_cc_module_i分析

输入端口:

RESET-->rst_cc_module_i-->!lane_up_reduce_i-->&tx_lane_up_i-->

(aurora_module_i模块输出管脚).TX_LANE_UP(tx_lane_up_i)

TX_LANE_UP为高电平,则表示线路准备好,可以开始数据传输;为低电平,则表示线路尚未准备好。

这里可以认为,RESET用来指示TX_LANE_UP的状态。


输出端口:

WARN_CC:直接与aurora核的WARN_CC端口相连;

DO_CC:直接与aurora核的DO_CC端口相连;

 

参考文档:

aurora_8b10b_ug353-5.2-userguide

aurora_8b10b_protocol_spec_sp002

 

 

你可能感兴趣的:(FPGA)