写在前面

本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG、初始化、读写操作、FIFO 接口等。通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等,附上汇总博客直达链接。

【DDR3 控制器设计】系列博客汇总篇(附直达链接)


目录

实验任务

实验环境

实验框图

配置 MIG 核

汇总篇


实验任务

学会如何根据手册配置 MIG IP 核中的参数、

实验环境

开发环境:Vivado 2018.2,

FPGA 芯片型号:xc7a100tffg484-2

DDR3 型号:MT41J256M16HA-125

实验框图

以下为 MIG 和 DDR 之间的连接框图,可以看到框图的左边是用户接口,中间是 MIG 核,右边是需要控制的 DDR 接口,用户只需要去配置使用 MIG 核,就可以对 DDR 进行控制读写等操作。

配置 MIG 核

首先线创建一个工程,这个不详细说明了,然后在点击 IP Catalog 搜索 MIG,双击打开 IP 核配置界面进行配置。

第一页

此页展示了所选用的 FPGA 型号等信息,直接next。

第二页

这页主要是配置基本信息。

  • 创建一个新的工程设计
  • 对 MIG 核进行命名
  • 选择控制器的数量
  • 是否选择 AXI4 接口

这里都保持默认即可。

第三页

Pin Compatible FPGAs

此页面列出了所选系列中具有相同系列。如果从 MIG 工具生成的引脚需要与列表中 FPGA 连接,此选项应用于选择引脚分配的 FPGA 必须兼容。

这里建议直接不选 next。

第四页

Memory Selection

此页面显示所选 FPGA 系列支持的所有存储类型,我使用的 FPGA 支持 DDR3、DDR2 和 LPDDR2,根据 FPGA 的类型可能支持的存储类型更多。本次实验对为 DDR3 初始化测试,因此选择 DDR3 即可。

第五页

Controller Options

Clock Period:用作 DDR 的工作时钟,由于 DDR 是双边沿采样,所以实际工作频率为此时钟频率的两倍。

PHY to Controller Clock Ratio:配置物理层的比例(内存)控制器时钟频率和用户界面时钟频率。 2:1 比例的用户接口数据总线宽度是 MIG 内存接口宽度的 4 倍,比如 MIG 中配置的数据位宽是 16 位,而 DDR 双边采样,所以用户接口是 MIG 内存接口的 4 倍即数据位宽为 64 位,同理可以得到如果设置为 4:1 则是 8 倍的数据位宽即数据位宽为 128 位。并且需要注意的是当 Clock Period 配置为 350MHz 以上时,目的可能是避免用户端的时钟过大。

Vccaux_io:高性能Bank供电电压。MIG 工具需要时自动选择1.8V。

Memory Type:选择内存类型,默认选择 components。

Memory Part:DDR3 的型号,根据自己的 DDR3 型号选择,我用的是 MT41J256M16HA-125。

Memory Voltage:DDR3 的供电电压,默认为1.5V。

Data Width:选择数据位宽值,这里选择16位宽。

ECC:只有 V 系列等才有的功能,这里默认不选用。

Data Mask:数据掩码。每一位表示屏蔽数据的 8 位,如前面设置的数据位宽为 16 位,则 Data Mask 的位宽为两位,0位表示屏蔽数据的低 8 位,1 位表示屏蔽数据的高八位。

Number of Bank Machines:Bank Machine 数量,这里默认 4 个即可。

ORDERING:表示 MIG 是否可以指令进行重新排序,选择 Normal 表示开启此功能,这样效率更高。选择 Strict 表示不开启此功能。

第六页

Memory Options

由于本实验没有用到AXI4接口,所以AXI Parameter选项卡没有涉及到。

Input Clock Period:MIG 核的输入时钟,外部输入时钟通过MIG核内部的锁相环倍频时钟到 Clock Period 时钟提供给 DDR3,此时钟为锁相环的输入时钟。这里设置为200MHz。

Read Burst Type and Length:突发类型和长度,选择Sequential:顺序突发,突发长度为 8。注意:只有DDR2和DDR3 支持突发长度8。

Output Driver Impdance Control:输出驱动器阻抗控制设置 DRAM 上的输出驱动器阻抗。列表的选项由所选的特定 DRAM 决定。 RZQ 为 240Ω。如果选择 RZQ/6,则输出驱动阻抗为 40Ω。这里选择 RZQ/7约为34.29Ω。

Controller Chip Select Pin:控制器片选管脚。默认选择 enable。

RTT(nominal):选择RZQ/4,保持默认即可。

Memory Address Mapping Selection

存储寻址方式的设置

第一种为先对一个 bank 的第一行的每一列完成访问,再去切换 bank 还是访问第一行,直到所有 bank 的第一行都访问完了,再切换到第二行访问,以此类推。

第一种为先对一个 bank 的第一行的每一列完成访问,再去切换到第二行每一列访问,直到第一个 bank 的都访问完了,再切换到第二个 bank 访问,以此类推。

两种访问方式的优缺点:

