0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以SDR SDRAM 为例,DRAM Device 与 Host 端的接口描述

西西 来源:蜗窝科技 作者:codingbelief 2020-09-22 15:34 次阅读

在前面的文章中,介绍了 DRAM Cell 和 Memory Array。 本文则以 SDR SDRAM 为例,描述 DRAM Device 与 Host 端的接口,以及其内部的其他模块,包括 Control Logic、IO、Row & Column Decoder 等。

1. SDRAM Interface

SDR SDRAM 是 DRAM 的一种,它与 Host 端的硬件接口如下图所示:

总线上各个信号的描述如下表所示:

Symbol Type Description
CLK Input 从 Host 端输出的同步时钟信号
CKE Input 用于指示 CLK 信号是否有效,SDRAM 会根据此信号进入或者退出 Power down、Self-refresh 等模式
CS# Input Chip Select 信号
CAS# Input Column Address Strobe,列地址选通信
RAS# Input Row Address Strobe, 行地址选通信号
WE# Input Write Enable,写使能信号
DQML Input 当进行写数据时,如果该 DQML 为高,那么 DQ[7:0] 的数据会被忽略,不写入到 DRAM
DQMH Input 当进行写数据时,如果该 DQMH 为高,那么 DQ[15:8] 的数据会被忽略,不写入到 DRAM
BA[1:0] Input Bank Address,用于选择操作的 Memory Bank
A[12:0] Input Address 总线,用于传输行列地址
DQ[15:0] I/O Data 总线,用于传输读写的数据内容

1.1 SDRAM Operations

Host 与 SDRAM 之间的交互都是由 Host 以 Command 的形式发起的。一个 Command 由多个信号组合而成,下面表格中描述了主要的 Command。

Command CS# RAS# CAS# WE# DQM BA[1:0] & A[12:0] DQ[15:0]
Active L L H H X Bank & Row X
Read L H L H L/H Bank & Col X
Write L H L L L/H Bank & Col Valid
Precharge L L H L X Code X
Auto-refresh L L L H X X X
Self-refresh L L L H X X X
Load Mode Register L L L L X REG Value X

1.1.1 Active

Active Command 会通过 BA[1:0] 和 A[12:0] 信号,选中指定 Bank 中的一个 Row,并打开该 Row 的 wordline。在进行 Read 或者 Write 前,都需要先执行 Active Command。

1.1.2 Read

Read Command 将通过 A[12:0] 信号,发送需要读取的 Column 的地址给 SDRAM。然后 SDRAM 再将 Active Command 所选中的 Row 中,将对应 Column 的数据通过 DQ[15:0] 发送给 Host。

Host 端发送 Read Command,到 SDRAM 将数据发送到总线上的需要的时钟周期个数定义为 CL。

1.1.3 Write

Write Command 将通过 A[12:0] 信号,发送需要写入的 Column 的地址给 SDRAM,同时通过 DQ[15:0] 将待写入的数据发送给 SDRAM。然后 SDRAM 将数据写入到 Actived Row 的指定 Column 中。

SDRAM 接收到最后一个数据到完成数据写入到 Memory 的时间定义为 tWR (Write Recovery)。

1.1.4 Precharge

在进行下一次的 Read 或者 Write 操作前,必须要先执行 Precharge 操作。(具体的细节可以参考DRAM Storage Cell章节)

Precharge 操作是以 Bank 为单位进行的,可以单独对某一个 Bank 进行,也可以一次对所有 Bank 进行。如果 A10 为高,那么 SDRAM 进行 All Bank Precharge 操作,如果 A10 为低,那么 SDRAM 根据 BA[1:0] 的值,对指定的 Bank 进行 Precharge 操作。

SDRAM 完成 Precharge 操作需要的时间定义为 tPR。

1.1.5 Auto-Refresh

DRAM 的 Storage Cell 中的电荷会随着时间慢慢减少,为了保证其存储的信息不丢失,需要周期性的对其进行刷新操作。

SDRAM 的刷新是按 Row 进行,标准中定义了在一个刷新周期内(常温下 64ms,高温下 32ms)需要完成一次所有 Row 的刷新操作。

