【ZYNQ逻辑】AXI接口转换模块设计

【前言】

DDR作为大容量存储器件,在FPGA设计中占有十分重要的地位。对于xilinx的7系列fpga以及Zynq-7000系列SoC来说,要想实现数据对DDR的读写,通用的解决方案是使用mig软核作为控制器,控制数据的读写进行。

ACZ702和ACZ7015开发板使用的主控器件隶属于Zynq-7000系列。与ACX720所使用的Artix-7系列的XC7A35T器件不同的是,这些器件PS侧自带有硬核DDR控制器,PL端(FPGA逻辑部分)可以通过AXI总线使用PS端的DDR控制器完成对DDR的读写操作。用户可以参考下帖了解ZYNQ系列器件的DDR3存储器件相关知识:【ZYNQ】ZYNQ器件的DDR3存储器使用相关知识介绍

因此,为了腾出更多管脚资源用于其他外设,在设计ACZ702和ACZ7015开发板板卡时,没有特别预留管脚用于mig软核控制DDR,PS端通过AXI总线共享DDR控制器,用于读写DDR。用户在使用这些开发板时,如果需要读写PS侧的DDR,需要使用AXI总线将数据传输到PS端,借用PS端DDR控制器完成操作。为了简化用户的工作量,我们设计了一个用于AXI转换的模fifo_axi4_adapter。



【模块结构及说明】

早期的fifo_axi4_adapter模块对DDR的读写由一个模块实现,效率较低,因此后期对fifo_axi4_adapter模块进行了优化。优化后的fifo_axi4_adapter模块结构如下:

整个模块基于读写FIFO的数据量以及剩余空间,自动完成对DDR3的读写。这里的读写两个FIFO会对数据进行缓存,同时,解决上下游模块常常处于不同时钟域的问题。fifo_to_axi4模块会不断对写fifo中的数据进行判断,只要数据量满足一次突发,便会将数据读出,通过AXI4总线接口的写事务通道,将数据写入指定DDR3地址中;而axi4_to_fifo模块则会不断对读FIFO的剩余空间进行判断,当读FIFO中的空间足以容纳一次突发的数据量时,便会通过AXI4总线接口的读事务通道,将指定DDR3地址中的数据读出,存进读FIFO中。

因此,对于用户而言,只需要操作读写FIFO,便能完成对DDR3指定地址的读写操作。

【例程及文档】

小梅哥ZYNQ系列开发板对应文档教材中,凡涉及到DDR3的逻辑设计,均使用到了该模块。用户可以直接通过文档教程对应章节和配套例程进行学习,这里仅提供使用mig对fifo_axi4_adapter模块进行仿真验证的例程。

---------------------------------已置顶发⬆-----------------------------


 

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值