Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >简谈 SDRAM的工作原理

简谈 SDRAM的工作原理

作者头像
FPGA技术江湖
发布于 2020-12-29 08:29:13
发布于 2020-12-29 08:29:13
1.6K0
举报
文章被收录于专栏:FPGA技术江湖FPGA技术江湖

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天和大侠简单聊一聊SDRAM的工作原理,话不多说,上货。

SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。

SDRAM在读写数据时重点注意以下信号:

(1) CLK:时钟信号,为输入信号。SDRAM所有输入信号的逻辑状态都需要通过CLK的上升沿采样确定。 

(2) CKE:时钟使能信号,为输入信号,高电平有效。

CKE信号的用途有两个:一是关闭时钟以进入省电模式;二是进入自刷新状态。CKE无效时,SDRAM内部所有与输入相关的功能模块停止工作

(3) CS#:片选信号,为输入信号,低电平有效。只有当片选信号有效后,SDRAM才能识别控制器发送来的命令。设计时注意上拉

(4) RAS#:行地址选通信号,为输入信号,低电平有效

(5) CAS#:列地址选通信号,为输入信号,低电平有效

(6) WE#:写使能信号,为输入信号,低电平有效。

当然还包括bank[…]地址信号,这个需要根据不同的型号来确定,同样为输入信号;地址信号A[…],为输入信号;数据信号DQ[…],为输入/输出双向信号;数据掩码信号DQM,为输入输出双向信号,方向与数据流方向一致,高电平有效。当其有效时,数据总线上出现的对应数据字节被接收端屏蔽。

SDRAM之所以成为DRARM就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是DRAM最重要的操作。那么要隔多长时间重复一次刷新,目前公认的标准是,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就代表这个芯片中每个Bank的行数。刷新命令一次对一行有效,发送间隔也是随总行数而变化,4096行时为15.625μs(微秒,1/1000毫秒),8192行时就为7.8125μs。HY57V561620为8192 refresh cycles / 64ms。

SDRAM是多Bank结构,例如在一个具有两个Bank的SDRAM的模组中,其中一个Bank在进行预充电期间,另一个Bank却马上可以被读取,这样当进行一次读取后,又马上去读取已经预充电Bank的数据时,就无需等待而是可以直接读取了,这也就大大提高了存储器的访问速度。 

为了实现这个功能,SDRAM需要增加对多个Bank的管理,实现控制其中的Bank进行预充电。在一个具有2个以上Bank的SDRAM中,一般会多一根叫做BAn的引脚,用来实现在多个Bank之间的选择。

SDRAM具有多种工作模式,内部操作是一个复杂的状态机。SDRAM器件的引脚分为以下几类。  

(1) 控制信号:包括片选、时钟、时钟使能、行列地址选择、读写有效及数据有效。

(2) 地址信号:时分复用引脚,根据行列地址选择引脚,控制输入的地址为行地址或列地址。

(3) 数据信号:双向引脚,受数据有效控制。

SDRAM的所有操作都同步于时钟。根据时钟上升沿控制管脚和地址输入的状态,可以产生多种输入命令。

  • 模式寄存器设置命令。
  • 激活命令。
  • 预充命令。
  • 读命令。
  • 写命令。
  • 带预充的读命令。
  • 带预充的写命令。
  • 自动刷新命令。
  • 自我刷新命令。
  • 突发停命令。
  • 空操作命令。

根据输入命令,SDRAM状态在内部状态间转移。内部状态包括模式寄存器设置状态、激活状态、预充状态、写状态、读状态、预充读状态、预充写状态、自动刷新状态及自我刷新状态。  

SDRAM支持的操作命令有初始化配置、预充电、行激活、读操作、写操作、自动刷新、自刷新等。所有的操作命令通过控制线CS#、RAS#、CAS#、WE#和地址线、体选地址BA输入。

1、行激活  

