DDR协议解析

2023-05-16

DRAM内部分割成多个L-Bank,每个L-Bank形状相同,彼此独立,可以独立工作。早期的DRAM芯片内部分为2个L-Bank,后来是4个,DDR3内存芯片为8个。在进行寻址时需要先确定是哪个L-Bank,然后再在这个选定的L-Bank中选择相应的行与列进行寻址。对内存的访问,一次只能是一个L-Bank,而每次与CPU交换的数据就是 L-Bank 存储阵列中一个“存储单元”的容量。SDRAM内存芯片一次传输的数据量就是芯片的位宽,那么这个存储单元的容量就是芯片的位宽(也是 L-Bank 的位宽)。下图为4BANK内存颗粒内部结构示意图。


针对内存的操作指令有如下几种:        

1).Command INHIBIT(初始化);  

2).No Operation(无动作);         

3).Active(使指定L-Bank中的指定行有效);        

4).Read(从指定L-Bank中的指定列开始读取数据);        

5).Write(从指定L-Bank中的指定列开始写入数据);       

6).Burst Terminate(突发传输终止);         

7).Precharge(预充电命令,关闭指定或全部L-Bank中的工作行);        

8).Auto Refresh(自动刷新);         

9).Load Mode Register(模式寄存器加载);

10).写允许/输出允许;         

11).写禁止/输出屏蔽

基本命令是通过操作各种控制信号/地址信号的组合来完成。下表中除了自刷新命令外,所有命令都是默认CKE有效(其中H代表高电平,L代表低电平,X 表示高低电平没有影响)。


内存的初始化     

 一旦VDD、VDDQ被同时家电,并且时钟已经稳定,SDRAM需要一个200us的延迟,在这个时间段中,Command INHIBIT和No Operation指令有效,这个过程实际上就是内存的自检过程,一旦这个过程通过后,一个Precharge命令就会生效,在这个命令周期中,内存会处于Idle状态。随后执行几个Auto Refresh周期,之后SDRAM为模式寄存器编程做准备。整个初始化过程如下图所示,其中前3个操作应该都是DDR内部自动完成的。


参数解释:

下图为一个完整的从行寻址到行关闭的时序图(其中tRCD=2、CL=2、tRP=2) 。


tRCD (RAS to CAS Delay / ACTIVE to READ/WRITE delay):

表示行寻址到列寻址延迟时间。从行有效到读/写命令发出之间的间隔被定义为tRCD,也叫行选通周期。这是根据存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。

CL (CAS latency):

表示内存读作前列地址选通的潜伏时间。相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据的触发有延迟,而且还需要进行信号放大)。  这个参数控制内存接收到一条数据读取指令后要等待多少个时钟周期。同时该参数也决定了在一次内存突发传送过程中完成第一部分传送所需要的时钟周期数。在保证稳定性的前提下,CL值越小,则内存的速度越快。  CL是找到数据的最后一个步骤,也是内存参数中最重要的参数。

tRP (Row precharging time):

表示行预充电时间。tRP用来设定在另一行能被激活之前,现有的工作行需要的充电时间。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是tRP。

tRAS(Row Active Time / Active to Precharge Delay):

 表示从内存行有效命令发出至预充电命令发出之间的最短时间。  如果tRAS的周期太长,系统会因为无谓的等待而降低性能。如果tRAS的周期太短,则可能因缺乏足够的时间而无法完成数据的突发传输,这样会引发丢失数据或损坏数据。

tRC (Row cycle time):

表示“ SDRAM行周期时间 ”,它是 包括行单元预充电到激活在内的整个过程所需要的最小的时钟周期数 。其计算公式是: (tRC) =(tRAS) + (tRP)。

tDQSS( WRITE Command to the first corresponding rising edge of DQS):

发出写入命令后,DQS与写入数据要等一段时间才会送达。为什么要有这样的延迟设计呢?原因也在于同步,毕竟一个时钟周期两次传送,需要很高的控制精度,它必须要等接收方做好充分的准备才行。tDQSS是DDR内存写入操作的一个重要参数,太短的话恐怕接受有误,太长则会造成总线空闲。tDQSS最短不能小于0.75个时钟周期,最长不能超过1.25个时钟周期。有人可能会说,如果这样,DQS不就与芯片内的时钟不同步了吗?对,正常情况下,tDQSS是一个时钟周期,但写入时接受方的时钟只用来控制命令信号的同步,而数据的接受则完全依靠DQS进行同步,所以 DQS与时钟不同步也无所谓。不过,tDQSS产生了一个不利影响——读后写操作延迟的增加,如果CL=2.5,还要在tDQSS基础上加入半个时钟周期,因为命令都要在CK的上升沿发出。

tMRD(Mode Register Delay) :

 表示在进行初始化时,从LOAD MODE REGISTER命令发出到可以执行ACTIVE / REFRESH命令的时间。

