# AXI DMA not working on PYNQ-Z1

**URL:** <https://discuss.pynq.io/t/axi-dma-not-working-on-pynq-z1/715>\
**Category:** Support\
**Created:** [December 3, 2019, 9:58am UTC](https://discuss.pynq.io/t/axi-dma-not-working-on-pynq-z1/715 "2019-12-03T09:58:11Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![rashedkoutayni](https://avatars.discourse-cdn.com/v4/letter/r/58f4c7/32.png) [@rashedkoutayni](https://discuss.pynq.io/u/rashedkoutayni)\
**Post date:** [December 3, 2019, 2:48pm UTC](https://discuss.pynq.io/t/axi-dma-not-working-on-pynq-z1/715/8 "2019-12-03T14:48:39Z")

</div>

As a summary, here are my trials:

 ![DMA_Trials](https://us1.discourse-cdn.com/flex019/uploads/pynq1/original/1X/1af014907010bf8e2cef92691e275f90e2f9d9e3.png)

The corresponding designs can be found here:  
[1.pdf](https://discuss.pynq.io/uploads/short-url/fk3WIEWLcJSbjhv8m8w1loBMPil.pdf) (62.5 KB) [1\_modified.pdf](https://discuss.pynq.io/uploads/short-url/adZhVrxNufDIJHSHnAqzlToCBlI.pdf) (69.0 KB) [2.pdf](https://discuss.pynq.io/uploads/short-url/bknM3SbAge5mB2Whmvq6tiU0aNm.pdf) (70.4 KB) [3.pdf](https://discuss.pynq.io/uploads/short-url/fP69Q2yI69083ubIloTCxHC3DX6.pdf) (98.5 KB) [4.pdf](https://discuss.pynq.io/uploads/short-url/rhoTkmrYZdniMUpwPAsdox9PmgS.pdf) (78.5 KB) [5.pdf](https://discuss.pynq.io/uploads/short-url/rPeVgrASMPYMP5FUNHJeKuCF1Yz.pdf) (71.7 KB) [6.pdf](https://discuss.pynq.io/uploads/short-url/75dIOLs5lycZSe5tcsWpSEFf7ov.pdf) (77.1 KB)

Here are my notes:  
1- Don’t use Scatter/Gather.  
2- If you want to use interrupt, use AXI Interrupt Controller.  
3- if you’re making your custom IP in HLS, the _input_ and _output_ ports should be _axis_ interfaces, while the _return_ port should be _s\_axilite_:

> #pragma HLS INTERFACE axis port=input\_stream  
> #pragma HLS INTERFACE axis port=output\_stream  
> #pragma HLS INTERFACE s\_axilite port=return bundle=CTRL\_BUS

Afterwards, you should MMIO your CTRL\_BUS address and only set the ap\_start bit without waiting for the ap\_idle or ap\_done, and you should give the **correct** amount of input, otherwise it will hang.

Rashed

---

_[View the full topic](https://discuss.pynq.io/t/axi-dma-not-working-on-pynq-z1/715)._
