Skip to content

axi_jesd204_tx

nnaufel edited this page Feb 27, 2019 · 3 revisions

JESD204B Link Transmit Peripheral

The Analog Devices JESD204B Link Transmit Peripheral implements the link layer handling of a JESD204B transmit logic device. This includes handling of the SYSREF and SYNC~ and controlling the link state machine accordingly as well as performing per lane scrambling and character replacement.

To form a complete JESD204B transmit logic device it has to be combined with a PHY layer and transport layer peripheral.

Features

  • Subclass 0 and Subclass 1 support
  • Deterministic Latency (for Subclass 1 operation)
  • Runtime re-configurability through memory-mapped register interface (AXI4)
  • Interrupts for event notification
  • Diagnostics
  • Max Lanerate: 15 Gbps
  • Low Latency
  • Independent per lane enable/disable

Files

Name Description
axi_jesd204_tx.v Verilog source for the peripheral
jesd204_up_common.v Verilog source for the peripheral
jesd204_up_sysref.v Verilog source for the peripheral
jesd204_up_tx.v Verilog source for the peripheral
up_axi.v Verilog source for the peripheral

Block Diagram


Name Description Default
ID Instance identification number. 0
NUM_LANES Maximum number of lanes supported by the peripheral. 4


Register Map

Address Bits Name Type Reset Value Description
0x000 VERSION RO 0x00010061 Version of the peripheral. Follows semantic versioning. Current version 1.00.a.
[31:16] VERSION_MAJOR RO 0x0001
[15:8] VERSION_MINOR RO 0x00
[7:0] VERSION_PATCH RO 0x61
0x004 PERIPHERAL_ID RO 0x???????? Value of the ID configuration parameter.
0x008 SCRATCH RW 0x00000000 Scratch register.
0x00c IDENTIFICATION RO 0x32303454 Peripheral identification ('2', '0', '4', 'T').
0x010 SYNTH_NUM_LANES RO 0x00000004 Number of supported lanes.
0x014 SYNTH_DATA_PATH_WIDTH RO 0x00000002 Internal data path width in octets.
0x080 IRQ_ENABLE RW 0x00000000 Interrupt enable.
0x084 IRQ_PENDING RW1C-V 0x00000000 Clear Pending interrupts.
0x088 IRQ_SOURCE RO 0x00000000 Pending interrupts.
0x0c0 LINK_DISABLE RW 0x00000001 JESD204B link disable.
[31:1] Reserved RO 0x00
[0] LINK_DISABLE RW 0x1 0 = Enable link, 1 = Disable link.
0x0c4 LINK_STATE RW-V 0x00000001 JESD204B link state.
[31:2] Reserved RO 0x00
[1] EXTERNAL_RESET RO 0x? 0 = External reset de-asserted, 1 = External reset asserted.
[0] LINK_STATE RW-V 0x1 0 = Link enabled, 1 = Link disabled.
0x0c8 LINK_CLK_FREQ RO-V 0x???????? Ratio of the device_clk frequency relative to the s_axi_aclk. Format is 16.16.
[31:21] Reserved RO 0x00
[20:0] LINK CLK FREQ RO 0x?????? Only bits 20:0 are used
0x100 SYSREF_CONF RW 0x00000000 SYSREF configuration
[31:2] Reserved RO 0x00
[1] ONE SHOT RW 0x0 Enable/Disable SYSREF handling.
[0] SYSREF_DISABLE RW 0x0 Enable/Disable SYSREF handling.
0x104 SYSREF_LMFC_OFFSET RW 0x00000000 SYSREF LMFC offset
[31:10] Reserved RO 0x00
[9:2] SYSREF_LMFC_OFFSET RW 0x00 Offset between SYSREF event and internal LMFC event in octets.
[1:0] Reserved RO 0x00
0x108 SYSREF_STATUS RW1C-V 0x00000000 SYSREF status
[31:2] Reserved RO 0x00
[1] SYSREF_ALIGNMENT_ERROR RW1C-V 0x0 Indicates that an external SYSREF event has been observed that was unaligned to a previously observed event.
[0] SYSREF_DETECTED RW1C-V 0x0 Indicates that an external SYSREF event has been observed.
0x200 LANES_DISABLE RW 0x00000000 Enabled/Disabled lanes.
[3] LANE_DISABLE3 RW 0x0 Enable/Disable fourth lane (0 = enabled, 1 = disabled).
[2] LANE_DISABLE2 RW 0x0 Enable/Disable third lane (0 = enabled, 1 = disabled).
[1] LANE_DISABLE1 RW 0x0 Enable/Disable second lane (0 = enabled, 1 = disabled).
[0] LANE_DISABLE0 RW 0x0 Enable/Disable first lane (0 = enabled, 1 = disabled).
0x210 LINK_CONF0 RW 0x00000003 JESD204B link configuration.
[31:24] Reserved RO 0x00
[23:16] OCTETS_PER_FRAME RW 0x00 Number of octets per frame - 1 (F).
[15:10] Reserved RO 0x00
[9:2] OCTETS_PER_MULTIFRAME RW 0x03 Number of octets per multi-frame - 1 (K x F).
[1:0] Reserved RO 0x00
0x214 LINK_CONF1 RW 0x00000000 JESD204B link configuration.
[31:2] Reserved RO 0x0
[1] CHAR_REPLACEMENT_DISABLE RW 0x0 Enable/Disable user data alignment character replacement (0 = enabled, 1 = disabled).
[0] SCRAMBLER_DISABLE RW 0x0 Enable/Disable user data scrambling (0 = enabled, 1 = disabled).
0x240 LINK_CONF2 RW 0x00000000 JESD204B link configuration.
[31:3] Reserved RO 0x0
[2] SKIP_ILAS RW 0x0 Skip ILAS sequence during link startup.
[1] CONTINUOUS_ILAS RW 0x0 Continuously transmit ILAS sequence.
[0] CONTINUOUS_CGS RW 0x0 Continuously transmit CGS sequence.
0x244 LINK_CONF3 RO 0x00000003 JESD204B link configuration.
[31:8] Reserved RO 0x0
[7:0] MFRAMES_PER_ILAS RO 0x03 Number of multi-frames in the ILAS sequence - 1.
0x248 MANUAL_SYNC_REQUEST W1S 0x00000000 Manual synchronization request.
[31:1] Reserved RO 0x0
[0] MANUAL_SYNC_REQUEST W1S 0x0 Trigger manual synchronization request.
0x280 LINK_STATUS RO-V 0x00000000 JESD204B link status.
[31:5] Reserved RO 0x00
[4] STATUS_SYNC RO-V 0x?? Raw state of the external SYNC pin.
[3:2] Reserved RO 0x00
[1:0] STATUS_STATE RO-V 0x00 State of the link state machine. (0 = WAIT, 1 = CGS, 2 = ILAS, 3 = DATA)
0x310 + (0x20 * n) LANEn_ILAS0 RW 0x00000000 ILAS config data for the n-th lane.
[31:28] Reserved RO 0x0
[27:24] BID RW 0x0 BID (Bank ID) field of the ILAS config sequence.
[23:16] DID RW 0x00 DID (Device ID) field of the ILAS config sequence.
[15:0] Reserved RO 0x0000
0x314 + (0x20 * n) LANEn_ILAS1 RW 0x00000000 ILAS config data for the n-th lane.
[31:29] Reserved RO 0x00
[28:24] K RW 0x00 K (Frames per multi-frame) field of the ILAS config sequence.
[23:16] F RW 0x00 F (Octets per frame) field of the ILAS config sequence.
[15] SCR RW 0x00 SCR (Scrambling enabled) field of the ILAS config sequence.
[14:13] Reserved RO 0x0
[12:8] L RW 0x00 L (Number of lanes) field of the ILAS config sequence.
[7:5] Reserved RO 0x0
[4:0] LID RW 0x00 LID (Lane ID n) field of the ILAS config sequence
0x318 + (0x20 * n) LANEn_ILAS2 RW 0x00000000 ILAS config data for the n-th lane.
[31:29] JESDV RW 0x0 JESDV (JESD204 version) field of the ILAS config sequence.
[28:24] S RW 0x00 S (Samples per frame) field of the ILAS config sequence.
[23:21] SUBCLASSV RW 0x0 SUBCLASSV (JESD204B subclass) field of the ILAS config sequence.
[20:16] NP RW 0x00 N' (Total number of bits per sample) field of the ILAS config sequence.
[15:14] CS RW 0x0 CS (Control bits per sample) field of the ILAS config sequence.
[13] Reserved RO 0x0
[12:8] N RW 0x00 N (Converter resolution) field of the ILAS config sequence.
[7:0] M RW 0x00 M (Number of converters) field of the ILAS config sequence.
0x31C + (0x20 * n) LANEn_ILAS3 RW 0x00000000 ILAS config data for the n-th lane.
[31:24] FCHK RW 0x00 FCHK (Checksum) field of the ILAS config sequence.
[23:8] Reserved RO 0x0
[7] HD RW 0x0 HD (High-density) field of the ILAS config sequence.
[6:5] Reserved RO 0x0
[4:0] CF RO 0x00 CF (control words per frame) field of the ILAS config sequence.
Access Type Name Description
RO Read-only Reads will return the current register value. Writes have no effect.
RW Read-write Reads will return the current register value. Writes will change the current register value.
RW1C Write-1-to-clear Reads will return the current register value. Writing the register will clear those bits of the register which were set to 1 in the value written.
V Volatile The V suffix indicates that the register is volatile and its content might change without software interaction. The value of registers without the volatile designation will change without an explicit write done by software.


