基于MIG控制器的DDR3读写控制详解

目的:详细介绍FPGA中基于MIG IP核控制的DDR3详细控制及内部逻辑
平台:AX7350-Xilinx
软件:Vivado 2017.4

1.MIG IP 核介绍
1.1 IP核架构
由下图我们可以看到MIG这个IP核的架构如下,直观可以看出,MIG主要有面向用户端口和面向DDR端口,用户通过使用MIG能够通过用户端口的信号,来完成对DDR SDRAM的访问,达到简化操作的目的。

1.2 IP核用户端控制命令
首先我们需要了解与用户命令相关的信号,并且了解命令能够被正确接收的时序。在下面的接口列表中信号的I/O方向均是相对MIG IP核而言的。

1.3 仲裁模块
本模块的目的是为了来避免读写冲突的,在ddr进行写操作的同时,也有可能有读操作需要处理,这时候就会发生读写冲突,为了避免读写操作同时发生创建一个仲裁模块,模块的结构和信号列表如下:

这里简单介绍以下本模块的工作方式,本模块的状态跳转入下图所示,在仲裁状态ARBIT下若接收到读请求,则进入读状态,若接收到写请求,则进入写状态。若读写请求同时出现则优先响应写请求进入写状态,当在读写状态中接收到读写结束信号wr_done或者rd_done时,状态将回到仲裁状态。

1.4 时钟带宽

在使用MIG IP控制DDR3读写数据的时候总会遇到关于MIG控制器的时钟问题,几个时钟总是搞得人晕头转向,为了进一步说明清楚其之间的相互关系,绘制了上图所示的时钟模块图(其中各时钟具体参数是根据黑金AX7350(XILINX 7035)系列FPGA开发板配置,不同的硬件平台其具体参数不同,但是时钟结构类似)。

如上图所示,MIG控制器一共可以分为三个部分:第一个是USER模块,在这里可以理解为top模块;第二个是MIG控制器,由于DDR3控制过程过去繁琐,xilinx提供了一个可以读写DDR3的核,这个核也就是MIG控制器;第三个模块也就是DDR3物理存储芯片。

首先DDR3作为物理存储介质,一定是需要时钟的,所以MIG给了DDR3一个时钟,也就是图中的clk_ddr3。那么MIG也不可能平白无故的能产生时钟,所以它也需要一个外部输入时钟,也就是图中的clk_input,是由用户端输送给MIG控制器内部的时钟分频模块。MIG内部的时钟模块将输入的时钟分成两路输出,一路clk_ddr3接到物理DDR3芯片中,另一路clk_user输送到user模块中的DDR_CTRL中。一般情况下,clk_ddr3:clk_user=4:1,如图中所示,clk_ddr3取值为800M,那么clk_user的值为200M。

关于DDR3的带宽计算
如上图时钟模块可知,clk_ddr3=800M,DDR3的物理接口为32bit,按照4:1的比例计算的话,用户端的接口宽度2432=256bit,其中2指的是时钟上下沿双沿读取数据,4指的是4:1的比例。
所以:
DDR3带宽=1600M*32bit

仿真
每次涉及到仿真官方提供的IP时,都要诟病一下Altera做的多难用,Xilinx做的多人性化。Xilinx针对IP的仿真,只需要在生成IP后,点击个Open Example Design即可,而脑残的Altera非要给你整得特别复杂,非得你运行个tcl脚本(这还算简单的呢),才能启动仿真,不能和Xilinx学学吗?
对于ZYNQ 7035的MIG IP核,启动仿真后,初始化完成大约在55us左右,要耐心等待啊,初始化完成是第一步,初始化完成了,才能有后续,不然的话,老老实实先让初始化拉高再说吧。

基于MIG控制器的DDR3读写控制详解相关推荐

  1. linux下eeprom读写测试,本科毕业设计__基于linux的eeprom的读写控制.doc

    毕业设计[论文] 题目:基于linux的EEPROM的读写控制 毕业论文(设计)原创性声明 本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果.据我所知,除文中已经注明引用的 ...

  2. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    标签:读写分离 页面缓存 URL重写 Nginx 反向代理 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.bl ...

  3. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解【转载】

    本文只为备份,以防失效.原文请看https://blog.51cto.com/freeloda/1288553 补充说明:部分图片为测试图片,未完全复制,参考文字描述即可. Nginx 反向代理.负载 ...

  4. Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  5. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解(1)

    大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...

  6. 奇迹控制器证实配置登录器详解

    奇迹控制器证实配置登录器详解 奇迹控制器证实配置登录器详解 程序名称:MuDataService.exe游戏控制平台奇迹 程序功能: 一:启动项目 1.可自定义添加更改需启动的奇迹各项程序,实现一键启 ...

  7. 矢量控制与V/F控制详解

    原文:http://m.elecfans.com/article/714518.html 一.矢量控制 1.矢量控制简介 矢量控制是一种电机的磁场定向控制方法:以异步电动机的矢量控制为例:它首先通过电 ...

  8. 三相异步电动机空间矢量控制详解

    [转载]三相异步电动机空间矢量控制详解 (2013-10-27 17:49:09) 转载▼ 标签: 转载   原文地址:三相异步电动机空间矢量控制详解作者:温暖小屋 在工业控制领域,电动机是一个重要的 ...

  9. mysql 点赞数据库设计_基于redis实现的点赞功能设计思路详解

    点赞其实是一个很有意思的功能.基本的设计思路有大致两种, 一种自然是用mysql等 数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysq ...

最新文章

  1. 所有库在门不显示封装_奈雪和石库门在一起,太上头
  2. ACM OnlineJudge网站汇总
  3. 第二课计算机ppt,第二课计算机系统.ppt
  4. 气象科学与计算机应用论文,面向气象数据的智能分析方法分析-计算机应用技术专业毕业论文.docx...
  5. JSP访问数据库,Session对象和九大内置对象
  6. libsvm数据缩放方法
  7. 特斯拉:部分帖文包含不实信息 将定期分享真实情况
  8. 深度神经网络:特点、问题及解决
  9. OMRON欧姆龙Sysmac Studio软件--ESI文件的安装
  10. 世界首个体细胞克隆猴在中国诞生;马云在达沃斯变魔术;阿里通信回应工信部约谈丨价值早报
  11. 删除IE浏览器JS缓存
  12. vs2010专业板产品密钥
  13. C站能力认证(C4前端基础认证) //任务二:根据浮动布局以及定位布局的特性,实现构建下列(截图)中的页面
  14. ajax 传参json字符串
  15. 单反相机的传奇—佳能单反50年辉煌之路(连载十八)
  16. 一款手机电脑都能用的进销存财务软件
  17. 【ERROR】java java.lang.NoClassDefFoundError 的解决办法(全)
  18. 同步 fork(Syncing a fork)
  19. 第十一章 一元线性回归
  20. 遥感影像匀色镶嵌分幅处理

热门文章

  1. 代码艺术~优雅的编程字体及对字体的感觉
  2. 蚂蚁变大象:浅谈常规网站是如何从小变大的(转)
  3. [转载] C#面向对象设计模式纵横谈——10. Decorator装饰模式
  4. VForum 2008系列之三:分论坛视频-实现自动化的虚拟数据中心
  5. python jupyter 选择按钮,使用按钮选择数据
  6. 树莓派使用python+继电器控制220V灯泡
  7. 如何让IDEA启动多个SpringBoot实例
  8. go map的定义及使用
  9. 【收藏】最详细的cmder配置
  10. Geospark加载PostgreSQL数据库