Megafunctions

altcdr_rx (CDR) Megafunction



NOTE CDR functionality is disabled in this release. Designing with CDR can be support intensive and requires close engagement with Altera® early in the design cycle. Please contact your Altera representative to discuss support requirements.

Clock Data Recovery (CDR) receiver megafunction. The altcdr_rx megafunction implements a CDR receiver. The altcdr_rx megafunction uses CDR receiver circuitry for deserialization, and contains a digital phase-locked loop (PLL) to compensate for channel-to-clock and channel-to-channel skew, as well as a FIFO to match clock domains. The altcdr_rx megafunction is available for Mercury devices only.

This topic contains the following information:


AHDL Function Prototype (port name and order also apply to Verilog HDL):

FUNCTION altcdr_rx (rx_in[(NUMBER_OF_CHANNELS) - (1)..0], rx_inclock, rx_coreclock, 
      rx_aclr, rx_pll_aclr, rx_fifo_rden[(NUMBER_OF_CHANNELS) - (1)..0])
   WITH (NUMBER_OF_CHANNELS, DESERIALIZATION_FACTOR, INCLOCK_PERIOD, INCLOCK_BOOST, 
      RUN_LENGTH, BYPASS_FIFO, INTENDED_DEVICE_FAMILY)
   RETURNS (rx_out[((DESERIALIZATION_FACTOR) * (NUMBER_OF_CHANNELS)) - (1)..0], rx_outclock,
      rx_locklost[(NUMBER_OF_CHANNELS) - (1)..0], rx_pll_locked, rx_rlv[(NUMBER_OF_CHANNELS) - (1)..0], rx_rec_clk[(NUMBER_OF_CHANNELS) - (1)..0],
      rx_full[(NUMBER_OF_CHANNELS) - (1)..0], rx_empty[(NUMBER_OF_CHANNELS) - (1)..0]);


VHDL Component Declaration:

