—— 远航路上ing 整理于 博客园。转载请标明出处。

在上节建立完工程之后,要想明确DDR IP的使用细节,最好是做仿真。然后参考仿真来控制IP 核。

仿真的建立:

1、在IP核内的以下路径找到以下三个文件加入并设置为仅仅仿真。这三个文件的作用是作为外部监视和仿真头文件(test_mem_ctrl).

2、在IP核内部的以下路径内将以下两个文件加入到工程里,设置为仅仅仿真。这两个文件的作用是模拟外部DDR器件,并存储数据。

3、加入之后,基本就是下图这样的了。

4、然后建立仿真工程。并调用Modelsim仿真.在Modelsim里第一次自动运行仿真的时候,会出现下面的错误。双击错误的信息,会弹出

错误文件的错误提示。基本都是找不到参数文件,只要把参数文件copy到testbench的工程里就可以了。

5、在IP核的以下路径内找到ddr3_sdram_mem_params.v文件,copy到testbench的工程下。

还有就是以下三个文件都要copy到testbench的工程目录下。

还有个是模拟外部DDR的参数,否则ddr3.v和ddr3_dimm_16.v就会出现错误。

接着打开modelsim内的ddr3_dimm_16.v文件,在顶部加入下面两个参数声明(原来是没有这连个参数声明的)。

最好在DIamond的软件的工程内也把这个文件修改了,这样下次再使用这些文件建立新的仿真的时候就不需要加入这个参数声明了。

在没有加入“tb_config_params.v”的声明的时候,ddr3_dimm_16.v文件会出现下面的报错。这是因为蓝色方框内的参数都在“tb_config_params.v

内声明的。

最后,可以再次在MODELSIM中编译一下全部文件,如果没有错误,则就出现下面的提示,如果有错误,则需再次修改。

在顶层文件test_mem_ctrl.v文件的底部还包括了下面两个我们已经加入的文件。这两个是任务声明文件。

包括了仿真步骤和仿真任务的产生。

testecase里面是仿真的步骤:

1)、先是IP核的设置。可以看到都是用了任务名。比如:reset、init、self_ref等等。而这些任务的具体操作步骤都可以在cmd_gen.v的文件内找到。

2)、设置MR0(只是设置了MR0),然后就会读写数据。具体参数含义还是要看cmd_gen.v文件。

3)、改变突发长度只需要设置MR0即可。

4)、设置为OTF模式,突发长度由otf_bit参数决定。

5)、设置为OTF模式并且burst_cnt可以改变。

6、运行仿真,并且将仿真进行到自动停止。观察仿真波形。

1)、初始化完成

2)、设置IP核。

3)当cmd==2 的时候开始写数据。cmd_rdy = 1,则命令被接受。

写入的第一个数据'Hd82d5c69ea418124,然后在数据线上四位一个数据,从低位向高位写起。'h8124,'hea41,'h5c69,'hd82d.依次被写入到DDR芯片内的

第一个地址、第二个地址、、、等。

burst_length 为4, burst_count 为15的情况。

2)、读取数据的操作的情况。

3)、读取数据操作和写入数据操作的区分可以是:em_ddr_dqs信号。在写操作时,em_ddr_dqs先变为11,再变为00,当再次变为11时就开始了

写入第一个数据。当读取操作时,em_ddr_dqs先是变为00,然后再保持一个时钟,然后变为11,开始读取第一个数据。所以根据这可以判断出下图

左边是读取操作,右边是写入操作。

4)、下图是burst_length = 4,brust_count = 15的情况下读数据操作的波形图。

值得注意的是:;::DDR IP核可以记忆若干读写操作,然后按顺序执行读写操作而不会混乱,这样可以大大节约DDR的操作时间。在进行读写操作的时候依然可以处理ddr的命令。