为了简化 SDRAM Controller 的设计,SDRAM 标准定义了 Auto-Refresh 机制,该机制要求 SDRAM Controller 在一个刷新周期内,发送 8192 个 Auto-Refresh Command,即 AR, 给 SDRAM。

SDRAM 每收到一个 AR,就进行 n 个 Row 的刷新操作,其中,n = 总的 Row 数量 / 8192 。
此外,SDRAM 内部维护一个刷新计数器,每完成一次刷新操作,就将计数器更新为下一次需要进行刷新操作的 Row。

一般情况下,SDRAM Controller 会周期性的发送 AR,每两个 AR 直接的时间间隔定义为 tREFI = 64ms / 8192 = 7.8 us。

SDRAM 完成一次刷新操作所需要的时间定义为 tRFC, 这个时间会随着 SDRAM Row 的数量的增加而变大。

由于 AR 会占用总线,阻塞正常的数据请求,同时 SDRAM 在执行 refresh 操作是很费电,所以在 SDRAM 的标准中,还提供了一些优化的措施,例如 DRAM Controller 可以最多延时 8 个 tREFI 后,再一起把 8 个 AR 同时发出。

更多相关的优化可以参考《大容量 DRAM 的刷新开销问题及优化技术综述》文中的描述。

1.1.6 Self-Refresh

Host 还可以让 SDRAM 进入 Self-Refresh 模式,降低功耗。在该模式下,Host 不能对 SDRAM 进行读写操作,SDRAM 内部自行进行刷新操作保证数据的完整。通常在设备进入待机状态时,Host 会让 SDRAM 进入 Self-Refresh 模式,以节省功耗。

更多各个 Command 相关的细节,可以参考后续的DRAM Timing章节。

1.2 Address Mapping

SDRAM Controller 的主要功能之一是将 CPU 对指定物理地址的内存访问操作,转换为 SDRAM 读写时序,完成数据的传输。
在实际的产品中,通常需要考虑 CPU 中的物理地址到 SDRAM 的 Bank、Row 和 Column 地址映射。下图是一个 32 位物理地址映射的一个例子:

2. SDRAM 内部结构

如图所示,DRAM Device 内部主要有 Control Logic、Memory Array、Decoders、Reflash Counter 等模块。在后续的小节中,将逐一介绍各个模块的主要功能。

2.1 Control Logic

Control Logic 的主要功能是解析 SDRAM Controller 发出的 Command,然后根据具体的 Command 做具体内部模块的控制,例如:选中指定的 Bank、触发 refresh 等的操作。

Control Logic 包含了 1 个或者多个 Mode Register。该 Register 中包含了时序、数据模式等的配置,更多的细节会在DRAM Timing章节进行描述。

2.2Row & Column Decoder

Row Decoder 的主要功能是将 Active Command 所带的 Row Address 映射到具体的 wordline,最终打开指定的 Row。同样 Column Decoder 则是把 Column Address 映射到具体的 csl,最终选中特定的 Column。

2.3 Memory Array

Memory Array 是存储信息的主要模块,具体细节可以参考DRAM Memory Orgization章节的描述。

2.4 IO

IO 电路主要是用于处理数据的缓存、输入和输出。其中 Data Latch 和 Data Register 用于缓存数据,DQM Mask Logic 和 IO Gating 等则用于输入输出的控制。

2.5 Refresh Counter

Refresh Counter 用于记录下次需要进行 refresh 操作的 Row。在接收到 AR 或者在 Self-Refresh 模式下,完成 一次 refresh 后,Refresh Counter 会进行更新。

3. 不同类型的 SDRAM

目前市面上在使用的 DRAM 主要有 SDR、DDR、LPDDR、GDDR 这几类,后续小节中,将对各种类型的 DRAM 进行简单的介绍。

3.1 SDR 和 DDR

SDR(Single Data Rate) SDRAM 是第一个引入 Clock 信号的 DRAM 产品,SDR 在 Clock 的上升沿进行总线信号的处理,一个时钟周期内可以传输一组数据。

