IP Library Granted Patent US 12,386,775
Granted Patent B2
US 12,386,775 · App. 18/440,653 · Granted Aug 12, 2025

High speed passive serial configuration of FPGA by MCU using quad or octal SPI flash

Inventors: Rajagopal Narayanasamy (Bangalore, IN); Ashwin Nair (Ernakulam, IN); Sanat Kumar Mishra (Bangalore, IN)
Assignee: Cypress Semiconductor Corporation
G06F13/4282G06F13/4068
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,386,775
App. No.
18/440,653
Granted
Aug 12, 2025
Kind
B2
Abstract

A system to perform high speed passive serial configuration of an FPGA is disclosed. The system includes an MCU that includes an interface, an FPGA coupled to the MCU over the interface, and a flash memory coupled to the MCU and to the FPGA over the interface. The flash memory includes MCU firmware for the MCU and FPGA configuration data for the FPGA. To perform passive serial configuration of the FPGA, the MCU is operable to at least: configure the flash memory to an input/output (IO) mode, place the FPGA in a configuration mode, send a read command over the interface to the flash memory for the FPGA configuration data, and continuously provide a clock signal over the interface to the flash memory until the FPGA configuration data is entirely read.

Claims (69)

1. A system, comprising:

a microcontroller unit (MCU) comprising an interface;

a field-programmable gate array (FPGA) coupled to the MCU over the interface; and

a flash memory coupled to the MCU and to the FPGA over the interface, the flash memory comprising MCU firmware for the MCU and FPGA configuration data for the FPGA;

wherein, to perform passive serial configuration of the FPGA, the MCU is operable to at least:

configure the flash memory to an input/output (IO) mode;

place the FPGA in a configuration mode;

send a read command over the interface to the flash memory for the FPGA configuration data; and

continuously provide a clock signal over the interface to the flash memory until the FPGA configuration data is entirely read;

wherein in response to the read command, the flash memory is operable to place the FPGA configuration data onto the interface;

wherein the FPGA is operable to read the FPGA configuration data from the interface and configure the FPGA based on the FPGA configuration data.

2. The system of claim 1 , wherein the MCU is further operable to discard the FPGA configuration data received over the interface of the MCU.

3. The system of claim 1 , wherein the MCU is further operable to:

determine whether the configuration of the FPGA is completed; and

in response to determining that the configuration of the FPGA is not completed, again place the FPGA in the configuration mode, and send another read command over the interface to the flash memory for the FPGA configuration data.

4. The system of claim 1 , wherein the MCU is further operable to put the system in standby mode by keeping the FPGA in reset and reconfigure the FPGA when the system enters active mode.

5. The system of claim 1 , wherein to place the FPGA in the configuration mode, the MCU is operable to send a configuration command over the interface to place the FPGA in the configuration mode.

6. The system of claim 1 , wherein the IO mode is a quad (×4), octal (×8), ×16 or ×32 IO mode.

7. The system of claim 1 , wherein the read command is a quad (×4), octal (×8), ×16 or ×32 read command.

8. The system of claim 1 , wherein:

the interface is a serial peripheral interface (SPI) interface; and

the flash memory is a quad SPI (QSPI) flash memory.

9. A system, comprising:

a microcontroller unit (MCU) comprising a first interface and a second interface;

a field-programmable gate array (FPGA) coupled to the MCU over the first interface and the second interface;

a first flash memory coupled to the MCU and to the FPGA over the first interface, the first flash memory comprising MCU firmware for the MCU and first data of FPGA configuration data for the FPGA; and

a second flash memory coupled to the MCU and to the FPGA over the second interface, the second flash memory comprising second data of the FPGA configuration data;

wherein, to perform passive serial configuration of the FPGA, the MCU is operable to at least:

configure the first flash memory and the second flash memory to an input/output (IO) mode;

place the FPGA in a configuration mode;

respectively send a read command over the first interface to the first flash memory for the first data of the FPGA configuration data, and over the second interface to the second flash memory for the second data of the FPGA configuration data; and

continuously provide a first clock signal over the first interface to the first flash memory and to the second flash memory until the first data and the second data are entirely read;

wherein in response to the read command, the first flash memory is operable to place the first data onto the first interface, and the second flash memory is operable to place the second data onto the second interface;

wherein the FPGA is operable to read the first data from the first interface, read the second data from the second interface, and configure the FPGA based on the first data and the second data that collectively form the FPGA configuration data.

10. The system of claim 9 , wherein the MCU is further operable to discard the first data received over the first interface, and discard the second data received over the second interface.

11. The system of claim 9 , wherein the MCU is further operable to:

determine whether the configuration of the FPGA is completed; and

in response to determining that the configuration of the FPGA is not completed, again place the FPGA in the configuration mode, and send another read command over the first interface to the first flash memory for the first data of the FPGA configuration data, and over the second interface to the second flash memory for the second data of the FPGA configuration data.

12. The system of claim 9 , further comprising a clock multiplexer coupled to the MCU over the first interface and the second interface;

wherein the clock multiplexer is operable to multiplex the first clock signal provided by the MCU over the first interface and a second clock signal provided by the MCU over the second interface.

