专栏首页根究FPGADDR3篇第四讲、DDR3操作时序与关键参数

DDR3篇第四讲、DDR3操作时序与关键参数

本节介绍DDR3的操作时序与部分时序参数。

一、指令时序之命令时序

app_cmd和app_addr有效,且app_en拉高,app_rdy拉高,则该指令成功发送给DDR3控制器,若是在app_cmd、app_addr、app_en都有效时,app_rdy为低,那么必须保持app_cmd、app_addr、app_en的有效状态直到app_rdy拉高,指令才会成功发送给DDR3控制器。

以下图为例,在app_en为高器件发起多次写入指令(0:写 1:读),在第58个时钟周期,app_rdy为低,此时需要保持当前app_cmd和app_addr不变,且app_en为高,直到第59个时钟周期,app_rdy拉高,写指令成功传入DDR3。

此外,在app_rdy为低之前指令是写入成功的。

二、数据写入时序

对于单次的数据写入DDR3控制器,波形为:

该时序图说明,写入的数据可以在三个时间点给出,以command发起为基准,在command发起前后的1,2,3不同时间都可以指定写入数据,需要注意的是写入数据的有效通过app_wdf_wren和app_wdf_end信号来指示。

app_wdf_en为高表示数据写入,在第158个时钟周期,app_wdf_rdy拉低持续5个用户时钟周期,此时即使app_wdf_en一直拉高也无法完成数据写入操作,app_wdf_data必须保持直到第163个时钟周期app_wdf_rdy拉高。

三、读数据时序

每个数据的读取操作,需要先有读指令的发起,当有效read command发起后,经过若干时钟周期,当检测到app_rd_data_valid信号为高,此时的app_rd_data有效,用户根据app_rd_data_valid拉高接收app_rd_data即可。

可能会疑问,同时有效的话,当检测到app_rd_data_valid时数据不就过去了?不会的,设置一下代码不就好了,比如以下代码:

对于连续读取也是一样,UI接口可以发送多条read command,随后就可以等待app_rd_data_valid拉高,同时接收数据,其时序图为:

(特权同学——第10章 存储最重要—DDR3实例篇)

四、RAS与CAS

RAS(Row Address Strode):行地址信号

CAS(Column Address Strode):列地址信号

内存是根据行和列寻址的,当请求触发后,最初是tRAS,预充电后,内存才真正开始初始化RAS。一旦tRAS激活后,RAS(Row Address Strode)开始进行需要数据的寻址,首先是行地址,然后初始化tRCD,周期结束。接着通过CAS访问所需数据的精确16位地址,期间从CAS开始到CAS结束就是CAS延迟,所以CAS是找到数据的最后一个步骤,也是内存参数中最重要的。

五、tCL

tCL:全称CAS Latency,当列地址被打开后,数据并不是立即出现在最终的数据总线引脚上,而是有若干个时钟的延迟,指的是列选通潜伏周期。(查了好多资料还是觉得这句话这句话说的最好理解!)

在查阅时序参数时,经常看到“3-4-4-8”类型的数字序列,该序列对应的参数分别是:

“CL—tRCD—tRP—tRAS”

第一个参数3即对应CL,即接受一个指令到该指令被执行的时间为3个时钟周期(该时钟周期就是功率频率,比如DDR3工作在800Mhz时,),CAS主要控制内存矩阵中的列地址,所以它是最重要的参数,在稳定的情况下应尽可能设低。

六、tRCD

tRCD:全称RAS# to CAS# Delay,表示行寻址到列寻址延迟时间,该值是“3-4-4-8”中的第二个参数,即第一个4,

七、tRP

tRP:全称Row Precharge Timing,表示内存行地址控制器预充电时间,tRP用来设定在另一行能被激活之前,RAS需要的充电时间,tRP参数设置时间过长会导致所有的行激活延迟过长,设为2可减少预充电时间,从而更快的激活一行,可能导致该行激活之前的数据丢失。(注意哦!是原本此处的数据没有了)

八、tRAS

tRAS:全称Row Active timing,即内存行有效到预充电的最短时间的最短周期,之所以需要预充电(precharge),是因为关闭当前行,打开新行时,要求新的bit line充电到VDD/2。

那么tRAS是不是越小越好?

不是,tRAS过小时,可能导致已经被激活的行过快的进入非激活状态,本行所对应的数据还没有传完就开始充电,导致缺乏足够的时间而无法完成数据的突发传输,这样会引起数据丢失或者损坏。

那tRAS是不是越大越好?

也不是,当tRAS的周期太长时,系统会因为毫无效率的等待而降低性能。

然则何时而乐耶?

该值一般设定为CAS Latency + tRCD +2个时钟周期,比如CL=2,tRCD=3,最佳的tRAS为2+3+3=7个时钟周期

九、tREF

tREF:Refresh周期,表示“刷新周期”,指的是内存模块的刷新周期。

本文分享自微信公众号 - 根究FPGA(gh_08b5d93f8fa5),作者:叫什么好呢啊

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • DDR3篇第三讲、DDR3读写测试项目分析

    本节介绍一个米联客DDR3读写测试的工程,把一些难以理解的代码进行了注释,如果哪里有问题的话,感谢大家指出,最后对波形进行分析。

    根究FPGA
  • DDR3篇第一讲、MIG用户接口介绍

    核心板搭载了4块镁光DDR3内存,2片与PS相连,另外2片与PL相连,单片DDR3内存大小为512MB,其型号为:MT41K256M16XX-125。

    根究FPGA
  • FIFO系列(一):FIFO深度计算

    当异步FIFO读写端口的throught-put(吞吐量)不同时,会遇到数据丢失的问题,需要考虑FIFO中的深度问题,即为满足读写流畅不卡顿(数据不丢失)时,F...

    根究FPGA
  • 如果有机会重来,你还愿意做iOS开发嘛~

    作为从事 iOS 开发好几年的“编程狗”,我见识过 2013-2014 年移动端大热时的疯狂,见识过 2016 年一个 iOS 岗位对应千封简历的疯狂(培训班扰...

    iOSSir
  • 网站搭建-django-学习成绩管理-01-新建app

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • 怎样才能做一款好的App,即做app时最需要注意的六个因素

    移动互联网时代,app已经成为了我们生活中不可或缺的一部分了。根据当前情况来看,app在未来几年内,至少两年内,还将会有新一波的火爆增长时期。尤其是我们中国市场...

    非著名程序员
  • 【maven学习】划分模块

    所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。...

    冷冷
  • 怎样才能做一款好的App,即做app时最需要注意的六个因素

    ? 移动互联网时代,app已经成为了我们生活中不可或缺的一部分了。根据当前情况来看,app在未来几年内,至少两年内,还将会有新一波的火爆增长时期。尤其是我们中...

    非著名程序员
  • App出海又遇困局,乘风破浪的互联网企业何时上岸

    App Annie统计显示,2020年6月全球热门应用,TikTok(抖音海外版)继续霸榜,无论是下载量还是收入依旧稳拿第一。今年受到新冠疫情的影响,在一二季度...

    APICloud
  • 人工智能会带来一个没有app的世界吗?

    ? 现在很少有人智能手机中装满了app——并且这样的人也变得越来越少。App正在逐渐衰落。根据Comscore的分析师,大部分人(65%)根本不下载app,只...

    新智元

扫码关注云+社区

领取腾讯云代金券