第一种方式可以对所有的bank同时给激活,在写入的时候就可以连续写入,这对于大量的数据的连续写入的情况比较占优,数据量至少大于等于SDRAM的一行。

第二种方式对于断续碎片式的数据写入比较占优。

这里选择第二种寻址方式。

第七页

System Clock:系统时钟即MIG核输入的时钟,有 single_ended、deferential 和 no buffer 三种, single_ended 为来源于引脚的单端时钟, deferential为差分时钟, no buffer 为来源于 FPGA 内部的时钟。这里选择 single_ended。

:差分时钟只有在输入和输出才会有这个概念,在芯片内部的时钟都是单端时钟。

Reference Clock:参考时钟有四种, 其中三种也为 Single-Ended、 Deferential 和 No Buffer, 另外一种为 Use System Clock,只有在 System Clock 时钟频率为 199MHZ~201MHz 时, 参考时钟才存在 Use System Clock选项。由于本实验的System Clock为200MHz,所以直接选用 Use System Clock。

System Reset Polarity:复位有效电平选择。选择“ACTIVE LOW”低电平有效。

Debug Signals Control:该选项用于控制 MIG IP 核是否把一些调试信号引出来,它会自动添加到 ILA,这些信号包括一些 DDR3 芯片的校准状态信息。选择 “OFF”,不需要让 IP 核生产各种调试信号。

System Reset Polarity:系统复位极性,这里默认为低有效。

Debug Signals for Memory Controller:选择此选项启用校准状态和用户端口信号端口映射到 example_top 模块中的 ILA 和 VIO。这有助于使用 Vivado Design Suite 调试监控用户界面端口上的流量特征。取消选择 Debug Signals Control 选项会保留调试信号在 example_top 模块中未连接,并且不生成任何 ILA/VIO 模块 IP 目录。此外,调试端口始终禁用功能模拟。这里选择不使用OFF。

Sample Data Depth:采样数据深度。因为不使用Debug,所有这里默认不可选。

Internal Vref Selection:内部 VREF 可用于数据组字节,以允许使用 VREF 引脚用于普通 I/O 使用。内部VREF仅应用于数据 800 MB/s 或以下的速率。这里不使用。

IO Power Reduction:此选项通过禁用 DQ 来降低平均 I/O 功率和 DQS IBUF 会在控制器处于空闲状态时自动执行。默认选择ON。

XADC Instantiation:启用后,此选项指示 MIG 内核实例化XADC 和温度监控器功能的温度轮询电路(见温度监视器)。如果已使用 XADC,则可以禁用此选项设计中的其他地方。在这种情况下,设备温度必须定期采样并驱动到存储器接口顶层的 device_temp_i 总线上用户设计模块。如果 device_temp_i 信号未连接,则 XADC被实例化。否则 XADC 不会被实例化。默认选择 enable。

第八页

Internal Termination for High Range Banks

Internal Termination Impedance:内部终止选项可以是设置为 40、50 或 60Ω 或禁用。此选择仅适用于高性能Bank,默认选择50Ω。

第九页

选择固定引脚,直接读出引脚绑定文件。

第十页

Pin Selection

点击read XDC/UCF文件,然后点击Validate->ok即可。

第十一页

System Signals Selection

sys_clk:这是内存接口的系统时钟输入,通常是连接到外部时钟源。单个输入或差分可以根据“ FPGA选项”页面中的系统时钟选择。sys_clk 输入必须与内存相同接口。如果此引脚与内存接口相同的 Bank 连接,则 MIG 工具选择与接口兼容的 I/O 标准,例如 DIFF_SSTL15 或 SSTL15。如果 sys_clk 未连接在内存接口 Bank 中,则 MIG 工具选择适当的标准,例如 LVCMOS18 或 LVDS。这里保持默认。

clk_ref:这是 IDELAY 控件的参考频率输入。clk_ref 输入可以在内部生成或连接到外部源。I/O标准以与 sys_clk 相似的方式选择。

sys_rst:这是可以在内部生成的异步系统复位输入或从引脚驱动。 MIG 工具为输入选择合适的 I/O 标准例如分别用于 HP 和 HR 组的 LVCMOS18 和 LVCMOS25。默认sys_rst 引脚的极性为低电平有效。

init_calib_complete:此输出表明内存初始化和校准完成并且接口可以使用。这 init_calib_complete 信号通常只在内部使用,但可以带如果需要,输出到引脚。

tg_compare_error:数据比较错误指示信号。

以上参数设定保持默认。

第十二页

Summary

MIG配置的汇总页。

第十三页

Simulation Options

选择 accept 点击 next。

随后一直点击next最后generate即完成 MIG IP 核的配置。


汇总篇

本系列为 DDR3 控制器设计总结,此系列包含 DDR3 控制器相关设计:认识 MIG、初始化、读写操作、FIFO 接口等。通过此系列的学习可以加深对 DDR3 读写时序的理解以及 FIFO 接口设计等,附上汇总博客直达链接。