Theory of Operation

The JESD204B transmit peripheral consists of two main components. The register map and the link processor. Both components are fully asynchronous and are clocked by independent clocks. The register map is in the s_axi_aclk clock domain, while the link processor is in the device_clk clock domain.

The register map is used to configure the operational parameters of the link processor as well as to query the current state of the link processor. The link processor itself is responsible for handling the JESD204B link layer protocol.

Interfaces and Signals

Register Map Configuration Interface

The register map configuration interface can be accessed through the AXI4-Lite S_AXI interface. The interface is synchronous to the s_axi_aclk. The s_axi_aresetn signal is used to reset the peripheral and should be asserted during system startup until the s_axi_aclk is active and stable. De-assertion of the reset signal should by synchronous to s_axi_aclk.

JESD204B Control Signals

The sync and sysref signals corresponds to the SYNC~ and SYSREF signals of the JESD204B specification. These are signals generated externally and need to be connected to the peripheral for correct operation.

The sysref signal is optional and only required to achieve deterministic latency in subclass 1 mode operation. If the sysref signal is not connected software needs to configure the peripheral accordingly to indicate this.

When the sysref signal is used, in order to ensure correct operation, it is important that setup and hold of the external signal relative to the device_clk signal are met. Otherwise deterministic latency can not be guaranteed.

