昨晚找了一下,发现DDR3读写在工程上多是通过例化MIG,调用生成IPcore的HDL Functional Model。我说嘛,自己哪能写出那么繁琐的,不过DDR读写数据可以用到状态机,后期再添砖加瓦吧,当下先对比一下网上找的一段程序和自己例化后的程序。

另外,仿真了十余分钟,最后的是什么鬼?一头雾水T.T。想着每一次要分析信号要等那么久就难受。

更重要的是分享一波关于“Xilinx平台下DDR3设计教程”的资料。就其中的“仿真篇”而言,亲测可行,还是中文版
datasheet看着亲切。0.0
********************20170519更新:确定关键信号及学习博客********************
前天师兄确定说是利用MIG IP core进行例化,参考了几份关于UG重点详解:https://wenku.baidu.com/view/63e8c92d195f312b3069a5ea.html
http://blog.chinaaet.com/chinaaetwoaini/p/5100050615
更重要的是找到了“XILINX DDR3 IP核使用教程完版”http://download.csdn.net/download/kpsuwen/9374463
do sim.do仿真后加入“app_cmd、app_addr、app_en、app_rdy、app_wdf_wren、app_wdf_end、app_wdf_rdy、app_wdf_data”等用户核心信号(下图是UG586文档第58页中的“内存接口示意图”)。我们主要关心的是左侧关于写操作的交互信号。
********************20170520更新:对用户信号进行总结及简单的读写时序********************
这几个信号的分析总结在“XILINX DDR3 IP核使用教程完版”中都有所提及,我就稍微的总结一下:
1.写操作由两套系统:地址域和数据域。
1.1.地址域:在地址域上,app_rdy(controlled by DDR3)、app_en(controlled by user)同时拉高为1时地址app_addr(29bit=rank 1+bank 3+row 15+ column 10)才有效;
1.2.数据域:在数据域上,app_wdf_rdy(controlled by DDR3)、app_wdf_wren(controlled by user)同时拉高为1时数据app_wdf_data才有效。
1.3.app_wdf_data和app_rd_data[APP_DATA_WIDTH-1:0]信号都是数据信号,其中“2 * nCK_PER_CLK * PAYLOAD_WIDTH”,“nCK_PER_CLK=4”,“PAYLOAD_WIDTH = (ECC_TEST == "OFF") ? DATA_WIDTH : DQ_WIDTH”,“ECC_TEST == OFF”故“PAYLOAD_WIDTH =DATA_WIDTH=64”。2*4*64=512。数据位宽与BL有关,BL=8表示DDR3-SDRAM每次可以写入8个64bit数据,512bit
1.4.地址和数据不一定需要同步,可提前或者滞后两个时钟,见下图。另外下图也可看出命令信号app_cmd和地址信号app_addr是对齐绑定的,而不和数据域绑定。
写通道:

读通道:

2.读操作

 
写时序仿真结果图:

分析:以clk为基础时钟,“app_en=1、app_rdy=1”时“app_addr”有效,四个时钟,写入了四个地址,另外需要强调一点的是: app_addr[ADDR_WIDTH – 1:0] 是ddr3的地址,精确到每个col地址,但是因为实际突发长度(Burst Length)要求8所以每个数据都是第4位开始。因此第四位开始app_addr进行二进制增加。
 
读时序仿真结果图:

分析:暂时搁置
 
********************20170521更新:关于V7系列的mig例化********************
早上大致看了以下师兄給的VC709板关于mig例化仿真文档,双BANK,先是bank a,再是bank b,最后bank a_b,xilinx 用K7系列和V7系列例化的过程几乎一致,只是V7的这份user guide的仿真环境是vivado,用ise应该是一样的效果,今天中午的问题卡在了在例化过程中加入.dxc引脚文件时报错了,见下图:

郁闷的很,大概直译一下“对于某些端口,即使对于所选择的配置是必需的,也不提供位置约束。 以下是提供的UCF中缺少的端口:ddr3_addr[15]”,ddr3_addr[15:0],16bit,单单最后这位的引脚配置报错,我尝试手动输入这120余个引脚信息,但是IO standard又不能强行输入,就放弃了此想法。sublime打开xilinx官网down的dxc文件,找到ddr3_addr[15]口,见下图:

