Parallel Flash Loader Intel® FPGA IP User Guide

ID 683698
Date 4/03/2023
Document Table of Contents

1.3.2. Controlling Intel® FPGA Configuration from Flash Memory

You can use the PFL logic in Intel® CPLDs as a configuration controller for FPGA configuration. The PFL logic in the CPLD determines when to start the configuration process, read the data from the flash memory device, and configure the Intel® FPGA in PS or FPP configuration scheme.
Figure 6. FPGA Configuration With Flash Memory DataFigure shows the Intel® CPLD as the configuration controller for the FPGA. The flash memory includes CFI, quad SPI and NAND flash.

You can use the PFL IP core to either program the flash memory devices, configure your FPGA, or both; however, to perform both functions, create separate PFL functions if any of the following conditions apply to your design:

  • You want to use fewer LEs.
  • You modify the flash data infrequently.
  • You have JTAG or In-System Programming (ISP) access to the Intel® CPLD.
  • You want to program the flash memory device with non- Intel® FPGA data. For example, the flash memory device contains initialization storage for an ASSP. You can use the PFL IP core to program the flash memory device with the initialization data and also create your own design source code to implement the read and initialization control with the CPLD logic.

Creating Separate PFL Functions

To create separate PFL functions, follow these steps:

  1. To create a PFL instantiation, select Flash Programming Only mode.
  2. Assign the pins appropriately.
  3. Compile and generate a .pof for the flash memory device. Ensure that you tri-state all unused I/O pins.
  4. To create another PFL instantiation, select Configuration Control Only mode.
  5. Instantiate this configuration controller into your production design.
  6. Whenever you must program the flash memory device, program the CPLD with the flash memory device .pof and update the flash memory device contents.
  7. Reprogram the CPLD with the production design .pof that includes the configuration controller.
Note: All unused pins are set to ground by default. When programming the configuration flash memory device through the CPLD JTAG pins, you must tri-state the FPGA configuration pins common to the CPLD and the configuration flash memory device. You can use the pfl_flash_access_request and pfl_flash_access_granted signals of the PFL block to tri-state the correct FPGA configuration pins.