嵌入式开发人员了解SRAM、SDRAM等存储技术非常重要,因为这些技术是嵌入式系统设计中不可或缺的组成部分。以下是嵌入式开发人员需要了解的几种存储技术:
1. "SRAM(静态随机存取存储器)":
- "特点":SRAM不需要刷新,因此读写速度快,功耗低,但成本较高,存储容量较小。
- "应用":通常用于缓存、寄存器文件、FIFO缓冲区等,因为它的高速特性可以提高系统的性能。
2. "SDRAM(同步动态随机存取存储器)":
- "特点":SDRAM与CPU同步工作,读写速度较快,但需要刷新电路,功耗相对较高。
- "应用":常用于个人电脑的主板内存,因为它可以提供较大的存储容量和较高的性能。
3. "DDR SDRAM(双倍数据速率同步动态随机存取存储器)":
- "特点":DDR SDRAM在时钟周期的上升沿和下降沿各传输一次数据,因此数据传输速率是SDRAM的两倍。
- "应用":广泛应用于个人电脑和服务器的主板内存。
4. "DDR2 SDRAM、DDR3 SDRAM":
- "特点":这些是DDR SDRAM的后续版本,具有更高的数据传输速率和更低的功耗。
- "应用":与DDR SDRAM类似,用于个人电脑和服务器的主板内存。
5
相关内容:



一、早期媒介记录
人类在通过媒介记录信息前,都是通过大脑记录信息,然后通过回忆来还原所需要的信息(人脑就是内存和硬盘),但是人脑容易遗忘,于是原始社会人类便开始了对信息存储的探索和使用,比如下面就是早期常用的记录方式:1、结绳记事的方法。

2、雕刻的方法,将信息记录在石头、龟甲等坚硬的物体表面保存信息。例如:万年前的史前洞穴壁画,公元前1300年前商朝的甲骨文,及春秋战国时期的竹简等。

3、古代帛书 ,西汉初期(公元前202年)造纸术的发明及东汉(105年)蔡伦对造纸术的改进,使得信息记录、传播和传承有了革命性的进步,这也极大促进了人类文明和文化传播。

公元四世纪,造纸术传到了高丽(今朝鲜);
公元610年,造纸术传到日本;
公元10世纪,造纸技术传到了阿拉伯地区,如现在叙利亚的大马士革、埃及的开罗和摩洛哥;
欧洲人是通过阿拉伯人了解造纸技术的:
公元1150年,阿拉伯人将造纸术传到了西班牙;
公元1276年,意大利也有了造纸技术;
公元1348年,法国巴黎也建立了造纸厂;
公元14世纪,德国通过法国得到了造纸技术;
公元15世纪,英国因为与欧洲大陆有一海之隔,晚些才有造纸厂;
公元1573年,瑞典建立了最早的造纸厂;
公元1635年,丹麦也开始造纸;
公元1690年,挪威建立奥斯陆造纸厂;
到了17世纪欧洲各主要国家都有了自己的造纸业。
公元1690年,美国在独立之前,才在费城附近建立了第一家造纸厂。
二、穿孔卡片
纸的发明使得历史信息能够被记录并且被传承,有了纸才有后面的穿孔卡片技术。随着18世纪工业革命的发起,机械化生产开始代替了人类手工操作,穿孔纸片/卡片就是这时候开始出现的,其利用在纸张上打上小孔,来控制“程序化”的织机和其他工业机器。
穿孔纸片的思路来源于织布机的原理,织布机是由两条以上相互垂直的丝线,在织机上按照一定规律相互交织而形成的织物,纵向的纱线叫经纱,横向的纱线叫纬纱。

1725年,法国人布乔(Basile Bouchon)发明了穿孔卡,用于控制纺织机绘制图案;
1801年,Joseph Marie Jacquard将这种设计的打孔卡按照一定顺序捆绑,应用于提花织机;







a.红色圈1是第2列,因为第12、11、10行没有打孔,只有第1行打黑色孔,代表数字1;
b.红色圈2是第3列,因为第12、11、10行没有打孔,只有第2行打黑色孔,代表数字2;
b.红色圈3是第7列,因为第11行打孔,第7也打孔,根据编码规则2,表示字母P;
c.红色圈4是第9列,因为第12行打孔,第6也打孔,根据编码规则1,表示字母F;
d.红色圈5是第18列,因为第10行打孔,第3也打孔,根据编码规则3,表示字母T;
再举例一个,如下图所示,第1列至第36列的黑色打孔点,根据如上编码规则,分别表示数字0到9,字母A到Z,共36个数字和字母。