tWR(Write Recovery Time):

 表示写恢复延时。指在一个激活的bank中完成有效的写操作及预充电前,必须等待多少个时钟周期。  这段必须的时钟周期用来确保在预充电发生前,写缓冲中的数据可以被写进内存单元中。过低的tWR虽然提高了系统性能,但可能导致数据还未被正确写入到内存单元中,就发生了预充电操作,会导致数据的丢失及损坏。

tRFC(AUTO REFRESH Command period) :

 表示Auto Refresh所需要的时间。

tRRD(Row to Row Delay / RAS to RAS delay / ACTIVE to ACTIVE delay) :

表示行单元到行单元的延时。该值也表示向相同bank中的同一个行单元两次发送激活指令之间的时间间隔。tRRD值越小越好,延迟越低表示下一个行能更快地被激活,进行读写操作。


参考:DDR内存 时序指南    展讯SDRAM高级教程  DDR工作原理


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDR协议解析 的相关文章

  • 【第十七届智能车】程序编写过程中的一些小技巧

    目前博主还在总结并完善智能车的博客 xff0c 这篇文章也会随时间更新 这里的小技巧其实并不是什么很高级的算法和技巧 xff0c 全是博主在编写智能车程序的过程中总结归纳的一些经验 xff08 可能仅仅只是对我而言的技巧吧 xff0c 实在
  • SBUS如何连接4G,如何通过数传DTU传输,实现远程控制

    前段时间很多人咨询我怎样把sbus信号 xff0c 通过4G模块 xff0c 或者数传DTU传输 xff0c 实现远程的控制 他们的应用是远程消费机器人 xff0c 无人机送货 xff0c 水下机器人等项目 回答这个问题前我们先来了解一下s
  • 云卓遥控器+DIY高清摄像机的方案(完美接入原系统)

    一个朋友接了一个单子 xff0c 让我给他整合一个方案 xff0c 飞机用的是植保飞机 xff0c 把客户自己找的摄像机 xff0c 放在云台上 xff0c 能实现遥控器可以自由控制 客户原来已经买了整套飞机 拍照部分主要是下面那样的 包含
  • DIY高清云台(吊舱)方案

    这些天评论好些学友都问我关于组装一套高清的云台方案 xff0c 趁这几天有空 xff0c 思考了一下方案 xff0c 仅供大家参考 近两年随着短视频红火 各种各样的题材是百家争鸣 xff0c 你题材不新 xff0c 就没人看 xff0c 没
  • DIY一套10倍\20倍\30倍光学变焦高清航拍方案(变焦云台相机方案)

    之前写了一篇关于如果diy自己的高清云台方案https blog csdn net fgh00000 article details 121940451 很多人私信我说需要更高级的应用 功能需要再强大一点 上篇文章只是把摄像机放到了云台上
  • 超低成本的2.4G超远距离无线遥控、无线传输方案随笔

    超低成本的2 4G超远距离无线遥控 无线传输方案随笔 在2 4G的领域里面 大家比较熟悉的就是蓝牙和wifi 物联网用的比较多的就是zigbee 而在专业的领域用的比较多的就是nrf2401 xff0c cc2500等低成本芯片 就距离而言
  • 首个单芯片超小封装I2C转PWM解决方案

    ZW10I8X系列 高性能工业级16位高精度I2C转PWM接口SOC芯片 接口标准 符合飞利浦的I2C标准规范 xff0c 目前支持的速度为小于100kbit 建议使用50k 1个使能脚 xff08 ZW10I8xE后缀带E的 xff09
  • 选一个适合自己的加密芯片,加密IC,如何才能真正的做到不被破解。

    做嵌入式产品 xff0c 最头痛的事情就是害怕自己的代码给别人读出来 xff0c 不需要通过自己 xff0c 人家直接拿去生产了 所以要保护自己的最好方式就是使用硬加密IC的方式 当然有句话说的好 这世上没有破解不了的加密算法 每一个加密芯
  • docker(四):docker指定port运行、commit、数据卷(初解)、DockerFile

    继 xff1a https blog csdn net ak739105231 article details 105835836 一 docker指定port运行tomcat容器 docker run 的参数说明 xff1a 点击 p 指
  • SBUS协议转换芯片,SBUS转UART,sbus转rs232,sbus解码IC,zr003

    sbus 协议比较复杂 16通道一共用了22字节 每个通道占11bit 所以会存在拼字节错位的问题 需要转化成一个整形的数据 这对一般的主控还是有压力 xff0c 开销不少 今天跟大家分享一个专用的sbus解码芯片 sbus解码IC xff
  • STM8S001J3M3小身材大作用,STM又一佳作

    因研发需要找一个小封装的IC做产品 xff0c 一直都用开了STM的芯片 感觉质量比较稳定 听说st出来几款SOP8封装的芯片 于是第一时间找到了功能最全的开发套件 xff0c 对上手还是非常有帮助的 因为是新品 所以相关的开发板和资料还是
  • SBUS如何接到数传模块上,给sbus增程呢。

    SBUS总线是一种futuba先发明的遥控通讯协议 虽然说属于类uart的数字信号 但是它不能直接给电脑单片机读取 xff0c 因为它的逻辑电平是不一样的 另外就是它的数据传输波特率是100k xff0c 1个开始位 xff0c 2个停止位
  • 如果降低sbus总线的传输速率/帧率,sbus怎样转UART,sbus接到4G

    做无人机最重要的一个环节就是控制指令和数传 控制指令比较成熟的方法是sbus输出 xff0c 但是sbus又不是标准的数据信号 xff0c 波特率不标准 xff0c 逻辑电平也不标准 xff0c 而且每帧的间隔是4ms 15ms之间 而普通
  • shell脚本中/bin/bash的作用,引号与括号的使用

    shell脚本通常第一句是 bin bash 在很多情况中 xff0c 如果没有设置好这一行 xff0c 那么该程序很可能无法执行 xff0c 因为系统无法判断该程序需要使用什么shell来执行 通俗点讲 xff0c bin bash 是指
  • 解决STM32虚拟U盘枚举过慢的问题

    1 最近在一个项目中使用STM32虚拟U盘功能 xff0c 外接SPI flash 连接到电脑上面后虚拟出一个U盘出来 xff0c 软件使用RT thread的usb device mass storte大容量存储设备 代码移植很简单 xf
  • vscode 使用makefile 在线调试运行C/C++程序的方法

    1 前言 上一篇文章vscode在线调试C C 43 43 程序的方法中介绍了调试程序的方法 xff0c 由于文章中使用的编译程序规则是调用task json中来实现的 xff0c 不适用于一般的程序 目前大多数程序都是来使用makefil
  • 我的2013年终总结

    2013年6月毕业 xff0c 2012年九月开始实习 xff0c 一直在做和android相关的开发 工作有的涉及硬件 xff0c 有的是专门为公司定制的app 2013年的遗憾就是 xff0c 这一年里自己没有一款上线的app 听相关的
  • 用Android手机spydroid-ipcamera搭载局域网监控环境

    相比有很多人都想用手机实现视频监控吧 xff0c 今天这个教程 xff0c 将会教大家用spydroid ipcamera搭建局域网监控环境 准备工作 xff1a 1 准备一部带有摄像头的 xff0c API level在9以上的手机 xf
  • 3D数学--学习笔记(三):3D中绕任意轴的旋转

    本文转自 xff1a http blog csdn net zjc game coder article details 24269757 不要小看我们在Unity或者3DMAX中的一个简单的旋转物体操作 题记 这里需要用到的知识 xff1
  • Android拼图游戏开发全纪录0

    本文转自 xff1a http blog csdn net eclipsexys article details 18881849 最近刚完成一个Android的小项目 拼图游戏 项目并不复杂 xff0c 但也是一个完整的项目 xff0c

