前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DDR3篇第四讲、DDR3操作时序与关键参数

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

作者头像
根究FPGA
发布2020-06-30 11:23:01
4.8K0
发布2020-06-30 11:23:01
举报
文章被收录于专栏:根究FPGA根究FPGA

本节介绍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周期,表示“刷新周期”,指的是内存模块的刷新周期。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 根究FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、指令时序之命令时序
  • 二、数据写入时序
  • 三、读数据时序
  • 四、RAS与CAS
  • 五、tCL
  • 六、tRCD
  • 七、tRP
  • 八、tRAS
  • 九、tREF
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档