Forum Discussion
What would happen if Transceiver Calibration fails?
- 7 years agoHie Yi Xiao, Please check my replies to your questions. Do let me know if you understand my explanation and need further clarification. But after JTAG configuration is done, what can we do to re-establish and re-enumerate the PCIe connection? You only require transceiver calibration to be successful once for every power cycle of the FPGA. Hence,if you perform configuration via JTAG and PCIe refclk is available, your power up calibration will start and complete successfully. After this you do not need the power up calibration for every re-enumeration. Hence, to re-establish and re-enumerate PCIe connection; you could use any other traditional method such as warm reboot (for windows) or lspci command (for linux). Maybe we would warm-restart PC to tigger re-enumerate, but when during PC shutdown and restart interval, the PCIe_REF_CLK will surely disappear, then FPGA XCVR might stop working as a result of lost REFCLK…..it seem to be a desperate loop….or maybe my thought is wrong somewhere. How do you think? We will appreciate your insights. Actually, lost of REFCLK is not going to cost the FPGA to behave incorrectly. As long as power up calibration is successful; ON and OFF of refclk (with same PPM and phase jitter - from same source) can be accepted by FPGA PLL without performance degradation. When windows PC triggers ON and OFF of refclk; it only changes the refclk phase for every cycle; having little impact on the phase jitter and no impact on the PPM or frequency. Hence, as long as FPGA is not power cycles, it can accept the ON and OFF of refclk from same source. If FPGA is power cycled, you need to run power-up calibration again. For windows restart, the FPGA is not power cycled; hence FPGA is not required to be re-configured via JTAG; also don't require power-up calibration. Windows restart will momentarily stop and restart REFCLK and re-trigger PRSTn. However, since FPGA not re-configured or power cycled, it does not need to be re-calibrated. FPGA can work as normal based on the last power up calibration. If windows restart is performed with FPGA re-configuration, then a new power up calibration is required. As for windows shutdown, if the FPGA is powered from PCIe slot; then the FPGA experiences a power cycle and required new configuration. This will require a new power up calibration. Hence, the whole process repeats. However, if FPGA powered up externally, then you don't need to reconfigure FPGA. When windows is restarted, the FPGA still can behave normally. Hence, this is the behavior of FPGA in respective to windows restart and shutdown. Regards, Nathan
- xytech7 years ago
Contributor
Hi Nathan, Thanks for patient explain which cleared my confusions. That’s great help.
To be more specific on PCIe links, our application is A10 FPGA Board connected with PC Board (Win7 OS) via PCIex4 GEN3.0 links, with board-to-board connectors. PC is root complex and A10 is endpoint of PCIe. For A10 Board, configuration scheme are JTAG and ASx4 (Autonomous Mode to comply PCIe 100ms boot time requirement).
Our concern is for JTAG mode. In development process, during we downloads new configuration data via JTAG the PCIe links will surely disconnect. But after JTAG configuration is done, what can we do to re-establish and re-enumerate the PCIe connection? Within my limited experience, at this moment the FPGA’s XCVRs MIGHT be calibrated correctly because PCIe_REF_CLK from PC MIGHT still running during JTAG configuration process. However, the windows re-enumeration will not happen automatically, because PCIe enumeration process is done by BIOS when PC booting up.
Maybe we would warm-restart PC to tigger re-enumerate, but when during PC shutdown and restart interval, the PCIe_REF_CLK will surely disappear, then FPGA XCVR might stop working as a result of lost REFCLK…..it seem to be a desperate loop….or maybe my thought is wrong somewhere. How do you think? We will appreciate your insights.
It is simpler for ASx4 mode configuration. After we update the Flash on A10 Board, we just need to power down and then re-power up the whole system, which is a whole new system cold-restart process, no problem at all. PC will start and send out PCIe_REF_CLK, at the same time FPGA Periphery Image will be re-configured within 100ms and successfully calibrated, and they will connect as expected.
Thanks very much!