基于FPGA的AXI_MIG IP核的DDR3读写验证下篇

4.MIG_IP核的配置

1.打开 IP Catalog 在搜索栏输入 mig(Memory Interface Generator),双击直接打开。Mig IP核如名字所示,是一种存储器接口,可简易控制 ddr2,ddr3,ddr4 等存储器,7 系列的 migip 核只支持 ddr3,ddr2。

在这里插入图片描述

2.此页面是确认工程信息,

主要是芯片信息与编译环境以及目标语言。点击 next
在这里插入图片描述

3.此页面是生成的 ip 核名称,

也就是顶层模块名称,这里修改为 axi_ddr,方便与代码匹配,如果名称不是 axi_ddr,需要修改例化模块名字。AXI Interface:用户控制端口为 AXi4 接口,需要开启此接口,本设计将对改接口进行封装成 fifo 接口,如果读者有仔细查看 xilinx 的 ip 核,会发现几乎所有系列的 ip 核都提供axi 接口,采用该接口,更换不同系列的芯片也只需小量修改即可。点击 next。(注此过程也可以不选择AXI接口这样的话就会使用user接口,两种的区别是FPGA的驱动程序)
在这里插入图片描述

4.此界面是让用户选择可以兼容的芯片,

本工程勾上,升腾系列核心板支持 35t,100t,200t。因此提供必要的兼容性还是有必要的。点击 next。
在这里插入图片描述

5.此界面是选择存储器类型,

选择 ddr3 sdram。点击 next。
在这里插入图片描述

6.Clock Period:DDR3 芯片运行时钟周期,这个参数的范围和 FPGA 的芯片类型以及具

体类型的速度等级有关。本实验选择 3125ps,对应 320M。注意这个时钟是 MIGIP 核产生,并输出给 DDR3 物理芯片使用的,它关系到 DDR3 芯片具体的运行带宽。比如本次实验的开发板板载了 2 颗 DDR3 芯片,数据位宽总共 32 位,因为是双沿触发,这里带宽达到了 20.48Gb/s(640M32bit)。PHY to Controller Clock Ratio:DDR3 物理芯片运行时钟和 MIG IP 核的用户端(FPGA)的时钟之比,一般有 4:1 和 2:1 两个选项,本次实验选 2:1。由于 DDR 芯片的运行时钟是 320Mhz,因此 MIG IP 核的用户时钟(ui_clk)就是 160Mhz。一般来说高速传输的场合选择 4:1,要求低延时的场合选择 2:1。这里还要指出,当 DDR3 时钟选择选择了350M 到最高的 400M,比例默认只为 4:1,低于 350M 才有 4:1 和 2:1 两个选项。该时钟采用 2:1 生成的时钟 160M,而我们采用的 axi4 接口数据位宽为 64 位,用户端口带宽为10.48Gb/s(160M64bit),刚好为 1 半物理带宽,ddr3 存储器物理上不能同时写与读,而 axi4是可同时读与写的协议,因此我们为用户端口的读与写各自分配物理带宽的 1 半,该设计比较合理,如果用户端带宽大于物理端,会产生数据错误,本设计为读与写各自分配一半带宽,那么读与写同时进行操作,总带宽也只是达到物理带宽,避免了数据错误。在进行高速设计时,需要考虑到数据带宽。VCCAUX_IO:这是 FPGA 高性能 bank(HighPerformance bank)的供电电压。它的设置取决于 MIG 控制器运行的周期/频率。当用户让控制器工作在最快频率的时候,系统会默认为 1.8V,当然在 1.8V 下用户可以运行低一点的频率。本实验默认 1.8V。值得一提的是,改电压在硬件设计时已经确认好了,已经固定为 1.8v。因此选择 1.8v。Memory Type: DDR3 储存器类型选择。本实验选择 Component。Memory Part: DDR3 芯片的具体型号。本实验选择 MT41J128M16XX-125,这个型号其实和实际硬件原理图上的型号一致。Memory Voltage:是 DDR3 芯片的电压选择,本实验选 1.5v。Data Width:数据位宽选择,这里选择 32。其他保持默认,点击 next。(注意:这里面选择的DDR型号是以镁光为例的,选择内存相当带宽相等的存储器即可)
在这里插入图片描述

7.此界面是选择用户端口 AXI4 数据位宽,