Transceiver Interface (TX_PHYn)

For each lane the peripheral has one corresponding TX_PHY interface. These interfaces provide the pre-processed physical layer data. The TX_PHY interfaces should be connected to the down-stream physical layer transceiver peripheral.

The physical layer peripheral receiving data from these interfaces are responsible for performing the final 8b10b mapping as well as serializing the data and transmitting it on the physical CML differential high-speed serial lane.

User Data Interface (TX_DATA)

User data is accepted on the the AXI4-Stream TX_DATA interface. The interface is a reduced AXI4-Stream interface and only features the TREADY flow control signal, but not the TVALID flow control signal. The behavior of the interface is as if the TVALID signal was always asserted. This means as soon as tx_ready is asserted a continuous stream of user data must be provided on tx_data.


After reset and during link initialization the tx_ready signal is de-asserted. As soon as the User Data Phase is entered the tx_ready will be asserted to indicate that the peripheral is now accepting and processing the data from the tx_data signal. The tx_ready signal stays asserted until the link is either deactivated or re-initialized.

Typically the TX_DATA interface is connected to a JESD204B transport layer peripheral that provides framed and lane mapped data. The internal data path width of the peripheral is four, this means that four octets per lane are processed in parallel. When in the user data phase the peripheral expects to receive data for four octets for each lane in each beat.

This means that TX_DATA interface is 32 * NUM_LANES bits wide. With each block of consecutive 32 bits corresponding to one lane. The lowest 32 bits correspond to the first lane, while the highest 32 bits correspond to the last lane. Each lane specific 32 bit block corresponds to four octets each 8 bits wide. The temporal ordering of the octets is from LSB to MSB, this means the octet placed in the lowest 8 bits is transmitted first, the octet placed in the highest 8 bits is transmitted last.

Data corresponding to lanes that have been disabled are ignored and their value is don't care.

Configuration Interface

The peripheral features a register map configuration interface that can be accessed through the AXI4-Lite S_AXI port. The register map can be used to configure the peripherals operational parameters, query the current status of the device and query the features supported by the device.

