之前调试DDR都是下载板子直接观测ChipScope验证。最近需要搭建自己的DDR仿真平台。尝试在IP核里的sim文件为基础,修改添加适合自己的仿真平台。具体过程如下。

按照硬件对应的片子生成DDR3 IP,去掉IPcore,添加生成的RTL代码

以下主要利用IP核生成的仿真文件搭建适合自己的仿真平台。

  • 添加文件到工程

DDR3生成的仿真文件夹在“...\ipcore_dir\IP_DDR3\example_design\sim”里文件如下:

这里主要用到的文件为3个.V和一个.vh。

将这3个.V和一个.vh复制到自己的工程源文件夹(“...\sim”)里,如下图:

添加这4个文件到工程中:

  • 修改sim_tb_top.v文件

注意这两个信号SIM_BYPASS_INIT_CAL和SIMULATION这两个信号,在sim_tb_top.v文件里定义为:

parameter SIMULATION            = "TRUE";parameter SIM_BYPASS_INIT_CAL    = "FAST";

适用于仿真模式,在implementation时应该是

parameter SIMULATION            = "FALSE";
parameter SIM_BYPASS_INIT_CAL    = "OFF";

修改1:屏蔽P84到P106

修改2:由于我在内部额外添加了DCM,外部输入时钟为100MHz,实际输入给你DDR3的时钟为200MHz,所以将CLKIN_PERIOD改为10000,但是这个定义不用传到下一层。这里只为了方便仿真激励的产生。DDR3的CLKIN_PERIOD还是使用内部默认定义,没有修改。

修改3:屏蔽掉自带的仿真实例化模块:example_top,改为自己的DDR3模块

自己生成的DDR3模块添加了测试接口tirg0,trig1,start,Frame_Length等信号。时钟接口由单端改为差分。自己的DDR3模块包括一个DCM,一个用户封装的fifo接口,还有DDR3核源文件。

***同时要注意在实例化DDR3.v时,以下6个信号必须给定,这写信号会影响仿真,不影响实际下板子运行。

我最开始自认为这几个信号没有用到,就直接没有声明,导致仿真时DDR3在初始化完成后只写了25个地址的数据后,DDR3_CS_N信号就为2’bX,造成后续写失败。如下图:

修改4:屏蔽两个系统函数$finish,以便让仿真继续持续运行。

  • 添加ddr3_model_parameters.vh文件到仿真软件目录下:C:\questasim_10.0b\verilog_src\ovm-2.1.1\src。不然仿真可能会出现找不到这个.vh文件。

在ISE里打开sim软件,添加需要观测的信号,运行仿真。

至此,自己的仿真平台搭建完成。

ddr3_model.v模型文件里默认定义的地址位宽是15。如果想仿真更多的地址空间,需要修改ddr3_model.v里的MEM_BITS定义。

    // Size Parameters
P184    parameter MEM_BITS         =      15; // Set this parameter to control how many write data bursts can be stored in memory.  The default is 2^10=1024.

