首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个主组件控制相同的从(地址分配),Intel Quartus Prime Platform Designer (Qsys)

两个主组件控制相同的从(地址分配),Intel Quartus Prime Platform Designer (Qsys)
EN

Stack Overflow用户
提问于 2018-09-13 13:04:53
回答 1查看 452关注 0票数 1

我正在做一个使用DE1-SoC (FPGA + ARM皮层A9)的项目.您可以看到设计的一部分(Qsys,platform designer) 这里

一个片上存储器(RAM,image_memory)正在被两个不同的主设备所掌握。其中一个是众所周知的h2f_lw_axi_master (由Quartus Prime软件提供,使ARM和FPGA数据交换成为可能),另一个zpc_1是我设计的定制主模块。

该方案的基本思想是在配置FPGA后,能够将数据写入片上存储器,zpc_1读取存储器的内容并在其上工作。

每个字的长度为512个位(64个字节),有1200个字(因此从0x0002_0000开始分配地址,以0x0003_2bff结尾,足够容纳76800 = (512 * 1200) /8字节。hps使用uint512_t (来自c++的boost库)类型的数据进行写入,zpc_1的读取数据宽度为512位。地址是根据h2f_lw_axi_master.分配的。

我有两个与这个制度有关的问题。

1.zpc_1 HDL代码中读取数据的地址应该从0x20000偏移量开始,在每个周期增加0x40 (64),逐字读取数据吗?(或任何其他方法)

2. zpc_1能够读取第一个单词并按照第一个单词中的指令连续工作,原因可能是什么?

如果你需要更多的信息来回答这个问题,并且/或问题不够清楚,请不要犹豫地询问更多的信息(评论)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-18 06:14:47

问题是当其中一位主从与奴隶交互时,奴隶没有适当地允许另一位(在协议中有一个名为“等待请求”的信号,我没有正确地使用该信号,当我正确地使用该信号时,该奴隶总是发送等待请求,这也帮助我调试了这个问题)。

尝试双口RAM,如这里所示,并通过正确使用“等待请求”信号来修改组件,一切都开始正常工作。

现在答案是:

Q1:在zpc_1 HDL代码中读取数据的地址是否应该从0x20000偏移量开始,然后在每个周期增加0x40 (64),逐字读取数据?(或任何其他方法)

A1:您可以根据需要定义与自定义主组件相关的另一个地址偏移量,并开始读取该地址偏移量(我在图片中使用了0x00000000 )。地址应该在每个循环中增加0x40 (64),逐字读取数据,@Unn注释。

Q2: zpc_1能够读取第一个单词,并按照第一个单词中的指令连续工作,原因可能是什么?

A2:原因是单端口RAM不能通过单端口同时正确响应两个主程序,用双口RAM代替它解决了这一问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52314377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档