行激活命令选择处于空闲状态存储体的任意一个行,使之进入准备读/写状态。从体激活到允许输入读/写命令的间隔时钟节拍数取决于内部特征延时和时钟频率。HY57V561620内部有4个体,为了减少器件门数,4个体之间的部分电路是公用的,因此它们不能同时被激活,而且从一个体的激活过渡到另一个体的激活也必须保证有一定的时间间隔。

2、预充电

预充电命令用于对已激活的行进行预充电即结束活动状态。预充电命令可以作用于单个体,也可以同时作用于所有体(通过所有体预充电命令)。对于触发写操作必须保证在写入预充电命令前写操作已经完成,并使用DQM禁止继续写入数据。预充电结束后回到空闲状态,也可以再次被激活,此时也可以输入进入低功耗、自动刷新、自刷新和模式设置等操作命令。  

预充电中重写的操作与刷新操作一样,只不过预充电不是定期的,而只是在读操作以后执行的。因为读取操作会破坏内存中的电荷。因此,内存不但要每64ms刷新一次,而且每次读操作之后还要刷新一次。

3、自动预充电

如果在触发读或触发写命令中,A10/AP位置为“1”,在读写操作完成后自动附加一个预充电动作。操作行结束活动状态,但在内部状态机回到空闲态之前不能给器件发送新的操作命令。

4、触发读 

触发读命令允许某个体中的一行被激活后,连续读出若干个数据。第一个数据在经过指定的CAS延时节拍后呈现在数据线上,以后每个时钟节拍都会读出一个新的数据。触发读操作可以被同体或不同体的新的触发读/写命令或同一体的预充电命令及触发停止命令中止。

5、触发写 

触发写命令与猝发读命令类似,允许某个体中的一行被激活后,连续写入若干个数据。第一个写数据与触发写命令同时在数据线上给出,以后每个时钟节拍给出一个新的数据,输入缓冲在触发数据量满足要求后停止接受数据。触发写操作可以被触发读/写命令或DQM数据输入屏蔽命令和预充电命令或触发停止命令中止。

6、自动刷新

由于动态存储器存储单元存在漏电现象,为了保持每个存储单元数据的正确性,HY57V561620必须保证在64ms内对所有的存储单元刷新一遍。一个自动刷新周期只能刷新存储单元的一个行,每次刷新操作后内部刷新地址计数器自动加“1”。只有在所有体都空闲(因为4个体的对应行同时刷新)并且未处于低功耗模式时才能启动自动刷新操作,刷新操作执行期间只能输入空操作,刷新操作执行完毕后所有体都进入空闲状态。该器件可以每间隔7.8μs执行一次自动刷新命令,也可以在64ms内的某个时间段对所有单元集中刷新一遍。

7、自刷新

自刷新是动态存储器的另一种刷新方式,通常用于在低功耗模式下保持SDRAM的数据。在自刷新方式下,SDRAM禁止所有的内部时钟和输入缓冲(CKE除外)。为了降低功耗,刷新地址和刷新时间全部由器件内部产生。一旦进入自刷新方式只有通过CKE变低才能激活,其他的任何输入都将不起作用。给出退出自刷新方式命令后必须保持一定节拍的空操作输入,以保证器件完成从自刷新方式的退出。如果在正常工作期间采用集中式自动刷新方式,则在退出自刷新模式后必须进行一遍(对于HY57V561620来说,8192个)集中的自动刷新操作。

8、时钟和时钟屏蔽

时钟信号是所有操作的同步信号,上升沿有效。时钟屏蔽信号CKE决定是否把时钟输入施加到内部电路。在读写操作期间,CKE变低后的下一个节拍冻结输出状态和猝发地址,直到CKE变高为止。在所有的体都处于空闲状态时,CKE变低后的下一个节拍SDRAM进入低功耗模式并一直保持到CKE变高为止。

9、DQM操作

DQM用于屏蔽输入输出操作,对于输出相当于开门信号,对于输入禁止把总线上的数据写入存储单元。对读操作DQM延迟2个时钟周期开始起作用,对写操作则是当拍有效。

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

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

