Entity: Jesd204bTx
- File: Jesd204bTx.vhd
Diagram
Description
Company : SLAC National Accelerator Laboratory
Description: JESD204b multi-lane transmitter module Transmitter JESD204b module. Supports a subset of features from JESD204b standard. Supports sub-class 1 deterministic latency. Supports sub-class 0 non deterministic latency. Features: - Synchronization of LMFC to SYSREF - Multi-lane operation (L_G: 1-32)
Warning: Scrambling support has not been tested on the TX module yet. Note: extSampleDataArray_i should be little endian and not byte swapped First sample in time: sampleData_i(15 downto 0) Second sample in time: sampleData_i(31 downto 16)
This file is part of 'SLAC Firmware Standard Library'. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of 'SLAC Firmware Standard Library', including this file, may be copied, modified, propagated, or distributed except according to
the terms contained in the LICENSE.txt file.
Generics
| Generic name | Type | Value | Description |
|---|---|---|---|
| TPD_G | time | 1 ns | |
| INPUT_REG_G | boolean | false | Register sample data at input and/or output |
| OUTPUT_REG_G | boolean | false | |
| F_G | positive | 2 | Number of bytes in a frame |
| K_G | positive | 32 | Number of frames in a multi frame |
| L_G | positive range 1 to 32 | 2 | Number of TX lanes (1 to 32) |
Ports
| Port name | Direction | Type | Description |
|---|---|---|---|
| axiClk | in | sl | AXI interfaceClocks and Resets |
| axiRst | in | sl | |
| axilReadMaster | in | AxiLiteReadMasterType | AXI-Lite Register Interface |
| axilReadSlave | out | AxiLiteReadSlaveType | |
| axilWriteMaster | in | AxiLiteWriteMasterType | |
| axilWriteSlave | out | AxiLiteWriteSlaveType | |
| devClk_i | in | sl | JESDClocks and Resets |
| devRst_i | in | sl | |
| sysRef_i | in | sl | SYSREF for subclass 1 fixed latency |
| nSync_i | in | slv(L_G-1 downto 0) | Synchronization input combined from all receivers |
| extSampleDataArray_i | in | sampleDataArray(L_G-1 downto 0) | External sample data input |
| dacReady_o | out | slv(L_G-1 downto 0) | |
| gtTxReset_o | out | slv(L_G-1 downto 0) | GT is ready to transmit data after reset |
| gtTxReady_i | in | slv(L_G-1 downto 0) | |
| r_jesdGtTxArr | out | jesdGtTxLaneTypeArray(L_G-1 downto 0) | Data and character inputs from GT (transceivers) |
| txDiffCtrl | out | Slv8Array(L_G-1 downto 0) | TX Configurable Driver Ports |
| txPostCursor | out | Slv8Array(L_G-1 downto 0) | |
| txPreCursor | out | Slv8Array(L_G-1 downto 0) | |
| txPowerDown | out | slv(L_G-1 downto 0) | |
| txPolarity | out | slv(L_G-1 downto 0) | |
| loopback | out | slv(L_G-1 downto 0) | |
| txEnable | out | slv(L_G-1 downto 0) | |
| txEnableL | out | slv(L_G-1 downto 0) | |
| pulse_o | out | slv(L_G-1 downto 0) | Debug signals |
| leds_o | out | slv(1 downto 0) |
Signals
| Name | Type | Description |
|---|---|---|
| s_lmfc | slv(L_G-1 downto 0) | |
| s_sysrefDlyTx | slv(SYSRF_DLY_WIDTH_C-1 downto 0) | Control and status from AxiLite ---------------------------------------------------------- |
| s_enableTx | slv(L_G-1 downto 0) | |
| s_replEnable | sl | |
| s_scrEnable | sl | |
| s_statusTxArr | txStatuRegisterArray(L_G-1 downto 0) | |
| s_dataValid | slv(L_G-1 downto 0) | |
| s_invertData | slv(L_G-1 downto 0) | |
| s_subClass | sl | JESD subclass selection (from AXI lite register) |
| s_gtReset | sl | User reset (from AXI lite register) |
| s_clearErr | sl | |
| s_sigTypeArr | Slv2Array(L_G-1 downto 0) | |
| s_rampStep | slv(PER_STEP_WIDTH_C-1 downto 0) | Test signal control |
| s_squarePeriod | slv(PER_STEP_WIDTH_C-1 downto 0) | |
| s_posAmplitude | slv(F_G*8-1 downto 0) | |
| s_negAmplitude | slv(F_G*8-1 downto 0) | |
| s_testDataArr | sampleDataArray(L_G-1 downto 0) | Data out multiplexer |
| s_extDataArraySwap | sampleDataArray(L_G-1 downto 0) | |
| s_regSampleDataIn | sampleDataArray(L_G-1 downto 0) | |
| s_regSampleDataOut | sampleDataArray(L_G-1 downto 0) | |
| s_sampleDataArr | sampleDataArray(L_G-1 downto 0) | |
| s_sysrefSync | sl | Sysref conditioning |
| s_sysrefRe | slv(L_G-1 downto 0) | |
| s_sysrefD | sl | |
| s_nSync | slv(L_G-1 downto 0) | Sync conditioning |
| s_invertSync | sl | |
| s_nSyncSync | slv(L_G-1 downto 0) | |
| s_muxOutSelArr | Slv3Array(L_G-1 downto 0) | Select output |
| s_jesdGtTxArr | jesdGtTxLaneTypeArray(L_G-1 downto 0) |
Instantiations
- U_Reg: surf.JesdTxReg
Description
AXI-Lite registers
- Synchronizer_sysref_INST: surf.Synchronizer
Description
SYSREF, SYNC, and LMFC
Synchronize SYSREF input to devClk_i
- Synchronizer_nsync_INST: surf.SynchronizerVector
Description
Synchronize nSync input to devClk_i
- U_SysrefDly: surf.SlvDelay
Description
Delay SYSREF input (for 1 to 256 c-c)