基于AXI smartconnect的多主单从的DDR读写

🔈声明:
🔑未经作者允许,禁止转载
🚩推荐一个IC、FPGA新手入门的好网站:👉快 点 击 进 入 学 习 吧👈



前言

由于项目后续需要实现一个多主单从的DDR读写功能,而FPGA上DDR的AXI通道只有一条,所以不得不采用AXI的IP来实现。
本文记录一下使用AXI smartconnect实现过程中的一些问题。


一、AXI smartconnect是什么?

AXI smartconnect 是为了一个或多个主机通过AXI总线和一个或多个从机进行数据读写而用的,此前常用的应该是AXI interconnect这个IP,实质上smartconnect是interconnect的升级版,使用更加方便一些,延时流和流水线优化的更好些,但是相对的资源就会占用更多

  • AXI smartconnect最高支持主机从机的数量可达16个,如果有更多的需求,则需要更多的smartconnect来支持。
  • AXI smartconnect支持主从机不同时钟域不同数据位宽自动切换(一个突发还没接口位宽大的时候,smartconnect会选择存缓存里,攒一起传)。
  • 此外smartconnect还支持数据读写错误的提示。

二、使用步骤

1.导入IP

在这里插入图片描述
首先在IP catalog栏中输入AXI smartconnect就可以找到这个IP,需要注意的是这个IP为了用户使用更方便,只能在block design模式下生成,否则会出现如下情况。

在这里插入图片描述
随后进入block design界面配置AXI smartconnect即可,配置的GUI如下图
在这里插入图片描述

  • 我在这个工程中测试的是两主一丛的情况,而下方的advanced properties是此IP核内更细节的一些配置,暂时还没用到,如果需要的话可以对照数据手册查阅使用。
    在这里插入图片描述
    IP生成后只需要连接主从机的AXI总线以及时钟、复位信号即可。

2.注意事项

  • 本以为想上述这样完成后就能够实现基本功能,但是仿真发现在AXI
    smartconnect的输入端AXI总线的信号并没有对应出现在输出端。

  • 检查许久后发现AXI总线中bresp值变成3了,正常读写时这个值好像都是0,查找后发现这个信号的3代表读写地址错误

原来需要在仿真前进行地址分配

进入IP integrator选项,在address editor选项卡中进行两个主机所需的地址分配。(这里需要注意,一旦分配错误或者没分配都会读写失败

在这里插入图片描述

3.仿真情况

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里模拟了两个主机同时突发读写的情况,可以看出读写情况正常,没有冲突和数据错误的情况。




最后给大家安利一个好网站:
  Verilog的学习还是要多以练习为主,想要练习Verilog的同学,推荐可以去nowcoder看看,他们现在的题库内容很丰富,属于国内做的很好的了,而且是课程+刷题+面经+求职+讨论区分享一站式求职学习网站,最最最重要的里面的资源全部免费




  • 13
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值