Zynq 中查看用HLS 生成的IP核端口对应的内存空间

找了一会儿才找到, 所以记录下来。

用HLS生成的ip核,使用axi-lite协议,找不到pynq中top函数变量对应的内存空间地址。

  • HLS中,Synthesis Summary的最后一项可以看到HW info.

  • HLS生成的verilog文件(XXXXX_control_s_axi.v)中,有接口地址信息的注释。

//------------------------Address Info-------------------
// 0x00 : reserved
// 0x04 : reserved
// 0x08 : reserved
// 0x0c : reserved
// 0x10 : Data signal of a
//        bit 31~0 - a[31:0] (Read/Write)
// 0x14 : reserved
// 0x18 : Data signal of b
//        bit 31~0 - b[31:0] (Read/Write)
// 0x1c : reserved
// 0x20 : Data signal of c
//        bit 31~0 - c[31:0] (Read)
// 0x24 : Control signal of c
//        bit 0  - c_ap_vld (Read/COR)
//        others - reserved
// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake)
  • pynq中,可通过register_map直接查看地址,或者直接操作变量。
from pynq import Overlay
overlay = Overlay('./design_1.bit')
add_ip = overlay.add_0

add_ip.register_map.a = 3
add_ip.register_map.b = 4
c = add_ip.register_map.c
c.address