UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 46523

RXAUI v2.2 - Alignment fails to complete at startup for Virtex-6 devices

Description

When using RXAUI v2.2 under some startup / remote transmission startup circumstances, the GTX RX Buffer can introduce skew beyond the deskew capability of the Core (Marvell Mode) or GTX (Dune Mode).

解决方案

For Virtex-6 VHDL :
Connect mgt_rxbuf_reset signal to the appropriate GTXn_RXBUFRESET_IN port on the wrapper.

constant CHBOND_COUNT_LENGTH : integer := 16;
signal chbond_counter : unsigned(CHBOND_COUNT_LENGTH - 1 downto 0);
signal mgt_rxbuf_reset : std_logic_vector(1 downto 0) := "00";
...

-- reset the RX Buffer when the chbond counter expires to
-- realign the buffer pointers
process (clk156)
begin
if rising_edge(clk156) then
if chbond_counter(CHBOND_COUNT_LENGTH-1) = '1' then
mgt_rxbuf_reset <= "11";
else
mgt_rxbuf_reset <= "00";
end if;
end if;
end process;

process (clk156) begin
if rising_edge(clk156) then
if ((chbond_counter(CHBOND_COUNT_LENGTH-1) = '1') or (align_status_i = '1')) then
chbond_counter <= (others => '0');
elsif (sync_status_i = "1111") then
chbond_counter <= chbond_counter + 1;
end
else
chbond_counter <= (others => '0');
end if;
end if;
end process;

Virtex-6 Verilog:

Connect mgt_rxbuf_reset signal to the appropriate GTXn_RXBUFRESET_IN port on the wrapper.

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;
...
// reset the RX Buffer when the chbond counter expires to
// realign the buffer pointers
always @(posedge clk156) begin
if (chbond_counter[CHBOND_COUNT_LENGTH - 1])
mgt_rxbuf_reset <= 2'b11;
else
mgt_rxbuf_reset <= 2'b00;
end

always @(posedge clk156) begin
if (chbond_counter[CHBOND_COUNT_LENGTH - 1] || align_status_i) begin
chbond_counter <= {CHBOND_COUNT_LENGTH{1'b0}};
end
else if (&sync_status_i) begin
chbond_counter <= chbond_counter + 1'b1;
end
else begin
chbond_counter <= {CHBOND_COUNT_LENGTH{1'b0}};
end
end
AR# 46523
创建日期 03/07/2012
Last Updated 12/15/2012
状态 Active
Type 综合文章
IP
  • RXAUI