--- Quote Start ---
Dave, thanks, JTAG can program well and the nSTATUS is high, there is no error at all.
--- Quote End ---
Ok, so its probably related to not sending enough DCLKs at the end of the configuration sequence. Try sending a few more DCLKS, eg., 8, 16, 32, or 64.
--- Quote Start ---
When I send the .hex configuration file to the FPGA, should I just send the "valid" data...or send the "valid" data as well as the length information and CRCs?
--- Quote End ---
I haven't used .hex files. Go and figure out the difference between a .hex file and .rbf. Is the .hex just an Intel .hex file? If so, then convert it to bytes and it should match the .rbf exactly. If the .hex file is missing some 0xFFs at the end, then there is your problem - the hex file is missing the extra DCLKs.
The "valid" data and CRCs in the .hex file are related to the ASCII representation of the data in that file, they are
not related to FPGA configuration data, so do not send them to the FPGA.
--- Quote Start ---
And how does the FPGA know the transmission is done and it's time to release the nCONF_DONE?
--- Quote End ---
The binary data likely has CRCs checks. Since nSTATUS is not going low, the FPGA is happy with the data.
--- Quote Start ---
Also, there are many different file formats can be used to configure the FPGA, how does the FPGA know which format I am using?
--- Quote End ---
Bits are bits. The .hex file vs .rbf file should be merely a human readable format difference, not something the FPGA sees.
Cheers,
Dave