微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将两个 AXI 阵列映射到 Xilinx FPGA 上的同一个 DDR 存储器

如何解决将两个 AXI 阵列映射到 Xilinx FPGA 上的同一个 DDR 存储器

我正在使用 Vivado HLS 开发 IP,该 IP 需要能够在同一 IP 的两个副本之间共享内存。 IP 需要在 ZedBoard 上运行。这是 HLS 中的函数签名,后跟接口 #pragmas。

typedef float value;
typedef value table[162][2];
typedef ap_uint<1> bit;
typedef ap_uint<4> status_bits;


int learn(hls::stream<ap_uint<32> > &hls_rand_stream,volatile status_bits &running,volatile table q_shared[2],volatile int failures[2],ap_uint<8> id) {
#pragma HLS INTERFACE axis register both port=hls_rand_stream bundle=random
#pragma HLS INTERFACE ap_none port=id
#pragma HLS INTERFACE ap_none port=running
#pragma HLS INTERFACE s_axilite port=return
#pragma HLS INTERFACE m_axi depth=8192 port=q_shared offset=off
#pragma HLS INTERFACE m_axi depth=128 port=failures offset=off
// do stuff
}

q_sharedfailures 需要由相同 IP 的两个副本访问,它们的连接方式如下块设计:

enter image description here

我在 PS 上启用了 GP0 DDR 接口并将 q_shared 映射到 0x6000_0000 并将 failures 映射到 0x6400_0000,确保 0x6000_0000 和 {{1} 之间的整个空间}} 也被映射到 PS 上(附上地址映射)。但是,当我在 PS 上调用 0x67FF_FFFF 时,进程挂起,好像地址没有映射一样。为什么会这样?我想我做了功课,但我还是 FPGA 开发的新手,我不确定我对 Vivado 上的内存映射的理解是否正确。预先感谢您的帮助!

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。