Neorv32 AXI-Lite Interface #919
Replies: 2 comments 10 replies
-
Hey @Giorgio122!
This might be possible. However, I highly recommend to use an AXI interconnect in between as that module will handle all the address mapping.
Well, the XBUS is memory mapped, but not to a specific address. All load/store operations that do not match any of the internal address regions will be redirected to the XBUS. For example, the address In a very simple version you can just use the provided functions for accessing memory on a very low level: void neorv32_cpu_store_unsigned_word(uint32_t addr, uint32_t wdata);
uint32_t neorv32_cpu_load_unsigned_word(uint32_t addr); See the according Doygen documentation:
However, it is much more convenient to use a custom struct that represents your module's register layout and "map" that as a pointer to the base address of your module. This is also the style that is used for all the processor-internal memory-mapped peripherals, for example: neorv32/sw/lib/include/neorv32_gpio.h Lines 25 to 34 in 89d0f9d |
Beta Was this translation helpful? Give feedback.
-
Hi @stnolting, sorry for the late reply! |
Beta Was this translation helpful? Give feedback.
-
Good morning @stnolting ,
I am trying to interface the neorv32 with a custom external interface. The simplest approach, for now, would be to attach it externally via AXI-Lite, using the custom neorv32 ip provided through the user guide, as can be seen from the image below.
First of all I want to ask if it is possible to directly attach the neorv32 to the module directly (since the external device has an AXI-LIte interface), but from what I have read from the documentation this should be the correct way, right?
And another question is related to how I can control this interface. In particular, I have read from the documentation that the XBUS is not memory mapped but any memory access done to a "void" address is referred to this interface. However, am I able to control it via software right? But how to do so? Because I have to send specific commands and instructions to the external modules but I'm not sure how I am able to communicate with it.
Thanks in advance!
best regards,
Giorgio
Beta Was this translation helpful? Give feedback.
All reactions