4) sim/sim_tb_top.v: 在实例化ddr3_model模块部分,增加了实例化参数的赋值,参照“仿

真文件改动”目录下的sim_tb_top_modified_part.v的内容作对应的修改即可。

说明:example_top.v和sim_tb_top.v中,涉及到MIG核的所有配置参数,因此在源文件中

修改对应的部分;ddr3_model.v以及ddr3_model_parameters.vh可直接覆盖原来的文件。

图1 MIG核目录(左)和example_design目录(右)

3.ddr3_model.v初始化

3.1 数据组织方式

1) 单个ddr3_model.v的情况

MIG核的数据访存位宽不超过64bits时,只会实例化一个ddr3_model模块,从初始化数据文件中读取数据完成初始化,ddr3中的数据组织方式与初始化数据文件中的内容是一致的; 2) 多个ddr3_model.v的情况

MIG核的数据访存位宽超过64bits时,会实例化多个ddr3_model模块。如访存位宽为512bits时,会实例化8个ddr3_model模块。需要注意的是,ddr3中的访存数据并不是多个初始化数据文件的简单拼接。一个简单的例子如下:(从0到31)

ddr3访存数据:0x0000000100020003000400050006000700080009000a…001c001d001e001f 初始化文件应为: 文件名 Mem7 Mem6 Mem5 Mem4 Mem3 Mem2 Mem1 Mem0 说明:初始化数据可以参照memory_init_example.m程序。在该示例中,初始化地址采用了25位二进制,位宽取决于ddr3_model.v中MAX_BITS=(BA_BITS+ROW_BITS+COL_BITS-BL_BITS)的具体值;另,在仿真过程中,ddr3_model模块中memory的前五行数据会被写入数据,因此初始化数据时前八行填充无效数据,避免有效数据被覆盖的情况;初始化数据的格式可为浮点或定点,示例中展示了写入double类型数据的过程。

ddr3_model编号 文件内容 ddr3_model7 0x0000000000000000 64bits ddr3_model6 ddr3_model5 ddr3_model4 ddr3_model3 ddr3_model2 ddr3_model1 ddr3_model0 0x0004080c1014181c 0x0000000000000000 0x0105090d1115191d 0x0000000000000000 0x02060a0e12161a1e 0x0000000000000000 0x03070b0f13171b1f 3.2 字节地址& burst地址& memory地址

字节地址:以字节为计量单位,与实际的物理地址对应。如一个容量为2GB的SODIMM条,其地址空间为0x0000_0000 – 0x7fff_ffff,这里的地址空间对应的就是字节地址;

Burst地址:以Burst为计量单位,在DDR3中,一个burst的长度为64bits,即8个字节。MIG核用户接口中的地址是以Burst地址作为计量单位的。访存数据位宽为64bits时,连续访存时地址每次增加1;访存数据位宽为512bits时,连续访存地址每次增加8。如果地址没有对齐,读出的数据会发生错乱。 Memory地址:memory地址以行作为计量单位,一行对应着初始化数据文件中的一行数据,用在初始化地址文件中。ddr3_model.v中,addr = {bank, row, col} / BL_MAX, 其中{bank, row, col}对应的是burst地址,访存数据位宽为64bits时,BL_MAX=1;访存数据位宽为512bits时,BL_MAX=8。

在初始化数据时,一般会根据所选的SODIMM条的容量,进行数据的地址划分。如访存数据位宽为512bits时的一个数据划分的例子: 数据 无效 A B 起始地址 终止地址 起始地址 终止地址 起始地址 终止地址 字节地址(Dec) 0 511 512 6655 12800 25599 Burst地址(Dec) 0 56 64 824 1600 3192 Memory地址(Dec) 0 7 8 103 200 399 4. PHY_DDR.v接口说明