对比了一下ddr3_addr[15]和ddr3_addr[14:0]之间的差别,没发现有毛病。难道我思考方向错了?!
 
花了40min中,按照dxc中的信息强行把管脚配置完毕,人工配置太累了,下图是配置管脚后的:

输入完后系统会识别IO标准:

终于又可以继续了... ...
**********20170713更新:上面遇到的问题是因为ise不支持xdc引脚文件的缘故,vivado平台下正常**********
 
Here is the Summary
 
********************20170522更新:DDR3内部核心频率、时钟频率、数据传输频率********************
1.核心频率/Core Frequency/:(解释1)内存cell阵列的工作频率,它是内存的真实运行频率。(解释2)每款芯片都有其自己的极限频率,这个极限频率就是内存的核心频率,或者说是它能正常工作的频率,因此把内存的频率称为内存的真实频率。
2.时钟频率:(解释1)I/O Buffer(输入/输出缓存)的传输频率。(解释2)内存作为数字逻辑芯片,本身不产生频率,频率是主板上的频率发生器外加给它的,主板上产生的这个频率称为时钟频率。
3.数据传输频率:内存与系统交换数据的频率,也称为内存的等效频率或者接口频率。
*****三者在内存中的关系*****
核心频率就是内存的工作频率,到DDR2、DDR3才有了时钟频率概念,时钟频率是将核心频率通过倍频技术得到的一个频率。///DDR内存核心频率和时钟频率相同,但在传输数据的时候在脉冲的上升沿和下降沿都传输了一次,所以数据传输频率是核心频率的2倍;DDR2内存将核心频率倍频2倍得到了时钟频率,同样在上升沿和下降沿各传输一次数据,所以数据传输频率就是核心频率的4倍、时钟频率的两倍;DDR3内存的时钟频率是核心频率的4倍,同样在上升沿和下降沿各传输一次数据,所以数据传输频率就是核心频率的8倍。
Following are three examples.
DDR2-800:核心频率200MHz,时钟频率400MHz,数据传输频率800MHz;
DDR3-800:核心频率100MHz,时钟频率400MHz,数据传输频率800MHz;
DDR3-1066:核心频率166MHz,时钟频率533MHz,数据传输频率1066MHz.
 
 
分享:

 

3

喜欢

0

赠金笔

 
阅读(1836)┊ 评论 (3)┊ 收藏(0) ┊转载(1) ┊ 喜欢 ┊打印举报
已投稿到:
 
 
 
  • 文锋若风

     
    1.SDRAM的内部是一个个存储阵列。这些存储阵列就代表了一个个的Logical-Bank(L-Bank)。每个阵列中的小单元就是最小的存储单元,其位数即为Bank的位数。当前的SDRAM多为4 bank.

    5月16日 20:28回复(0)

  • 文锋若风

    2.DQS是内存和内存控制器之间信号同步用的。 
    由DQ信号发出端发出DQS,信号接收端根据DQS的上、下沿来触发数据的接收。 
    简单点说,如果是从内存中读取信号,那么主板北桥(内存控制器)根据内存发出的DQS来判断在什么时候接收读出来的数据。如果是写的话,就正好相反,内存根据北桥发出的DQS来触发数据的接收。 
    DDR2每芯片有一个读、写双向的DQS,DDR3是有读和写两个DQS(2个DQS的好处是,不必等待DQS反向)。 
转载:http://blog.sina.com.cn/s/blog_b5fa66e50102wx5e.html

