Execute-In-Place (XIP) #224
Replies: 3 comments 6 replies
-
Related to #103: I'm not sure if this is something that should be added as "default" module to the processor. Maybe it is better to keep this as an external IP block that can be used to create a custom SoC... 🤔 |
Beta Was this translation helpful? Give feedback.
-
I thought about this XIP concept again. There are some open "ideas" that need to be cleared before adding an XIP module to the processor. I am not sure about these issues, so any kind of feedback is highly appreciated.
|
Beta Was this translation helpful? Give feedback.
-
I have started implementing a first XIP module for the processors (-> #244). It only supports the standard SPI protocol yet, but QSPI is planned for the future. However, the instruction cache can hide some of the protocol's latency. I have tested the setup on my Intel DE0-nano board - and it works quite nicely 😄 |
Beta Was this translation helpful? Give feedback.
-
I have implemented a transparent Wishbone-to-SPI bridge (stnolting/wb_spi_bridge) that supports execute-in-place (XIP). This bridge allows to map a serial memory (like a flash or EEPROM) into the processor's address space. I have tested the bridge being directly connected to the processor's Wishbone port (no Wishbone interconnect required).
Obviously, data accesses have a very high latency. I am using the following configurations:
Processor:
Bridge:
I have tested the read/write capabilities using the "bus explorer" example program (
sw/example/bus_explorer
).An executable boot image for the SPI memory can be created using the makefile's
bootloader
target and programming the generatedmain.bin
file to the flash.So if your FPGA is running out of block RAM for the instruction memory, this is a very nice alternative. 😉 Enabling the processor's instruction cache hides a lot of the bridge's latency.
Beta Was this translation helpful? Give feedback.
All reactions