Peripheral Identification and HDL Synthesis Settings

The peripheral contains multiple registers that allow the identification of the peripheral as well as the discovery of features that were configured at HDL synthesis time. Apart from the SCRATCH register all registers in this section are read-only and write to them will be ignored.

The VERSION (0x000) register contains the version of the peripheral. The version determines the register map layout and general features supported by the peripheral. The version number follows semantic versioning. Increments in the major number indicate backward incompatible changes, increments in the minor number indicate backward compatible changes, patch letter increments indicate a bug fix.

The PERIPHERAL_ID (0x004) register contains the value of the ID HDL configuration parameter that was set during synthesis. Its primary function is to allow to distinguish between multiple instances of the peripheral in the same design.

The SCRATCH (0x008) register is a general purpose 32-bit register that can be set to an arbitrary values. Reading the register will yield the value previously written (The value will be cleared when the peripheral is reset). Its content does not affect the operation of the peripheral. It can be used by software to test whether the register map is accessible or store custom peripheral associated data.

The IDENTIFICATION (0x00c) register contains the value of "204T" . This value is unique to this type of peripheral and can be used to ensure that the peripheral exists at the expected location in the memory mapped IO register space.

The SYNTH_NUM_LANES (0x010) register contains the value of the NUM_LANES HDL configuration parameter that was set during synthesis. It corresponds to the maximum of lanes supported by the peripheral. Possible values are between 1 and 32.

The SYNTH_DATA_PATH_WIDTH (0x014) register contains the value of the internal data path width per lane in octets. This is how many octets are processed in parallel on each lane and affects the restrictions of possible values for certain runtime configuration registers. The value is encoded as the log2() of the data path width. Possible values are:

  • 1: Internal data path width is 2
  • 2: Internal data path width is 4
  • 3: Internal data path width is 8

Interrupt Handling

Interrupt processing is handled by three closely related registers. All three registers follow the same layout, each bit in the register corresponds to one particular interrupt.

When an interrupt event occurs it is recorded in the IRQ_SOURCE (0x088) register. For a recorded interrupt event the corresponding bit is set to 1. If an interrupt event occurs while the bit is already set to 1 it will stay set to 1.

The IRQ_ENABLE (0x080) register controls how recorded interrupt events propagate. An interrupt is considered to be enabled if the corresponding bit in the IRQ_ENABLE register is set to 1, it is considered to be disabled if the bit is set to 0.

Disabling an interrupt will not prevent it from being recorded, but only its propagation. This means if an interrupt event was previously recorded while the interrupt was disabled and the interrupt is being enabled the interrupt event will then propagate.

An interrupt event that has been recorded and is enabled propagates to the IRQ_PENDING (0x084) register. The corresponding bit for such an interrupt will read as 1. Disabled or interrupts for which no events have been recorded will read as 0. Also if at least one interrupt has been recorded and is enabled the external irq signal will be asserted to signal the IRQ event to the upstream IRQ controller.

A recorded interrupt event can be cleared (or acknowledged) by writing a 1 to the corresponding bit to either the IRQ_SOURCE or IRQ_PENDING register. It is possible to clear multiple interrupt events at the same time by setting multiple bits in a single write operation.

For more details regarding interrupt operation see the interrupts section of this document.

Link Control

The LINK_DISABLE (0x0c0) register is used to control the link state and switch between enabled and disabled. While the link is disabled its state machine will remain in reset and it will not react to any external event like the SYSREF or SYNC~ signals.

Writing a 0 to the LINK_DISABLE register will enable the link. While the link state is changing from disabled to enabled it will go through a short initialization procedure, which will take a few clock cycles. To check whether the initialization procedure has completed and the link is fully operational the LINK_STATE (0x0c4) register can be checked. This register will contain a 1 when the link is fully enabled and will contain a 0 while it is disabled or going through the initialization procedure.

Writing a 1 to the LINK_DISABLE register will immediately disable the link.

The EXTERNAL_RESET ( [1] ) bit in the LINK_STATE register indicates whether the external link reset signal is asserted (1) or de-asserted (0). When the external link reset is asserted the link is disabled regardless of the setting of LINK_DISABLE. The external link reset is controlled by the fabric and might be asserted if the link clock is not stable yet.

Multi-link Control

A multi-link is a link where multiple converter devices are connected to a single logic device (FPGA). All links involved in a multi-link are synchronous and established at the same time. For a TX link, this means that the FPGA receives multiple SYNC signals, one for each link.

