随机存取存储器(RAM)一般结构和读写过程

本文介绍了RAM的基本结构,包括地址译码器、存储体和I/O控制电路,并详细阐述了RAM的读写过程。此外,还对比了静态RAM(SRAM)与动态RAM(DRAM)的存储单元特点及其扩展方法。

原文地址:http://www.wuyazi.com/dlt/jcdl/szdl/201501/29711.html

RAM的一般结构和读写过程

 1.RAM的一般结构它由三部分电路组成:

  1)行、列地址译码器:它是一个二进制译码器,将地址码翻译成行列对应的具体地址,然后去选通该地址的存储单元,对该单元中的信息进行读出操作或进行写入新的信息操作。

  例如:一个10位的地址码A4A3A2A1A0=00101,B4B3B2B1B0=00011时,则将对应于第5行第3列的存储单元被选中。

  2)存储体:它是存放大量二进制信息的“仓库”,该仓库由成千上万个存储单元组成。而每个存储单元存放着一个二进制字信息,二进制字可能是一位的,也可能多位。

  存储体或RAM的容量:存储单元的个数*每个存储单元中数据的位数。

  例如,一个10位地址的RAM,共有210个存储单元,若每个存储单元存放一位二进制信息,则该RAM的容量就是210(字)×1(位)=1024字位,通常称1K字位(容量)。

  3)I/O及读/写控制电路:该部分电路决定着存储器是进行读出信息操作还是写入新信息操作。输入/输出缓冲器起数据的锁存作用,通常采用三态输出的电路结构。因此,RAM可以与其它的外面电路相连接,实现信息的双向传输(即可输入,也可输出),使信息的交换和传递十分方便。

 2.RAM的读出信息和写入新信息过程(读/写过程):时序

  访问某地址单元的地址码有效,假如你想去访问的具体地址:如A9~A0=0D3H=0011010011B,片选有效=0,选中该片RAM为工作状态。读/写操作有效:=1,读出信息;=0,写入信息;

二、RAM中的存储单元

  按照数据存取的方式不同,RAM中的存储单元分为两种:静态存储单元—静态RAM(SRAM);动态存储单元—动态RAM(DRAM)。

 1.静态存储单元(SRAM):它由电源来维持信息,如触发器,寄存器等。

  静态存储单元(SRAM)的典型结构:

  T5、T6、T7、T8都是门控管,只要栅极高电平,这些管子就工作在可变电阻区,当作开关。

  其中,存储单元通过T5、T6和数据线(位线)相连;数据线又通过T7、T8和再经输入/输出缓冲电路和输入/输出线相连接,以实现信息的传递和交换。写入信息的操作过程,在第一次写入信息之前,存储单元中的信息是随机信息。

假定要写入信息“1”:

 1)地址码加入,地址有效后,相对应的行选线X和列选线Y都为高电平,T5、T6、T7、T8导电;

 2)片选信号有效(低电平);

 3)写入信号有效,这时三态门G2、G3为工作态,G1输出高阻态,信息“1”经G2、T7、T5达到Q端;经G3反相后信息“0”经T8、T6达到。T4导电,T3截止,显然,信息“1”已写入了存储单元。

假定要读出信息“1”:

 1)访问该地址单元的地址码有效;

 2)片选有效=0;

 3)读操作有效R/=1;此时:三态门G1工作态,G2、G3高阻态,存储单元中的信息“1”经T5、T7、G1三态门读出。

  除上述NMOS结构的静态SRAM以外,还有以下几种类型的SRAM。

  CMOS结构的SRAM:功耗更加低,存储容量更加大。

  双极型结构SRAM:功耗较大,存取速度更加快。

 2.动态存储单元(DRAM)

  静态存储单元存在静态功耗,集成度做不高,所以,存储容量也做不大。动态存储单元,利用了栅源间的MOS电容存储信息。其静态功耗很小,因而存储容量可以做得很大。静态RAM功耗大,密度低,动态RAM功耗小,密度高。动态RAM需要定时刷新,使用较复杂。

  动态存储单元(DRAM)的典型结构:

  门控管T3、T4、T5、T6、T7、T8 ,C1、C2为MOS电容。

  DRAM的读/写操作过程:

 1)访问该存储单元的地址有效;2)片选信号有(未画);3)发出读出信息或写入新信息的控制信号。

  读出操作时,令原信息Q=1,C2充有电荷,地址有效后,行、列选取线高电平;加片选信号后,送读出信号R=1,W=0;T4、T6、T8导电,经T4、T6、T8读出。写入操作时,假定原信息为“0”,要写入信息“1”,该存储单元的地址有效后,X、Y为高电平;在片选信号到达后,加写入命令W=1,R=0,即“1。信息经T7、T5、T3对C2充电。充至一定电压后,T2导电,C1放电,T1截止,所以,Q变为高电平,“1”信息写入到了该存储单元中。如果写入的信息是“0”,则原电容上的电荷不变。

  动态RAM的刷新:由于DRAM靠MOS电容存储信息。当该信息长时间