Lattice 的 DDR IP核使用调试笔记之DDR 的 仿真的更多相关文章

  1. Lattice 的 DDR IP核使用调试笔记之工程建立

    DDR3的IP核的使用相当重要,尤其是对视频处理方面. 下面接收DDR3 的IP 核的生成步骤. 1. 选择DDR IP核的生成路径.名字以及哪种语言之后就可以设置DDR IP 的参数了. 2.选择存 ...

  2. Lattice 的 Framebuffer IP核使用调试笔记之IP核生成与参数设置

    本文由远航路上ing 原创,转载请标明出处. 这节笔记记录IP核的生成以及参数设置. 先再IP库里下载安装Framebuffer 的ipcore 并安装完毕. 一.IP核的生成: 1.先点击IP核则右 ...

  3. Lattice 的 Framebuffer IP核使用调试笔记之datasheet笔记

    本文由远航路上ing 原创,转载请标明出处. 学习使用以及调试Framebuffer IP 核已经有一段时间了,调试的时候总想记录些东西,可是忙的时候就没有时间来写,只有先找个地方记录下,以后再总结. ...

  4. Lattice FPGA 板子 调试笔记

    最近在调试LATTICE  FPGA 做的视频板子,颇不顺利,所以记录下来作为以后的参考: 1.FPGA的IO口不是所有的都是双向的,有些有特殊作用的是单向的. 在查阅 LatticeECP3-17E ...

  5. IP核——PLL

    一.Quartus II创建PLL 1.打开Quartus ii,点击Tools---MegaWizard Plug-In Manager 2.弹出创建页面,选择Creat a new custom ...

  6. 转载:使用Xilinx IP核进行PCIE开发学习笔记(一)简介篇

    https://zhuanlan.zhihu.com/p/32786076 最近接触到一个项目,需要使用PCIE协议,项目要求完成一个pcie板卡,最终可以通过电脑进行通信,完成电脑发送的指令.这当中 ...

  7. FPGA VGA+PLL+IP核笔记

    1.实现了预定功能!整个工程,没有使用例程的25MHZ,全部统一使用50MHZ.2.分辨率使用了800*600@72HZ.3.实现了只显示白色部分,黑色部分RGB == 0,要显示背景色.VGA图形基 ...

  8. 自定义AXI总线形式SPI接口IP核,点亮OLED

    一.前言 最近花费很多精力在算法仿真和实现上,外设接口的调试略有生疏.本文以FPGA控制OLED中的SPI接口为例,重新夯实下基础.重点内容为SPI时序的RTL设计以及AXI-Lite总线分析.当然做 ...

  9. Mdoelsim10.4怎么脚本单独仿真ISE14.7 IP核

    软件版本: Modelsim10.4SE ISE14.7 仿真IP:时钟管理IP(clock wizard)   流程: 1.对于Modelsim10.4SE,并不自带Xilinx家的仿真库,因此首先 ...

随机推荐

  1. C++输入输出流

    一.C++输入输出流的含义 以前所用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上.从操作系统的角度看,每一个与主机相连的输入输出设备都被看作一个文件.程序的输入指的 ...

  2. Cocos2d-x3.3RC0 Cpp-test分析之NewAudioEngineDemo(转:http://blog.csdn.net/yuxikuo_1/article/details/41081453)

    #ifndef __NewAudioEngineDemo__NewAudioEngineDemo__#define __NewAudioEngineDemo__NewAudioEngineDemo__ ...

  3. [COJ0528]BJOI幸运数

    [COJ0528]BJOI幸运数 试题描述 输入 见"试题描述" 输出 见"试题描述" 输入示例 见"试题描述" 输出示例 见"试 ...

  4. MySQL 同主机不同数据库之间的复制

    MySQL同主机不同数据库的复制命令:注意运行在Terminal中,不运行在MySQL命令行中. mysqldump Portal_DEV -u root -ppassword1 --add-drop ...

  5. Eclipse不给提示no default proposals

    解决方法: (1),找到工程所在的workspace,删除.metadata配置文件. (2),启动eclipse,重新定位到先前的workspace目录置,重建同名工程(不要删除原来的工程,只要建立 ...

  6. Ajax基础2

    什么是服务器 网页浏览过程的分析 如何配置自己的服务器程序(AMP) 什么是Ajax 无刷新数据读取 异步,同步 Ajax基础(2) 使用Ajax 基础请求显示txt的文件 字符集编码 缓存,阻止缓存 ...

  7. HTML中属性ID和属性NAME有何区别?

    今天出美工面试题的时候,David让我加上一道题:HTML中id和name的区别.一听对呀,HTML中id和name有什么区别,只是平时在用,倒没怎么想过,只是那么用了罢了,呵呵,其实在做网页的时候有 ...

  8. Redis提供的持久化机制(RDB和AOF)

    Redis提供的持久化机制 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却 ...

  9. git中找回丢失的对象

    本文转载自:http://gitbook.liuhui998.com/5_9.html 译者注: 原书这里只有两个链接: Recovering Lost Commits Blog Post,Recov ...

  10. [20160725]MyComparableTest

    知识点: 1.Collections的使用. 2.自定义类泛型的使用. 3.自定义类,toString();equals();hashCode()方法的重写. import java.util.*; ...