How long should rx_is_lockedtodata be asserted before a valid connection can ACTUALLY be assumed?
In the documentation for the high speed transceiver IP it discusses the details for controlling the reset signals when a connection is being established. The altera reset controller is being used here, but the custom communication state machine needs to know this timing information so that it can start processing valid received data.
Documentation link:
https://www.intel.com/content/www/us/en/programmable/documentation/hki1486507600636.html#wua1486507356870
In the section "Lock-to-Data Mode" there is a note that reads:
"The rx_is_lockedtodata signal toggles until the CDR sees valid data; therefore, you should hold receiver PCS logic in reset (rx_digitalreset) for a minimum of 4 µs after rx_is_lockedtodata remains continuously asserted."
Despite taking this into account, the custom state machine was getting confused. Monitoring the rx_is_lockedtodata signal with an oscilloscope when the transmitter is turned off (another FPGA that is not configured) shows the issue. rx_is_lockedtodata is toggling roughly every 293us. This timing is extremely consistent, so it's unlikely to be confusion from some kind of random noise that might be on the line. It does not line up with any other signals on the board.
Setting the assertion delay to 500us in the custom state machine and it works as expected. So there is a workaround, but that cannot be trusted going into the future when the behavior is contradicted by the documentation. My custom code is only monitoring the state of the transceiver and reset controller at this stage, so I don't think there is something wrong there.
IP's being used:
altera_xcvr_native_av
alt_xcvr_reconfig
altera_xcvr_reset_control
Hardware:
Cyclone V
Hi,
If during the toggling, the rx_is_lockedtodata assertion duration is longer than 4us, you can try to workaround by monitoring the RX signal detect to ensure valid signal presence before you check on the CDR status. Note that you would need to enable 8b10b block to use RX signal detect. You will need to set the signal detect thresholds according to your specific setup. You may refer to the SATA/SAS recommended QSF assignments in the V series XCVR PHY IP user guide -> Cyclone V Transceiver Native PHY IP Core -> "Enable rx_std_signaldetect port" section for further details.
Please let me know if there is any concern. Thank you.
Best regards,
Chee Pin