最近在摸索 V5的 rocket io 的使用 ,主要收获如下
1 GTP 时钟
GTP 的时钟源可以有 三种提供方式 1, 相邻的 GTP_TILE 2. 从差分端 经过 IBUFDS输入,应为 GTP 为 一对 公用 一个PMA_PLL,则GTP0 可以直接使用GTP1的用户时钟,如TXUSRCLK时钟,但在接收端需要使用自己独立的时钟 RERXCCLK 恢复时钟,或则使用公共的TXUSRCLK 但必须使用频率矫正,如为16bit 端口宽度 则 useclk2 =useclk/2
2 复位
所有的GTP 设计必须复位,使用 PLLLKDET_OUT做DCM 及PLL 的复位信号,PLLKDET_OUT完成 后 变高,则DCM退出复位, 然后 RXRECCLK 时钟锁定,DCM锁定,LOCKED 信号有效,rxusrclk 被锁定,而此时 DCM及PLL的LOCKED 信号作为 GTP TX与RX 的复位信号, RX-TX退出复位状态,开始工作
3 对齐
comma对齐是必须的,对齐的序列由ALIGN_COMMA_WORD设置,合法边带间隔由INTDATAWIDTH定义,边带位置数由RXDATA字节数定义,通常不GTP默认的对齐序列 为 K28.5,接收机在字符中搜寻对齐序列字符,一旦找到 ,将对齐到此字符边界,并将通常此序列也作为时钟修正序列,将RXENMCOMMAALIGN拉高,使能负命令对齐功能,任何符合对齐命令的模块都将引起命令重对齐,在成功对齐后,RXBYTEISALIGNED 将拉高,此时将命令对齐使能关闭以保持此时的对齐,
4时钟修正
对于非同源时钟驱动的TX与RX,时钟修正是必须的,使用rxrecclk可以不修正 由于任何两个不同源的时钟总存在一定的频率差,对于 GTP来说 由于频率不同步,将产生字符丢失
1,CLK_CORRECT_USE 设为 TRUE
2,设置时钟校正序列 CLK-COR_SEQ_1
3,RXbuffer 极限值设置
4, CLK_COR_ADJ_LEN用于设置子序列数目,如果内部数据位宽为10bit,则时钟校正电路适配所有10bit 大的每个子序列
4.8B/10B
1,字符运行一致性检查
2,K码指示RXCHARISK
3,命令检查 DEC_PCOMMA_DETECT is TRUE,RXCHARISCOMMA有效
4,限制命令触发 DEC_VALID_COMMA_ONLY K28.1 , K28.5,K28.7 因为他们都有一样的8/10B头
5,通道绑定
1,发送器同时在所有线上发送一个虚序列模式,来调整每路LANE的延迟
2,使能每个GTP收发器的通道绑定功能
3,设置主通道 CHAN_BOND_MODE 为TRUE 主通道 CHAN_BOND_LEVEL设为1
4, 设置 从通道为CHAN_BOND_MODE=SLAVE 从通道 CHAN_BOND_LEVEL设为 0
5,连接通道绑定端从 MADTER到 每个SLAVE,或者直接使用菊花链
6,设置通道绑定序列 和检测参数 CHAN_BOND_SEQ_LEN设置子序列长度 1-4
CHAN_BOND_SEQ_1*设置序列值,如CHAN_BOND_SEQ_2_USE 为TRUE,CHAN_BOND_SEQ_2*设置2的序列值,子序列有效激活的位数由 内部数据宽度和RX_DECODE_SEQ_MATCH决定, 设置最大偏移 ----当主通道接收到通道绑定序列 ,将不立即触发通道绑定,猪头感到必须等待一些时钟,否则 慢的通道可能还未接收到绑定序列,时钟校正和通道绑定电路一起执行,正常的他们不会冲突,除非通道绑定事假和时钟校正同时发生,这种情况,一个电路必须优先,确保时钟校正有更高的优先级,CLK_COR_PRECEDENCE设置为TRUE
6 使用 TX/RX phase Alignment
1 bypass buffer 减少延迟,但此时 时钟校正和通道绑定无效,RX 时钟源必须使用RXRECCLK,
2, RX_SXCLK_SEL设置为 RXUSR
3,由 RXRECCLK驱动 RXUSECLK
4,使用GTPRESET或 CDRreset 复位RX数路径
5,等待 PMA PLL好 RXUSRCLK DCM 或PLL LOCK
6 等待CDR锁定 提供一个稳定的RXRECCLK
7,驱动RXPMASETPHASE 为高32个用户周期后,释放
,
用户377235 2015-9-21 21:50
用户1703205 2014-5-21 19:43
用户1534968 2013-12-19 06:33