Forum Discussion

Sumanth's avatar
Sumanth
Icon for Occasional Contributor rankOccasional Contributor
1 day ago

Cyclone 10 GX AS x4 Configuration Compatibility with Infineon S25FS512S (Custom Flash Definition)

We are trying to use the Infineon S25FS512S QSPI NOR Flash with Cyclone 10 GX in Active Serial x4 (AS x4) configuration by creating a Custom Flash Definition based on AN229767.

JTAG programming completes successfully, but FPGA configuration fails in AS x4 mode. We have performed extensive debugging and would like to understand whether this is a supported use case or if there are any known limitations.

Observations

Flash Programming

  • JTAG programming completes successfully.
  • Flash verification completes successfully.

Configuration Behavior

  • Active Serial x1 configuration works correctly.
  • Active Serial x4 configuration fails.
  • The FPGA successfully issues the RDID (0x9F) command.
  • The FPGA then attempts to read the Boot Information from address 0x00000000.


Logic Analyzer Observation

During AS x4 configuration, the FPGA issues the EBh (Quad I/O Read) command.

According to the Infineon S25FS512S datasheet, the expected transaction is:

EBh

→ 4-byte Address
→ Mode Byte (8 bits)
→ Dummy Cycles
→ Data

However, the captured waveform shows:

EBh
→ 4-byte Address
→ Dummy Cycles
→ Data

No Mode Byte is observed between the address and dummy cycles.

Based on the S25FS512S command protocol, this could cause the flash to interpret the transaction differently and return misaligned data. We would like Altera to confirm whether this behavior is expected from the Cyclone 10 GX configuration controller.

Additional Information

  • We reviewed AN229767, but could not find any mechanism in the Custom Flash Definition to configure or insert the Mode Byte required by the EBh command.
  • We also observed that the Custom Flash Definition supports Read Register commands only for fixed register opcodes and does not appear to support RDAR (0x65) with a register address.

Questions

  1. Does the Cyclone 10 GX configuration controller support transmitting the mandatory Mode Byte required by the EBh (Quad I/O Read) command?
  2. If not, is this a known limitation of the Cyclone 10 GX configuration controller or Quartus Programmer?
  3. Is there any supported method to modify the Quad I/O Read command sequence in the Custom Flash Definition?
  4. Has Altera validated any Custom Flash Definition for the S25FS512S that can be shared as a reference?

Environment

  • FPGA: Cyclone 10 GX
  • Flash: Infineon S25FS512S
  • Configuration Mode: Active Serial x1 (working), Active Serial x4 (failing)
  • Programming Method: Quartus Programmer using a Custom Flash Definition based on AN229767

We would appreciate any guidance, clarification, or a reference implementation for using the S25FS512S with Cyclone 10 GX in Active Serial x4 mode.

 