出于两个方面的考虑,PHY_DDR模块在MIG核的应用接口上做了一层封装:一是时钟分离,PHY_DDR模块中的异步时钟FIFO实现了将用户工作时钟与ddr3工作时钟分隔开;二是简化接口,并支持批量的数据访存。(MIG核访存位宽为512bits,其它位宽的需求可参照修改)。

MIGclk_ddrclk_ddrapp_rdyapp_enapp_cmd[2:0]app_addr[31:0]app_rd_data_validapp_rd_data[511:0]app_rd_data_endapp_wdf_rdyapp_wdf_wrenapp_wdf_data[511:0]app_wdf_mask[63:0]app_wdf_endfifo_cmdDDR3内部逻辑DDR3应用接口fifo_rdfusr_clkpe_en pe_cmdpe_addr[31:0]pe_sizepe_rdy_recvpe_wdf_datape_wdf_validpe_rdype_rd_data_validpe_rd_datafifo_wdf

图2 PHY_DDR接口

PHY_DDR模块的端口说明:

? usr_clk: 用户逻辑工作时钟;

? pe_en: 命令使能,用户逻辑提交读或写命令时须将该使能信号置高; ? pe_cmd: 命令内容,沿用了MIG核中的规定,3’b000表示写数据,3’b001表示读数据; ? pe_addr: 读写命令的起始地址,并且是burst地址;

? pe_size: 连续读写的数据个数,一个数据的大小为512bits

? pe_rdy_recv: 用户逻辑准备好了接收读取的数据,只有在该信号拉高的情况下,

PHY_DDR才会向用户逻辑发送读回的数据及对应的有效信号;该信号实现了反压机制,避免出现用户逻辑处理速度慢造成的数据覆盖或者溢出的情况。 ? pe_wdf_data: 用户逻辑提交的写回DDR3的数据;

? pe_wdf_valid: : 用户逻辑提交的写回DDR3的数据的有效标志,拉高表示数据有效; ? pe_rdy: 该信号表示PHY_DDR接口准备好了接收来自用户逻辑提交的命令或者写回数

据,对应的是fifo_cmd和fifo_wdf未满的情况。只有该信号拉高时,用户逻辑才允许提交访存命令或者写回数据;

? pe_rd_data_valid: 从DDR3读回的数据的有效标志,拉高表示该数据有效; ? pe_rd_data: 从DDR3读回的数据。

图3 DDR3访存性能曲线

DDR3在做连续的地址访存时能够更好的发挥带宽性能。图3展示利用该PHY_DDR接口做连续地址访存时的性能曲线,当连续读取32个数据时,平均带宽为6.11GB/s,带宽利用率为41%;连续读取256个数据时,平均带宽达到11.96GB/s,带宽利用率为80%。在实际的应用中,要结合访存特性和带宽需求,选择合适的pe_size.

5. 仿真

sim_tb_top.v为顶层文件,可利用Vivado自带的Simulator进行仿真或者链接到modelsim进行仿真。仿真的过程中,会有较长的初始化时间(50-60us),init_calib_complete置高表示初始化工作完成,仿真时该信号可用作用户工作逻辑的启动信号。