The MULTI_LINK_DISABLE register allows activating or deactivating each SYNC~ lines independently. This is useful when depending on the use case profile some converter devices are supposed to be disabled.

Link Configuration

The link configuration registers control certain aspects of the runtime behavior of the peripheral. Since the JESD204B standard does now allow changes to link configuration while the link is active the link configuration registers can only be modified while the link is disabled. As soon as it is enabled the configuration registers turn read-only and any writes to them will be ignored.

The LANES_DISABLE (0x200) register allows to disable individual lanes. Each bit in the register corresponds to a particular lane and indicates whether that lane is enabled or disabled. Bit 0 corresponds to the first lane, bit 1 to the second lane and so on. A value of 0 for a specific bit means the corresponding lane is enabled, a value of 1 means the lane is disabled. A disabled lane will not transmit any data when the link is otherwise active. By default, all lanes are enabled.

The LINK_CONF0 register configures the octets-per-frame and frames-per-multi-frame settings of the link. The OCTETS_PER_FRAME ( [18:16] ) field should be set to the number of octets-per-frame minus 1 (F - 1). The OCTETS_PER_MULTIFRAME ( [7:0] ) field should be set to the number of octets-per-frame multiplied by the number of frames-per-multi-frame minus 1 (FxK - 1). For correct operation FxK must be a multiple of 4.

The LINK_CONF1 register controls the optional link level processing stages. The SCRAMBLER_DISABLE ( [0] ) bit controls whether scrambling of the transmitted user data is enabled or disabled. A value of 0 enables scrambling and a value of 1 disables it. The CHAR_REPLACEMENT_DISABLE ( [1] ) bit controls whether alignment character replacement is performed or not. A value of 0 enables character replacement and a value of 1 disables it. For correct operation, character replacement must be disabled when scrambling is disabled otherwise undefined behavior might occur.

Both the transmitter as well as receiver device on the JESD204B link need to be configured with the same settings for scrambling/descrambling and character replacement for correct operation.

It is recommended to leave both scrambling as well as alignment character replacement enabled during normal operation and only disable it for debugging or testing purposes.

The LINK_CONF2 ( 0x240 ) register contains configuration data that affects the transitions of the link state machine. If the CONTINUOUS_CGS ( [0] ) bit is set the state machine will remain in the CGS phase indefinitely and send repeated K control character. If the CONTINUOUS_ILAS ( [1] ) bit is set the state machine will remain in the ILAS phase indefinitely and send repeated ILAS sequences. If the SKIP_ILAS ( [2] ) bit is set the state machine will directly transition to the DATA phase from the CGS phase without going through the ILAS phase.

The LINK_CONF3 ( 0x244 ) register configures the duration of the ILAS sequence in number of multi-frames. Its value is equal to the number of multi-frames minus one. In the current iteration of the peripheral, this register is read-only and the ILAS will always last for four multi-frames.

ILAS Configuration Data

The ILAS configuration data registers contain the configuration data that is sent during the ILAS phase. Similar to the link configuration registers, the ILAS configuration data registers can only be modified while the link is disabled and turn read-only as soon as it is enabled.

For each lane there is a set of four registers (LANEn_ILAS0, LANEn_ILAS1, LANEn_ILAS2, LANEn_ILAS3) that allow access to the 14 configuration data octets. Aside from the LID and FCHK fields all fields for each of the lanes map to the same internal storage. This means only the LID and FCHK fields can be configured with per-lane configuration data, all other fields must be set to the same value for all lanes.

SYSREF Handling

The external SYSREF signal is used to align the internal local multiframe clocks (LMFC) between multiple devices on the same link.

The SYSREF_CONF (0x100) register controls the behavior of the SYSREF capture circuitry. Setting the SYSREF_DISABLE ( [0] ) bit to 1 disables the SYSREF handling. All external SYSREF events are ignored and the LMFC is generated internally. For Subclass 1 operation SYSREF handling should be enabled and for Subclass 0 operation it should be disabled.

The SYSREF_LMFC_OFFSET (0x104) register allows modifying the offset between the SYSREF rising edge and the rising edge of the LMFC.

For optimal operation, it is recommended that all device on a JESD204 link should be configured in a way so that the total offset between