二、磁存储器
利用穿孔卡形式的机械存储,信息的读取和写入,都依赖于纸带上孔的设计。随着电磁学的发展,从机械自动化逐步发展到电气自动化。存储核心是利用两个状态二进制来表征数据信息。磁性材料,利用磁矩的取向,也可以实现两态,从而替代机械打孔。并且表征每个形态的体积相对于机械孔而言,可以做到更小,从而可以实现更高的存储密度。后续出现的磁带存储技术,一定程度上还保留着打孔卡设计的影子。磁性材料作为存储介质的存储类型有很多,包含有磁带、磁鼓、磁芯、磁阻、以及后面应用于计算机的磁盘等等。2.1、磁带存储
1928年,德国德雷斯诺工程师Fritz Pfleumer 发明了“会发声的纸”——录音磁带。其基本工作原理是:将粉碎的磁性颗粒用胶水粘在纸条上,制备成磁带。磁带在移动过程中,随着音频信号强弱,磁带被磁化程度也会发生变化,从而记录声音。利用该纸带可以存储模拟信号,这是利用磁性作为信息存储的最早记录。

1951年,磁带开始广泛用于计算机。
2.2、磁鼓存储器
1932年,IBM公司的奥地利裔工程师Gustav Tauschek发明了磁鼓存储器;它是利用铝鼓筒表面涂覆的磁性材料来存储数据的,由于鼓筒旋转速度很高,因此加快了存取速度。直到1953年,磁鼓存储器才开始应用于IBM701计算机,作为内存储器。

2.3、磁芯存储器
1948年,华裔王安发明了磁芯存储器,最初的磁芯存储器只有几百个字节的容量。1.磁芯存储器的写入原理是:一个铁氧体磁芯中间穿过一根导线,当导线中的电流向下时,根据右手螺旋法则产生了顺时针方向的磁场。反之,电流向上时则会产生逆时针方向的磁场。这里,可以把顺时针的磁场记做0。假如磁芯中已经记录了0,只要反向电流够大,就可以擦除掉这个0重新写入1。

2. 磁芯存储器的读出原理是:假设我们不知道某个磁芯中存储的是什么数据,那就强行向其中写入“0”。如果磁芯中记载的是1,电流会强制写入逆向的磁场,同时激发出一个感应电流。利用一根感应线路,就可以探测到这个感应电流。如果磁芯本来就记载着0,就不会产生电流。要想让磁芯存储数据,需要立刻进行重新写入。

下图为由磁芯板组成的磁芯阵列:

2.4、硬盘(磁盘)存储器
1956年,IBM完成了世界上的第一款硬盘设计。这款名为IBM350 RAMAC(Random Access Method of Accounting and Control)的硬盘产品体积十分庞大,总共使用了50张24英寸的碟片,但容量仅为5MB。磁盘两面都可以利用存储,利用率要高于磁鼓。因此,当磁盘出现后,磁鼓就被淘汰了。

三、其他类型存储器
为了数据存储,人们费尽了心血,几乎所有能利用的物理现象,电、光、声、磁都被探索过来,除了上面介绍的磁性材料外,还有许多其他的存储介质,如基于电子管的威廉姆斯管,基于水银延迟线的易失性存储器等。3.1、电子管-威廉姆斯管
1946年,基于威廉姆斯管的内存是由弗雷迪·威廉姆斯(Freddie Williams)与汤姆·基尔伯恩(Tom Kilburn)发明的,它是一种由阴极射线管(CRT)构成的储存装置。工作原理是一股电子射到CRT表面上,它会自动创建一个正电荷,这代表了一个位的数据,因为电荷流失有时限性,因此,数据必须定期刷新。威廉姆斯kilburn管则要求高精度的光束控制技术,这使他们温度敏感和更容易失效。这些设备的存储能力可达1024位,IBM 701计算机就使用过。
3.2、水银延迟线存储器
它是利用声音在水银介质上传输的时延来储存信息。举例,将一块石头掷入水中,形成波浪,波头经过一段时间才能传播到远方某处,在这一段时间的波浪用于存储信息,水银延迟线的就是利用这个工作原理。1951年,计算机UNIVAC-1使用的水银延迟线是一根直径10mm、长150cm的管子,内部充满水银,两端各有一个转换器分别进行电-声转换和声-电转换,这样,脉冲信号从管子的一端进入,转换成超声波,960ms后超声波到达管子的另一端,然后再转换成电信号输出。


四、半导体存储器
上世纪60年代,随着晶体管与CMOS技术的发明,及集成电路的发展,半导体存储器开始应用发展,除了出现了ROM存储外,RAM内存技术也同时发展,主要分为两个方向:SRAM与SDRAM。它们的区别主要在于存储单元的原理不同,如下图所示:

4.1、SRAM
SRAM可以随机的读取任意一个地址空间内的数据,因此其采用的地址线与数据线分离的接口方式,比如以IS62WV51216这颗SRAM芯片为例简单介绍其接口与工作时序。
该芯片是一颗16位数据宽度,1MB大小的SRAM,芯片的内部框图图下图所示:

各个相关引脚的功能描述如下表所示:

1、地址线为A0~A18,共19根地址线,因此可以访问的地址大小就是,2^19=524288=512KB,因为其数据总线为16bit,因此每个地址可以输出2个字节数据,所以容量为512KB*2=1MB。
2、数据线为I/O0~I/O15,共16个数据线,通过UB/LB可以选择高/低字节。
3、CS1/CS2为片选信号,低电平有效。
4、OE是输出使能信号(即读信号),低电平有效。
5、WE是写使能信号,也是低电平有效。
读数据时序图(具体可参考IS62WV数据手册):

写数据时序图:

4.2、DRAM
DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失。而SDRAM是Synchronous DRAM,在DRAM的基础上增加同步时钟,这样CPU可以准确的知道数据的读写时间。DRAM经过多年的发展,大致经历过几个演进过程,早期使用的普通内存,使用的是FPA DRAM(FAST PAGE MODE DRAM),即快速页面模式随机存取存储器,它是每三个脉冲周期传送一次数据;然后EDO DRAM( EXTENDED DATA OUT DRAM),即扩展数据输出随机存取存储器,它是每二个脉冲周期传送一次数据,比FPA DRAM数据速率提高了30%;随着SDRAM的出现,它是每一个脉冲周期传送一次数据,又比EDO DRAM提高了50%,后面慢慢出现了DDR SDRAM、DDR2 SDRAM、DDR3 SDRAM、DDR4 SDRAM,目前最新的为DDR5 SDRAM。


4.2.1、SDRAM芯片
在嵌入式Cortex-M内核开发时,如果需要扩展大容量的内存,可以外挂一片SDRAM,以华邦W9825G6KH为例说明接口与时序。





其中:
1、CLK就是SDRAM的同步时钟信号,CLE为时钟信号的使能线;CS为片选信号;
2、SDRAM与SRAM不同,其地址线与数据线共用,如上A0~A15,而地址选通有分为行选通信号RAS,及列选通信号CAS,通过行、列地址来指定读写的位置;

3、地址线A0~A12中,W9825G6KH芯片中行地址使用了A0~A12,共13位;列地址使用了A0~A8共8位;因此可寻址范围为:(2^9)*(2^13)=4194304=4MB;而数据总线宽度为16位,因此每个BANK的大小为4MB*2=8MB;由于该芯片可以通过BS1/BS0来选择4个BANK,每个BANK容量为8MB,因此总容量为8MB*4=32MB。
4、LDQM/UDQM也是其用于选择低/高字节使能信号。
4.2.2、DDR芯片
在嵌入式Cortex-A内核开发时,一般需要外置SDRAM,比如DDRx内存,现在以NT5CC256M16EP为例说明DDR3内存的接口功能。



1、该DDR3L与之前的SDRAM一致,地址与数据共用总线,通过行信号RAS与列信号CAS进行选通具体位置。同时还是有CS片选信号及CKE时钟使能信号,但是因为其时钟频率较高,避免干扰影响,时钟采用的差分信号线CK/CK#,所有控制信号与地址信号均在CK/CK#上升沿与下降沿交叉处被采集。
2、地址线为A0~A14,共15根地址线,其中用于行地址的为A0~A14,共15根;用于列地址的为A0~A9,共10根;因此一个BANK的大小为(2^10)*(2^15)*2=64MB,由于该芯片有BS2、BS1、BS0可选择8个BANK,所以该DDR3L芯片的容量为64×8=512MB。
3、该芯片也有UDQS/LDQS用于选择高/低字节有效信号。
DDRx在应用前需要配置一些关键的时间参数,如下表所示:

a>、tRCD参数


b>、CL参数


c>、AL参数


d>、tRC参数
tRC参数是两个ACTIVE命令,或者ACTIVE命令到REFRESH命令之间的周期,可参考DDR3L数据手册。e>、tRAS参数
tRAS参数是ACTIVE命令到PRECHARGE命令之间的最小时间,DDR3L数据手册会给出该时间值。以上DDR3L的读写时序还是比较复杂,一般MCU或ARM处理器有专门的控制器实现读写操作,比如ARM Cortex-M系列的FMC/FSMC控制器,可以连接外置的SRAM或SDRAM;而对于ARM Cortex-A系列的MMDC控制器,可以连接外置的DDRx,软件上只需配置相应的寄存器即可。