vivado生成mig_Vivado下MIG核仿真指导手册 -相关推荐

  1. vivado生成mig_Vivado 2015.1 MIG生成DDR4控制器例化问题求助!(急)

    回复 1# 固执的寻觅 那是因为DDR中RAM需要的bmm elf文件没有吃进去,你可以参考example_top implement之后的impl_1目录下的脚本example_top.tcl.例如 ...

  2. DDR2 MIG核与DDR3 MIG核使用区别

    本文中所讲DDR2 MIG核是V5芯片的MIG核,DDR3 MIG核是K7芯片的MIG核. 一.建核区别 DDR2 MIg核的建立过程与DDR3 Mig核的建立过程基本内容都是一致.具体建核教程在相应 ...

  3. vivado生成mig_ddr3调试经验分享(一)——modelsim实现对vivado中的MIG ddr3的仿真

    Vivado中的MIG已经集成了modelsim仿真环境,是不是所有IP 都有这个福利呢,不知道哦,没空去验证. 第一步:使用vivado中的MIG IP生成一堆东西 ,这个过程自己百度.或者是ug5 ...

  4. Vivado 下 IP核 之ROM 读写

    目录 Vivado 下 IP核 之ROM 读写 1.实验简介 2.ROM IP 核简介 3.ROM IP 核配置 3.1.创建 ROM 初始化文件 3.2.单端口 ROM 的配置 加载数据文件,将 . ...

  5. Vivado生成及仿真网表文件

    Vivado生成及仿真网表文件 1- 将子模块设置为顶层模块 - 右键Set as top 2-将该顶层模块设置综合属性 Options中将-faltten_hierarchy设置为full属性(意思 ...

  6. 【高速接口-RapidIO】6、Xilinx RapidIO核仿真与包时序分析

    期待大家的一键三连,爱你们!!! 总目录:总目录(经验分享) 献上链接: [高速接口-RapidIO]2.RapidIO串行物理层的包与控制符号 [高速接口-RapidIO]3.RapidIO串行物理 ...

  7. Vivado中的FFT IP核使用(含代码)

    本文介绍了Vidado中FFT IP核的使用,具体内容为:调用IP核>>配置界面介绍>>IP核端口介绍>>MATLAB生成测试数据>>测试verilog ...

  8. 黑金核心板32bitDDR3 MIG核UI接口仿真模型搭建

    图2-4-1为黑金开发板上两片DDR3原理图. 1. 搭建仿真模型时需要例化两个ddr3_model,不然仿真时init_calib_complete信号会一直低. 2.还要考虑信号的延时,需要例化W ...

  9. FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇尾

    FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇一 FPGA 学习笔记:Vivado 2020.2 MicroBlaze MIG 测试 DDR3 篇二 ...

最新文章

  1. 免安装的mysql删除_MySQL5.7 免安装版配置及删除图文教程
  2. ASP.NET简化编辑界面 V3
  3. Web项目开发性能优化解决方案
  4. wxWidgets:wxMemoryFSHandler类用法
  5. Sprint2团队贡献分
  6. php5..6中文帮助,6.5. IDE integration
  7. github设置仓库可见性 私人仓库设置他人协作/可见
  8. com.autonavi.amap.mapcore.MapCore.nativeNewInstance:(Ljava/lang/String;Ljava/lang/String;)J
  9. 软件工程第四章——软件设计(仅记录我所认为重要的知识点)
  10. 分布式系统与海量数据处理
  11. 前端使用(久派)高拍仪进行拍照上传
  12. JavaScript (05)-大话JS,屌丝逆袭(四)
  13. arduino uno r3单片机封装图_第十二节 电路识图 从Arduino开始讲起
  14. 【路由协议】和【应用协议】
  15. 浅析部分物化以及冰山立方体的计算方法Star-Cubing
  16. dseo13b打开自动消失_刚安装的WIN764位系统
  17. 【2019-CVPR-3D人体姿态估计】Fast and Robust Multi-Person 3D Pose Estimation from Multiple Views
  18. 初识Scrapy之再续火影情缘
  19. python基于PHP+MySQL的健身房管理系统
  20. 数字赋能 | 陕建数科与益企联科技签署合作伙伴协议

热门文章

  1. 平衡二叉树节点跟高度的关系
  2. 计算机系高考激励的句子,高考激励句子
  3. hmi触摸屏将数据存入sd卡_如何将HMI数据记录保存至单个文件?
  4. 《辛雷学习方法》读书笔记——第一章 总论
  5. NXP(Freescale) QorIQ T2080 IFC
  6. 基于ARM11+Linux的无线视频监控系统
  7. 最新最全论文合集——AI在安全领域的应用
  8. 疾病研究:晚上再也不吃沙县...这是不可能滴
  9. Heavy Weapon Deluxe【基址+偏移】 popcap的小游戏
  10. oracle11g下载地址,不需登录,无积分