Does anyone have experience using a standard SPI Flash to configure a Cyclone V FPGA in active serial mode? If so, which brand / types work?
I have used Winbond and ST flashes in the past for Cyclone IV and Spartan III without any issues. However, on a new board, using a 5CEBA4, I do not get configuration to work, using a Winbond Flash. I tried W25Q32 as well as W25Q128.
Programming the Flash is not an issue; I can simply configure the FPGA using JTAG. I configure it with a design that has a NiosII core, then download a Flash programmer program through Eclipse. I have not been able to use the .jic method, as there is another "unknown" device in the JTAG chain, which does not seem to be supported. What I do for Cyclone IV is simply take the .rbf file, swap all the bits (7..0 -> 0..7), and program the resulting file at flash offset 0. Works like a charm. Therefore, I do not need any special quirks to trick Quartus into programming my Flash.
However, on Cyclone V, after programming the Flash, it seems that the FPGA does not configure itself.
It does load the header section using opcode 0x13 (wrong!), which is a 32-bit read command, then issues a 24-bit address.. this goes OK for address zero to read the header, but it fails when it continues reading from offset 0x012C. It sends the address 0x012C00. I tried to insert a blank area between the header and the actual FPGA content by (0x12c00 - 0x12c) bytes, but to no avail... The configuration stops after a bit more than one byte and resets to reading the status register, then the ID code, and then it tries again, using opcode 0x13. Probably, because the SPI flash, which waits for 4 bytes of address only gets 3, so it outputs the first byte one byte late. This sequence was captured using another FPGA with SignalTap...
What options do I have?