前言

当需要大容量数据存储及处理的时候,FPGA内部自带的存储资源是远远不够的,所以问题来了,怎么使用外带的DDR3?

首要问题在于DDR3是什么?有没有协议?当然只是需要用Xilinx MIG IP去配置使用的话,DDR3内部信号变化关系不需要太明了,当然明了会更佳,有时间可以看看底层内部架构,只是使用MIG IP去配置DDR3的话不需要像写一个DDR3控制器那么明白。

所需要预先储备的知识:

(1)阅读JEDEC  DDR3 SDRAM STANDARD (标准协议)(有空的童鞋可以阅读);

(2)阅读ug586_7Series_MIS.pdf (XIlinx MIG核配置文档)(必须的);

(3)百度文库中的高富帅教程,百度一下就可以知道(推荐阅读);

Xiinx MIG IP为开发者提供了用户接口,极大的降低了开发者控制DDR3的难度,提升开发效率(然并卵)。

///

1.看完上述文章后,你就想着怎么在vivado中生成MIG IP呢?

本次配置以NEXYS4开发板作为配置平台;Xilinx vivado 2016.1

NEXY4开发板上自带的DDR为DDR2 型号为MT47H64M16HR-25;

配置DDR3和DDR2基本上是类似的;

(1)打开IP配置界面,搜索MIG:

(2)配置,next:

(3)当然是创建新设计,例化IP的名字修改,由于已经生成好的,所以显示为灰色。

然后选择一个控制器。。。next:

(4)器件引脚适配性选择,目前不需要,next:

(5)选择DDR2类型,next:

(6)clock period表示的是MIG IP的工作时钟,而DDR是双倍率,则对外接口部分的接口速率为X2,不同的器件可选择的范围是不一致的,如果选择为400M,那么接口速率为800M。

PHY to controller clock ratio:工作时钟和用户接口部分的时钟比,本质体现为ui_clk时钟。可能2:1是不可选的,下图中的4:1就表示clock period :ui_clk = 4:1;

然后选择数据位宽,本次选择为16bit则每次打出的数据为16bit,突发8的话,则rd和wr的data宽度为16*8=128bit。

本DDR2有数据掩模,选上,虽然目前没用到,next:

(7)选择input clock period,这是什么意思呢,如果简单起见,选择为200M,后面会有惊喜,推荐200M。你可以使用晶振的时钟或者内部时钟,后面得相关配置才能用。

选择ODT,板子文档说是50ohms,则选择此项。然后是地址映射,选择bank+row+column的方式,next:

(8)系统时钟与参考时钟的极性选择,如果想用内部的时钟作为系统时钟和参考时钟,那么就选择no buffer选项,如果前面选择了200M系统时钟输入,那么参考时钟会多一个use system clock 的选项,也就是少给一个时钟,不然前面选择的不是200M时钟的话,参考时钟就会贴心的问你要200M时钟。想用PLL的输出作为system clk输入,那么选择no buffer项。参考时钟用use system clock。毕竟对于只有一个外部晶振的话,单独给mig ip就完犊子了,别的时钟不能再使用这个晶振时钟,为了多几个时钟使用,还是用PLL。况且有的板子晶振只有20M的话,你就没得选了,必须用PLL倍频灌入时钟。

debug信号不使用,内部参考引脚做普通输入脚使用,xdc啥的关掉。

(9)如果有DDR2的引脚分配的,就选择Fixed Pin Out,开发板之类的一般带,自己画的板子就得照着原理图一个个分了,可能会瞎眼。

(10)选择你的引脚约束文件,导入并检查合理性,通过则next:

然后一路next,就可以生成MIG IP了。

/

2.怎么用IP自带的仿真呢?

(1)现在我们就有了如下图所示的IP文件架构,右键IP选择打开IP example design,为了仿真使用。

在你的example设计中会有仿真顶层,在哪呢,我的在这,下面是ddr3举例:

E:\kingstacker\project_2018\date_7_23\dev\mig_7series_0_example\mig_7series_0_example.srcs\sim_1\imports\sim

这个目录下有什么文件呢:

ddr3_model.sv:DDR3的总线功能模型,相当于个ddr3芯片。

ddr3_model_parameters.vh:一堆模型的相关参数。

sim.do:modalism可用的do文件,不过不能直接使用得修改。

sim_tb_top.v:仿真顶层文件。

wiredly.v:仿真需要用的文件。

其他就没啥卵用了。

打开sim.do文件应该是下面这个样子,这放到modelsim仿真绝对是会出错的,所以需要修改相关路径。

设置一下相关v文件的绝对路径:

修正glbl.v文件的路径,我这里用ISE的glbl文件也没问题。然后修正wiredly.v、sim_tb_top.v、ddr3_model.sv路径。

修改仿真精度fs为ps,加快仿真速度。修改相关库挂载,根据编译的名字修改。

然后就可以切换到sim.do文件所在的路径,do sim.do即可。

3.MIG核顶层文件调用:

生成IP后,我们所关心的就是整个IP的TOP层,下图中为mig_7series_0.v。打开它就可以看到相关的信号了。

