Loading via QSPI

Hi, everyone. I’ve question or one problem: I‘ve board PYNQ Z2, and I need to write my project to the ROM, I mean the ROM - s25fl128s located on the OPYNQ Z2. I should use QSPI-interface for this aim. I can write my project using JTAG-interface and I’ve success - my project is working. But when I write this project (bin-file) into ROM (the ROM programmed without errors) it does’t load on power on (I point out that jumper of the board was installed correctly – position QSPI). Early the demo-project loaded from QSPI like success. (Unfortunately we’ve lost source of this demo-project)
I use development environment – VIVADO version 12.7. My project doesn’t contain processor part I use only FPGA. Elf-file is absent.
Maybe someone had the same problem in the past. Please explain what I should make in my project without PS-part for it’ll load from QSPI like success.?
I apologias for my English’s level.

1 Like

What clock are you using for your design.
If you don’t enable the PS then the PS to PL clocks will not be available.

If you use the PL clock (H16) because of the way the board is designed, you need an Ethernet cable plugged into the board, even if you are not using the Ethernet port.

If this is all OK, how are you testing that your design isn’t loading properly? Do you see the “done” LED turn on?


Dear friend!
Yes, we use pin H16 in the constraints of our project (something like PWM).
I attached three pictures, the first picture is a screenshot tab of the constraints our project.
The second picture is the result of the board working with connected Ethernet cable using the QSPI interface, and, unfortunately, the “done” LED doesn’t light up.
And the third picture — our project works both with and without an Ethernet cable using the JTAG interface. The “done” LED always light up.
If you can suggest any ideas, I’ll be very happy.

Does programming the QSPI complete successfully?


Dear Cathal, yes. Cleaning further programming and further verification QSPI (ROM)are completing successfully.

Which part did you select?
How did you generate the file to program the SPI (and what file type did you use)?
Are you sure you changed the jumper to SPI?


Dear Cathal, hello! I didn’t understand the first question.
I make the project settings in the “bitstream section” as creating -bin_file*. The project folder contains “bit_file” for JTAG and “bin_file” for QSPI. Using this bin_file, I am trying to program the ROM via QSPI. Bit_file via JTAG has booted successfully and I see a flashing LED. The jumper is correctly set to the QSPI position. But … it isn’t working.
I attached picture.

I’m confused about what you are trying to do. Are you using PYNQ or trying to use the board like any other Zynq board?

Your bin file should be a boot.bin file. I think you are using the .bin version of your .bit file. Could you confirm?
You can’t load the bitstream file to flash and expect it to program the PL. The Zynq FSBL controls what gets programmed.

You could create your own boot.bin (straightforward). You could also modify the PYNQ boot.bin in two ways. You could modify the boot.bin that goes on the SD card to program the FPGA from flash memory. In PYNQ you would still need to instantiate your hardware in Python.
You could modify the boot.bin and program it to flash The first stage boot load would be from flash, but the second stage would have to be from an SD card or somewhere else where the Linux image is.

These questions may be a little outside the scope of the PYNQ support forum. We can try give some help, but ff you have questions on the Zynq boot.bin or the boot process, you may be better posting on the Xilinx forums.


Dear Cathal, i’m sorry for that i didn’t answer for along time, All this time I was trying to find answer for my question. Yes I have to boot from QSPI. I used the strategy from the Youtube video tutorial, for example “How to Program QSPI Flash on ZYNQ | Hardware (HDL) Only”.

I use Vivado 2017 and SDK 2017 I create „bit“ and „elf-files“

I can successfully boot a “bit- file” into FPGA and it will work. When I creat a „bin-file“ from „bit" and "elf-files“ then it successfully boot the ROM, but FPGA doesn’t load when the jumper is installed like QSPI. :frowning:

I tried to load BOOT.bin from SD-card to ROM it is not work…I tried more stuff…

Maybe I’ll need to study this document UG585

Dear Cathal, I hope you haven’t wasted your time.

I will try to solve this problem, and if I have any success, I will definitely make a repost about it

Dear Cathal, good time of day!
I’ve solved my problem. My last post contains link to YouTube with title: “How to Program QSPI Flash on ZYNQ | Hardware (HDL) Only”. This method works completely, expect that I had to specify correct type of DDR in setting of Vivaldo. This works in both versions Vivaldo I mean 19 and 21.
I’ll be happy to help anyone has any questions on this topic.
Cathal , thanks a lot!