STM32 SDRAM知识点

1.SDRAM和SRAM的区别

SRAM不需要刷新电路即能保存它内部存储的数据。而SDRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,功耗较SDRAM大 [1],相同容量的SDRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积。同样面积的硅片可以做出更大容量的SDRAM,因此SRAM显得更贵。
异步SRAM,首先明确一下这里的异步的概念:将不依赖于外部时钟工作的设备称为异步设备,将不依赖于外部时钟工作的设备称为异步SRAM。

2.异步和同步的概念

异步—独立的时钟频率,读写受控于地址线与控制使能信号。
同步—所有工作是时钟脉冲边沿开始,地址线、数据线、控制线均与时钟脉冲配合。

同步就相当于是 当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端。这样的话客户端需要一直等待。用户使用起来会有不友好。

异步就是,当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。

3.SDRAM芯片管脚图
以W9825GKH-6芯片为例
在这里插入图片描述
SDRAM信号线
在这里插入图片描述
4.SDRAM地址控制

SDRAM 包含有“A”以及“BS”两类地址线, A 类地址线是行 (Row) 与列 (Column) 共用的地址
总线, BS 地址线是独立的用于指定 SDRAM 内部存储阵列号 (Bank)。在命令模式下, A 类地址
线还用于某些命令输入参数。

5.SDRAM 的存储阵列

要了解 SDRAM 的储存单元寻址以及“A”、“BA”线的具体运用,需要先熟悉它内部存储阵列的结构,见图 SDRAM 存储阵列模型。
在这里插入图片描述SDRAM 内部包含的存储阵列,可以把它理解成一张表格,数据就填在这张表格上。和表格查找一样,指定一个行地址和列地址,就可以精确地找到目标单元格,这是 SDRAM 芯片寻址的基本原理。这样的每个单元格被称为存储单元,而这样的表则被称为存储阵列 (Bank),目前设计的SDRAM 芯片基本上内部都包含有 4 个这样的 Bank,寻址时指定 Bank 号以及行地址,然后再指定列地址即可寻找到目标存储单元。
在这里插入图片描述
SDRAM 芯片向外部提供有独立的 BA 类地址线用于 Bank 寻址,而行与列则共用 A 类地址线。

6.SDRAM的寻址过程

通讯时当 RAS线为低电平,则“行地址选通器”被选通,地址线 A[12:0] 表示的地址会被输入到“行地址译码及锁存器”中,作为存储阵列中选定的行地址,同时地址线 BS[1:0] 表示的 Bank 也被锁存,选中了要操作的 Bank 号;接着控制 CAS 线为低电平,“列地址选通器”被选通,地址线 A[12:0] 表示的地址会被锁存到“列地址译码器”中作为列地址,完成寻址过程。

7.SDRAM的数据输入输出

若是写 SDRAM 内容,寻址完成后, DQ[15:0] 线表示的数据经过图一种 SDRAM 芯片的内部结构框图 标号中的输入数据寄存器,然后传输到存储器阵列中,数据被保存;数据输出过程相反。W9825GKH型号的 SDRAM 存储阵列的“数据宽度”是 16 位 (即数据线的数量),在与 SDRAM 进行数据通讯时, 16 位的数据是同步传输的,但实际应用中我们可能会以 8 位、 16 位的宽度存取数据,也就是说 16 位的数据线并不是所有时候都同时使用的,而且在传输低宽度数据的时候,我们不希望其它数据线表示的数据被录入。如传输 8 位数据的时候,我们只需要 DQ[7:0] 表示的数据,而 DQ[15:8] 数据线表示的数据必须忽略,否则会修改非目标存储空间的内容。所以数据输入输出时,还会使用 DQM[1:0] 线来配合,每根 DQM 线对应 8 位数据,如“DQM0(LDQM)”为低电平,“DQM1(HDQM)”为高电平时,数据线 DQ[7:0] 表示的数据有效,而 DQ[15:8] 表示的数据无效。

8.SDRAM的命令

控制 SDRAM 需要用到一系列的命令,见图SDRAM 命令表 。各种信号线状态组合产生不同的控制命令。
在这里插入图片描述
(1).命令禁止 (COMMAND INHBIT)
只要 CS 引脚为高电平,即表示“命令禁止” (COMMAND INHBIT),它用于禁止 SDRAM 执行新的命令,但它不能停止当前正在执行的命令。

