altcdr_rx (CDR) Megafunction
 |
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. |
 |
This topic prints best in Landscape orientation.
|
Back to Top
| Created by chm2web html help conversion utility. |