1 Reply

  • Farabi_Altera's avatar
    Farabi_Altera
    Icon for Regular Contributor rankRegular Contributor

    This is a well-documented and thoroughly debugged report — let me give you a direct answer on each of your questions.

    1. Does the Cyclone 10 GX configuration controller support transmitting the Mode Byte required by the EBh (Quad I/O Read) command?



    Based on the available documentation, the answer is effectively no. Cyclone 10 GX devices only support 4-byte addressing and 10 dummy clock cycles for single and quad fast read commands. Arria 10 · Config/RSU The configuration controller's AS interface is designed around a fixed command sequence: command opcode → 4-byte address → dummy cycles → data. There is no documented mechanism in the configuration controller to insert an additional Mode Byte between the address phase and the dummy cycles. Your logic analyzer observation — EBh → 4-byte address → dummy cycles → data, with no Mode Byte — is consistent with how the Cyclone 10 GX AS controller operates.



    This is the root cause of your AS x4 failure with the S25FS512S. The EBh (Quad I/O Read) command on that device mandates a Mode Byte after the address, and the Cyclone 10 GX controller does not generate it.



    2. Is this a known limitation of the Cyclone 10 GX configuration controller?



    Yes, this is a fundamental architectural constraint of the AS configuration block, not a software bug. The Active Serial (AS) configuration control block in Arria 10 and Cyclone 10 GX is fixed to 10 dummy clock cycles and 4-byte addressing. Arria 10 · Config/RSU The fixed nature of the command sequencing means the controller cannot be programmed to emit an extra Mode Byte phase. This is why only certain flash devices are validated for AS use with Cyclone 10 GX — the flash must be compatible with the controller's fixed protocol.



    3. Is there any supported method to modify the Quad I/O Read command sequence in the Custom Flash Definition?



    No. The Custom Flash Definition (Generic Flash Programmer) allows you to define device properties such as device ID, density, I/O voltage, and dummy clock cycles for single and quad I/O modes, but it does not expose a mechanism to insert or configure a Mode Byte in the read command sequence. The "Single I/O mode dummy clock" and "Quad I/O mode dummy clock" settings specify the Fast Read dummy clock cycle for the flash device in single and quad I/O protocols respectively — the programming file generation uses these settings to determine if the configuration requires bit shifting to compensate for the actual dummy clock cycle during Active Serial configuration. Defining a New Flash Memory Device There is no field for a Mode Byte, and the underlying controller hardware does not support it regardless.



    Your observation about RDAR (0x65) with a register address is also correct — the Custom Flash Definition's Read Register (RR) action supports fixed-opcode register reads but does not support addressed register commands like RDAR.



    4. Recommended path forward



    Given this limitation, here are the practical options:




    • Stay on AS x1: Since AS x1 works correctly for you, this is the most straightforward path. AS x1 uses a standard Fast Read command that does not require a Mode Byte, so it is fully compatible with the Cyclone 10 GX controller's fixed protocol.

    • Switch to a validated flash device: The following Macronix flash devices can be used in Active Serial (x1 and x4) configuration mode with Arria 10 and Cyclone 10 GX: MX25L series (2.7V–3.6V) at 128Mb, 256Mb, and 512Mb densities, and MX25U/MX66U series (1.65V–2.0V) at 256Mb, 512Mb, 1Gb, and 2Gb densities. Arria 10 · Config/RSU These devices use a Quad Fast Read command sequence that is compatible with the controller's fixed protocol.

    • Use the Generic Serial Flash Interface IP for runtime access: The legacy ASMI Parallel IP does not support certain Macronix flash devices in AS mode for Arria 10 and Cyclone 10 GX; to use those flash devices, use the Generic Serial Flash Interface Intel FPGA IP core. Arria 10 · Config/RSU Similarly, if you need to use the S25FS512S for data storage or runtime access (not FPGA configuration), the Generic Serial Flash Interface IP gives you full control over the command sequence including any Mode Byte requirements.

    • Cypress/Infineon S25FSxxxS with AS x1: AS configuration failure with Cypress S25FSxxxS can occur when flash configuration registers are not set correctly. For AS x1, the flash configuration registers (CR2NV/CR2V) should be set to 0x8A (ASx1 scheme, 4-byte addressing, dummy clock cycles 10). Arria 10 · Config/RSU If you want to pursue AS x1 with the S25FS512S, ensure the register is set correctly and that the .pof/.rpd is generated with the "Disable EPCS/EPCQ ID check" option enabled.



    5. Validated Custom Flash Definition for S25FS512S in AS x4: I do not have a validated reference Custom Flash Definition for the S25FS512S in AS x4 mode in the available documentation, and given the Mode Byte constraint described above, such a definition would not be able to work around the hardware limitation. I would not recommend pursuing AS x4 with this device on Cyclone 10 GX.



    In summary: the AS x4 failure you are seeing is a hardware architectural constraint of the Cyclone 10 GX AS configuration controller — it cannot emit the Mode Byte that EBh requires on the S25FS512S. AS x1 with correct register settings is the supported path for this flash family on Cyclone 10 GX.