(2).空操作(NO OPERATION)
“空操作” (NO OPERATION),“命令禁止”的反操作,用于选中 SDRAM,以便接下来发送命令。

(3).行有效(ACTIVE)
进行存储单元寻址时,需要先选中要访问的 Bank 和行,使它处于激活状态。该操作通过“行有效” (ACTIVE) 命令实现,见图行有效命令时序图 ,发送行有效命令时, RAS 线为低电平,同时通过 BA 线以及 A 线发送 Bank 地址和行地址。

(4).列读写(READ和WRITE)
行地址通过“行有效”命令确定后,就要对列地址进行寻址了。“读命令” (READ) 和“写命令”(WRITE) 的时序很相似,见图读取命令时序 ,通过共用的地址线 A 发送列地址,同时使用 WE引脚表示读/写方向, WE 为低电平时表示写,高电平时表示读。数据读写时,使用 DQM 线表示有效的 DQ 数据线。

(5).预充电(PRECHARGE)
SDRAM 的寻址具有独占性,所以在进行完读写操作后,如果要对同一个 Bank 的另一行进行寻址,就要将原来有效(ACTIVE)的行关闭,重新发送行/列地址。 Bank 关闭当前工作行,准备打开新行的操作就是预充电(Precharge)。预充电可以通过独立的命令控制,也可以在每次发送读写命令的同时使用“A10”线控制自动进行预充电。实际上,预充电是一种对工作行中所有存储阵列进行数据重写,并对行地址进行复位,以准备新行的工作。独立的预充电命令时序见图 PRECHARGE 命令时序 。该命令配合使用 A10 线控制,若 A10 为高电平时,所有 Bank 都预充电; A10 为低电平时,使用 BA 线选择要预充电的 Bank。

(6).自动刷新与自我刷新(AUTO REFRESH or SELF REFRESH)

SDRAM 要不断进行刷新 (Refresh) 才能保留住数据,因此它是 DRAM 最重要的操作。刷新操作与预充电中重写的操作本质是一样的。但因为预充电是对一个或所有 Bank 中的工作行操作,并且不定期,而刷新则是有固定的周期,依次对所有行进行操作,以保证那些久久没被访问的存储单元数据正确。刷新操作分为两种:“自动刷新”(Auto Refresh)与“自我刷新” (Self Refresh),发送命令后 CKE时钟为有效时 (低电平),使用自动刷新操作,否则使用自我刷新操作。不论是何种刷新方式,都不需要外部提供行地址信息,因为这是一个内部的自动操作。对于“自动刷新”, SDRAM 内部有一个行地址生成器(也称刷新计数器)用来自动地依次生成行地址,每收到一次命令刷新一行。在刷新过程中,所有 Bank 都停止工作,而每次刷新所占用的时间为 N 个时钟周期 (视 SDRAM 型号而定,通常为 N=9),刷新结束之后才可进入正常的工作状态,也就是说在这 N 个时钟期间内,所有工作指令只能等待而无法执行。一次次地按行刷新,刷新完所有行后,将再次对第一行重新进行刷新操作,这个对同一行刷新操作的时间间隔,称为 SDRAM 的刷新周期,通常为 64ms。显然刷新会对 SDRAM 的性能造成影响,但这是它的DRAM 的特性决定的,也是 DRAM 相对于 SRAM 取得成本优势的同时所付出的代价。“自我刷新”则主要用于休眠模式低功耗状态下的数据保存,也就是说即使外部控制器不工作了,SDRAM 都能自己确保数据正常。在发出“自我刷新”命令后,将 CKE 置于无效状态 (低电平),就进入自我刷新模式,此时不再依靠外部时钟工作,而是根据 SDRAM 内部的时钟进行刷新操作。在自我刷新期间除了 CKE 之外的所有外部信号都是无效的,只有重新使 CKE 有效才能退出自我刷新模式并进入正常操作状态。

(7).加载模式寄存器(LOAD MODE REGISTER)

前面提到 SDRAM 的控制逻辑是根据它的模式寄存器来管理整个系统的,而这个寄存器的参数就是通过“加载模式寄存器”命令 (LOAD MODE REGISTER) 来配置的。发送该命令时,使用地址线表示要存入模式寄存器的参数“OP-Code”,各个地址线表示的参数见图模式寄存器解析图 。
在这里插入图片描述
模式寄存器的各个参数介绍如下:

Burst Length

Burst Length 译为突发长度,下面简称 BL。突发是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度。

