描述
在某些启动/远程传输启动情况下使用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}};
结束
结束
没有回复内容