# Pynq to m\_axi HLS IP

**URL:** <https://discuss.pynq.io/t/pynq-to-m-axi-hls-ip/4630>\
**Category:** Support\
**Created:** [September 4, 2022, 8:22am UTC](https://discuss.pynq.io/t/pynq-to-m-axi-hls-ip/4630 "2022-09-04T08:22:25Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![marioruiz](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.pynq.io/marioruiz/32/2177_2.png) [@marioruiz](https://discuss.pynq.io/u/marioruiz)\
**Post date:** [September 4, 2022, 12:00pm UTC](https://discuss.pynq.io/t/pynq-to-m-axi-hls-ip/4630/3 "2022-09-04T12:00:57Z")

</div>

Hi @NNUT,

Did you review this tutorial?

> [@Tutorial: AXI Master interfaces with HLS IP](https://discuss.pynq.io/t/tutorial-axi-master-interfaces-with-hls-ip/4032):
>
> PYNQ HLS AXI Master tutorial Introduction Previous tutorials show how to build IP with AXI stream interfaces and how they can be connected in a Vivado project to an AXI DMA. The DMA can be controlled from PYNQ to send data to the IP and receive results. AXI stream interfaces are useful if you are connecting multiple IP together in a dataflow type architecture. However, you don’t have to use AXI streams and DMAs with HLS IP. HLS supports AXI master interfaces which can read and write data as r…

What you see in the register map is the control register of your IP. `in` and `out` are write-only arguments in your accelerator from the point of view of the PS. So, you need to pass a reference to memory where you want to read/write. Once you start your IP, it will issue transactions to read/write from memory independently from the PS.

From the tutorial above: To be really clear, **a** (in your case `in` and `out`) will be an AXI Master interface, but we can write the memory offset to a register on the AXI Slave interface..

> - This is the current solution that could find to the “write-only” issue [reply made by [marioruiz] at the bottom of the post]: [Pynq 2.7 HLS registers write-only?](https://discuss.pynq.io/t/pynq-2-7-hls-registers-write-only/3668)

These arguments are write-only and you should not read from them.

> - All data is written into HLS “in” input via register 0x10
> - All data is written out of HLS “out” output via register 0x1C

This is not correct, you are only writing the reference (physical address) where that data is allocated.

> - Also, semi off-topic, how do I read the address space for the HLS IP in jupyter notebooks? Not the register\_map.

I suppose you mean the result (out) of your IP. The data will be available in the output buffer you allocate in the Python code.

> 1. Why do I do a write the same way to input the data to HLS and output the data from HLS? The semantics of the register\_map write() are strange to me. I also couldn’t understand how to get read() to work.

Refer to the tutorial and answer above (4th paragraph).

> 1. Is there a better way to do this? Am I doing this in a recommended way? Is there anything I should do differently?

This is the correct way, but I think your understanding of how this works is not correct.

Mario

---

_[View the full topic](https://discuss.pynq.io/t/pynq-to-m-axi-hls-ip/4630)._