上文讲到的读/写操作,都是一次对一个存储单元进行寻址,如果要连续读/写就还要对当前存储单元的下一个单元进行寻址,也就是要不断的发送列地址与读/写命令(行地址不变,所以不用再对行寻址)。虽然由于读/写延迟相同可以让数据的传输在 I/O 端是连续的,但它占用了大量的内存控制资源,在数据进行连续传输时无法输入新的命令,效率很低。

为此,人们开发了突发传输技术,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期外,其后每个数据只需一个周期的即可获得。其实我们在 EERPOM 及FLASH 读写章节讲解的按页写入就是突发写入,而它们的读取过程都是突发性质的。

非突发连续读取模式:不采用突发传输而是依次单独寻址,此时可等效于 BL=1。虽然也可以让数据连续地传输,但每次都要发送列地址与命令信息,控制资源占用极大。

突发连续读取模式:只要指定起始列地址与突发长度,寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期 (与 BL 相同) 即可做到连续的突发传输。而 BL 的数值,也是不能随便设或在数据进行传输前临时决定。在初始化 SDRAM 调用 LOAD MODE REGISTER 命令时就被固定。 BL 可用的选项是 1、 2、 4、 8,常见的设定是 4 和 8。若传输时实际需要数据长度小于设定的 BL 值,则调用“突发停止” (BURSTTERMINATE) 命令结束传输。

BT

模式寄存器中的 BT 位用于设置突发模式,突发模式分为顺序 (Sequential) 与间隔 (Interleaved) 两种。在顺序方式中,操作按地址的顺序连续执行,如果是间隔模式,则操作地址是跳跃的。跳跃访问的方式比较乱,不太符合思维习惯,我们一般用顺序模式。顺序访问模式时按照“0-1-2-3-4-5-6-7”的地址序列访问。

CASLatency

模式寄存器中的 CASLatency 是指列地址选通延迟,简称 CL。在发出读命令 (命令同时包含列地址) 后,需要等待几个时钟周期数据线 DQ 才会输出有效数据,这之间的时钟周期就是指 CL, CL一般可以设置为 2 或 3 个时钟周期,见图说明图 。

在这里插入图片描述
CL 只是针对读命令时的数据延时,在写命令是不需要这个延时的,发出写命令时可同时发送要写入的数据。

Op Mode
OP Mode 指 Operating Mode, SDRAM 的工作模式。当它被配置为“00”的时候表示工作在正常
模式,其它值是测试模式或被保留的设定。实际使用时必须配置成正常模式。

WB
WB 用于配置写操作的突发特性,可选择使用 BL 设置的突发长度或非突发模式。

Reserved
模式寄存器的最后三位的被保留,没有设置参数。

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

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

相关文章

c#递归函数

在 C#中,递归函数是指在函数内部直接或间接调用自身的函数。递归函数在解决一些问题时非常有用,例如遍历树形结构、递归计算等。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks…

分享axios+MQTT简单封装示例

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在19…

二维码门楼牌管理系统在教育领域的应用及其优势

文章目录 前言一、二维码门楼牌管理系统概述二、教育领域的应用场景三、二维码门楼牌管理系统的优势四、结语 前言 随着信息技术的快速发展,二维码门楼牌管理系统在教育领域的应用越来越广泛。该系统不仅提高了地址信息的准确性,还为学校、家长和教育工…

关于华为昇腾(Ascend)AI芯片,CANN计算架构,MindSpore深度学习框架,MindStudio开发工具

1、华为昇腾生态 深度学习之前的配置都是:NVIDIA GPU / CPU CUDA Tensorflow/PyTorch 后来老美禁止 NVIDIA 卖GPU芯片给我们,于是国内企业开始发力CPU和GPU硬件,成果丰硕,虽然与NVIDIA顶级GPU还有一些差距,但是也不…

eclipse搭建java web项目

准备条件 eclipsejdk1.8 (配置jdk环境)apache-tomcat-8.5.97(记住安装位置) 一 点击完成 开始创建javaweb项目 import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.s…

【经典案例】某大型公园构建检查监督机制项目纪实

——引入网格化监督管理机制,实现责任、人员、信息三位一体 公园管理由于其本身地域范围广的特性在工作中很难进行有效的监督检查,该公园的监督检查由不同的部门分别负责,同部门检查时往往会处于情面而使检查流于形式,并且公园的监…

