Xilinx RocketIO User Manual page 100

Hide thumbs Also See for RocketIO:
Table of Contents

Advertisement

R
100
-- by rxchariscomma3 or 1) after the counter
-- wait_to_sync has reached 0, indicating
-- that commas seen by the comma detection circuit
-- have had time to propagate to
-- aligned_data after initialization of the elastic buffer.
PROCESS (usrclk2)
BEGIN
IF (usrclk2'EVENT AND usrclk2 = '1') THEN
IF ((rxreset OR rxrealign) = '1') THEN
sync_hold <= '0';
ELSE
IF (wait_to_sync = "0000")THEN
IF ((rxchariscomma3 OR rxchariscomma1) = '1') THEN
sync_hold <= '1';
END IF;
END IF;
END IF;
END IF;
END PROCESS;
-- This process generates aligned_data with commas
-- aligned in [31:24],
-- assuming that incoming commas are aligned
-- to [31:24] or [15:8].
-- Here, you could add code to use ENPCOMMAALIGN and
-- ENMCOMMAALIGN to enable a move back into the
-- byte_sync=0 state.
PROCESS (usrclk2, rxreset)
BEGIN
IF (rxreset = '1') THEN
rxdata_reg <= "0000000000000000";
rxdata_hold <= "00000000000000000000000000000000";
rxisk_reg <= "00";
rxisk_hold <= "0000";
byte_sync <= '0';
ELSIF (usrclk2'EVENT AND usrclk2 = '1') THEN
rxdata_reg(15 DOWNTO 0) <= rxdata(15 DOWNTO 0);
rxisk_reg(1 DOWNTO 0) <= rxisk(1 DOWNTO 0);
IF (rxchariscomma3 = '1') THEN
rxdata_hold(31 DOWNTO 0) <= rxdata(31 DOWNTO 0);
rxisk_hold(3 DOWNTO 0) <= rxisk(3 DOWNTO 0);
byte_sync <= '0';
ELSE
IF ((rxchariscomma1 OR byte_sync) = '1') THEN
rxdata_hold(31 DOWNTO 0) <= rxdata_reg(15 DOWNTO 0) &
rxisk_hold(3 DOWNTO 0) <= rxisk_reg(1 DOWNTO 0) &
byte_sync <= '1';
ELSE
rxdata_hold(31 DOWNTO 0) <= rxdata(31 DOWNTO 0);
rxisk_hold(3 DOWNTO 0) <= rxisk(3 DOWNTO 0);
END IF;
END IF;
END IF;
END PROCESS;
END ARCHITECTURE translated;
www.xilinx.com
1-800-255-7778
Chapter 2: Digital Design Considerations
rxdata(31 DOWNTO 16);
rxisk(3 DOWNTO 2);
RocketIO™ Transceiver User Guide
UG024 (v2.3.2) June 24, 2004

Advertisement

Table of Contents
loading

Table of Contents