COMPONENT altcdr_rx
    GENERIC 
       (NUMBER_OF_CHANNELS	: POSITIVE := 1;
        DESERIALIZATION_FACTOR 	: POSITIVE := 1;
        INCLOCK_PERIOD		: POSITIVE;
        RUN_LENGTH		: INTEGER  := 1;
        INCLOCK_BOOST		: POSITIVE := 1
        BYPASS_FIFO	        : STRING   := "OFF");
		
    PORT (rx_in : IN STD_LOGIC_VECTOR(NUMBER_OF_CHANNELS-1 DOWNTO 0);
          rx_inclock, rx_coreclock, rx_aclr, rx_pll_aclr  : IN STD_LOGIC;
          rx_fifo_rden : IN STD_LOGIC_VECTOR(NUMBER_OF_CHANNELS DOWNTO 0);
          rx_out : OUT STD_LOGIC_VECTOR(DESERIALIZATION_FACTOR*NUMBER_OF_CHANNELS-1 DOWNTO 0);
          rx_outclock, rx_pll_locked : OUT STD_LOGIC;
          rx_locklost, rx_rec_clk, rx_empty, rx_full, rx_rlv  : OUT STD_LOGIC_VECTOR(NUMBER_OF_CHANNELS-1 DOWNTO 0);
END COMPONENT;


Port Descriptions:

INPUT PORTS

Port Name Required Description Comments
rx_in[] Yes CDR serial input data port. Input port [NUMBER_OF_CHANNELS-1..0] wide. After deserialization, rx_in[n-1] is the first bit received and rx_in[0] is the last bit received for channel one; for channel two, rx_in[2n-1] is the first bit received and rx_in[n] is the last bit received. For more information on bit order, see Application Note 120 (Using LVDS in APEX 20KE Devices).
rx_inclock Yes CDR reference input clock.  
rx_coreclock Yes Clock used to read data from the receiver channel FIFO(s) into the non-peripheral logic.  
rx_fifo_rden[] No Read enable control for reading from the receiver channel synchronizing FIFO(s). Input port [NUMBER_OF_CHANNELS-1..0] wide. If asserted, enables reading from the corresponding receiver channel FIFO.
rx_aclr No Asynchronous clear for the receiver channel and its associated synchronizing FIFO.  
rx_pll_aclr No Asynchronous clear for the receiver channel PLL.  

OUTPUT PORTS

Port Name Required Description Comments
rx_out[] Yes Deserialized data signal. Output port [DESERIALIZATION_FACTOR * NUMBER_OF_CHANNELS-1..0] wide.
rx_rec_clk[] No Recovered data clock from all receiver channels which drive priority column routing resources. Output port [NUMBER_OF_CHANNELS-1..0] wide. The rx_rec_clk period varies based on the data rate, but is approximately [INCLOCK_PERIOD / INCLOCK_BOOST] * DESERIALIZATION_FACTOR.
rx_outclock No Recovered data clock from receiver channel 0 that drives to a global clock. The rx_outclock period varies based on the data rate, but is approximately [INCLOCK_PERIOD / INCLOCK_BOOST] * DESERIALIZATION_FACTOR.
rx_locklost[] No Specifies whether a receiver channel has lost the lock with the incoming input data signal. Output port [NUMBER_OF_CHANNELS-1..0] wide. When asserted, indicates the receiver channel was not successful in synchronizing itself with the incoming input signal and is not able to sample the data accurately.
rx_pll_locked No Specifies whether the receiver channel PLL is locked on the rx_inclock input.  
rx_empty[] No If asserted, indicates that the receiver channel synchronizing FIFO is empty. Input port [NUMBER_OF_CHANNELS-1..0] wide. Non-peripheral logic should check this signal to make sure the receiver channel has valid data to read.
rx_full[] No If asserted, indicates that the receiver channel synchronizing FIFO is full. Input port [NUMBER_OF_CHANNELS-1..0] wide. The non-peripheral logic should check this signal to detect an overflow condition in the synchronizing FIFO and request a retransmission of data if needed.
rx_rlv No Specifies a run-length requirement violation of the input data signal. The non-peripheral logic should check this signal to detect a run length violation by the input data signal. This signal will be asserted if the input data does not transition frequently enough for the receiver channel to maintain synchronization.


Parameter Descriptions:

Parameter Type Required Comments
NUMBER_OF_CHANNELS Integer Yes Specifies the number of CDR channels
DESERIALIZATION_FACTOR Integer Yes Specifies the number of bits per channel. Values are 3-12, 14, or 16, 18, and 20. The value of the INCLOCK_PERIOD parameter is between [125 MHz / DESERIALIZATION_FACTOR] and [1250 MHz / DESERIALIZATION_FACTOR].
INCLOCK_PERIOD Integer Yes Specifies the period or frequency of the input clock. The default time unit is picoseconds (ps). In AHDL designs only, strings, such as 50.5 MHz, are acceptable.
RUN_LENGTH Integer No Specifies the maximum run length allowed for the incoming data signal.
INCLOCK_BOOST Integer No The effective clock period used to sample output data is INCLOCK_PERIOD / INCLOCK_BOOST].
BYPASS_FIFO String No Specifies whether the receiver channel sychronizing FIFO should be instantiated, and whether the deserialization channel outputs are directly connected to output ports. Values are "ON" and "OFF". If omitted, the default is "OFF". When this parameter is set to "ON" the rx_coreclock port must be used. When this parameter is set to "OFF" the rx_coreclock port must be used if the rx_rlv or rx_locklost[] ports are used.
INTENDED_DEVICE_FAMILY String No This parameter is used for modeling and behavioral simulation purposes. Create the PLL with the MegaWizard® Plug-in Manager to calculate the value for this parameter.


NOTE This topic prints best in Landscape orientation.

Back to Top

- PLDWorld -

 

Created by chm2web html help conversion utility.