DDR(Double Data Rate) SDRAM 是在 SDR 基础上的一个更新。DDR 内部采用 2n-Prefetch 架构,相对于 SDR,在一个读写周期内可以完成 2 倍宽度数据的预取,然后在 Clock 的上升沿和下降沿都进行数据传输,最终达到在相同时钟频率下 2 倍于 SDR 的数据传输速率。(更多 2n-Prefetch 相关的细节可以参考 《Micron Technical Note - General DDR SDRAM Functionality》文中的介绍)

Prefetch 的基本原理如下图所示。在示例 B 中,内部总线宽度是 A 的两倍,在一次操作周期内,可以将两倍于 A 的数据传输到 Output Register 中,接着外部 IO 电路再以两倍于 A 的频率将数据呈现到总线上,最终实现两倍 A 的传输速率。

DDR 后续还有 DDR2、DDR3、DDR4 的更新,基本上每一代都通过更多的 Prefetch 和更高的时钟频率,达到 2 倍于上一代的数据传输速率。

DDR SDRAM Standard Bus clock (MHz) Internal rate (MHz) Prefetch (min burst) Transfer Rate (MT/s) Voltage
DDR 100–200 100–200 2n 200–400 2.5/2.6
DDR2 200–533.33 100–266.67 4n 400–1066.67 1.8
DDR3 400–1066.67 100–266.67 8n 800–2133.33 1.5
DDR4 1066.67–2133.33 133.33–266.67 8n 2133.33–4266.67 1.05/1.2

Transfer Rate (MT/s)为每秒发生的 Transfer 的数量,一般为 Bus Clock 的 2 倍 (一个 Clock 周期内,上升沿和下降沿各有一个 Transfer)
Internal rate (MHz)则是内部 Memory Array 读写的频率。由于 SDRAM 采用电容作为存储介质,由于工艺和物理特性的限制,电容充放电的时间难以进一步的缩短,所以内部 Memory Array 的读写频率也受到了限制,目前最高能到 266.67 MHz,这也是 SDR 到 DDR 采用 Prefetch 架构的主要原因。
Memory Array 读写频率受到限制,那就只能在读写宽度上做优化,通过增加单次读写周期内操作的数据宽度,结合总线和 IO 频率的增加来提高整体传输速率。

3.2 LPDDRx

LPDDR,即 Low Power DDR SDRAM,主要是用着移动设备上,例如手机、平板等。相对于 DDR,LPDDR 采用了更低的工作电压、Partial Array Self-Refresh 等机制,降低整体的功耗,以满足移动设备的低功耗需求。

3.3 GDDRx

GDDR,即 Graphic DDR,主要用在显卡设备上。相对于 DDR,GDDR 具有更高的性能、更低的功耗、更少的发热,以满足显卡设备的计算需求。

4. 参考资料

Memory Systems - Cache Dram and Disk

大容量 DRAM 的刷新开销问题及优化技术综述 [PDF]

Micron Technical Note - General DDR SDRAM Functionality [PDF]

Everything You Need To Know About DDR, DDR2 and DDR3 Memories [WEB]

記憶體10年技術演進史 [WEB]

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DRAM
    +关注

    关注

    40

    文章

    2176

    浏览量

    181996
  • SDRAM
    +关注

    关注

    7

    文章

    409

    浏览量

    54728
