嵌入式开发人员,那些SRAM、SDRAM等存储手艺,需要领会
如今嵌入式处置器中的RAM内存类型次要为SRAM与SDRAM,微型处置器如Cortex-M内核系列MCU的RAM根本上是内置的,以SRAM为主,容量大小根本上为几K至几百K级别;而基于Cortex-A内核系列处置器,应用RAM需要外置,根本上接纳SDRAM类型外部存储器,容量根本上到达几百M级别;而关于处置才能更强的电脑CPU,其内存以SRAM加SDRAM连系的体例,SRAM做为cache缓存(是CPU与SDRAM的中继),而SDRAM做为外部大容量的内存(如通用的DDR内存条)。
现代RAM存储手艺是在半导体手艺创造,出格是晶体管与MOS管创造下的产品,而在半导体手艺创造前,信息的存储手艺履历过多个开展阶段,早期前言记录(如纸张)、穿孔卡片、电子管手艺、磁手艺、半导体手艺等,见下表:
一、早期前言记录
人类在通过前言记录信息前,都是通过大脑记录信息,然后通过回忆来复原所需要的信息(人脑就是内存和硬盘),但是人脑容易遗忘,于是原始社会人类便起头了对信息存储的摸索和利用,好比下面就是早期常用的记录体例:
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将那种设想的打孔卡根据必然挨次绑缚,应用于提花织机;
1846年,Alexander Bain创造了传实机和电传电报机,也利用了穿孔纸带来暗示指令,纸带上每一行代表一个字符,操纵二进造编码:带孔为1,无孔为0,颠末光电扫描输入电脑,如下图:
1890年,穿孔卡片由一位结业于哥伦比亚大学的年轻人 赫尔曼·霍尔瑞斯 (Herman Hollerith)普遍应用于生齿普查中的数据存储。
在 生齿普查中的穿孔卡片,一张卡片记录一个居民的信息,包罗国籍、人种、性别、生日等;好比在卡片上用了两个孔位,暗示男性就在此中一处打孔,暗示女性就在另一处打孔,暗示12个月就是12个孔位,那就是早期穿孔卡片记录信息的办法,该办法固然如今看起来很傻,但是那些在其时能够被机器识此外卡片是一个庞大的打破。通过穿孔有无来暗示信息,也是现代计算机二进造1、0来暗示数据的雏形。
1896 年前,霍尔瑞斯成立造表机公司,专注于穿孔卡片的改良与开展;1911 年,造表机公司与别的 3 家公司合并成立 CTR 公司;1924 年,CTR 改名为 国际贸易机器公司(International Business Machines Corporation),就是如今大名鼎鼎的 IBM 公司。
IBM公司在1928年创造的12行80列的穿孔卡片,在其时成为信息记录的支流,出格是用于记录法式代码,每张卡片记录一行代码,如下图所示(黑色框暗示已打孔):
上图所示为12*80穿孔卡片,从上往下别离分为第12行,第11行,第10行(或者第0行),第1,2,...,9行;此中红色方框的数字1-80暗示80个列号。
如许一张的穿孔卡片能够暗示一行代码,每一列暗示一个数字或字母,一张卡片能够暗示80个数字或字母,规则如下:
举例申明,仍是以上图所示取5列申明每一列所代表的字母,如下图所示:
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个数字和字母。
穿孔卡片在其时应用十分普遍,20世纪初的IBM计算机,如IBM701就是利用穿孔卡片来保留法式数据,但阿谁年代的编程并非手动在那些卡片上打孔,有个叫键盘打孔器(keypunch)的设备能够专门用来打孔,键盘上输入1, 就在当前列的第1行打一个孔,然后到下一列。负责用键盘打孔器打孔的操做员凡是是女性,所以编程整体流程上是:
二、磁存储器
操纵穿孔卡形式的机械存储,信息的读取和写入,都依赖于纸带上孔的设想。跟着电磁学的开展,从机械主动化逐渐开展到电气主动化。存储核心是操纵两个形态二进造来表征数据信息。磁性质料,操纵磁矩的取向,也能够实现两态,从而替代机械打孔。而且表征每个形态的体积相关于机械孔而言,能够做到更小,从而能够实现更高的存储密度。后续呈现的磁带存储手艺,必然水平上还保留着打孔卡设想的影子。
磁性质料做为存储介量的存储类型有良多,包罗有磁带、磁鼓、磁芯、磁阻、以及后面应用于计算机的磁盘等等。
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,就不会产生电流。要想让磁芯存储数据,需要立即停止从头写入。
磁芯搭建内存需要将磁性排布成阵列,早期的线选法凡是和3度4线法(3D4W)共同,它需要利用四根线路。别离是互相垂曲的x、y线(也能够叫行、列),制止线z线,还有读取线,每颗磁芯城市同时穿过4根导线。读取线呈45°穿过所有磁芯的读取线,那种摆列体例是为了尽可能削减干扰。写入数据时,在响应的x和y线上别离加载一半功率脉冲。如许只要在两条线重合点处的磁芯受叠加脉冲影响记录数据。读出时则如上文所述,强行写入数据1,若是读出线产生了感应脉冲,申明那颗磁芯本来记载为0,若是没有感应脉冲,申明本来记载的为1。读取历程完毕后,若是本来记载为0时,因为读取时写入了1,需要停止重写历程,强行写回数据0。
下图为由磁芯板构成的磁芯阵列:
在50年代到70年代之间,磁芯存储器根本统治着内存范畴。因为磁性存储器的存储速度上限为10MHz,在高存储容量时体积无法做小,且容易干扰,最末为磁性存储器的开展画上句号的是1970年创造的集成电路随机存储器件(SDRAM)。
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后超声波抵达管子的另一端,然后再转换成电信号输出。
不外,要实现存储功用,还需要一些额外的电路:经调造的脉冲信号从管子的一端进入,960ms后从管子的另一端输出,由变更器领受后,经检测、放大、整形和再生,从头反应到发送端。一个延迟线电路称做一个通道(channel),每个通道可存储10个91位的字,UNIVAC系统中共有100个如许的通道,能够存储99Kb的信息。
总之,在半导体手艺之前,主存储器(即内存)有磁心存储器、水银延迟线存储器、电子管静电存储器等类型,磁鼓和磁盘用做次要的辅助存储器(即硬盘)。
在半导体手艺呈现后,主存储器起头接纳SRAM/SDRAM(即内存),磁盘/ROM/FLASH起头用做次要的辅助存储器(即硬盘)。
四、半导体存储器
上世纪60年代,跟着晶体管与CMOS手艺的创造,及集成电路的开展,半导体存储器起头应用开展,除了呈现了ROM存储外,RAM内存手艺也同时开展,次要分为两个标的目的:SRAM与SDRAM。它们的区别次要在于存储单位的原理差别,如下图所示:
此中SRAM利用六个晶体管电路和锁存器存储一个bit,若是系统通电,SRAM会保留存储的数据而无需反复充电,但是掉电SRAM则数据丧失,因而是易失性存储器;而SDRAM利用一个晶体管另加一个电容器来存储一个bit,因为电容器不成制止地存在漏电现象,因而SDRAM每个单位必需周期性地停止刷新(预充电),同样DRAM也是易失性的。
因为以上存储单位构造的差别,它们的次要区别是SRAM拜候速度更快,但是成本更高,而SDRAM存储密度更高,而且成本低;因而SRAM一般是小容量,好比几个KB~几个MB之间大小,次要用于CPU的缓存cache或MCU的内部RAM;而SDRAM容量比力大,好比几个MB~几百个MB以至几个GB大小,次要用于CPU的内存条或ARM等芯片的外置RAM。
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。
每一代的SDRAM内存晋级,速度都翻倍提拔,而工做电压越来越低,同时跟着造造工艺的改良,存储容量也不竭提拔。目前动态存储器次要以SDRAM为主,在嵌入式MCU中,次要是外置SDRAM芯片来扩展内存,因为MCU内部的SRAM凡是比力小;而在嵌入式ARM Cortex A系列处置器,其内部凡是没有RAM供用户利用的,因而一般利用DDR-DDR3做为外置SDRAM;关于电脑处置器CPU而言,目前次要利用的是DDR4和DDR5。
在2008年前后,跟着智妙手机的鼓起,面向挪动电子产物的SDRAM应运而生,如LPDDR,即(Low Power Double Data Rate SDRAM),是DDR SDRAM的一种,又称为 mDDR(Mobile DDR SDRAM),是美国JEDEC固态手艺协会(JEDEC Solid State Technology Association)面向低功耗内存而造定的通信尺度,以低功耗和小体积著称。
LPDDR应用与手机和平板电脑中,工做电压1.1V,LPDDR5的I/O速度可到达6400MT/s,目前最新的小米11手机等都应用了LPDDR5内存,更高容量可达16GB。
4.2.1、SDRAM芯片
在嵌入式Cortex-M内核开发时,若是需要扩展大容量的内存,能够外挂一片SDRAM,以华邦W9825G6KH为例申明接口与时序。
W9825G6KH是一款16位宽,32MB的SDRAM,速度一般为133MHz、166MHz、200MHz。其内部框图如下:
其每个引脚功用描述如下表所示:
此中:
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内存的接口功用。
该芯片是一款容量512MB大小,16位宽,1.35V,传输速度为1866MT/S的DDR3L芯片,功用款图如下所示:
此中:
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,软件上只需设置装备摆设响应的存放器即可。
我来回答