XAUI ===== | **Block:** XAUI Transceiver (``XAUI``) | **Block Author**: Pierre Yves Droz, Henry Chen | **Document Author**: Jason Manley +--------------------------------------------------------------------------+ | .. raw:: html | | | |
| | | | .. rubric:: Contents | | :name: contents | | | | .. raw:: html | | | |
| | | | - `Summary <#summary>`__ | | - `Mask Parameters <#mask-Parameters>`__ | | - `Ports <#ports>`__ | | - `Description <#description>`__ | | | | - `Demux <#demux>`__ | | - `Out of band signals <#out-of-band-signals>`__ | +--------------------------------------------------------------------------+ Summary -------- XAUI block for sending and receiving point-to-point, streaming data over the BEE2 and iBOB's CX4 connectors. NOTE: A new version of this block is in development. Mask Parameters ---------------- +----------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter | Variable | Description | +======================+=============+=====================================================================================================================================================================================+ | Demux | demux | Selects the width of the data bus. 1 for 64 bits, 2 for 32 bits. | +----------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Port | port | Selects the physical CX4 port on the iBOB or BEE2. The iBOB has two ports; the BEE2 has two for the control FPGA and four for each of the user FPGAs. CORR is not used by CASPER. | +----------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Pre-emphasis | pre\_emph | Selects the pre-emaphasis to use over the physical link. Default: 3 (see Xilinx documentation) | +----------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Differential Swing | swing | Selects the size of the differential swing to use in mV. Default: 800 (see Xilinx documentation) | +----------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Ports ------ +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | Port | Dir | Data Type | Description | +====================+===========+==============================+========================================================================================================================+ | rx\_get | in | boolean | Used to request the next data word from the RX buffer. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_reset | in | boolean | Resets the receive subsystem. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | tx\_data | in | ufix\_64\_0 or ufix\_32\_0 | Accepts the next data word (64 or 32 bits) to be transmitted. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | tx\_outofband | in | ufix\_8\_0 or ufix\_4\_0 | Accepts the next data word (8 bits if demux=1, 4 bits if demux=2) to be transmitted through the out-of-band channel. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | tx\_valid | out | boolean | Clocks the transmit data into the transceiver. Data is clocked into the buffer while this line is high. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_data | out | ufix\_64\_0 | Outputs the received data stream. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_outofband | out | ufix\_8\_0 or ufix\_4\_0 | Outputs the out-of-band received data stream. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_empty | out | boolean | Indicates that the receive buffer is empty. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_valid | out | boolean | Indicates that data has been received. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_linkdown | out | boolean | Indicates that the link is down (eg. faulty cable). | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | tx\_full | out | boolean | Indicates the transmit buffer is full. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ | rx\_almost\_full | boolean | inherited | Indicates the receive buffer is full. | +--------------------+-----------+------------------------------+------------------------------------------------------------------------------------------------------------------------+ Description ------------ Demux ^^^^^^ Perhaps a misnomer, this parameter describes the width of the data bus rather than a selection of two muxed streams on one channel. At 156MHz XAUI clock, the maximum transmission speed is 64bits \* 156.25 MHz = 10Gbit/s. For BEE or iBOB designs clocked at rates above 156MHz, clocking-in 64 bit data on every clock cycle would cause the XAUI block's FIFO buffers to overflow. The ``demux`` option is provided which halves the input data bus width to 32 bits and enables data to be clocked-in on every FPGA clock cycle. Along with the data bus width, the ``out of band`` bus width is also halved to 4 bits. Out of band signals ^^^^^^^^^^^^^^^^^^^^ Out of band signals are guaranteed to arrive at the same time as the data word with which they were sent. Out-of-band data is only transmitted across the physical link if the input to ``tx_outofband`` changes and is clocked in as valid (``tx_valid``). In other words, if you keep ``tx_outofband`` constant, no additional bandwidth is consumed (the in-band signals are transmitted as normal). When data is clocked into the transmitter, it will appear out the receiver as if the ``tx_outofband`` and ``tx_data`` arrived simultaneously. Care should be taken to ensure that the data clocked into ``tx_outofband`` and ``tx_data`` does not exceed the XAUI's maximum transmission rate (approximately 10Gbps for 156.25MHz clock). Each change of ``tx_outofband`` (be it one bit or eight bits) requires 64 bits (a full word) to transmit. This bus width is 8 bits if ``demux`` is not selected (set to 1), and 4 bits if it is set to 2.