The interlaken_0_pkt_mon
is responsible for the reception of packets.
Typically the packet monitor waits for the GT to get locked and the Interlaken RX to get
aligned. After this is done the packet monitor receives a predefined number of packets.
The FSM description of each state follows and the state transition that occurs during
this process is shown in the following figure.
- TOP_IDLE_STATE
- By default the FSM is in IDLE state. When the
reset_done
signal becomes active-High, the FSM moves to GT_LOCK_STATE. - GT_LOCK_STATE
- Sets the
mon_gt_locked
= 1 andrx_busy
= 1, and moves to WAIT_RX_ALIGN_STATE. - WAIT_RX_ALIGN_STATE
- Wait for the
rx_aligned
= 1, which indicates the ILKN RX core is aligned, then the FSM moves to ENABLE_PKT_RECV_STATE. - ENABLE_PKT_RECV_STATE
- Sets the
enable
= 1 and moves to PKT_RX_INIT_STATE. - PKT_RX_INIT_STATE
- Initializes all signals related to LBUS packet reception and the FSM moves to RECEIVE_STATE.
- RECEIVE_STATE
- Receives the LBUS packets and compares them with the expected packets. If there
is any mismatch, sets the respective error signal.
- Data mismatch error signal for segment 0:
error_rx_data_1
. - Data mismatch error signal for segment 1:
error_rx_data_2
. - Data mismatch error signal for segment 2:
error_rx_data_3
. - Data mismatch error signal for segment 3:
error_rx_data_4
. - Channel mismatch error signal for segment 0:
error_rx_channel_1
. - Channel mismatch error signal for segment 1:
error_rx_channel_2
. - Channel mismatch error signal for segment 2:
error_rx_channel_3
. - Channel mismatch error signal for segment 3:
error_rx_channel_4
. - mty mismatch error signal:
error_rx_mty
.
Any assertion of above mentioned error signal will set
rx_error_int
= 1 and this flag is deasserted only on reset. After receiving all the packets, the FSM moves to DONE_STATE. - Data mismatch error signal for segment 0:
- DONE_STATE
- Sets
rx_done_int
= 1 and moves to PKT_RECV_MODE_STATE. - PKT_RECV_MODE_STATE
- Sets
mon_rx_done
= 1 andmon_rx_failed
to 0 or 1, depending on therx_error_int
signal, and moves to PKT_RESTART_STATE. - PKT_RESTART_STATE
- Resets all the signals related to LBUS packet monitor and resets the
rx_busy
= 0. Waits for therx_restart_3d
= 1 and moves to the TOP_IDLE_STATE.
Figure 1. State Transition Diagram for Packet Monitor