历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2018年10月14日 | Exynos4412裸机程序之DDR工作原理与时序(一)

2018-10-14 来源:eefocus

下面先介绍一些DDR的有关概念

DDR SDRAM 全称为 Double Data Rate SDRAM,中文名为“双倍数据流 SDRAM”。DDR SDRAM 在原有的 SDRAM的基础上改进而来。下图是DDR和SDRAM的数据传输对比图。

DDR和SDRAM的数据传输对比图

DDR和SDRAM的数据传输对比图

上图可以清楚的看到,DDR可在一个时钟周期内传送两次数据,上升沿传一次,下降沿传一次。

一、DDR的基本原理

DDR读操作时序图

DDR读操作时序图

从中可以发现它多了两个信号:CK#与DQS,CK#与正常 CK 时钟相位相反,形成差分时钟信号。而数据的传输在 CK 与 CK#的交叉点进行,可见在 CK 的上升与下降沿(此时正好是 CK#的上升沿)都有数据被触发,从而实现双倍数据传输,也就是DDR。下面来看DDR的内部结构图与SDRAM有什么不同(SDRAM的结构图可以参考前一篇文章SDRAM工作原理及时序分析)。

DDR的结构框图

DDR的结构框图

首先看上图的DDR SDRAM的结构框图,这个图重点要来说为何DDR SDRAM虽然操作的时钟频率和SDRAM一样,却能够在数据吞吐量上达到后者的两倍。也许你会不以为然,没错,DDR就是double data rata,不就是在SDR时钟单沿读写的基础上变成了DDR的时钟双沿读写嘛,速度这不就一下翻番了。很对,但是再往深入去,你思考过吗?难道DDR内部寻址时数据也是双沿读写么?非也,看上图中绿色的圈“X8/X16”,它表示DDR SDRAM外部的数据总线接口位宽,一般是8位或者16位。而它左边那个红圈里“X16/X32”则表示内部2-bit prefetch和实际存储单元间的位宽。那么从这里可以发现,实际上,DDR内部有着和SDRAM类似的结构,只不过在接口的output buffer与实际存储单元间多了一个2-bit prefetch。而这个2-bit prefetch与output buffer之间是X8/X16传输,但是它与存储单元之间却是X16/X32传输。你可以这样设想,在每次时钟的上升沿,2-bit prefetch存储着外部接口两次读写(即两个地址)的数据,而output buffer却是每个时钟的上升沿和下降沿都会读取一次数据(对应一个地址)。

理解了DDR的数据吞吐量提升的实质原因,在回头看看SDRAM的结构。如下图所示,绿色圈圈的那条连线大家可以返回上图比较一下。

SDRAM的结构框图

SDRAM的结构框图

二、DDR与SDRAM的异同

DDR SDRAM 与 SDRAM 一样,在开机时也要进行 MRS(ModeRegister Set,模式寄存器的设置),不过由于操作功能的增多,DDR SDRAM 在 MRS 之前还多了一 EMRS 阶段(Extended Mode Register Set,扩展模式寄存器设置),这个扩展模式寄存器控制着 DLL 的有效/禁止、输出驱动强度、QFC 有效/无效等。

三、差分时钟

CK#的作用,并不能理解为第二个触发时钟,而是起到触发时钟校准的作用。

由于数据是在 CK 的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就要求 CK 的上下沿间距要有精确的控制。但因为温度、电阻性能的改变等原因,CK 上下沿间距可能发生变化,此时与其反相的 CK#就起到纠正的作用(CK 上升快下降慢,CK#则是上升慢下降快)。而由于上下沿触发的原因,也使 CL=1.5 和 2.5 成为可能,并容易实现。

DDR差分时钟

DDR差分时钟

四、数据选取脉冲(DQS)

DQS 是 DDR SDRAM 中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个 DQS 信号线,它是双向的,在写入时它用来传送由内存控制器发来的 DQS 信号,读取时,则由DDR芯片生成 DQS 向内存控制器发送。完全可以说,它就是数据的同步信号。

