Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for FastVDMA in LiteX #2

Open
kgugala opened this issue Mar 10, 2020 · 6 comments
Open

Add support for FastVDMA in LiteX #2

kgugala opened this issue Mar 10, 2020 · 6 comments
Assignees

Comments

@kgugala
Copy link
Contributor

kgugala commented Mar 10, 2020

FastVDMA is available here https://github.com/antmicro/fastvdma

To integrate it with LiteX you have to generate Verilog code and wrap it in LiteX. Here is an example how a Verilog module can be wrapped: https://github.com/enjoy-digital/litesdcard/blob/master/litesdcard/emulator/linklayer.py#L109

@kgugala kgugala changed the title Add support to FastVDMA in LiteX Add support for FastVDMA in LiteX Mar 10, 2020
@kabrodzki kabrodzki self-assigned this Apr 2, 2020
@kmezynski kmezynski self-assigned this Apr 4, 2020
@kabrodzki
Copy link

Can we fork this fastVDMA project? After some quick test I see that we need to change the configuration to use the Wishbone, because now it's generating the verilog source for AXI4
DMATop.scala:

  val csrFrontend = Module(new AXI4LiteCSR(DMATop.addrWidth))
  val readerFrontend = Module(new AXIStreamSlave(DMATop.addrWidth, DMATop.readDataWidth))
  val writerFrontend = Module(new AXI4Writer(DMATop.addrWidth, DMATop.writeDataWidth))

I am also not quite sure how can we test the wrapper alone. I remember that @kgugala mentioned that there is some more extensive paper on this project (I mean more extensive than this and this)

@kgugala
Copy link
Contributor Author

kgugala commented Apr 18, 2020

@kabrodzki I made a fork. You should be able to push there.

As for more info about the DMA you can always ask the author @piotr-binkowski

@rw1nkler
Copy link
Contributor

I don't know if this will be useful, but LiteX is able to convert the AXI to wishbone:
https://github.com/enjoy-digital/litex/blob/master/litex/soc/interconnect/axi.py#L403

But this is like a wrapper on a wrapper, so maybe there is a better option.

@kabrodzki
Copy link

I created the repo for the wrapper and uploaded the "Link layer", but I'm not quite sure how to go from there.

@kgugala
Copy link
Contributor Author

kgugala commented May 20, 2020

now you should include the DMA in the LiteX system you're working on, so you can access DMA's registers from the CPU

@piotr-binkowski
Copy link

you will also need to wrap your wishbone signals as wishbone.Interface() (like here) so that you can later use them with add_wb_master and add_wb_slave in your target.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants