如何解决将两个 AXI 阵列映射到 Xilinx FPGA 上的同一个 DDR 存储器
我正在使用 Vivado HLS 开发 IP,该 IP 需要能够在同一 IP 的两个副本之间共享内存。 IP 需要在 ZedBoard 上运行。这是 HLS 中的函数签名,后跟接口 #pragma
s。
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_shared
和 failures
需要由相同 IP 的两个副本访问,它们的连接方式如下块设计:
我在 PS 上启用了 GP0 DDR 接口并将 q_shared
映射到 0x6000_0000
并将 failures
映射到 0x6400_0000
,确保 0x6000_0000
和 {{1} 之间的整个空间}} 也被映射到 PS 上(附上地址映射)。但是,当我在 PS 上调用 0x67FF_FFFF
时,进程挂起,好像地址没有映射一样。为什么会这样?我想我做了功课,但我还是 FPGA 开发的新手,我不确定我对 Vivado 上的内存映射的理解是否正确。预先感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。