DDR系列文章分类地址:
(1)DDR3 基础知识分享
(2)DDR3 控制器 MIG IP 详解完整版 (AXI4&Vivado&Verilog)
(3)DDR3 控制器 MIG IP 详解完整版 (native&Vivado&Verilog)
(4)基于 DDR3 的串口传图帧缓存系统设计实现
(5)基于 DDR3 的native接口串口局部传图缓存系统设计实现
(6)基于 DDR3 的串口传图缓存系统设计实现
(7)基于 FPGA 的彩色图像灰度化的设计实现
文章目录
前言
本节主要是介绍 Xilinx DDR 控制器 IP 的创建流程、IP 用户使用接口 AXI 协议介绍和
IP 对应的 Example Design 的仿真和上板验证。
提示:以下是本篇文章正文内容,下面案例可供参考
一、DDR 控制器 IP 创建流程
在建立好工程后,按如下步骤进行 DDR 控制器 IP 的创建和配置。
1、搜索查找 DDR 控制器 IP。
Xilinx 的 DDR 控制器的名称简写为 MIG(Memory Interface Generator),在 Vivado 左侧窗口点击 IP Catalog,然后在 IP Catalog 窗口直接搜索关键字“mig”,就可以很容易的找到Memory Interface Generator(MIG 7 Series)。如下图所示。
直接双击鼠标左键或通过鼠标右键选项中选择 Customize IP 并点击。如下图所示,可进
入到 IP 配置界面。
2、MIG IP 的配置。
进入IP配置界面后,第一个界面是 Memory Interface Generator 介绍页面,如下图所示。默认的器件家族(FPGA Family)、器件 型号(FPGA Part)、速度等级(Speed Grade)、综合工具(Synthesis Tool)和设计输入语言(Design Entry)都和创建工程是保持一致。
点击 Next 到 MIG Output Options 配置页面中,如下图所示。勾选“Create Design”,默认名称(Component Name)为“mig_7series_0”,用户可对其进行修改,这里保持默认。选择控制器数量(Number of Controllers)为 1,勾选 AXI4 Interface(本实验 MIG IP 的用户接口使用 AXI 协议接口)。
点击 Next 到 Pin Compatible FPGAs 配置页面,如下图所示该界面可用于配置选择和当前所设定的唯一器件型号做引脚兼容的其它 FPGA 型号。对于某些可能升级器件型号的应用而言,这个功能是很实用的。这里保持默认不做配置。
点击 Next 进入到如下图所示的 Memory Selection 配置页面,这里根据实际板子硬件进行选择,开发板板载的是 DDR3,这里选择“DDR3 SDRAM”即可。
点击 Next 进入到如下图所示的 Controller Options 配置页面该配置。
在该配置界面需要设定如下重要的 DDR3 存储器信息。对应的设置位置如下图所示。
(1)DDR3 存储器驱动的时钟周期(Clock Period)设置为 2500ps(即 400MHz),这个时钟是用于 FPGA 输出给到 DDR 存储器时钟管脚的时钟。注意这里根据实际情况是有设置区间范围的,并非可以设置任意值,这里的区间范围为 25003300ps(即300400MHz)。
(2)DDR3 存储器类型(Memory Type)为 Components。
(3)DDR3 存储器型号(Memory Part)为 MT41J128M16XX-125,这是开发板板载 DDR3存储器的实际型号(XX 表示任何字符均可)。此处倒三角点击后有很多备选型号,若实际使用型号不在此列表中,可以点击“Create Custom Part”后设置相关 DDR3 存储器的时序参数。
(4)DDR3 存储器接口电压(Memory Voltage)为 1.5V。
(5)DDR3 存储器位宽(Data Width)为 16,这里根据实际开发板板载 DDR3 存储器数据总线位宽进行设置。
(6)DDR 控制器的 bank machines 个数设置,这里参数与 DDR3 物理 bank 个数并非是同一概念,设置上并非一定需要与 DDR3 物理 bank 个数保持一致(当然设置相同数量可以增加 DDR 控制器的效率和性能,但是会占用相对多的资源,时序上要求也相对要高,性能和资源上如何达到一个比较好的平衡,需要根据实际应用场景进行设置,有关详细的设置指导可参考文档 7 Series FPGAs Memory Interface Solutions)。
(7)DDR 控制器调度命令的顺序的配置,当选择 strict 时,严格按照命令先后顺序执行;选择 normal 时,为了得到更高的效率,可能对命令重排序。为了操作简单,我们选择strict。
全部参数设置完成后如下图所示。
点击 Next 进入到如下图所示 AXI Parameter 配置页面。该界面是对 AXI 接口相关参数
进行配置,具体配置如下。
(1)AXI 接口的数据位宽,设置为 128。
(2)DDR 控制器的仲裁机制,由于 AXI 接口读写通道是独立的,读写各有自己的地址通道,而储存器控制器只有一个地址总线,同一时刻只能进行读或写,这样就存在读/写优先级的问题,这里设置 TMD(Time Division Multiplexing),该设置读写优先级相同,读写交替进行。
(3)Narrow Burst 支持,设置 0,将其关闭。
(4)AXI 接口的地址位宽,自动根据 DDR3 内存生成的位宽,这里 AXI 地址对应的数据是以 1 字节进行计算的,不要与 DDR3 的地址和存储数据混淆。板载 DDR3 存储器存储空间 2Gbit(2Gbit = 256MByte = 2^28 Byte,所以 AXI 的地址位宽为 28)。
(5)AXI 读/写通道的 ID 宽度。ID 是用来标识读/写响应和读/写数据的一致性,具体后面在讲解 AXI 协议会讲。
AXI 接口相关参数配置完成后的界面如下图所示。
点击 Next 进入到如下图所示的 Memory Options 配置页面下。
各种参数配置如下。
(1)输入系统时钟频率设置,这个时钟是提供给 MIG IP 的时钟,这里配置没有啥特别要求。如下图所示为 MIG IP 内部关于时钟的结构图,可以看到 MIG IP 里面有一个时钟锁相环,系统时钟是这个时钟锁相环的输入时钟,锁相环会根据这里的输入时钟自动产生 MIG IP 内部各种所需的时钟。所以这里的时钟频率的设置没有固定的要求,下拉框中的各种频率值都可以选择。这里考虑到 MIG IP 输入还需要一个 200M 的 IDELAYReference Clock 时钟,为了将两个时钟共用一个输入时钟,将这里的系统时钟周期(Input Clock Period)配置选择为 5000ps(200MHz)。
(2)突发读类型和长度(Read Burst Type and Length)设置为顺序读写 Sequential。
(3)输出驱动阻抗控制(Output Drive Impedance Control)选择 R ZQ/7。
(4)片上终端(On Die Termination)设置为 R ZQ/4
(5)片选信号(Controller Chip Select Pin)设置为 Enable,即使用该引脚,实际开发板的DDR3 的 CS 信号有连接到 FPGA