I am working on a Cyclone 10 GX Development Kit testing AS Configuration. I use Quartus Programmer tool to program .jic file to QSPI Configuration Device through USB Blaster II cable.
It was working for a few days. Both Max10 and Cyclone10GX could be detected by Programmer tool Auto Detect operation.
Then it suddenly stopped working - only Max10 can be detected by Programmer tool Auto Detect operation. Sometimes there is an error message "Error(209053): Unexpected error in JTAG server -- error code 2 " in Quartus message window. Sometimes no error message displayed.
My working environment is Window 10 and Quartus 21.4
I tried with another USB Blaster II cable, and also tried on another PC. It didn't help. Same error.
Then I tried to debug the JTAG chain by Tcl JTAG functions as below. Most of the time, it only detected 1 device on the JTAG chain (i.e., 10M08SA). Occasionally (less than 1% chance among all my tests), it could detected 2 devices on JTAG chain. While it detected 2 devices, Cyclone10GX device has the correct IDCODE, but Max10 does not seem to be correct. Only once (among hundreds of times) I could get both Max10 and Cyclone10GX detected correctly.
I tried to set different JTAG clock frequency then get_device_names, here is the results I got:
- 24MHz: >80% successfully only detected Max10 device with correct IDCODE, <20% failed to detect any device
- 16MHz: >80% successfully only detected Max10 device with correct IDCODE, <20% failed to detect any device
- In 1 & 2, a few times (<2%) detected 2 devices, Cyclone10GX has correct IDCODE but Max10 has incorrect IDCODE. Only one time both Cyclone10GX and Max10 are detected with correct IDCODEs.
- 6MHz: ~60% successfully only detected Max10 device with correct IDCODE, never detected 2 devices
- 1MHz: ~50% successfully only detected Max10 device with correct IDCODE, never detected 2 devices
- 100KHz: <40% successfully only detected Max10 device with correct IDCODE, never detected 2 devices
- 10KHz: 100% failed to detect any device
What could be the cause of the JTAG chain error? signal integrity or on board jtag circuit broken or FPGA devices broken?
If intermittently can detect the device, most probably the JTAG cable has Signal Integrity issue. Fastest is to replace with another USB cable(the one connected to USB Blaster II). If you want debug, you need to tap the TCK, TDI and TDO signal at JTAG 10pin connector and capture the signal to oscilloscope.
Thanks Farabi for your response!
I tried another USB Blaster II cable, same issue.
Is the JTAG 10pin connector at the top left of the Development board? If I use oscilloscope to capture signals, should I probe the JTAG 10pin connector? I thought the connector is used for connecting external JTAG debugger.
What do you mean "tap the TCK, TDI and TDO signal at JTAG 10pin connector"? How can I do that?
Please see below picture of the Cyclone 10 GX Development Kit. The 10 pins JTAG header and Micro USB connector are highlighted in the red circles. I connected USB Blaster II cable to the Micro USB port. According to Cyclone 10 GX Development Kit User Guide, it says 10pin header is optional JTAG for external download cables. Can I probe the 10pin connector to debug JTAG chain issue while using USB Blaster II cable connected to Micro USB port?
Here is part of the Cyclone 10 GX Development Kit diagram.
There are two Max10 FPGA devices on the board. One is for On-board Intel FPGA Download Cable II and Power Management, the other is for PFL configuration, clock generator control and power monitoring. I have a few questions as below:
1. Only one Max10 is detected on the JTAG chain. How can I know which one is on the JTAG chain?
2. Is Max10 have to be configured successfully in order to detect both devices (Max10 and Cyclone10GX) on the JTAG chain? If yes, why I was able to see Cyclone10GX on JTAG chain occasionally while Max10 is not loaded?
3. I manually programmed max10.sof to Max10 and saw it is configured successfully (Quartus message says it is configured successfully). Then get_device_names, most of time it still only shows Max10, no Cyclone10GX.
Can you please kindly give me some advices and answers to my questions in my earlier posts? My project has been blocked by this JTAG issue for a few weeks.
I did further research, here is the JTAG topology of the Cyclone 10 GX development kit.
Do I have to configure System Intel Max10 in order to see Cyclone 10 GX on the JTAG chain?
I saw in another post that Intel engineer commented that "If the DIP switch S5.2 is set correctly then you should always observed the Cyclone 10 in the JTAG chain". S5.2 is the switch to enable JTAG chain for Cyclone 10 FPGA. I do have S5.2 set correctly.
Any other advices are appreciated.
Please let me know if you need more information from me.
There are 2 ways to program the Cyclone 10 development board.
a) using normal USB Type-A to mini cable and plug into Cyclone 10 board's USB mini socket. The USB Blaster circuitry is already built on the board using MAX10 device so you don't need to use USB Blaster II programming cable (cost ~USD 199).
b) using USB Blaster II programming cable and plug into Cyclone 10 board's 10-pin JTAG header.
If you plug USB cable into Cyclone 10 board's mini USB port to program the board, that means you only need normal USB type A to mini cable. This is not USB Blaster II programming cable.
If you have intermittent issue while programming Cyclone 10 via normal USB type-A to mini cable, I suspect that the mini USB connector on Cyclone 10 board has contact issue. It is hard to tap signal on this connector because there is no space to tap the signal.
If you have USB Blaster II programming cable (cost ~ USD199), you can connect this cable to 10-pin JTAG connector on Cyclone 10 board to program the FPGA.
If you dont have USB Blaster II programming cable, and want to use only normal USB Type-A to mini cable, you may need to check the continuity of the mini USB connector on the board. This is normally happen when we always push and pull the cable into the socket for many times.
Many thanks for your response.
I am the case a) using normal USB Type-A to mini cable and plug into Cyclone 10 board's USB mini socket.
If it is USB mini socket issue, would I also fail to detect Max10 on the JTAG chain? In my case, most of the time (i.e., >80%) Max10 can be detected, but Cyclone10GX is rarely to be detected (i.e, <2%).
When the board was working, both Max10 and Cyclone10GX were detected on the JTAG chain.