The value of the SYSREF_LMFC_OFFSET register must be set to a value smaller than the configured number of octets-per-multiframe (OCTETS_PER_MULTIFRAME), otherwise undefined behavior might occur.

The SYSREF_STATUS (0x108) register allows monitoring the status of the SYSREF signals. SYSREF_DETECTED ( [0] ) bit indicates that the peripheral as observed a SYSREF event. The SYSREF_ALIGNMENT_ERROR ( [1] ) bit indicates that a SYSREF event has been observed which was unaligned, in regards to the LMFC period, to a previously recorded SYSREF event.

All bits in the SYSREF_STATUS register are write-to-clear. All bits will also be cleared when the link is disabled.

Note that the SYSREF_STATUS register will not record any events if SYSREF operation is disabled or the JESD204 link is disabled.

Link Status

All link status registers are read-only. While the link is disabled some of the link status registers might contain bogus values. Their content should be ignored until the link is fully enabled.

The STATUS_STATE ( [1:0] ) field of the LINK_STATUS (0x280) register indicates the state of the link state machine. Possible values are:

  • 0: WAIT phase
  • 1: CGS phase
  • 2: ILAS phase
  • 3: DATA phase

The STATUS_SYNC ( [4] ) field represents the raw state of the external SYNC~ and can be used to monitor whether the JESD204B converter device has requested link synchronization.

Manual Synchronization Request

The MANUAL_SYNC_REQUEST (0x248) register can be used to transition the link state from the WAIT phase to the CGS phase in the absence of an external synchronization request. This is can be useful during testing when the peripheral is not connected to a JESD204B receiver device, but for example to a signal analyzer.

Writing a 1 to this register will trigger a manual synchronization request. Writing the register while the link is disabled or writing a 0 to the register has no effect. The register is self-clearing and reading it will always return 0.

Clock Monitor

The LINK_CLK_FREQ (0x0c8) register allows to determine the clock rate of the device clock (device_clk) relative to the AXI interface clock (s_axi_aclk). This can be used to verify that the device clock is running at the expected rate.

The number is represented as unsigned 16.16 format. Assuming a 100MHz processor clock this corresponds to a resolution of 1.523kHz per LSB. A raw value of 0 indicates that the link clock is currently not active.

Interrupts

Link State Machine

The peripheral can be in one of four main operating phases: WAIT, CGS, ILAS or DATA. Upon reset the peripheral starts in the WAIT phase. The CGS and ILAS phases are used during the initialization of the JESD204B link. The DATA phase is used during normal operation when user data is transmitted across the JESD204B link.

Wait Phase (WAIT)

The WAIT phase is the default state entered during reset. While disabled the peripheral will stay in the WAIT phase. When enabled the peripheral will stay in the WAIT phase until a synchronization request is received.

A synchronization request can either be generated manually through the register map configuration interface or by one of the JESD204B receivers by asserting the SYNC~ signal. Once a synchronization request is received the peripheral transitions to the CGS phase.

During the WAIT phase the peripheral will continuously transmit K control character on each of the TX_PHYn interfaces.

If at any point the peripheral is disabled it will automatically transition back to the WAIT state.

Lanes that have been disabled in the register map configuration interface will behave as if the link was in the WAIT state regardless of the actual state.

Code Group Synchronization Phase (CGS)

During the CGS phase the peripheral will continuously transmit K control character on each of the TX_PHYn interfaces.

The peripheral will stay in the CGS phase until all of following conditions are satisfied:

  • The synchronization request is de-asserted
  • The CGS phase has lasted for at least the configured minimum CGS duration (1 frame + 9 octets by default).
  • The end of a multi-frame is reached (This means the next phase will start at the beginning of a multi-frame).
  • The SYSREF signal has been captured and the LMFC is properly aligned.

If the peripheral is configured for continuous CGS operation it will stay in the CGS phase indefinitely regardless of whether the above conditions are met or not.

By default the peripheral will transition to the ILAS phase at the end of the CGS phase. If the core is configured to skip the ILAS phase it will instead directly transition to the DATA phase.

Initial Lane Alignment Sequence Phase (ILAS)

During the ILAS phase the peripheral transmits the initial lane alignment sequence. The transmitted ILAS consists of four multi-frames. The first octet of each multi-frame is the R control character and the last octet of each multi-frame is the A control character.

During the second multi-frame the link configuration data is transmitted from the 3rd to 16th octet. The second octet of the second multi-frame is the Q control character to indicate that this multi-frame carries configuration data. The ILAS configuration data sequence can be programmed through the register map configuration interface.