随机推荐

  • Android拼图游戏开发全纪录1

    本文转自 xff1a http blog csdn net eclipsexys article details 18887567 今天我们继续来讲解Android拼图游戏全纪录的第二篇 xff0c 今天要完成的任务比较简单 xff1a 界
  • Android 4.2 SafeVolume机制

    最近一个项目过认证 xff0c 在声压测试时failed 整改方案为 xff1a 在用户将耳机音量提高至安全音量以上时 xff0c 阻止此操作并弹出警告框 xff0c 待用户确认后才提升音量 一开始并不知道android4 2中默认自带了这
  • 命令行查看android手机wi-fi密码

    两招帮你查看wifi密码 xff08 抱歉 xff1a 由于无法传第三张图片 xff0c 第三个图片内容请参照参考网址获得 xff09 第一 xff0c 手机必须root 第二 xff0c 用es文件浏览器或RE管理器进入date misc
  • android网络时间同步总结

    本文转自 xff1a http www cnblogs com hoji real archive 2011 11 14 2247984 html 最近看了下网络时间同步 xff0c 总结一下 整体描述 xff1a android网络时间同
  • win7删除ubuntu系统

    win7 43 ubuntu双系统 xff0c ubuntu开机的时候 xff0c 电脑会响 xff0c ubuntu系统进不去 进入win7系统后 xff0c F盘是通过磁盘管理压缩剩余空间安装ubuntu系统的 xff0c QQ安装在F
  • 手机电池和taskId的寻找

    刷机的时候启动手机时间比较久 xff0c 拔掉电池给手机断电 xff0c 启动的比较快一点 一直这样干 xff0c 一段时间以后 xff0c 手机充电的时候 xff0c 会显示bad battery 提示电池坏掉 电池坏掉后 xff0c 刷
  • 如何使用Proteus进行电路设计仿真?

    Proteus是一款功能非常强大的软件 xff0c 是英国著名的EDA工具 仿真软件 xff0c 从原理图布图 代码调试到单片机与外围电路协同仿真 xff0c 一键切换到PCB设计 xff0c 真正实现了从概念到产品的完整设计 支持和Kei
  • OKHttpUtils使用介绍

    一 xff0c 概述 在上一篇blog的末尾讲到了OKHttp使用时的缺点 xff0c 和对OKHttp封装的必要性 在github上有很多对OKHttp封装的优秀框架 xff0c 其首推的就是hongyang大神的OKHttpUtils
  • Ubuntu18.04LTS系统盘制作

    记录一下制作系统盘的过程 xff0c 参考资料如下网址 xff0c 谢谢 win10下安装Ubuntu16 04双系统 xff0c 用软碟通制作系统盘 gt 点击此处网址 xff1b 安装win7 Ubuntu16 04双系统 xff0c
  • vmware12-15中ubuntu15.10-18.10的vmwaretools失效,不能拖动复制粘贴以及自动适应窗口分辨率

    新安装或异常关机或重新划分分区导致的vmware tools失效 xff0c 不能拖动复制粘贴文件文本以及自动适应窗口分辨率 xff0c 无论怎样重装vmware tools或open vm tools均无效 最后发现有效的方法如下 xff
  • 【环境搭建】Docker镜像相关操作(切换镜像源、查询、获取、查看、创建、上传、保存、删除等)

    目录 1 镜像源查看及设置2 镜像相关操作2 1 获取镜像列表2 2 镜像下载2 3 查看本地的镜像2 4 从镜像创建容器2 5 将容器抽象为镜像 commit2 6 将容器抽象为镜像 Dockerfile2 7 将镜像保存为压缩包2 8
  • 【废了-准备删除02】信息收集——基于WAMP的drupal7.x管理系统

    目录 1 概述2 域名 子域名 IP信息收集3 端口扫描3 1 扫描过程3 2 小结 4 网站目录扫描4 1 目的4 2 dirbuster 扫描4 3 御剑后台扫描4 4 小结 5 指纹识别5 1 目的5 2 指纹识别5 3 指纹利用5
  • Spring boot App启动报错 missing ServletWebServerFactory bean

    将一个普通Java App应用改写为Java Web App xff0c 添加了spring boot starter parent之后 xff0c Run as Spring App一致报如下错 org springframework c
  • 开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历

    简介 平时经常会有一些事情忘记 xff0c 比如今天几号 xff0c 星期几 xff0c 哪天有什么事情要做 有时候写在本子上 xff0c 有时候记在微信里 xff0c 但有时候连记在哪里都忘记了 为了应对这个情况 xff0c 我制作了一款
  • 【嵌入式AI入门日记】将 AI 模型移植到 RT-Thread 上(1)

    本期我们分享主题是如何将 AI 模型部署到嵌入式系统中 xff0c 下一期将介绍如何在 RT Thread 操作系统上运行 Mnist Demo xff08 手写数字识别 xff09 嵌入式关联 AI AI落地一直是一个很红火的前景和朝阳行
  • uc/os-ii任务调度的锁定与解锁

    调度器上锁函数OSSchedlock 的功能是用于禁止任务调度 xff0c 使任务保持对CPU的控制权 调度器开锁函数OSSchedUnlock 的功能是解除对任务调度的禁止 调度器上锁和开锁的实现原理是 xff1a 对全局变量锁定嵌套计数
  • uc/os-ii信号量集

    在实际应用中 xff0c 任务常常需要与多个事件同步 xff0c 即要根据多个信号量组合作用的结果来决定任务的运行方式 C OS II为了实现多个信号量组合的功能定义了一种特殊的数据结构 信号量集 信号量集所能管理的信号量都是一些二值信号
  • 【OK6410裸机程序】点亮LED

    globl start start 硬件相关的设置 Peri port setup ldr r0 61 0x70000000 orr r0 r0 0x13 mcr p15 0 r0 c15 c2 4 64 256M 0x70000000 0
  • 通过串口实现printf和scanf函数

    转自 草根老师博客 xff08 程姚根 xff09 在做裸板开发时 xff0c 常常需要通过输出或者通过串口输入一些信息 在有操作系统机器上 xff0c 我们很少关心输入和输出的问题 因为有很多现成的库函数供我们调用 在做裸板开发时 xff
  • DDR协议解析

    DRAM内部分割成多个L Bank xff0c 每个L Bank形状相同 xff0c 彼此独立 xff0c 可以独立工作 早期的DRAM芯片内部分为2个L Bank xff0c 后来是4个 xff0c DDR3内存芯片为8个 在进行寻址时需