Media Encoder 2024:未来媒体编码的新纪元 mac/win版

随着科技的飞速发展,媒体内容已成为我们日常生活中不可或缺的一部分。为了满足用户对高质量视频内容不断增长的需求,Media Encoder 2024应运而生,它凭借卓越的技术和创新的特性,重塑了媒体编码的未来。 Media Encoder 2024软件获…

嵌入式学习day34 网络

TCP包头: 1.序号:发送端发送数据包的编号 2.确认号:已经确认接收到的数据的编号(只有当ACK为1时,确认号才有用) TCP为什么安全可靠: 1.在通信前建立三次握手连接 SYN SYNACK ACK 2.在通信过程中通过序列号和确认号保障数据传输的完整性 本次发送序列号:上次…

LeetCode Python - 42.接雨水

目录 题目答案运行结果 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组…

【网站项目】096实验室开放管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Java面试——Netty

优质博文:IT-BLOG-CN 一、BIO、NIO 和 AIO 【1】阻塞 IO(Blocking I/O): 同步阻塞I/O模式,当一条线程执行 read() 或者 write() 方法时,这条线程会一直阻塞直到读取一些数据或者写出去的数据已经全部写出,在这期间这条…

泛微OA服务器获取 token

泛微OA服务器获取 token 文章目录 泛微OA服务器获取 token一、泛微官方方法1 ecology 系统配置2 发放/生成许可证(appid)3 限制许可证使用ip地址(该步骤也可以跳过)4 使用 postman 注册5 获取 token6 访问业务系统接口 二、java 代码获取 token三、封装到…

20240308-2-校招前端面试常见问题-网络及浏览器

校招前端面试常见问题【4】——网络及浏览器 1、网络相关 Q:请简述一下 HTTP 协议,以及 HTTP1.0/1.1/2.0/3.0 的区别? HTTP 协议:超文本传输协议,使用 TCP/IP 协议传输数据。是一个应用层的协议。 HTTP1.0&#xff…

特性螺旋面的刀具设计记录

最近和成型类刀具杠上了,这不最近有小伙伴提供了两个比较特殊的螺旋面工件,通常称作阴、阳转子。具体形状如下: 阴转子 阴转子端面齿形没看出有什么特殊的,但是在轴剖面齿形是内凹的,这个是比较特殊的形式。 阳转子…

信息系统项目管理师003:信息化(1信息化发展—1.1信息与信息化—1.1.3 信息化)

文章目录 1.1.3 信息化1.信息化内涵2.信息化体系3.信息化趋势 要点总结 1.1.3 信息化 信息化是一个过程,与工业化、现代化一样,是一个动态变化的过程。信息化是指培养、发展以计算机为主的智能化工具为代表的新生产力,并使之造福于社会的历史…

Qt自定义控件

自定义控件 目的:将多个控件或者窗口作为一个整体被多次复用。 操作方式 1.首先进行自定义的ui设计,以及对应的.h和.cpp文件 2.到要使用的UI界面上,从控件库中拖拽一个Widget控件 3.右键点击"提升为" 4.填写自定义实现的类名&…

Mysql的Cardinality值

什么是Cardinality值? Cardinality值是Mysql做索引优化时一个非常关键的值,优化器会根据这个值来判断是否使用这个索引,它表示索引中唯一值的数目估计值,该值应该尽可能接近1,如果非常小,则用户需要考虑是否…

7. 交叉开发环境设置

嵌入式交叉编译工具 ​ 交叉编译工具是为了使在上位机中编译的文件能够在不同平台的目标机中执行,搭建交叉编译环境是嵌入式开发的第一步,也是关键的一步。不同的体系结构、不同的操作系统,甚至是不同版本的内核,都会用到不同的交…

win11中微软商店如何使用微信支付?microsoft store支付教程

Microsoft Store是由微软公司提供的一个数字分发平台,用于购买和下载Windows操作系统及其相关应用、游戏、音乐、电影、电视节目和其他数字内容。该平台最初是作为Windows 8的一部分引入的,后来也适用于Windows 10和其他Microsoft平台。 以下是Microsof…

JavaWeb笔记 --- 一JDBC

一、JDBC JDBC就是Java操作关系型数据库的一种API DriverManager 注册驱动可以不写 Class.forName("com.mysql.jdbc.Driver"); Connection Statement ResultSet PrepareStatement 密码输入一个SQL脚本,直接登录 预编译开启在url中 数据库连接池