在读取时,DQS 与数据信号同时生成(也是在 CK 与 CK#的交叉点)。而 DDR 内存中的 CL 也就是从 CAS 发出到 DQS 生成的间隔,数据真正出现在数据 I/O总线上相对于 DQS 触发的时间间隔被称为tAC。实际上,DQS 生成时,芯片内部的预取已经完毕了,tAC 是指上文结构图中灰色部分的数据输出时间,由于预取的原因,实际的数据传出可能会提前于 DQS 发生(数据提前于 DQS 传出)。

DQS 在读取时与数据同步传输,那么接收时也是以 DQS 的上下沿为准吗?不,如果以 DQS 的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的同步很难控制,只能限制在一定的时间范围内,数据在各 I/O 端口的出现时间可能有快有慢,会与 DQS 有一定的间隔,这也就是为什么要有一个 tAC 规定的原因(DDR中的tAC是在DQS触发和数据真正出现在I/O总线上的间隔时间)。而在接收方,一切必须保证同步接收,不能有 tAC 之类的偏差。这样在写入时,芯片不再自己生成 DQS,而以发送方传来的 DQS 为基准,并相应延后一定的时间,在 DQS 的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑电平保持周期,即使发送时不同步,在 DQS 上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。

DDR DQS 写入时序图

DDR DQS 写入时序图

在写入时,以DQS 的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为 DQS 的上/下沿。

五、写入延迟 

在上图DQS 写入时序图中,可以发现写入延迟已经不是0了,在发出写入命令后,DQS与写入数据要等一段时间才会送达。这个周期被称为 DQS 相对于写入命令的延迟时间(tDQSS,WRITE Command to the firstcorresponding rising edge of DQS)。

为什么要有这样的延迟设计呢?原因也在于同步,毕竟一个时钟周期两次传送,需要很高的控制精度,它必须要等接收方做好充分的准备才行。tDQSS 是 DDR 内存写入操作的一个重要参数,太短的话恐怕接受有误,太长则会造成总线空闲。tDQSS 最短不能小于 0.75 个时钟周期,最长不能超过 1.25 个时钟周期。

正常情况下,tDQSS 是一个时钟周期,但写入时接受方的时钟只用来控制命令信号的同步,而数据的接受则完全依靠 DQS 进行同步,所以 DQS 与时钟不同步也无所谓。不过,tDQSS产生了一个不利影响— — 读后写操作延迟的增加,如果 CL=2.5,还要在 tDQSS 基础上加入半个时钟周期,因为命令都要在 CK的上升沿发出。下图中,当 CL=2.5 时,读后写的延迟将为 tDQSS+0.5 个时钟周期(图中 BL=2)。

DDR读取时序图

DDR读取时序图

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

六、突发长度

在 DDR SDRAM 中,突发长度只有 2、4、8 三种选择,没有了随机存取的操作(突发长度为 1)和全页式突发。这是为什么呢?因为 L-Bank一次就存取两倍于芯片位宽的数据,所以芯片至少也要进行两次传输才可以,否则内部多出来的数据怎么处理?但是,突发长度的定义也与 SDRAM 的不一样了,它不再指所连续寻址的存储单元数量,而是指连续的传输周期数,每次是一个芯片位宽的数据。

七、延迟锁定回路(DLL) 

DDR SDRAM 对时钟的精确性有着很高的要求,而 DDR SDRAM 有两个时钟,一个是外部的总线时钟,一个是内部的工作时钟,在理论上 DDR SDRAM 这两个时钟应该是同步的,但由于种种原因,如温度、电压波动而产生延迟使两者很难同步,更何况时钟频率本身也有不稳定的情况(SDRAM 也有内部时钟,不过因为它的工作/传输频率较低,所以内外同步问题并不突出)。

DDR SDRAM 的 tAC 就是因为内部时钟与外部时钟有偏差而引起的,它很可能造成因数据不同步而产生错误的恶果。实际上,不同步就是一种正/负延迟,如果延迟不可避免,那么若是设定一个延迟值,如一个时钟周期,那么内外时钟的上升与下降沿还是同步的。鉴于外部时钟周期也不会绝对统一,所以需要根据外部时钟动态修正内部时钟的延迟来实现与外部时钟的同步,这就是 DLL 的任务。

DLL 不同于主板上的 PLL,它不涉及频率与电压转换,而是生成一个延迟量给内部时钟。目前 DLL 有两种实现方法,一个是时钟频率测量法(CFM,Clock Frequency Measurement),一个是时钟比较法(CC,Clock Comparator)。

CFM 是测量外部时钟的频率周期,然后以此周期为延迟值控制内部时钟,这样内外时钟正好就相差了一个时钟周期,从而实现同步。DLL 就这样反复测量反复控制延迟值,使内部时钟与外部时钟保持同步。

CFM 式 DLL 工作示意图

CFM 式 DLL 工作示意图

CC的方法则是比较内外部时钟的长短,如果内部时钟周期短了,就将所少的延迟加到下一个内部时钟周期里,然后再与外部时钟做比较,若是内部时钟周期长了,就将多出的延迟从下一个内部时钟中刨除,如此往复,最终使内外时钟同步。

CC 式 DLL 工作示意图

CC 式 DLL 工作示意图

CFM 与 CC 各有优缺点,CFM 的校正速度快,仅用两个时钟周期,但容易受到噪音干扰,并且如果测量失误,则内部的延迟就永远错下去了。CC 的优点则是更稳定可靠,如果比较失败,延迟受影响的只是一个数据(而且不会太严重),不会涉及到后面的延迟修正,但它的修正时间要比 CFM 长。DLL 功能在 DDR SDRAM 中可以被禁止,但仅限于除错与评估操作,正常工作状态是自动有效的。


推荐阅读

史海拾趣

艾迈斯(AMASS)公司的发展小趣事

艾迈斯(AMASS)公司创立之初,便专注于智能设备动力连接器领域。面对市场的激烈竞争和技术的不断更新,公司创始人凭借深厚的行业经验和前瞻性的眼光,带领团队攻克了一个又一个技术难关。他们深入市场调研,精准把握消费者需求,成功推出了一系列具有竞争力的连接器产品。这些产品不仅性能稳定、质量可靠,而且具有极高的性价比,迅速在市场上赢得了良好的口碑。

Hi-G Relays公司的发展小趣事

随着电子行业的快速发展,艾迈斯(AMASS)公司意识到只有不断创新才能保持领先地位。为此,公司加大了对研发的投入,引进了一批高素质的研发人才,并建立了完善的研发体系。经过多年的努力,艾迈斯成功研发出了多款具有创新性的连接器产品,其中包括高性能、高安全性的智能设备动力连接器。这些产品的推出不仅提升了公司的技术实力和市场竞争力,也为整个行业的发展带来了积极的影响。

Headland Technology Product Group公司的发展小趣事

进入21世纪后,随着电子技术的飞速发展,HBControls意识到只有不断创新才能保持竞争力。公司加大了研发投入,成立了专门的研发团队,专注于新型继电器产品的研发。经过多次试验和改进,HBControls成功推出了HD-4850系列高性能继电器,该系列产品以其高可靠性、长寿命和低功耗等特点迅速赢得了市场的青睐。这一创新不仅提升了公司的市场份额,也进一步巩固了HBControls在继电器领域的领先地位。

Facon公司的发展小趣事

在2010年代初,随着科技的飞速发展,电子行业正迎来新一轮的创新浪潮。这时,一群充满激情和梦想的工程师在硅谷创立了Facon公司,他们怀揣着改变世界的愿景,立志在电子行业中留下自己的印记。初始阶段,Facon主要专注于研发高性能的半导体芯片,为智能手机、平板电脑等电子产品提供强大的计算能力。通过不懈努力和持续创新,Facon逐渐在市场中树立了良好的口碑。

AIRPAX公司的发展小趣事

近年来,随着数字化技术的快速发展,AIRPAX也开始积极探索数字化转型之路。公司加大了对智能化、自动化生产线的投入,提高了生产效率和质量。同时,AIRPAX还积极利用大数据、云计算等先进技术,对客户需求和市场趋势进行深入分析,以更好地满足客户需求并推动创新发展。

这些故事只是AIRPAX发展历程中的一部分,它们展示了AIRPAX如何在技术、市场、环保和创新等多个方面取得了显著成就。然而,随着电子行业的不断发展和竞争的加剧,AIRPAX仍需继续努力,以保持其在电气保护领域的领先地位。

Galaxy Microelectronics公司的发展小趣事

江苏飞翼智能科技有限公司成立于2023年,该公司迅速将无人机技术与大数据技术相结合,实现了从传统无人机表演企业向无人机应用型企业的转型。通过自主研发和技术创新,飞翼智能的无人机在地理测绘、土方开挖计算、三维建模等领域展现出强大实力。例如,在地理测绘领域,无人机通过镜头采集地面照片,结合后期处理,能够高效完成数据测绘,大大降低了人工用量,提高了工作效率。这一技术的成功应用,不仅为公司赢得了市场认可,也推动了无人机技术的智能化发展。

问答坊 | AI 解惑

短距离无线通信技术zigbee协议栈c源码

大家可以下过去作为一个参考,还是不错的~~…

查看全部问答>

家电“吉祥三宝”遭遇发展天花板

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 几年,随着人民生活水平不断提高,新兴产品微波炉、电磁炉、豆浆机三大系列小家电,取得飞越式发展,堪称家电行业的“吉祥三宝”。但在经过前期的膨胀式发展后,未来也许会不可避免地遇到发展 ...…

查看全部问答>

数码管

多位数码管的引脚关系,什么公共端之类的,还有就是那个连接一个hc573的芯片是什么意思~~…

查看全部问答>

STM32的I2C设计的很不合理!

大家先反映反映自己的看法。 从与 ATMEL ARM7 I2C、 NXP ARM7 I2C 比较的结果看。…

查看全部问答>

【求助】[B]请问为什么仿真器下装程序时出现Connot load program because flash Emulation Toll not found

请问为什么仿真器下装程序时出现Connot load program because flash Emulation Toll not found,发现知识等不亮,芯片位置我已经放的正确了,请问这有可能是什么原因造成的,恳请高手解答!!…

查看全部问答>

动态显示屏

用g2553做的动态显示屏,用12864做的,外加温度传感器18b20和时钟芯片1302,大家有兴趣的看看,帮小弟完善完善…

查看全部问答>

DSP-Sitara课程第二讲边看边做笔记

今天下午主要看到第二讲,感觉还是挺给力的。。。下面就是我的学习笔记,边听边记录。。。哈哈哈(有什么不对的地方,还望指出) 1.我们的任务-移植U-boot       a.获取板子原理图       b.移植SDK到 ...…

查看全部问答>

通用最小系统

用用仿真头做最小系统,其实连不了几条线,有几个好处: io随意分配; 虽然仿真头有点贵但是没有比这个支持的芯片更多的了; 烧坏芯片的损失很小; 焊接前刷写程序,省去板上下载线,另外特殊的加密方式必须用它; [ 本帖最后由 huo_hu 于 2013-4-17 15: ...…

查看全部问答>

周立功usbcan 的作用是什么?

周立功usbcan 盒子  的作用是什么啊???我  手上有个周立功usbcan 盒   我想通过Multi CAN  来控制单片机的LED灯     是不是要用这个CAN盒   将单片机和  PC ...…

查看全部问答>