Jump to content
  • 1

Tutorial for QSPI


gxabc_123

Question

19 answers to this question

Recommended Posts

At first I understood that you saw this name somewhere in other design and i thought in the begging that is Slave select. I searched in the AXI QUAD SPI IP manual.

The SPI_0_0_spisel is and input ACTIVE LOW port and it must be configured only if you don't enable Master Mode when configuring the IP.  If you look in the manual of the AXI QUAD SPI IP, at page 21 and page 41, it says that you have to put this input in LOW logic for standard SPI slave mode. So connect the input to a constant with value 0.

But if you Enable Master Mode, then automatically this input is set to HIGH logic and you don't have to set it.

The project was made with the Enable Master Mode set, and that is why it doesn't appear in the constrain file and for us worked very well, because we didn't have other slaves.

 

Link to comment
Share on other sites

Of course:

image.thumb.png.ab957ba1138ba757f3d86502d0df44ee.png

It is all about the QSPI block. My block SPI is a emulator for testing my counter interface.

Here is the AXI Quad SPI Configuration:

image.thumb.png.d301d5f029fc54ba477585ca5a6e10e8.png

The builded  port wrapper is:

image.png.4529c7b3a32c8eb0a0d46391dd81ff92.png

And my constraints are

image.png.ce04010f7773fbfc871bbb47dca54b97.png

If I make here any changes (let signal ports away), I get errors in the bitstream.

 

Link to comment
Share on other sites

So do I use SPI_0_0_spisel instead of SPI_0_0_ss_io?

Because, if I do not declare SPI_0_0_spisel in my constraints I get some errors. Also if I replace SPI_0_0_ss_io through SPI_0_0_spisel.

Also in this overview https://reference.digilentinc.com/learn/fundamentals/communication-protocols/spi/start there is nothing said about SPI_0_0_spisel.

 

or is it not important which of the two pins I wire later? do I only have to declare both pins?

Link to comment
Share on other sites

First you will need to make some research about SPI protocol.

Some info here.

In this location is a SPI project example for Vivado 2019.1.

Follow the steps from this tutorial with additional instruction below:

1. Download the ZIP.

image.png.64909b70769ffeccfaf56de865dc7356.png

2. Open the Project -> steps from Vivado section

3. Generate Bitstream without 3.2) step

4. Import SDK Project -> steps from Launch from Vivado section without 4.5), 4.6), 4.7), 4.8)

5. In SDK: File-> New-> Application Project

image.png.2efee7a5fe2ee48a8b01cf0dea24b492.png

6.Give it a name to your application and create new .bsp

image.thumb.png.dc8a5e3de55b9d9d20324f282be1ce9d.png

7. In the .bsp folder double click the system.mss file and Import Examples

tempsnip.png.436868a3943b637bc0c9df43639ab772.png

 

 

Link to comment
Share on other sites

You might get more responses if you ask your question more precisely.

What is it you want to achieve? Build a self-contained design that starts at powerup via the "FSBL" first-stage boot loader? Use the flash memory from the ARM core, possibly running code from it (see "execute-in-place" XIP)? Use the memory as bare-metal SPI component? Or something else?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...