All other octets of the ILAS sequence will contain the numerical value corresponding to the position of the octet in the ILAS sequence (E.g. the fifth octet of the first multi-frame contains the value 4).

By default the ILAS is transmitted for a duration of 4 multi-frames. After the last ILAS multi-frame the peripheral switches to the DATA phase.

If the peripheral is configured for continuous ILAS operation it will instead remain in the ILAS phase indefinitely. In continuous ILAS mode the peripheral will transition back to the first multi-frame of the ILAS sequence after the last multi-frame has been transmitted.

In accordance with the JESD204B standard the data transmitted during the ILAS phase is not scrambled regardless of whether scrambling is enabled or not.

User Data Phase (DATA)

The DATA phase is the main operating mode of the peripheral. In this phase it will receive transport layer data at the TX_DATA port, split it onto the corresponding lanes and perform per-lane processing of the data according to the peripherals configuration. When the peripheral enters the DATA phase the ready signal of the TX_DATA will be asserted to indicate that transport layer data is now accepted.

By default the data transmitted on each lane will be scrambled. Scrambling can optionally be disabled via the register map configuration interface. Scrambling is enabled or disabled for all lanes equally.

Scrambling reduces data-dependent effects, which can affect both the analog performance of the data converter as well as the bit-error rate of JESD204B serial link, therefore it is highly recommended to enable scrambling.

The peripheral also performs per-lane alignment character replacement. Alignment character replacement will replace under certain predictable conditions (i.e. the receiver can recover the replaced character) the last octet in a frame or multi-frame. Replaced characters at the end of a frame, that is also the end of a multi-frame, are replaced by the A control character. Replaced characters at the end of a frame, that is not the end of a multi-frame, are replaced by the F control character. Alignment characters can be used by the receiver to ensure proper frame and lane alignment.

Alignment character replacement can optionally be disabled via the register map configuration interface. Alignment character replacement is enabled or disabled for all lanes equally. Alignment character replacement is only available when scrambling is enabled and must be disabled when scrambling is disabled, otherwise undefined behavior might occur.

Data on the TX_DATA port corresponding to a disabled lane is ignored.

Diagnostics

Software Support

To ensure correct operation it is highly recommended to use the Analog Devices provided JESD204B software packages for interfacing the peripheral. Analog Devices is not able to provide support in case issues arise from using custom low-level software for interfacing the peripheral.

Restrictions

During the design of the peripheral the deliberate decision was made to support only a subset of the features mandated by the JESD204B standard for transmitter logic devices. The reasoning here is that the peripheral has been designed to interface to Analog Devices JESD204B DAC converter devices and features that are either not required or not supported by those converter devices would otherwise lie dormant in peripheral and never be used. Instead the decision was made to not implement those unneeded features even when the JESD204B standard requires them for general purpose JESD204B transmitter logic devices. As Analog Devices DAC converter devices with new requirements are released the peripheral will be adjusted accordingly.

This approach allows for a leaner design using less resources, allowing for lower pipeline latency and a higher maximum device clock frequency.

The following lists where the peripheral deviates from the standard:

  • No subclass 2 support. JESD204B subclass 2 has due to its implementation details restricted applicability and is seldom a viable option for a modern high-speed data converter system. To achieve deterministic latency it is recommend to use subclass 1 mode.
  • Reduced number of octets-per-frame settings. The JESD204B standard allows for any value between 1 and 256 to be used for the number of octets-per-frame. The following values are supported by the peripheral: 1, 2, 4 and 8.
  • Reduced number of frames-per-multi-frame settings. The following values are supported by the peripheral: 1-32, with the additional requirement that FK is a multiple of 4. In addition FK needs to be in the range of 4-256.
  • No support for alignment character replacement when scrambling is disabled.

Supported Devices

Technical Support

Analog Devices will provide limited online support for anyone using the core with Analog Devices components (ADC, DAC, Clock, etc) via the EngineerZone under the GPL license. If you would like deterministic support when using this core with an ADI component, please investigate a commercial license. Using a non-ADI JESD204 device with this core is possible under the GPL, but Analog Devices will not help with issues you may encounter.

Return to JESD204B Interface Framework

Return to Arrow High-Speed Converter Platforms


Information from this site was obtained from
Clone this wiki locally