fpga挂一片ddr2_FPGA上外挂DDR2DDR3MIG IP的使用记录相关推荐

  1. fpga挂一片ddr2_FPGA的DDR2 SDRAM IP核的使用

    DDR2 SDRAM 作为高速大容量存储器件,非常普遍的应用在我们的工程中.在FPGA外挂DDR2 SDRAM,如果我们直接编写驱动逻辑,是非常麻烦而且耗时的事情,但是Altera在开发环境中给我们提 ...

  2. fpga挂一片ddr2_FPGA的外部存储器接口DDR2(7)_CYCLONE IV与DDR2相关的引脚

    ALTERA公司的CYCLONE V 已经发布,样片已经有了,接下来就会量产,明年就会出现基于CYCON V的开发板.自己关注这个芯片已经有些日子了,现在的资料虽然不是很多,但也正好提前了解一下这个芯 ...

  3. fpga挂一片ddr2_FPGA片外存储器之DDR2控制器2

    这次的主要内容是仿真. 我相信看我文章的人,都是第一次接手这一块,手上也都是别人做好的开发板.这种情况下,如果你用ip直接生成的例子去仿真如果没有成功的话.大概有这么几个原因: 1,仿真库,没有加全. ...

  4. fpga挂一片ddr2_FPGA控制DDR2 Verilog HDL程序代码

    //--------------------------------------------------------------------------- //--        文件名        ...

  5. EtherCAT 总线主站 FPGA 挂百兆网口串接伺服 ethercat 主站 FPGA verilog 代码 全部在 FPGA上实现,纯 Verilog 实现,无软核

    EtherCAT 总线 demo 板介绍 一.测试架构介绍 总线部分包括 EtherCAT 协议.Canopen 协议.1588 同步协议,全部在 FPGA上实现,纯 Verilog 实现,无软核,时 ...

  6. emc文件存储服务器,emc存储怎么挂在linux服务器上

    emc存储怎么挂在linux服务器上 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...

  7. 群晖nas 文件服务器,群晖nas挂到云服务器上

    群晖nas挂到云服务器上 内容精选 换一换 在公有云上部署SAP HANA所需要的云服务如下. 无法直接从云备份控制台查看备份中的数据,您可以通过以下几种方式进行查看:云服务器备份使用云服务器备份创建 ...

  8. 千牛文件已上传服务器,千牛怎样挂在云服务器上

    千牛怎样挂在云服务器上 内容精选 换一换 本节为您介绍如何通过控制台提供的远程登录功能(即VNC方式)登录到弹性云服务器上.如果您的弹性云服务器是采用密钥方式鉴权,请在登录前先使用密钥文件解析登录密码 ...

  9. 千牛传文件在服务器哪里,千牛怎样挂在云服务器上

    千牛怎样挂在云服务器上 内容精选 换一换 云耀云服务器(Halo Elastic Cloud Server,HECS)是可以快速搭建简单应用的新一代云服务器,具备独立.完整的操作系统和网络功能.提供快 ...

最新文章

  1. [Python设计模式] 第21章 计划生育——单例模式
  2. 《Arduino实战》——第1章 你好Arduino
  3. 谷歌发布:2021年度最受欢迎的开源Chrome插件!
  4. jquery 沟选项获取点击添加和删除的数据
  5. Spring中Bean的后置处理器
  6. GitHub#java#:设计模式
  7. 解决IntelliJ IDEA在笔记本屏幕中部分界面显示不全被遮挡的问题
  8. 同时安装 Python 2 和 Python 3环境下 pip 的使用
  9. 小姐姐把信息撤了后如何查看?Python百行代码分秒恢复!
  10. IoT 物联网卡行业骗局大揭秘
  11. Greenplum 安装部署 单机版安装(Linux)
  12. 天泉证道四句教与价值观
  13. oracle清除temp表空间,Temp表空间占用长时间不释放,是谁惹的祸
  14. vps和云主机哪个好
  15. 图像和像素(Images and Pixels)
  16. 古代情感诗词top100
  17. C++11\14\17\20 新特性整理
  18. Android 触摸事件机制(三) View中触摸事件详解
  19. Provides transitive vulnerable dependency org.yaml:snakeyaml:1.33
  20. 带负荷测试要求二次最小电流_带负荷测试的判别

热门文章

  1. 年度Java技术盘点,懂这些技术的程序员2019年薪资翻倍!
  2. 峰哥教你如何在B站学大数据(建议收藏)
  3. C++设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,根据坐标能计算矩形的面积。
  4. 中国式智慧:古人为何乐意露破绽给皇帝?
  5. @Configuration(proxyBeanMethods = false) 设置这个为false有啥用
  6. 小程序学习:电影周周看
  7. Android 入门第二讲03-约束布局ConstraintLayout(可视化介绍,Chains链,MATCH_CONSTRAIN,百分比布局,圆形定位,Guideline,Barrier)
  8. “希希敬敬对”团队作业——敏捷冲刺6
  9. discuzx update sitekey.php,Discuz如何清除应用中心密码附加工具
  10. 智能优化算法之松鼠算法(Squirrel search algorithm)