Forum Discussion

Dzar's avatar
Dzar
Icon for Occasional Contributor rankOccasional Contributor
7 years ago
Solved

How to program QSPI on custom board

I have a custom board with a Cyclone V (5VSEMA5U3117N) and a QSPI flash memory attached (256 Mbit) to the HPS. I've checked all of the wiring and it looks fine, but when I try to access this memory via quartus_hps. I see the FPGA and QPSI controller, but it always returns 0xffffffff for the chip ID (which indicates, to me, that it can't see the device).

I have BSEL set to 110 (QSPI, 1.8V) and CSEL set to 00. OSC1 is set to 50 MHz.

Is there anything else that needs to be configured (or changed) to allow quartus_hps to be able to program the QPSI?

Thanks,

Dave

  • Well, after much trying, and getting absolutely no support from Intel, we replaced our ISSI QSPI parts with Micron parts and everything works, now. This was a complete waste of time and Intel not being able to answer simple questions (like what parts are supported) is ridiculous. But we're moving on...

8 Replies

  • Dzar's avatar
    Dzar
    Icon for Occasional Contributor rankOccasional Contributor

    I am making progress. I did find that the CE# pin (that's also BSEL1) was pulled up with a zero Ohm resistor. So I fixed that to be 1K and now I can see an ID.

    But the ID is odd...

    I see 9D19709D.

    If the first 9D was not there, it would be what I expect, but my part says it repeats the sequence until CE# is brought high, again. But quartus_hps seems to read more than three bytes and then complains that this is not a valid ID and won't do anything more.

    ....

    Clock Select: 0

    Start HPS Quad SPI flash programming ...

    Initialize QSPI peripheral and flash controller ...

    Assuming QSPI controller system clock is 50Mhz

    QSPI controller baudrate setting: 32 (15)

    Read Silicon ID of Quad SPI flash ...

    Quad SPI Flash silicon ID is 0x9D19709D

    Error: Not able to map flash ID from flash database

    Error: Quartus Prime Programmer was unsuccessful. 0 errors, 0 warnings

    Error: Peak virtual memory: 4273 megabytes

    Error: Processing ended: Fri Nov 30 21:45:48 2018

    Error: Elapsed time: 00:00:02

    Error: Total CPU time (on all processors): 00:00:00

    Is there anything else one could try, here?

    Thanks

  • Dzar's avatar
    Dzar
    Icon for Occasional Contributor rankOccasional Contributor

    Well, after much trying, and getting absolutely no support from Intel, we replaced our ISSI QSPI parts with Micron parts and everything works, now. This was a complete waste of time and Intel not being able to answer simple questions (like what parts are supported) is ridiculous. But we're moving on...

  • FawazJ_Altera's avatar
    FawazJ_Altera
    Icon for Frequent Contributor rankFrequent Contributor

    Hello,

    May I know which QSPI flash device are you using?

    Basically, no more configuration needed, just make sure the schematics are correct, and the flash model is based on the dev kit recommendation. Let me know which flash device are you using, and I will check for you if this flash is supported.

    One more thing, which Quartus prime are you using?

    Thanks

  • Dzar's avatar
    Dzar
    Icon for Occasional Contributor rankOccasional Contributor

    I've tried 18.0 and 18.1 with the same results. I figured not much else needs to happen, and the schematics look right...

    We're using an IS25WP256D-RHLE part.

    http://www.issi.com/WW/pdf/IS25LP(WP)256D.pdf

    I did notice some "check JTAG chain" messages, however... here's my output when trying to read the ID (I do have two devices on the JTAG chain and I get the same result for -d 1 or -d 2):

    Info: Command: quartus_hps -c 1 -d 1 -o S

    Current hardware is: USB-BlasterII [USB-1]

    Successfully change hardware frequency to 16Mhz

    Found HPS at device 2

    Double check JTAG chain

    HPS Device IDCODE: 0x4BA00477

    AHB Port is located at port 0

    APB Port is located at port 1

    Double check device identification ...

    Boot Info: 1.8V QSPI Flash

    Clock Select: 0

    Start HPS Quad SPI flash programming ...

    Initialize QSPI peripheral and flash controller ...

    Assuming QSPI controller system clock is 50Mhz

    QSPI controller baudrate setting: 32 (15)

    Read Silicon ID of Quad SPI flash ...

    Quad SPI Flash silicon ID is 0xFFFFFFFF

  • Dzar's avatar
    Dzar
    Icon for Occasional Contributor rankOccasional Contributor

    Checking in to see if the above has any obvious issues.

  • Dzar's avatar
    Dzar
    Icon for Occasional Contributor rankOccasional Contributor

    I see this question has been abandoned.

    I'll try one more time...

    Is there any way to program a QSPI device that's not listed as supported in the very old Cyclone V supported parts list? None of the supported parts are even manufactured any more and there is no stock on any of them. There must be somebody who has used a modern QSPI part with a Cyclone V, right? What's being done to use them?

  • FawazJ_Altera's avatar
    FawazJ_Altera
    Icon for Frequent Contributor rankFrequent Contributor

    Hello sir,

    We are still investigating about this issue.

    Currently, there is no method to use non-supported QSPI flash. I understand your point, the Supported flash devices list requires an update.

    I will send this request to our internal team for future improvement.

    Thanks and apologize for the inconvenience

    • Gizmotoy's avatar
      Gizmotoy
      Icon for New Contributor rankNew Contributor

      It's even a bit worse than just "requiring an update". The part Dzar is asking about here, IS25WP256D-RHLE, is the exact part Intel puts on the Cyclone 10 GX Development Kit board Intel sells. The devkit includes parts that aren't even supported by Quartus. This seems to be acknowledged in the Golden Top level, which includes notes like this:

         //QSPI
          output          c10_qspi_clk       , // IP core is currently not available
          inout   [3:0]   c10_qspi_d         , // IP core is currently not available
          output          c10_qspi_csn       , // IP core is currently not available
          output          c10_qspi_resetn      // IP core is currently not available

      Is Intel planning to fix this?