搭建适合自己的DDR3仿真平台相关推荐

  1. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台

    这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...

  2. MacOS搭建OMNeTpp+Veins+SUMO车联网仿真平台

    1.查询Veins支持的OMNeT及SUMO版本 http://veins.car2x.org/download/ 如下图所示,Veins5.0-alpha2最高支持SUMO1.2.0及OMNeT++ ...

  3. Sumo 搭建交叉路口交通流仿真平台

    Sumo安装 注意事项:需要工具的使用需要环境变量的设置.需要包含文件Sumo安装路径下的bin和tools. Sumo配置文件 Sumo中项目的配置文件的组成如下所示 节点文件 图 1 节点及边的拓 ...

  4. Moveit + Gazebo:搭建双臂仿真平台(方案一)

    环境ubuntu20.04 ROS-noetic 国内少有搭建Moveit和Gazebo联合仿真的教程,对于搭建双臂等复杂的仿真平台更是鲜有资料,因此想要把自己的见解分享出来供大家参考,共同提高. 本 ...

  5. 全球自动驾驶仿真平台盘点

    9月初,苹果的自动驾驶汽车在美国加州的公路上进行路测时发生了它的首次碰撞事故.不同于年初Uber无人车造成的重大车祸,这次所幸没人受伤,但这也再次引起了人们对自动驾驶汽车安全性的关注. 其实,自动驾驶 ...

  6. 使用树莓派4B搭建简易的控制器硬件在环仿真平台

    文章目录 前言 一.实验准备 二.具体实施 1.Ubuntu ROS和Matlab通信 2.控制算法部署树莓派 3.Simulink车辆模型环境 总结 前言 在上篇教程中,基于运动学模型和dlqr离散 ...

  7. Modelsim 仿真 DDR2 IP核 测试 和自定义仿真平台搭建 IP核仿真

    说明:本文分为两部分,第一部分仿真QuartusII自己生成的DDR2 example, 第二部分为添加自己写的tesetbench文件仿真DDR2 关键词:DDR2仿真.Modelsim 软件:Qu ...

  8. Ubuntu14.04下搭建Bochs仿真平台,同时用该平台安装Linux0.11内核

    因为Linux0.11内核需要在80X86硬件平台上运行,现在已经没有该硬件系统了,所以需要搭建Bochs这个仿真平台.Bochs是一个X86硬件平台的开源模拟器. 安装步骤参考的是如下一篇文章:ht ...

  9. Apollo6.0 + lgSVL 联合仿真平台搭建

    0.前言 先上仿真效果展示,在小破站上传了我第一个视频,画质较渣,凑合看吧,hahaha. Apollo6.0 + lgsvl 联合仿真展示 如果你掌握了以下预备能力,将会更加如鱼得水: 熟悉 lin ...

最新文章

  1. 我的Rails笔记(1)
  2. Intel芯片组命名规则
  3. python语言怎么学-Py列为黑客应该学的四种编程语言之一 新手该怎么学
  4. 作为资深的无人机从业者,卡尔曼滤波你不能不知道 通俗易懂的来说卡尔曼滤波
  5. fib函数用python编写_Python中利用函数装饰器实现备忘功能
  6. vue 组件第一次不渲染问题_vue使用组件不渲染 只有代码变了才渲染
  7. java.lang.Class解析
  8. Oracle数据库有哪几种启动方式
  9. De Casteljau算法
  10. cad角度怎么画_初学入门CAD,就这样成精了!
  11. 统计学简介之十七——双因素方差分析
  12. 锁仓量突破40亿美元、公链集体押注,DeFi真的具有可持续性吗?
  13. 什么是埋点?简述埋点的操作流程
  14. 字幕基础:字幕介绍、字幕种类及常见格式(转)
  15. 我在首席数据官年会上的演讲实录
  16. 解决数据库查询结果过大导致的录制失败问题(loadrunner)
  17. 使用android手机做鼠标
  18. 真神奇!敲击桌子就能操控iPad或iPhone
  19. 【学习OpenCV4】案例3:OpenCV Python语言开发环境搭建
  20. ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker

热门文章

  1. 明日方舟抽卡模拟器wiki_明日方舟抽卡模拟器(可更改数据)
  2. 软件项目管理 7.1.项目进度基本概念
  3. stm32f429+超声波传感器HC-SR04 -- 测距
  4. 虚拟机及Linux[CentOS7]下载、安装说明(全)
  5. 关于浏览器查看网页中文乱码问题
  6. 恩施市一中2021高考成绩查询,2021年恩施高中学校排名及录取分数线 恩施重点高中分数线...
  7. 股票量化交易系统搭建问题探究
  8. (_cai_) opencv学习笔记(1):图像形态学计算的方式 morphology函数的应用
  9. 2023合肥学院计算机考研信息汇总
  10. Java设计模式-策略模式(Strategy)