不处理时,电容上的电荷将会因漏电等原因而逐渐的损失,从而造成存储数据的丢失。及时补充电荷是动态RAM中一个十分重要的问题。补充充电的过程称为“刷新”—Refresh,也称“再生”。

 

  补充充电的过程:加预充电脉冲、预充电管T9、T10导电,C01,C02很快充电至VDD,撤消后,C01,C02上的电荷保持。然而进行读出操作:地址有效,行、列选线X、Y高电平;R=1,W=0进行读出操作,如果原信息为Q=“1”,说明MOS电容C2有电荷,C1没有电荷(即T2导电,T1截止);这时C01上的电荷将对C2补充充电,而C02上的电荷经T2导电管放掉,结果对C2实现了补充充电。读出的数据仍为,,则DO=1。

  实际上,在每进行一次读出操作之前,必须对DRAM按排一次刷新,即先加一个预充电脉冲,然后进行读出操作。同时在不进行任何操作时,CPU也应该每隔一定时间对动态RAM进行一次补充充电(一般是2mS时间),以弥补电荷损失。

三、静态RAM的容量扩展(SRAM)

  通常微处理器的数据总线为8位、16位或32位,而地址总线为16位或24位不等。当静态RAM的地址线和数据线不能与微机相匹配时,可用地址线扩展、数据线扩展或地址和数据线同时进行扩展的方法加以解决。

 1.RAM容量的扩展---位数扩展 数据线扩展

  如SRAM 2114:10位地址,4位数据线,其容量=210×4=1024 ×4=4096字位(4K)。

 例:用4K容量的RAM2114,实现一个容量为1024×8 (≈8K字位)字位容量的RAM。

 解:1024×8字位容量,其地址仍是十位,故只要进行数据位扩展即可,选用RAM2114两片,将两片的地址线,读/写线及片选线并联,两片的位线分别作为高4位数据和低4位数据,组成8位的数据线即可。扩展后的电路如图所示:

 2.SRAM容量的扩展---字位扩展,地址扩展,数据位扩展。

 例:用RAM2114,扩展成容量为4096×8字位(32K)的RAM。

 解:4096需要12位地址,而RAM2114只有10位地址,所以需要进行地址扩展,同时应该将一字 4位,扩展成一字8位。字的位扩展用前面方法,地址扩展用译码器完成,用8片RAM2114。扩展后的电路如图所示:

### 动态随机存取存储器 (DRAM) 静态随机存取存储器 (SRAM) 的主要差异 #### 存储原理 - **DRAM** 中的每个存储单元由一个电容一个晶体管组成。电容用于存储数据的电荷(电荷表示1或0)。然而,由于电容会逐渐放电,存储的数据会丢失。因此,DRAM必须定期刷新以确保数据不丢失[^3]。 - **SRAM** 不依赖于电容器来保存状态;相反,它使用多个晶体管形成锁存电路来保持位的状态。这意味着只要持续供电,SRAM就能永久保留其内容而不需额外维护操作[^1]。 #### 数据持久性稳定性 - DRAM 是一种易失性记忆体,在电源关闭后无法维持任何信息,并且即使在运行期间也需要频繁地重新加载数据以防丢失。 - SRAM 同样是易失性的,但在正常工作条件下无需刷新即可稳定保存数据直到下一次掉电为止[^2]。 #### 访问速度与延迟时间 - 尽管 DRAM读写速率远高于磁盘驱动器其他外部介质,但它仍然慢于 SRAM。这是因为每次访问 DRAM 前都需要先完成相应的刷新周期。 - 对比之下,SRAM 提供更快捷高效的寻址能力以及更低延时特性,特别适合作为处理器内部的一级缓存或其他对响应敏感的应用场合[^4]。 #### 成本效益分析 - 从单位容量角度来看,DRAM 更具经济实惠的优势,能够提供更大的内存空间给用户选择。这也是为什么大多数个人电脑都会采用 DRAM 来构建主存的原因之一。 - 另一方面,虽然 SRAM 单价较高,但是因为结构简单所以集成度更高,占用面积更小,非常适合应用于嵌入式系统或是作为 CPU 缓冲区等特定领域内。 ```python # Python 示例代码展示两种 RAM 类型的不同属性 class MemoryType: def __init__(self, name, volatile=True, refresh_needed=False, speed="medium", cost_per_bit="low"): self.name = name self.volatile = volatile self.refresh_needed = refresh_needed self.speed = speed self.cost_per_bit = cost_per_bit def describe(self): description = f"{self.name} is {'volatile' if self.volatile else 'non-volatile'}." if self.refresh_needed: description += " It requires periodic refreshing to maintain data integrity." else: description += " No need for periodic refreshing as long as power supply remains stable." description += f"\nIt has {self.speed}-level access speeds and a {self.cost_per_bit}-cost per bit of storage.\n" return description dram = MemoryType('Dynamic RAM', True, True, "fast compared with HDD/CD but slower than SRAM", "lower") sram = MemoryType('Static RAM', True, False, "very fast", "higher") print(dram.describe()) print(sram.describe()) ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值