因为笔者封装 AXI 的代码采用了 64 位,因此这里选择 64,如果位宽不一致,需要修改封装的代码。其他保持默认,点击 next(AXI带宽的选择)
在这里插入图片描述

8此界面是配置阻抗与控制命令的。

Input Clock Period:MIG IP 核的系统输入时钟周期,该输入时钟是由 FPGA 内部产生
的,本次实验选择的时钟频率为 320MHz(3125ps)。Read Burst Type and Length:突发类型选择,突发类型有顺序突发和交叉突发两种,本实验选择顺序突发(Sequential)。Output Driver Impdance Control:输出阻抗控制。本实验选择 RZQ/7。RTT:终结电阻,可进行动态控制。本次实验选择 RZQ/4。Controller Chip Select Pin:片选管脚引出使能。本实验选择 enable,表示把片选信号cs#引出来,由外部控制。BANK_ROW_COLUMN:寻址方式选择。本实验选择第二种,即 BANK-ROWCOLUMN 的形式,这是一种最常规的 DDR3 寻址方式,即要指定某个地址,先指定bank,再指定行,最后指定列,这样就确定了一个具体地址。一般来说这样寻址方式有利于降低功耗,但是读写性能(效率)上不如“ROW_BANK_COLUMN”。此界面保持默认不修改,点击 next。
在这里插入图片描述

9.此界面设置参考时钟的

System Clock:MIG IP 核输入时钟。本实验选择“No Buffer”,因为 IP 核的输入系统
时钟是单端时钟,是由内部的 MMCM 产生的,MMCM 所产生的时钟默认添加了 buffer。
Reference Clock:MIG IP 核参考时钟。同样选择“No Buffer”,将由时钟模块生成。
感兴趣的用户也可以选择“Use System Clock”这个选项,这时候的 MIG IP 系统时钟同时
作为了参考时钟, IP 核参考时钟要求是 320Mhz,而 MIG IP 核的系统时钟刚好也使用了
320Mhz 的系统时钟。
System Reset Polarity:复位有效电平选择。本实验选择“ACTIVE LOW”低电平有
效。
Debug Signals Control:该选项用于控制 MIG IP 核是否把一些调试信号引出来,它会
自动添加到 ILA,这些信号包括一些 DDR3 芯片的校准状态信息。本实验选择选择
“OFF”,不需要让 IP 核生产各种调试信号。
Sample Data Depth:采样深度选择。当“Debug Signals Control”选择“OFF”时,所
有采样深度是不可选的。
Internal Vref:内部参考管脚,表示将某些参考管脚当成普通的输入管脚来用。由于开
发板的 IO 资源较为紧张,因此这里需要选择“ON”,把参考管脚当做普通的输入管脚来
用。
IO Power Reduction: IO 管脚节省功耗设置。本实验选择“ON”,即开启
XADC Instantiation: XADC 模块例化。使用 MIG IP 核运行的时候需要进行温度补
偿,可以直接选择 XADC 模块的温度数据引到 MIG IP 核来使用,否则需要额外提供温度
数据,所以本实验选择“ Enable”。
继续点击“NEXT”按钮(参考时钟设置为No Buffer,如果不设为No Buffer,需要原理图有与之对应的引脚支持,后面配置界面会需要添加)
在这里插入图片描述

10.此界面是配置数据线阻抗,

内部高性能 bank 端接匹配阻抗的设置,这里不去改它,默认 50 欧姆即可点击 next。
在这里插入图片描述

11.管脚模式选择

Pin/Bank Selection Mode: 管脚模式选择。本次实验选择第二种,继续点击“Next”按
钮。(现在约束还是以后约束)
在这里插入图片描述

12.根据原理图,添加约束

点击 validate,查看引脚绑定是否有效,有效结果如下图。(可以添加管脚约束文件也可以手动添加)
在这里插入图片描述

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

5.FPGA 代码编写

(编写测试数据模块,通过修改数据量与数据是能控制数据的多少)
在这里插入图片描述
(编写测试数据模块,通过AXI的读写初始地址和结束地址修改读写的位置)
在这里插入图片描述
调试ILA可以看出,每64个地址里面存放32个数据每个数据16bit,(一个地址存放一个字节)所以生成的数据量需要时256的整数倍,否择读出的最后一个地址的数据不是自己写入的会出现错误
在这里插入图片描述

最后一个不够32的数据是错误的
最后一包数据错误

前面够一个32的数据是正确的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值