收藏 人收藏

    评论

    相关推荐

    需要用f4xx做usb vcp host,请问有没有办法让host不轮询读呢?

    device发的数据,host不会主动收, 需要host定时调用receive的函数才能收到,请问有没有办法让
    发表于 03-26 08:25

    SATA3.0 Host Controller IP介绍

    ,和SATA规范完全兼容。SATA3.0 Host IP给用户使用SATA存储设备提供一种高效且易于使用的接口。无需用户干预,SATA3.0 Host IP自动完成连接、诊断、识别以及初始化SATA存储设备,输出SATA设备的I
    发表于 02-27 15:53 0次下载

    高级设计:SDR SDRAM驱动设计

    随机访问存储器(RAM)分为静态RAM(SRAM)和动态RAM(DRAM)。由于动态存储器存储单元的结构非常简单,所以它能达到的集成度远高于静态存储器。但是动态存储器的存取速度不如静态存储器快。
    的头像 发表于 01-19 15:47 608次阅读
    高级设计:<b class='flag-5'>SDR</b> <b class='flag-5'>SDRAM</b>驱动设计

    smt32h750扩展sdram

    STM32H750是STMicroelectronics推出的一款高性能微控制器,其特点之一是可扩展的SDRAM(同步动态随机存储器)接口。本文将详细介绍STM32H750扩展SDRAM的相关知识
    的头像 发表于 01-04 14:09 489次阅读

    一些FreeRTOS系统的usb命令使用方法

    ;lt;<== HCI功能测试 命令形式:usb hci {-i|-r} [<port>] 加载hci驱动(USB1) usb hci -i 1 卸载
    发表于 10-16 13:47

    STM32上的SDRAM硬件电路设计

    SDRAM(synchronous dynamic random-access memory)即同步动态随机存取内存。在介绍SDRAM前,我们先了解下DRAM(Dynamic random-access memory),DRAR
    的头像 发表于 09-27 15:02 1137次阅读
    STM32上的<b class='flag-5'>SDRAM</b>硬件电路设计

    全功能双CameraLink SDR接口 FMC子卡QT7421介绍

    QT7421是一款具有2个Camera Link SDR接口的全功能单宽FMC子卡模块,它提供标准的工业相机链路接口,为用户提供了利用FPGA解决大运算量处理的能力。这些应用利用兼容的相机进行诸如
    的头像 发表于 09-11 11:37 482次阅读
    全功能双CameraLink <b class='flag-5'>SDR</b><b class='flag-5'>接口</b> FMC子卡QT7421介绍

    AMBA DDR、LPDDR和SDR动态内存控制器DMC-40技术参考手册

    ,例如: •SDRAM或移动SDR存储器类型•SDRAM和移动SDR存储器设备的数量•最大SDRAM或Mobile
    发表于 08-02 11:26

    OTG接口与转换器

    OTG 接口与转换器 OTG 是“On The Go”的英文缩写,可以理解为“安上即可用”。USB 传输是主从结构,一切 USB 传输都由 Host 发起。 在开发板上可以插入 U 盘,这时开发板
    的头像 发表于 07-17 11:04 1223次阅读
    OTG<b class='flag-5'>接口</b>与转换器

    Gadget框架构造描述

    下多个接口接口就是功能,Linux 内核里事先提供了很多功能的驱动程序,所以:接口描述符是内核提供的 某个接口下需要什么端点,也是内核里各
    的头像 发表于 07-13 11:34 335次阅读
    Gadget框架构造<b class='flag-5'>描述</b>符

    如何使用RT1176SDRAM组配置SEMC的参数?

    我正在尝试使用 RT1176 我的 SDRAM 组配置 SEMC 的参数。 在各种参数中,EVB 设置值 “ sdramconfig.tPrescalePeriod_Ns ”“160
    发表于 06-05 10:31

    DDR5/4/3/2:每一代 DDR 如何提高内存密度和速度

    SDRAM是动态随机存取存储器,与CPU的时钟速度同步。SDRAM也代表SDR SDRAM(单数据速率SDRAM)。单数据速率意味着
    的头像 发表于 05-26 10:43 1693次阅读
    DDR5/4/3/2:每一代 DDR 如何提高内存密度和速度

    DRAM连接32位SDRAM时,sdram支持多大的容量?

    DRAM 连接32位SDRAM时,最大支持64Mx32bit?
    发表于 05-26 07:27

    怎么配置usb typec1device模式呢?

    有一个问题请教一下:3588开发板上默认的usb typec1默认是host模式,我们现在自研的底板上需求是配置成device模式,请问知道怎么配置的吗?
    发表于 05-11 15:38

    5G网络架构,5G中的SDR和SDN是什么?

    SDR)是由模拟无线电前端 (RFE)、基于 FPGA 的数字单元和混合信号接口组成的无线电系统。RFE 负责接收和发送 RF信号的模拟部分,由 DAC/ADC 接口离散化。RFE 是电路的重要组成部分
    发表于 05-05 09:48