SPI fast read-only controller
This is a simple read-only SPI flash reader, with the following characteristics:Version
The current version is 1.2. This is also the first public version available.Timing overview
Simple timing overview, with one nonsequential access to address 0x0, followed by a sequential access to address 0x4 (click on image for larger version). This simulation was done with Xilinx tools, after post-routing, and using a ZPU to access the SPI
On Image 2, you can see the clock almost perfectly centered on data, when we write to the SPI flash. As you can see from Image 3, I assume the worst-case read delay from SPI (which is 15ns, as you can see from the marker).Usage
Simple description of SPI controller interface:| Symbol | Direction | Bit width | Purpose |
|---|---|---|---|
| adr | Input | 24 | Address where to read from SPI |
| dat_o | Output | 32 | Data read from SPI |
| clk | Input | 1 | Input clock. Used for both interface and SPI |
| ce | Input | 1 | Chip Enable |
| rst | Input | 1 | Asynchronous reset |
| ack | Output | 1 | Data valid ACK |
| SPI_CLK | Output | 1 | SPI output clock |
| SPI_MOSI | Output | 1 | SPI output data from controller to chip |
| SPI_MISO | Input | 1 | SPI input data from chip to controller |
| SPI_SELN | Output | 1 | SPI nSEL (deselect, active low) signal |