从SDRAM到DDR的变化

news2024/11/19 18:41:12

1、结构概述

  在此之前,曾经通过一篇文章从SDRAM的内部芯片框图出发,分析过SDRAM的功能实现,本文开始继续分析DDR、DDR2、DDR3的芯片内部框图,从而认识他们各自的区别,便于后续使用。

  下图时镁光的128Mb的SDRAM内存芯片,前文已经对该框图做了详细讲解。

在这里插入图片描述

图1 SDRAM框图

  在计算机运算速度发展的过程中,需要提高内存的读写速率,只能通过提高时钟频率来提高SDRAM的读写速率。由于温度等因素的影响,SDRAM的内核时钟频率受限,无法进一步提升。SDRAM只在时钟上升沿传输数据,为了提高数据传输速率,DDR的IO端口在时钟的上升沿和下降沿都传输数据,而内核还是只在时钟上升沿传输数据。为了匹配内核(上升沿传输)和IO端口(双沿传输)数据传输的速率,内核的数据位宽变为IO数据位宽的2倍,这就是DDR器件的设计原理。

  下图是镁光DDR芯片的内部框图,型号为MT46V32M16P-6T。该芯片数据位宽也是16位,容量为512Mb,忽略容量大小,两者的区别在于红框部分,DDR采用差分时钟信号。

在这里插入图片描述

图2 DDR内部结构框图

  在数据写入过程中,接收器(RCVRS)接收到的数据(DQ0~15)和数据掩膜信号(LDM/UDM)被暂存于接收寄存器中。该寄存器的功能类似于IDDR,它将DQS双沿传输的16位数据转换为DQS单沿传输的32位数据。同时,接收寄存器将2位的DM信号转换为4位MASK信号。

  随后,这32位的DQS单沿数据和4位的MASK信号被送入写FIFO。写FIFO的作用是处理异步时钟,将DQS时钟下的DATA和MASK信号同步到内核时钟CK下,确保数据在正确的时序下被写入内部存储阵列。

  注意输入寄存器和写FIFO的输入端都是把DQS作为数据的时钟信号,因为该信号的边沿与写入数据DQ和数据掩膜信号DM的中心对齐。

  此处可能会有人有疑问,DQ不应该是在CK的双沿下传输的,为什么这里是在DQS的双沿采集DQ的数据?

  DQS是数据选通信号,在读数据时,DQS的边沿与DQ的边沿对齐,在写数据时,DQS的边沿与写数据DQ的中心对齐。所以写数据的时候在DQS的边沿采集DQ的数据就比较稳定。

  在读取时,L-Bank 在内部时钟信号的触发下,一次传送 32位的数据给读取锁存器(READ LATCH),再分成两路16位数据传给数据选择器(MUX),数据选择器(MUX)选择其中一路,然后由发送器(DQS GENERATCR)在DQS的控制下在外部时钟上升、下降沿分两次传输16位的数据给主控芯片。

  如果时钟频率为100MHz,那么在I/O端口处,由于在时钟上升、下降沿传输数据,那么传输频率就是200MHz。 现在基本明白DDR SDRAM的工作原理了吧,这种内部存储单元容量(芯片内部总线位宽)= 2×芯片位宽(芯片I/O总线位宽)的设计,就是所谓的两位预取(2-bit Prefetch),有的公司称之为 2-n Prefetch(n代表芯片位宽)。

  上述框图其实还有一个区别,SDRAM的框图中,12根地址线作为模式寄存器的数据信号,而DDR框图中,却有15根线连接到模式寄存器,其中13根是地址线,2根bank地址线,这是因为DDR除了模式寄存器(MR),还增加了一个扩展模式寄存器(EMR),配置时bank地址线作为MR和EMR的地址线,区分A12~A0的数据是配置MR还是EMR的数据。

