四、基于 A7 的 DDR3 SDRAM IP的 写实现

前言:为了使用DDR3 SDRAM IP 完成读写操作,前面做了很多的铺垫比如:
mig ip核的调用
根据手册了解该ip核的一些基础知识
mig ip核使用之前如何进行初始化操作
下面开始 基于 A7 的 DDR3 SDRAM IP的写实现

DDR3 Sdram IP 写时序:

1、写命令和写数据总线介绍

DDR3 SDRAM控制器IP核主要预留了两组总线:

  • 一组是直接绑定到DDR3 SDRAM芯片端口(绿框),信号以ddr_ 开头。
  • 一组是留给用户端自定义使用(红框),信号以app_开头,其中user fpga logic → ip核的信号 需要我们产生。
    中间部分就是我们调用的ip核。
    在这里插入图片描述
    先了解app侧写数据总线命令总线功能:
    app端命令总线:(input 和output是相对于ip核)
    在这里插入图片描述
    可以看到:只有app_en 和app_rdy同时拉高(③)cmd才能被ip接收。
    在这里插入图片描述

app端写数据总线:(input 和output是相对于ip核)
在这里插入图片描述
即在下图写数据总线波形中只有(③)位置的数据被ip接收。
在这里插入图片描述

这里对app_wdf_end信号深入分析:
其有效信号表示当前为app_wdf_data的最后一个数据。
这里要知道,用户端写数据位宽(根据芯片不同而不同 这里是128bit)和实际DDR3的数据位宽(16bit)不一样。
在这里插入图片描述

在 A7 DDR3 控制器 IP 核中,burst length=8(固定),即每次突发均为:16bit(该ddr3芯片数据位宽) x 8 =128bit;
在这里插入图片描述
在前文调用ip核时,可以进行2:1和4:1的选择配置。

  • 4:1时app_wdf_data 为 128bit,此时每一个发送的有效 app_wdf_data 数据均为当前 8 突发的第一个数据,同时也是最后一个数据。即: app_wdf_end 信号与 app_wdf_wren 信号同步;
    在这里插入图片描述
  • 2:1时app_wdf_data 为 64bit,此时每一个发送的有效 app_wdf_data 数据均为当前突发的 4 个数据,即:每两拍app_wdf_data ,app_wdf_end 信号与 app_wdf_wren 信号同步一次。
    • 在这里插入图片描述
      这里ddr3的一个内存地址app_addr存储16bit数据,则不同比例模式下,app_addr的偏移情况:
      在这里插入图片描述
      在这里插入图片描述

2、写命令和写数据间关系介绍

之前介绍了写数据有三种写入方式,为了保证写入数据的稳定性,一般使用1,2方式,本次写数据实现采用第2种方式,即:写数据提前于写命令
在这里插入图片描述

3、写控制模块框图设计

其中a7_wr_ctrl是需要我们设计的模块。
在这里插入图片描述
接口描述:
在这里插入图片描述

4、进行波形设计(绿色的是输入信号,黄色为输出信号,白色为内部信号。)

在这里插入图片描述

5、代码实现和仿真验证(modelsim)。

仿真展示:
在这里插入图片描述
在这里插入图片描述

5、总结:

1.一种新的tb文件传参方式:

在这里插入图片描述

2.使用tb文件进行modelsim仿真技巧:

1.先找到compile文件,将最后一行注释掉,解决modelsim编译后自动关闭的问题
在这里插入图片描述
在这里插入图片描述
2.在modelsim 命令行中,先执行 do compile文件命令,然后执行do simulate文件命令
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值