RXAUI v2.2 - Virtex-6器件在启动时无法完成对齐

描述

在某些启动/远程传输启动情况下使用RXAUI v2.2时,GTX RX缓冲区可能会引入超出Core(Marvell模式)或GTX(Dune模式)的偏移校正能力的偏移。

对于Virtex-6 VHDL:
将mgt_rxbuf_reset信号连接到包装器上相应的GTXn_RXBUFRESET_IN端口。

常量CHBOND_COUNT_LENGTH:整数:= 16;
signal chbond_counter:unsigned(CHBOND_COUNT_LENGTH - 1 downto 0);
signal mgt_rxbuf_reset:std_logic_vector(1 downto 0):=“00”;
...

- 当chbond计数器到期时重置RX缓冲区
- 重新对齐缓冲区指针
过程(clk156)
开始
如果rising_edge(clk156)那么
如果chbond_counter(CHBOND_COUNT_LENGTH-1)='1'那么
mgt_rxbuf_reset <=“11”;
其他
mgt_rxbuf_reset <=“00”;
万一;
万一;
结束过程;

过程(clk156)开始
如果rising_edge(clk156)那么
if((chbond_counter(CHBOND_COUNT_LENGTH-1)='1')或(align_status_i ='1'))然后
chbond_counter <=(others =>'0');
elsif(sync_status_i =“1111”)然后
chbond_counter <= chbond_counter + 1;
结束
其他
chbond_counter <=(others =>'0');
万一;
万一;
结束过程;

Virtex-6 Verilog:

将mgt_rxbuf_reset信号连接到包装器上相应的GTXn_RXBUFRESET_IN端口。

localparam CHBOND_COUNT_LENGTH = 16;
reg [CHBOND_COUNT_LENGTH-1:0] chbond_counter = {CHBOND_COUNT_LENGTH {1'b0}};
reg [1:0] mgt_rxbuf_reset = 2'b00;
...
//当chbond计数器到期时重置RX缓冲区
//重新对齐缓冲区指针
总是@(posedge clk156)开始
if(chbond_counter [CHBOND_COUNT_LENGTH - 1])
mgt_rxbuf_reset <= 2'b11;
其他
mgt_rxbuf_reset <= 2'b00;
结束

总是@(posedge clk156)开始
if(chbond_counter [CHBOND_COUNT_LENGTH - 1] || align_status_i)开始
chbond_counter <= {CHBOND_COUNT_LENGTH {1'b0}};
结束
否则if(&sync_status_i)开始
chbond_counter <= chbond_counter + 1'b1;
结束
别的开始
chbond_counter <= {CHBOND_COUNT_LENGTH {1'b0}};
结束
结束
编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-07-31 15:09:38 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它