本文分享自 FPGA技术江湖 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
细说SDRAM控制器
SDRAM凭借其极高的性价比,广泛应用于高速数据存储、实时图像处理等设计当中,但是相对于SRAM、FIFO等其他存储器件,SDRAM的控制相对复杂。虽说是复杂,但也不代表没办法实现,仔细梳理一下,发现SDRAM的控制其实也没这么难。本文就SDRAM的基本概念以及其工作流程做简要介绍。
全栈程序员站长
2022/09/15
1.5K0
细说SDRAM控制器
基于FPGA的单目内窥镜定位系统设计(中)
今天给大侠带来基于FPGA的单目内窥镜定位系统设计,由于篇幅较长,分三篇。今天带来第二篇,中篇,话不多说,上货。
FPGA技术江湖
2021/04/20
8930
基于FPGA的单目内窥镜定位系统设计(中)
FPGA综合项目——SDRAM控制器
再者就是通信处理模块,具体的通信设置,发送什么命令是写?什么命令是读?发的什么数据?等等。
全栈程序员站长
2022/09/16
6470
FPGA综合项目——SDRAM控制器
SDRAM控制器操作时序
IDLE 状态到WRITE 状态: ​ 1) 在IDLE 状态需要先给ACT 命令激活某一行,此时处于Row Active 状态; ​ 2) 在Row Active 状态之后,给Write 命令则会进入WRITE 状态; ​ 3) 在WRITE 状态后,再给一次Write 命令,就可以继续写入数据。 WRITE 状态到IDLE 状态: ​ 1) 在WRITE 状态给PRE 命令,则SDRAM 将跳出WRITE 状态进入Precharge状态; ​ 2) 在Precharge 状态后,就会自动进入IDLE 状态了。
全栈程序员站长
2022/09/16
7470
SDRAM控制器操作时序
SDR SDRAM控制器设计[通俗易懂]
工作中使用过SDRAM芯片,型号:IS42/45R86400D/16320D/32160D
全栈程序员站长
2022/09/16
1.2K0
SDR SDRAM控制器设计[通俗易懂]
SDRAM随机读写控制器
常见的SDRAM控制器代码都是基于连续突发读写模式的,在需要传输连续地址的大批量数据时十分方便。但是需要进行随机的地址读写时,突发读写的控制器便不方便使用。例如将SDRAM作为CPU的内存模块使用时,常常需要访问和修改随机地址的数据,故需要设计SDRAM随机读写控制器。
数字积木
2021/04/15
8420
FPGA零基础学习:SDR SDRAM 驱动设计
本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。
FPGA技术江湖
2021/03/23
1K0
FPGA零基础学习:SDR SDRAM 驱动设计
DDR3篇第二讲、MIG电气接口介绍
数据选通,当进行数据读取时,对于DDR3来说是输出,边缘与读取的数据对齐。当进行数据写入时,对于DDR3来说是输入,中心与与写数据对齐。
根究FPGA
2020/06/30
5.3K0
DDR3篇第二讲、MIG电气接口介绍
Sdram控制器(一)
今天主要学习Sdram控制器框架设计 首先来看下整个控制器设计框图 如图1所示 (图1 FPGA内部程序框图) 接下来,分模块来看一下 1.1 时钟产生模块 1.11 实现方式 时钟的输入来源
瓜大三哥
2018/06/11
1.5K0
第六章 SDRAM控制器的设计
介绍的重点: ·动态随机存储介绍 ·介绍SDARM的工作原理与Verilog的实现方法 ·基本实验:利用基本实例来解释SDRAM控制器顶层模块的设计 ·高级实验:利用高级实例来完整的描述SDRAM控制器顶层模块的修改技巧与注意事项 问题:什么是SDRAM 那? 回答: 同步动态随机存储器(Synchronous Dynamic Random Access Memory) 目前很多芯片及系统开发,如影像采集或显示系统,都要用到保存容量大、读写速度高的存储器,本次介绍的SDRAM具有价格低、体积小、容量大、速度快特点,是理想的选择 SDRAM的框架:SDRAM是将存储器单元(Memory Cell)利用矩阵的方式来排列,矩阵中有列地址(Row Address)及行地址(Column Address),为了读出或写入某数据,SDRAM控制器会先传送列的地址,此时RAS信号被设定为Active状态,在存取行的地址前还需要几个执行周期,这段时间为RAS至CAS的延迟时间,而CAS信号则需经过几个时钟周期后,才开始稳定的书写数据,这段时间就是CAS延迟时间(CL)。
全栈程序员站长
2022/09/16
4700
第六章 SDRAM控制器的设计
【STM32F429开发板用户手册】第39章 STM32F429的FMC总线应用之SDRAM
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255 第39章       STM32F429的FMC总线应用之SDRAM 本章
Simon223
2020/08/06
9690
【STM32H7教程】第49章 STM32H7的FMC总线应用之SDRAM
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第49章       STM32H7的FMC总线应用之SDRAM 本章
Simon223
2020/02/17
1.7K0
sdram控制器设计
同步动态随机存取内存(synchronous dynamic random-access memory,简称SDRAM)是有一个同步接口的动态随机存取内存(DRAM)。SDRAM的特点是需要定期进行刷新操作,这也要求SDRAM需要一个控制器来对SDRAM进行控制,更为详细的SDRAM的知识可以上网进行查找,这里不再做过多的阐述。
全栈程序员站长
2022/09/07
6270
sdram控制器设计
【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第47章       STM32H7的FMC总线基础知识和HAL库AP
Simon223
2020/02/14
3K0
Sdram控制器(二)
经过几天的Sdram项目调试,小编想说简直了~,感触颇深,今天就分享给大家喽~ Sdram项目调试感悟: 1. 首先保证仿真正确,能够完全读写整个sdram model【难点二】 2. 保证板子上的sdram是正常工作的。 3. 时钟:sdram的输入时钟能在数据中间采样(做相移或者output delay)【难点一】 4. 约束:时序约束和物理约束 5. 其他 复位或者VIO:Debug的时候会感受到这个神奇之处 Oddr2的使用,这里有两个坑: (1)如果输出管脚不是时钟引脚,则需要加CLOCK_D
瓜大三哥
2018/06/11
1.5K0
FPGA 之 SOPC 系列(四)NIOS II 外围设备--标准系统搭建
今天给大侠带来今天带来FPGA 之 SOPC 系列第四篇,NIOS II 外围设备--标准系统搭建,希望对各位大侠的学习有参考价值,话不多说,上货。
FPGA技术江湖
2020/12/30
1.1K0
第012课 内存控制器与SDRAM
如图是S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚),有串口控制器 (接有TXD RXD引脚)。
韦东山
2020/09/30
1.2K0
第012课 内存控制器与SDRAM
深入内存/主存:解剖DRAM存储器
如果你是一个 EECS 专业的学生或领域内从业者,你一定经常听到别人谈论 DRAM 、内存和 DDR ——学数字电路和计算机组成的时候绕不过 DRAM ,讨论电脑性能的时候离不开内存,围观领域内公司发布新产品时,总是看到产品使用了所谓的 xx 通道 DDR4/DDR5 技术。
AsicWonder
2023/09/01
2.2K0
深入内存/主存:解剖DRAM存储器
基于FPGA的实时图像边缘检测系统设计(中)
今天给大侠带来基于FPGA的实时图像边缘检测系统设计,由于篇幅较长,分三篇。今天带来第二篇,中篇,话不多说,上货。
FPGA技术江湖
2021/04/19
1.5K0
基于FPGA的实时图像边缘检测系统设计(中)
DDR3篇第四讲、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控制器。
根究FPGA
2020/06/30
7.2K0
DDR3篇第四讲、DDR3操作时序与关键参数
相关推荐
细说SDRAM控制器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档