【DDR3 控制器设计】系列博客汇总篇(附直达链接)

【DDR3 控制器设计】(1)MIG IP 核的详解与配置相关推荐

  1. ise的时钟ip核_Vivado CIC IP核滤波器详解(一)

    引言:从本文开始,我们详细介绍Xilinx CIC IP核滤波器相关知识,包括CIC IP核提供的特性.IP核接口描述以及IP核设计指导等相关内容. 1.概述 级联积分器梳状(CIC)滤波器,也称为H ...

  2. 最强 OSERDES IP核使用详解;FPGA 结构分析 —— IO 并串转换资源 OSERDES

    先抛出几个问题: 1.什么是 OSERDES? OSERDES 的作用是什么?使用场景? 2.OSERDES 结构是什么样?都有哪些端口?端口属性都是什么? 3.OSERDES 参数属性说明? 4.O ...

  3. 基于Vivado MIG IP核的DDR3读写实验(top_rom_ddr/ddr_top)

    一.前言 关于Vivado MIG IP核详细配置可以参考我之前的文章:基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL) 关于MIG IP核的用户端的接口时序可以参考这篇文 ...

  4. Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序

    干货来了,用DDR搬砖,只需要会用IP就好,Xilinx官方YYDS! ---------------------------------------------------------------- ...

  5. vfifo控制mig_基于MIG IP核的DDR3控制器(一)

    最近学习了DDR3控制器的使用,也用着DDR完成了一些简单工作,想着以后一段可能只用封装过后的IP核,可能会忘记DDR3控制器的一些内容,想着把这个DDR控制器的编写过程记录下来,便于我自己以后查看吧 ...

  6. 基于Vivado MIG IP核的DDR3控制器(DDR3_CONTROL)

    一.前言 由于DDR3的控制时序相当复杂,为了方便用户开发DDR3的读写应用程序,Xilinx官方就提供了一个MIG(Memory Interface Generator) IP核,它可以为用户生成一 ...

  7. XIlinx MIG 控制DDR3 SO-DIMM内存条(二):MIG IP核学习

    目录 1 简介 2 IP核自定义 2.1 设置IP核参数 2.1.1 Pin Compatible FPGAs 2.1.2 Memory Selection 2.1.3 Controller Opti ...

  8. XIlinx MIG 控制DDR3 SO-DIMM内存条(三):MIG IP核仿真与调试过程

    之前写这个系列的时候忘记上传了,刚好五一补一下. 文章目录 1 MIG IP核的接口 1.1 AXI4 slave 接口 1.2 Upsizing 1.3 User Interface 1.3.1 C ...

  9. 快速上手Xilinx DDR3 IP核(2)----MIG IP核的官方例程与读写测试模块(Native接口)

    写在前面 接上一篇文章(配置MIG IP过程): 快速上手Xilinx DDR3 IP核(1)----MIG IP核的介绍及配置(Native接口) DDR3系列文章: 快速上手Xilinx DDR3 ...

最新文章

  1. 编译Android源码前的一个步骤
  2. 二分图的最大匹配 匈牙利算法
  3. html5中表格如何等分,纯css3饼图五等分
  4. java系统管理员停用,为什么犯错让我成为一个更好的系统管理员
  5. Ubuntu 的 bash和dash的区别
  6. RaspberryPI 3b 技术总结(包括Linux)
  7. 编写c#程序,修改文件后缀名
  8. 深度理解 RGMII (包含Linux和realtek)
  9. 笔记本win10相机打不开 无法启动 显示灰色相机 怎么办
  10. SEO引擎首页优化 - 2016百度搜索引擎算法
  11. 现代内衣百年:性感无罪,无尺码也不是终局
  12. CRT和LCD显示器的区别
  13. 【C语言】之实现大小写字母转换
  14. 老旧小区改造浪潮下的智慧安防市场发展机遇
  15. 家庭局域网网站服务器,1000元打造家庭局域网
  16. html绝对定位自适应不同分辨率,(css)绝对定位如何在不同分辨率下的电脑正常显示位置?...
  17. Android Volley核心源码解析
  18. 如何用ffmpeg截取视频片段截取时间不准确的坑
  19. dbus的代码范例 linux_Dbus简介与简单的收发示例程序
  20. 5G Massive MIMO的概念和优点总结

热门文章

  1. 新华书店吃起网售饭 与当当、卓越成“货比三家”
  2. osgEarth的Rex引擎原理分析(一二四)osgEarth着色器文件与场景树节点的对应关系
  3. cnn起源_CNN初探
  4. Java爬虫-爬取四级词汇网站音频
  5. 海康终端服务器5012a,TS-5012-F终端服务器-HikvisionUSA解析.pdf
  6. Linux嵌入式驱动开发13——ioctl接口(gpio控制使用)
  7. Java构造之builder模式
  8. 隐私计算开源平台Rosetta部署分享
  9. CCNP350-401学习笔记(201-250题)
  10. 20131007-STM8L101F3P6关于硬件IIC写时序和勘误部分的翻译