2、功能区别

  DDR SDRAM和SDRAM的很多功能和指令都是一样,比如激活指令,自动预充电等指令,但是功能也有一些区别,本文不对两者相同的地方做讲解了,仅对不同的地方进行讲解。

2.1、时钟

  SDRAM采用单个时钟信号,而DDR采用差分时钟,CK#起到触发时钟校准的作用。由于数据在时钟CK的上升、下降沿传输,传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求CK的上升沿与下降沿的间距要精确控制。

  由于温度、电阻性能的改变等影响,CK上升沿与下降沿的间距可能发生变化,此时与其反相的CK#就起到纠正的作用(CK上升快下降慢,CK#则是上升慢下降快)。

在这里插入图片描述

图3 时钟信号

  在CK与CK#交叉时采集数据就能解决上述间距变化问题,这就是CK#的纠正思路。

  由于数据在时钟的上升沿和下降沿传输,CL可以取1.5和2.5。数据DQ相关信号在时钟的双沿传输,而指令相关信号依旧是在时钟上升沿传输。

2.2、模式寄存器和初始化时序

  DDR与SDRAM一样,在开机时需要进行MRS(模式寄存器设置),因为DDR的操作功能增加,相比SDRAM多了一个EMRS阶段(扩展模式寄存器设置),这个扩展模式寄存器控制着DLL的有效、输出驱动强度、QFC有效等。

  下图是SDRAM的模式寄存器,各位的含义前文已经做过详细讲解,此处就不再赘述。

在这里插入图片描述

图4 SDRAM模式寄存器

  下图是DDR的模式寄存器,模式寄存器的内容相对SDRAM也有一些变化,突发长度不支持全页突发了,CL的长度也发生了一些变化。

  DDR中存在MRS和EMRS,那如何分辨这两个寄存器的呢?

  在配置时,可以理解为在配置模式寄存器时,bank地址线就是模式寄存器的地址线。当BA1~BA0为00时,此时地址线An~A0的内容就是配置模式寄存器,为01时配置扩展模式寄存器。

在这里插入图片描述

图5 DDR模式寄存器

  下图是该芯片的扩展模式寄存器,包含DLL的启用/禁止,QFC的启用/禁止,其中DLL的作用在后文会讲解。

在这里插入图片描述

图6 DDR扩展模式寄存器

  QFC是指FET Switch Controllar (FET开关控制),低电平有效。用于借助外部FET开关控制内存模组上芯片在没有读、写操作时进入隔离状态,以确保芯片间不受相互干扰。

  QFC是一个特选功能,厂商在接到芯片买家的指定要求后,才在芯片中加入此功能,并且需要在模组装配时进行相关的设计改动(如增加VddQ的上拉电阻),所以市场上很少见到支持这一功能的DDR。在JEDEC最新发布的DDR规范中,已经不在有QFC的定义,这颗芯片的手册中也表示不支持QFC功能,作为了解即可。

  既然DDR增加了扩展模式寄存器,那相应的初始化时序也相应的有所改变。相比SDRAM多了一个配置扩展模式寄存器的状态,初始化时序图如下所示,当上电电源稳定后,经过200us延时后把时钟使能,然后对所有bank进行预充电,之后依次配置扩展模式寄存器、模式寄存器,之后再次预充电,最后进行两次自刷新操作,就可以进入正常工作状态了。

在这里插入图片描述

图7 DDR初始化时序

2.3、突发长度与写入掩码

  由前文知SDRAM突发读写的长度有1、2、4、8、全页,而DDR的突发长度只有2、4、8。注意SDRAM突发长度是指连续寻址的存储单元数量,而DDR的突发长度是指连续的传输数据个数,每个数据宽度就是芯片IO的数据宽度。

  因为DDR每次存储两倍芯片IO宽度的数据,芯片每次至少传输两次数据,所以不存在长度为1的读写操作。全页突发在图像领域可能会比较常用,但是在PC内存中一般不会被使用,毕竟DDR当时主要被用作PC内存,所以被砍掉了。

  DDR在突发写入数据时,如果其中有不想存入的数据,可以像SDRAM一样使用掩膜信号DM进行屏蔽。通过下图知,掩膜信号DM与数据信号DQ同时发出,DDR芯片在DQS的上升沿和下降沿来检测DM的状态,如果DM为高电平,则此时的数据DQ就被丢弃了,不会写入DDR内部。

