I have made an IP in Vitis HLS which is connected to other IPs using an AXI stream interface. It is also connected to the PS using an AXI Lite interface, which I use to start and stop the IP.
For example, I can start the IP by writing 0x81 to the control register in Jupyter Notebook using the PS:
The outputs of the IP depend on the inputs and some parameters, and currently I have hardcoded the parameters in HLS. I would like to be able to set the parameters using de Jupyter Notebook instead of hardcoding them in HLS. Is it possible to do this via the AXI lite interface without adding an additional AXI lite port? If yes, how can I do it?
You would bundle the ports into the same interface as you have done.
Have you built your HLS IP? If yes, then search for a *_hw.h file in your HLS project directory. This should show the register offsets to access the parameters for your function.
I am also wondering how to reload the arguments (in a AXI-lite register) while the AXI stream is running. I have tried several methods and it seems to me that this is impossible. The arguments in the AXI lite register are fixed once the IP core starts, and you can only update them after the IP core stops.
If anyone has figured out a solution, please kindly update in this thread. Thanks!
Thanks! I still have a question regarding the software control.
If I were to update the arguments using ap_none_ctrl, and if I understand correctly, the synthesized ports of the arguments would look like in1 and in2 in the following picture from Interfaces for Vivado IP Flow - UG1399:
What, then, would be the best way, on the software side, to update these arguments? Should I use GPIO? Or should I use some other IP cores with AXI lite registers and connect them to the ap_ctrl_none ports for the arguments to be updated (say, in1 and in2)?