Skip to content

Add a tclink_channel_controller to help with initialisation, monitoring, and recovery of TCLink channels

I trimmed down the additional interface signals to a minimum:

Inputs (in the tr_core_ctrl record):

  • channel_fsm_reset: To reset the channel controller state machine.
  • channel_fsm_enable: To enable/disable the channel controller state machine. When disabled, the state machine just sits in the idle state and does not touch anything.
  • channel_fsm_gentle: To choose between 'full' and 'gentle' reset modes. Basically: 'full' reset mode also resets the TX/RX PLLs, while 'gentle' reset mode resets the data paths only.

Outputs (in the tr_core_stat record):

  • channel_fsm_running: Indicates whether the channel controller is operational or not. (I.e., reports whether the FSM is in the idle state or not.)
  • channel_fsm_state: Indicates the precise channel controller FSM state, for monitoring/diagnostics.
  • channel_ready: Indicates that the channel controller considers the channel ready for operation.

In principle all the user needs to do is:

  • Perform the mgt_reset_all reset for all MGT quads once after FPGA configuration. (Not necessary if the channel controller is not in 'gentle reset' mode.)
  • Enable the TCLink channel controller.
  • Wait for channels to report as ready.

All these signals are also available in the example designs in the VIO controls.

Merge request reports