13. The system of claim 12 , wherein the MCU is further operable to:

switch the clock multiplexer to provide the first clock signal to the second flash memory.

14. The system of claim 9 , wherein:

each of the first interface and the second interface is a serial peripheral interface (SPI) interface; and

each of the first flash memory and the second flash memory is a quad SPI (QSPI) flash memory.

15. The system of claim 9 , wherein the MCU is further operable to put the system in standby mode by keeping the FPGA in reset and reconfigure the FPGA when the system enters active mode.

16. The system of claim 9 , wherein the IO mode is a quad (×4), octal (×8), ×16 or ×32 IO mode.

17. The system of claim 9 , wherein the read command is a quad (×4), octal (×8), ×16 or ×32 read command.

18. A system, comprising:

a first microcontroller unit (MCU) comprising a first interface;

a second MCU comprising a second interface;

a field-programmable gate array (FPGA) coupled to the first MCU over the first interface, and coupled to the second MCU and the second interface;

a first flash memory coupled to the first MCU and to the FPGA over the first interface, the first flash memory comprising MCU firmware for the MCU and first data of FPGA configuration data for the FPGA; and

a second flash memory coupled to the second MCU and to the FPGA over the second interface, the second flash memory comprising second data of the FPGA configuration data;

wherein, to perform passive serial configuration of the FPGA, the first MCU is operable to at least:

configure the first flash memory to an input/output (IO) mode;

place the FPGA in a configuration mode;

send a read command over the first interface to the first flash memory for the first data of the FPGA configuration data; and

continuously provide a first clock signal over the first interface to the first flash memory until the first data is entirely read.

19. The system of claim 18 , wherein the second MCU is operable to at least:

configure the second flash memory to an input/output (IO) mode;

send a read command over the second interface to the second flash memory for the second data of the FPGA configuration data; and

notify the first MCU to switch a clock multiplexer to provide the first clock signal to the second flash memory, wherein the first MCU continuously provides the first clock signal over the first interface to the second flash memory until the second data is entirely read;

wherein:

in response to the read command from the first MCU, the first flash memory is operable to place the first data onto the first interface;

in response to the read command from the second MCU, the second flash memory is operable to place the second data onto the second interface;

the FPGA is operable to read the first data from the first interface, read the second data from the second interface, and configure the FPGA based on the first data and the second data that collectively form the FPGA configuration data.

20. The system of claim 19 , further comprising the clock multiplexer, the clock multiplexer coupled to the first MCU over the first interface and coupled to the second MCU over the second interface;

wherein the clock multiplexer is operable to multiplex the first clock signal provided by the first MCU over the first interface and a second clock signal provided by the second MCU over the second interface.

Assignments (2)
MERGER Recorded Nov 14, 2025
From: CYPRESS SEMICONDUCTOR CORPORATION
To: INFINEON TECHNOLOGIES AMERICAS CORP.
Reel/Frame 073571/0456 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2024
From: MISHRA, SANAT KUMAR; NAIR, ASHWIN; NARAYANASAMY, RAJAGOPAL
To: CYPRESS SEMICONDUCTOR CORPORATION
Reel/Frame 067129/0834 →
Continuity (2)
Provisional Application 63589759 · Oct 12, 2023
Related Publication 20250123991A1 · Apr 17, 2025
References Cited (16)
US 6560665B1 · Resler · 2003 [cited by examiner]
US 6567518B1 · Weir · 2003 [cited by examiner]
US 20090292978A1 · Miyama · 2009 [cited by examiner]
US 20100262759A1 · Borchers · 2010 [cited by examiner]
US 20120131253A1 · McKnight · 2012 [cited by examiner]
US 20200183785A1 · Shin · 2020 [cited by examiner]
US 20230259465A1 · Zhu · 2023 [cited by examiner]
CN 104951334A · 2015 [cited by applicant]
“Configuring Cyclone FPGAs”, Cyclone Device Handbook, vol. 1, Altera Corporation, May 2006, 52 pages. [cited by applicant]
“AN 006: Configuring Trion™ FPGAs”, Efinix, May 2023, 63 pages. [cited by applicant]
Takahiro Kuwano, “Connecting Cypress SPI Serial Flash to Configure Xilinx FPGAs”, Cypress Semiconductor Corporation, Jun. 2, 2020, 9 pages. [cited by applicant]
“ECP5 and ECP5-5G sysCONFIG Usage Guide”, Lattice Semiconductor Corp., Mar. 2018, 62 pages. [cited by applicant]
“Vivado Design Suite User Guide: Programming and Debugging”, Advanced Micro Devices, Inc., 474 pages, Oct. 19, 2023. [cited by applicant]
“Using the Serial Peripheral Interface to Communicate Between Multiple Microcomputers”, Freescale Semiconductor, Inc., 2004, 28 pages. [cited by applicant]
Misha Sadeghi, et al., “Reducing Reconfiguration Time in FPGAs”, 27th Iranian Conference on Electrical Engineering (ICEE2019), IEEE, 2019, Downloaded on Mar. 22, 2024, 5 pages. [cited by applicant]
“Operating Requirements for Altera Devices”, Altera Corporation, 1999, 14 pages. [cited by applicant]