Xilinx 7系列例化MIG IP core DDR3读写的更多相关文章

  1. MIG IP控制DDR3读写测试

    本文设计思想采用明德扬至简设计法.在高速信号处理场合下,很短时间内就要缓存大量的数据,这时片内存储资源已经远远不够了.DDR SDRAM因其极高的性价比几乎是每一款中高档FPGA开发板的首选外部存储芯 ...

  2. modelsim仿真xilinx mig ip core相关问题

    1.运用自动化脚本文件 do sim.do  其中不支持 .f文件 , 需要直接vlog 2.对于mig模型采用下面句型(根据example中do sim.do文件) vlog -sv +define ...

  3. 使用xilinx ip core FIFO First- World First-Through (FWFT)模式的注意事项

    也许很多人知道xilinx ip core 中的fifo可以配成standard 模式和FWFT模式,并知道两者的区别是:standard模式下,当rd为高时,fifo会延时一个时钟输出数据(时序逻辑 ...

  4. 探索ASP.Net Core 3.0系列六:ASP.NET Core 3.0新特性启动信息中的结构化日志

    前言:在本文中,我将聊聊在ASP.NET Core 3.0中细小的变化——启动时记录消息的方式进行小的更改. 现在,ASP.NET Core不再将消息直接记录到控制台,而是正确使用了logging 基 ...

  5. FPGA上外挂DDR2&DDR3&MIG IP的使用记录

    前言 当需要大容量数据存储及处理的时候,FPGA内部自带的存储资源是远远不够的,所以问题来了,怎么使用外带的DDR3? 首要问题在于DDR3是什么?有没有协议?当然只是需要用Xilinx MIG IP ...

  6. Modelsim独立仿真Vivado Clocking Wizard IP Core

    工欲善其事,必先利其器.在使用Vivado自带的仿真软件仿真的时候,相对于更优秀的仿真工具Modelsim,效率低了很多,为了更高效的开发,我尝试着用Vivado级联Modelsim仿真,但是级联后还 ...

  7. Xilinx 7系列FPGA部分重配置【2】

    在之前的“Xilinx 7系列FPGA部分重配置[1]”中已经较为详细地记录了分别在工程模式(Project Mode)和非工程模式(Non-Project Mode)下.使用7系列的Xilinx F ...

  8. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  9. 基于MIG IP核的DDR3控制器(一)

    最近学习了DDR3控制器的使用,也用着DDR完成了一些简单工作,想着以后一段可能只用封装过后的IP核,可能会忘记DDR3控制器的一些内容,想着把这个DDR控制器的编写过程记录下来,便于我自己以后查看吧 ...

随机推荐

  1. 数列求和 Exercise06_13

    /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:数列求和 * */ public class Exercise06_13 { public static void main( ...

  2. 【MySQL笔记】数据定义语言DDL

    1.创建基本表   create table <表名> (<列名><数据类型>[列级完整性约束条件]                                 ...

  3. java读写文件及保留指定位小数

    1)先上代码: public static void main(String[] args)throws IOException{ double[][] B=new double[1043][2102 ...

  4. 通过Roslyn动态生成程序集

    之前写过篇文章如何通过Roslyn构建自己的C#脚本,今天本来打算测试一下这部分API在新的版本中的变化,结果发现它的脚本引擎找不到了,翻了一下官方文档,貌似说暂时性的移除了.便看了一下它动态生成程序 ...

  5. insert语句太长,有StringBuilder优化一下

    private void btnSave_Click(object sender, RoutedEventArgs e) { if (IsInsert) { //假设日历控件没有选日期,那帮它赋一个当 ...

  6. php之防注入程序绕过浅谈

    <?php/*判断传递的变量是否含有非法字符如:$_POST/$_GET功能:SQL防注入系统*/ //屏蔽错误提示error_reporting(7); //需要过滤的字符 $ArrFiltr ...

  7. RenderMonkey基本使用方法【转】

    RenderMonkey基本使用方法 楔子: 差不多从年中开始由于工作需要,开始研究Direct3D,这是继大二开始自学DX开始,睽违了6年后再重新学习DX.虽然时间很久了,但是幸亏还是有点基础,所以 ...

  8. 项目笔记:导出Excel功能

    1.前台这块: var ids=""; $.post("${basePath}/assets/unRegDeviceAction_getDeviceIds.do" ...

  9. HDFS 中向 DataNode 写入数据失败了怎么办

    https://blog.csdn.net/HeatDeath/article/details/79012258 http://wenda.chinahadoop.cn/question/3323 h ...

  10. Intent 介绍

    一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...