在这里插入图片描述

图8 DDR写时序

  SDRAM对于读操作也是有掩膜信号的,但是DDR读操作就没有掩膜功能了,原因在于需要读哪个数据是由主控芯片控制的,如果不想读哪个地址的数据,完全可以主控芯片自己控制。

2.4、 延迟锁定回路(Delay Locked Loop)

  这部分的功能讲解来自“电脑高手”的一篇文章,鉴于是别人的文章内容,图片中的LOGO保留,讲的很简单,也推翻了很多网络上对DDR中DLL的错误理解。

  DDR对时钟精确性要求极高,DDR有两个时钟:外部总线时钟和内部工作时钟。理想情况下,这两个时钟应保持同步,但由于温度和电压波动等因素,实际中很难实现完美的同步。此外,时钟频率本身的不稳定性也增加了同步的难度。SDRAM也有内部时钟,由于SDRAM工作频率较低,其内部时钟与外部时钟的同步问题不那么显著。

  在实际应用中,时钟不同步可能表现为正向或负向的延迟。为应对这种情况,可以设定一个固定的延迟值,例如一个时钟周期,那么内外时钟的上升沿和下降沿仍然保持同步。由于外部时钟周期并非绝对一致,DDR需要动态调整内部时钟的延迟,以匹配外部时钟,这一过程由延迟锁定环路(DLL)负责,它能够实时监测并调整内部时钟,确保与外部时钟的精确同步。

  DLL不涉及频率与电压转换,而是生成一个延迟量给内部时钟。 目前DLL有时钟频率测量法(CFM)和时钟比较法(CC)两种实现方法。

  CFM(Clock Frequency Monitor)负责监测外部时钟的频率,并据此调整内部时钟的延迟,确保内外时钟之间仅相差一个周期,实现同步。DLL通过不断测量和调整延迟值,动态地维持内部时钟与外部时钟的精确同步。CFM的校正速度快,仅用两个时钟周期,但容易受到噪音干扰,如果测量失误,则内部的延迟就会永远错下去。

在这里插入图片描述

图9 时钟频率测量法

  CC(Clock Correction)方法通过比较内外时钟周期的差异来调整内部时钟。当检测到内部时钟周期短于外部时钟时,会在下一个内部时钟周期中补充缺失的延迟,反之则减少多余的延迟。这一过程不断循环,直至内外时钟达到同步。

  CC的优势在于其稳定性和可靠性,即使在比较过程中出现偏差,也仅影响单个数据点,不会对后续的延迟修正产生连锁反应。然而,CC的调整过程相对较慢,需要更多时间来完成同步。

在这里插入图片描述

图10 时钟比较法

  DDR在排错与评估操作时中可以禁用DLL功能,正常工作状态是自动有效的。DLL的功能很简单,就是通过延时同步DDR内部和外部时钟。

