Comments (7)
Thank you for your answer.
You are right, I see it is very similar and I shuld be able to adapt it. In simulation, it seems to be ok, but something block the core. And I checked the MEM_EXT_TIMEOUT but it is set at '0'.
I will investigate and trying to do my own bridge. Probably some mistakes I did...
I will see that and maybe I'll open a new discussion to handle with it if someone else is interesting.
Thx
from neorv32.
github.com/vfinotti/ahb3lite_wb_bridge/blob/master/wb_to_ahb3lite.v might be a good starting point - maybe it works out of the box š¤
=> I would have an AHB interface directly instead of AXI4, because it is lighter, but 'wb_to_ahb3lite.v' doesn't work and I find nothing else which work easily.
In simulation, 'wb_to_ahb3lite.v' seems working, but in practice the core freeze when I want to access external memory.
from neorv32.
If your memory components provide a serial interface (IĀ²C or SPI) you can directly connect them to the processors TWI or SPI modules, respectively. Obviously, this will not map the memories into the CPU's address space.
If your memories provide parallel interfaces:
I am not familiar with the Microsemi synthesis framework. But I suppose the tools provide an FPGA-optimized IP library that might also feature IP blocks to interface your memories. If these IPs support an AXI infrastructure you can use the NEORV32 AXI4-Lite wrapper (/rtl/top_templates/neorv32_top_axi4lite.vhd
) that provides an AXI4-Lite master.
Right now there is no specific memory interface IP on GitHub/opencores/wherever that I can recommend as I am (mostly) using the IPs provided by the FPGA vendors. However, there are a lot of IPs out there. But I know that there are some people, who have successfully connected open-source memory controller - but I do not know which one they have used š
However, as long as these IPs support the (classic/standard) Wishbone protocol it should be no problem to attach them to the NEORV32. Check out the processor's test bench (sim/neorv32_tb.vhd
) which features a minimalist Wishbone "interconnection fabric".
Last but not least: Interfacing SRAM is pretty simple and I assume that your MRAM might be as simple as well. š
from neorv32.
from neorv32.
Seems like each FPGA vendor has its own taste of on-chip buses...
Intel -> Avalon
Xilinx -> AXI
Lattice -> Wishbone
Microsemi -> AHB
Anyway. Looking at the AHB-Lite specifications AHB seems to be quite similar to AXI4-lite (obviously, its AXI's predecessor). The NEORV32 Wishbone-to-AXI4-Lite bridge is pretty simple, so it shouldn't be a big deal to write/convert a simple Wishbone-AHB bridge to start with.
github.com/vfinotti/ahb3lite_wb_bridge/blob/master/wb_to_ahb3lite.v might be a good starting point - maybe it works out of the box š¤
from neorv32.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
from neorv32.
If you need a really "light" interface, then I would suggest to use the native Wishbone interface of the NEORV32. It is much simpler than AXI4-Lite and quite similar to AHB.
I have not worked with AHB for a long time, but as far as I can remember a Wishbone-to-AHB bride might only require some simple logic for controlling AHB's address and data phases (but maybe this is not really required at all).
Compare the "Read transfer" diagram from https://developer.arm.com/documentation/ihi0033/a/Transfers/Basic-transfers
with the (NEORV32's) Wishbone read transfer:
The Wishbone interface of the NEORV32 can be configured to wait a specific number of cycles (MEM_EXT_TIMEOUT
generic) before it invalidates the transfer. You can even configure an unlimited number of cycles to wait for by MEM_EXT_TIMEOUT
= 0.
So it should be no problem to issue AHB's address and data phases within one single Wishbone transfer.
By the way, please open a new issue or discussion if you have further questions š
from neorv32.
Related Issues (20)
- Rework bus system and memory map HOT 2
- Multi-driven Pin Vivado Error: what causes it and how to solve it? HOT 12
- Failed uploading binary executable image via UART HOT 16
- NEORV32 Multicore processor TMR implementation HOT 22
- ISA Zfinx extension HOT 8
- JTAG Scan chain interrogation failed: all ones HOT 14
- Wishbone burst access HOT 8
- `make check` passes but `make bin` fails with pre-built toolchain HOT 4
- Provide a neorv32_uart_vprintf function HOT 5
- Application binary does not persist in FPGA HOT 10
- Implementation with nextpnr-xilinx + prjxray doesn't work. HOT 5
- Clarification on Zfinx behavior for subnormal operands and results needed HOT 15
- Configure Bootloader.c booting from address other than start of IMEM (Ex: 0x2000, etc) HOT 2
- Processor doesn't park itself in a know good state prior to going to sleep HOT 3
- Nexys 4 DDR FPGA board flashing zephyr RTOS hello_world no output on default UART HOT 11
- Atomic accesses documentation error HOT 2
- neorv32_fifo vivado implementation issue HOT 1
- Implementation problem in XILINX ISE HOT 2
- Illegal instruction in coremark HOT 5
- Utilizing on-board SRAM HOT 16
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
š Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ššš
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ā¤ļø Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neorv32.