2.5、数据选通脉冲(DQS)

  DDR SDRAM芯片增加了DQS选通脉冲信号,该信号在SDRAM中是不存在的。每个字节的数据对应一个DQS信号,对于16位数据线的芯片来说,每次传输两个字节数据,所以就有LDQS和UDQS信号。主要用来在一个时钟周期内准确区分出每个传输周期,并便于接收方准确接收数据。

  DQS是双向信号,与DQ数据信号双向同步。从图2的框图分析知,在读取DDR数据时,DQS与数据信号同时生成(在CK与CK#的交叉点)。而DDR中的CL指从CAS发出到DQS生成的间隔,如下图所示,数据真正出现在数据I/O总线上相对于DQS触发的时间间隔被称为tAC。注意,DDR的tAC与SDRAM的tAC含义不同。

在这里插入图片描述

图11 DDR读时序

  实际上,DQS生成时,芯片内部的预取已经完毕了,tAC指图2中红框部分的数据输出时间,由于预取的原因,实际的数据传出可能会提前于DQS产生(数据提前于DQS传出)。

  如下图所示,向DDR写入数据时,DQS的边沿与DQ的中部对齐,此时数据线上的数据会比较稳定,DDR可以在DQS的边沿将DQ的数据存储。

在这里插入图片描述

图12 DDR写时序

2.6、写入延迟(tDQSS)

  下图是SDRAM芯片的写时序,发出写数据和写命令同时出现在数据线上,没有延时。

在这里插入图片描述

图13 SDRAM写时序

  在看图12中DDR的写入时序,在发出写命令之后需要经过tDQSS,DQS、写入数据DQ、数据掩膜才会出现,这段时间被称为DQS相对写入命令的延时时间(tDQSS, WRITE Command to the first corresponding rising edge of DQS)。

  这个延迟设计的作用也是在于同步,一个时钟周期传两次数据,控制精度要求较高,必须让接收方做好充分准备才能传输数据。tDQSS是DDR写入操作的一个重要参数,太短可能造成接受错误,太长则会造成总线空闲。tDQSS 大于等于0.75个时钟周期,小于等于1.25个时钟周期。

  经过上面的延时,芯片内部的时钟很可能与DQS信号不同步了。一般情况下,tDQSS是一个时钟周期,DDR的时钟信号一般只用来同步控制命令。在前文分析过写入的数据DQ完全通过DQS进行同步,后面通过一个写FIFO将数据从DQS下同步到时钟CK下,所以DQS与CK不同步对数据的写入是没有影响的。

  注意数据在时钟的双沿传输,但是指令指令在时钟的上升沿传输,因此当CL为2.5时,读操作完成后,下一个指令需要延迟半个时钟周期后才能发出。如下图所示,读后写操作延迟的增加,如果CL=2.5,还要在tDQSS基础上加入半个时钟周期。

在这里插入图片描述

图13 DDR读写时序

  另外,DD内存的数据真正写入由于要经过更多步骤的处理,写入时间(tWR)也明显延长,一般在3个时钟周期左右,在DDR-Ⅱ规范中将tWR列为模式寄存器的一项。

3、总结

经过上面的讲述,对DDR与SDRAM的区别稍微总结一下:

  1. 由于DDR采用双沿传输数据,每个时钟周期传输2次IO宽度的数据,而SDRAM只在上升沿传输数据,每个时钟只传输一次数据。

  2. 由于DDR在双沿传输数据,对时钟精确度的要求较高,采用差分时钟,时钟不支持挂起操作。

  3. DDR的数据IO在双沿传输数据,而内部数据只在上升沿传输,就需要将IO双沿传输的数据转换为单沿传输的数据,所以内部传输数据位宽是IO传输数据位宽的2倍,即两位预取。

  4. DDR不支持单次突发和全页突发传输,在读取数据时也不支持数据掩膜功能。

  5. 由于采用双沿传输,所以读潜伏期支持2.5这种两个半的时钟周期延时。SDRAM在写入数据时没有延时,写命令和写数据同时有效,而DDR发出写命令后,需要经过tDQSS延时后,数据DQ、数据掩膜DM、数据选通信号DQS才会有效。

  6. DDR采用双沿传输数据,增加了数据选通信号DQS,读数据时DQS边沿与读出数据DQ边沿对齐,写入数据时,DQS的边沿与写入数据DQ的中心对齐,DDR可以在DQS的边沿采集数据DQ,前文详细分析过写入数据的过程。

  7. 延时锁存回路(DLL),由于DDR对时钟精度要求较高,增加了DLL来调节内部时钟与外部时钟延时,确保两个时钟同步。

  8. 另外SDRAM采用3.3V的LVTTL电平,而DDR采用2.5V的SSTL_2电平,DDR的功耗更低。SDRAM采用TSOP-II封装,而DDR有TSOP-II封装和BGA封装两种。

  本文主要参考DDR与SDRAM的手册以及电脑高手的一篇文章,在使用过IDDR之后就会发现双沿传输数据转换为单沿传输数据其实也比较简单, 分析数据的读写也就不难了。

  FPGA使用DDR3这些器件来说,可以很简单,直接调用DDR IP即可,连DDR怎么工作都可以不用了解,只需要写一下IP的用户接口时序即可。但如果DDR的核心板是自家公司设计的,下载程序之后就是不允许,如果对DDR如何工作都不了解,如何确定问题出在FPGA还是硬件?

  DDR最初是作为PC的内存出现,所以了解很多内容要结合一下PC端,比如全页突发为什么会被砍掉等。

  本文只对DDR与SDRAM的区别做了讲解,相同部分就不做介绍了,毕竟内容挺多的,DDR就把SDRAM的单沿传输变为双沿传输就引发了这么多改变。下一节继续分析DDR如何升级成DDR2。

  您的支持是我更新的最大动力!将持续更新工程,如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1469516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大学生多媒体课程学习网站thinkphp+vue

开发语言:php 后端框架:Thinkphp 前端框架:vue.js 服务器:apache 数据库:mysql 运行环境:phpstudy/wamp/xammp等开发背景 (一) 研究课程的提出 (二)学习网站的分类与界定…

RabbitMq:RabbitMq 主从镜像模式②

一、模式思想 所有的技术设计思想,基本都在两点上下功夫:1. 生产力上 2. 稳定上 二、集群模式 今天又有人问起来rabbitmq的高可用方式,因为和常见的主从模式有点区别,所以就记录一下。 rabbitmq集群的镜像队列提供了更高级的主从…

数字化转型导师坚鹏:数据安全法解读与政府数字化转型

网络安全法、数据安全法、个人信息保护法解读与政府数字化转型 课程背景: 很多机构存在以下问题: 不清楚网络安全法、数据安全法、个人信息保护法立法背景? 不知道如何理解网络安全法、数据安全法、个人信息保护法政策? 不…

LeetCode 第一题: 两数之和

文章目录 第一题: 两数之和题目描述示例 解题思路Go语言实现 - 一遍哈希表法C实现算法分析 排序和双指针法Go语言实现 - 排序和双指针法C算法分析 暴力法Go语言实现 - 暴力法C算法分析 二分搜索法Go语言实现 - 二分搜索法C算法分析 第一题: 两数之和 ‍ 题目描述 给定一个整…

【统计分析数学模型】聚类分析: 系统聚类法

【统计分析数学模型】聚类分析: 系统聚类法 一、聚类分析1. 基本原理2. 距离的度量(1)变量的测量尺度(2)距离(3)R语言计算距离 三、聚类方法1. 系统聚类法2. K均值法 三、示例1. Q型聚类&#x…

变量与数据类型(详解版)

新年的第一篇博客,我也开始步入了对于java的学习,感觉c语言还是有很多的不懂,还是会继续学习c语言的,毕竟还是练习太少了! 话不多说,我们直接开整! 1. 字面常量 如上图中的输出语句&#xff0…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试(失败)2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容,飞书文档地址在https://deepwisdom.…

Java内部类的使用与应用

内部类的使用与应用 1. 内部类用法 普通内部类: 实例化内部类对象需要先实例化外部类对象,然后再通过OuterClassName.new InnerClassName()方式实例化内部类。内部类对象在创建后会与外部类对象秘密链接,因此无法独立于外部类创建内部类对象…

智慧农业—农业资源数据中心

综述 农业资源数据中心建设的目标是将大量的农业生产信息通过采集、清洗、核准后实现统一存储、统一管理,实现数据的共享和集中管理,保障数据的安全,也为数据的挖掘分析提供决策分析创造条件。 农业资源数据中心的数据架构如下图所示: (1)农业专家数据库。主要收录国内、…

手撕Transformer(二)| Transformer掩码机制的两个功能,三个位置的解析及其代码

文章目录 1 掩码的两个功能1.1 功能1 输入掩码,统一长度1.2 功能2 遮挡未预测信息 2 掩码存在的三个位置3 代码实现 Transformer的掩码机制是非常重要的 三个位置,两个功能 1 掩码的两个功能 1.1 功能1 输入掩码,统一长度 实现不同的长度句…

使用C++和SFML库创建2D游戏

FML(Simple and Fast Multimedia Library)是一个跨平台的C库,用于开发2D游戏和多媒体应用程序。它提供了许多功能,包括图形、声音、网络、窗口管理和事件处理等。 ———————————————不怎么完美的分割线——————…

使用命令符用cd切换不了

bug:cd 切换不进去 解决办法: 在cd后面加 /d

(HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕

一、电路接法 电路接法参照江科大视频。 二、相关代码及文件 说明:代码采用hal库,通过修改江科大代码实现。仅OLED.c文件关于引脚定义作了hal库修改,并将宏定义OLED_W_SCL(x)、OLED_W_SDA(x)作了相关修改。 1、OLED.c void OLED_I2C_Init(voi…

32单片机基础:旋转编码器计次

接线图如上图所示。 我们初始化一下PB0和PB1两个GPIO口外设中断,当然,这里只初始化一个外部中断也能完成功能的对于编码器而言,下图所示为正转的波形。如果把一相的下降沿用作触发中断,在中断时刻读取另一相的电平,正…

普中51单片机学习(红外通信)

红外通信 红外线系统的组成 外线遥控器已被广泛使用在各种类型的家电产品上,它的出现给使用电器提供了很多的便利。红外线系统一般由红外发射装置和红外接收设备两大部分组成。红外发射装置又可由键盘电路、红外编码芯片、电源和红外发射电路组成。红外接收设备可由…

Spring Boot中的@Scheduled注解:定时任务的原理与实现

1. 前言 本文将详细探讨Spring Boot中Scheduled注解的使用,包括其原理、实现流程、步骤和代码示例。通过本文,读者将能够了解如何在Spring Boot应用中轻松创建和管理定时任务。 2. Scheduled注解简介 在Spring框架中,Scheduled注解用于标记…

面试经典150题【21-30】

文章目录 面试经典150题【21-30】6.Z字形变换28.找出字符串中第一个匹配项的下标68.文本左右对齐392.判断子序列167.两数之和11.盛最多水的容器15.三数之和209.长度最小的子数组3.无重复字符的最长子串30.串联所有单词的子串 面试经典150题【21-30】 6.Z字形变换 对于“LEETC…

五种多目标优化算法(MOBA、NSWOA、MOJS、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤: 1. 定义问题:首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数,这些目标函数可能存在冲突,需要在不同目标之间进…

udp服务器【Linux网络编程】

目录 一、UDP服务器 1、创建套接字 2、绑定套接字 3、运行 1)读取数据 2)发送数据 二、UDP客户端 创建套接字: 客户端不用手动bind 收发数据 处理消息和网络通信解耦 三、应用场景 1、服务端执行命令 2、Windows上的客户端 3…

DiceCTF 2024 -- pwn

baby-talk 题目给了 Dockerfile,但由于笔者 docker 环境存在问题启动不起来,所以这里用虚拟机环境做了(没错,由于不知道远程 glibc 版本,所以笔者远程也没打通)笔者本地环境为 glibc 2.31-0ubuntu9.9。然后…