三、存储系统(三)主存储器

本文介绍了多模块主存储器的两种类型:单体多字存储器和多体低位交叉存储器,强调了并行工作在提高存储器吞吐率中的作用。内容涵盖高位交叉编址和低位交叉编址的工作原理,以及主存储器与CPU的连接,包括连接原理、主存容量扩展和关键的地址线、数据线及控制线连接方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

3.1多模块主存储器

3.1.1单体多字存储器

3.1.2多体并行存储器

3.1.2.1高位交叉编址(顺序方式)

3.1.2.2低位交叉编址(交叉方式) 

3.2主存储器与CPU的连接

3.2.1连接原理

3.2.2主存容量的扩展

3.2.3小结


3.1多模块主存储器

多模块存储器是一种空间并行技术,利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率。常用的有单体多字存储器和多体低位交叉存储器。 

这是一个内存条和下面的内存条插槽,我们将多个内存条并行工作来增加存储器的吞吐率。

存储器读写数据时,除了存取数据本身的时间之外,存取完还需要一段恢复时间。(这非常重要,芯片的工作可不是无缝衔接的)。

存取周期=存取时间+恢复时间。所以我们并行工作时可以跳过某个内存条的恢复时间去利用下一个内存条存取。

3.1.1单体多字存储器

就是将4个内存条的存储单元看作一个整体的存储单元,整体我们只有一套读写电路、地址寄存器和数据寄存器,我们想要读取某个信息都是一排一排地读取的。

  • 如果我们想要的信息是存储在连续一排的空间时:

假设存取周期T=存取时间r+恢复时间3r,这种情况下我们在一个时间T内可以读取①②③④的信息,然后⑤所在的内存条的恢复时间刚过完,我们继续读取即可。而不采用并行设计时需要的时间为4T。

  • 如果我们想要的信息是③④⑤⑥这样不在一排的信息时:

我们就需要读两排的信息了,这时还会读入不需要的信息①②

3.1.2多体并行存储器

 多体并行存储器的每个模块都有相同的容量和存取速度。各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。

3.1.2.1高位交叉编址(顺序方式)

高位交叉编址是取地址的高位进行编址的,所以它的特点是连续的地址存完一列再存下一列。即每个模块的地址编址是连续的。 

 很明显,大多数情况下我们都是要读连续的存取地址的,然而高位交叉编址它们都在一个内存条上,所以存储器的吞吐量没有提升,只是容量扩大了4倍。

 

 所以这种方法并不常用,408中四体交叉编址默认是低位交叉编址。

3.1.2.2低位交叉编址(交叉方式) 

很明显我们是排完一行再排下一行,这样在读连续地址时能够有效地避免各个内存条的恢复时间。

上图我们读取5个地址用的时间是5r+3r,即算5个地址耗时必须加上最后一个访问存储模块恢复。读取8个地址用时是8r+3r。

假设采用4体交叉编址存储器,则存储周期为T,存取时间为T/4。

则此时访问冲突意为:给定的访存地址在相邻的4次访问中出现在同一个存储模块内。

  • 若给的访存地址为2进制数看低两位即可。
  • 若给的访存地址位十进制数对4取余即可判断在第几个模块中,能整除则低两位是00,余1在01,余2在10,余3在11。

3.2主存储器与CPU的连接

3.2.1连接原理

  • 数据总线的位数与工作频率的乘积正比于数据传输率(主存带宽)。
  • 地址总线的位数决定了可寻址的最大内存空间。
  • 控制总线(读/写)指出总线周期的类型和本次输入/输出操作完成的时刻。

3.2.2主存容量的扩展

单个存储芯片的容量是有限的,它的存储字长与数据总线宽度、字数和地址总线规模有差距,因此需要在位和字两方面进行扩充才能满足实际存储器的容量要求。 

 注意:除片内寻址之外的高位地址总线用来片选。

3.2.3小结

  1. 合理选择存储芯片。要组成一个主存系统,选择存储芯片是第一步,主要指存储芯片的类型(ROM或RAM)和数量的选择。通常选用ROM存放系统程序、标准子程序和各类常数,RAM则是为用户编程而设置的。此外,在考虑芯片数量时,要尽量使连线简单、方便。
  2. 地址线的连接。存储芯片的容量不同,其地址线数也不同,而CPU的地址线数往往比存储芯片的地址线数要多。通常将CPU地址线的低位与存储芯片的地址线相连,以选择芯片中的某一单元(即字选),这部分的译码是由芯片的片内逻辑完成的。而CPU地址线的高位则在扩充存储芯片时使用,用来选择存储芯片(即片选),这部分译码由外接译码器逻辑完成。例如,设CPU地址线为16位,即A_{15}~A_{0},1K×4位的存储芯片只有10根地址线,此时可以将CPU的低位地址A_{9}~A_{0}与存储芯片的地址线 A_{9}~A_{0} 相连,而剩下的CPU的高位地址线用来片选。
  3. 数据线的连接。CPU的数据线数与存储芯片的数据线数不一定相等,在相等时可直接相连;在不等时必须用存储芯片位扩展,使其数据位数与CPU的数据线数相等。
  4. 读/写命令线的连接。CPU读/写命令线一般可直接与存储芯片的读/写控制端相连,通常\frac{}{WE}低电平写,高电平读;如果有两条读/写命令线则\frac{}{WE}\frac{}{OE}都是低电平写或读,此时CPU的读命令线应与存储芯片的允许读控制端相连,而CPU的写命令线则应与存储芯片的允许写控制端相连。
  5.  片选线的连接。片选线的连接是CPU与存储芯片连接的关键。存储器由许多存储芯片叠加而成,哪一片被选中完全取决于该存储芯片的片选控制端\frac{}{CS}是否能接收到来自CPU的片选有效信号。片选有效信号与CPU的访存控制信号\frac{}{MREQ}(低电平有效)有关,因为只有当CPU要求访存时,才要求选中存储芯片。若CPU访问I/O,则\frac{}{MREQ}为高,表示不要求存储器工作。

 

### 单片机控制锂电池电路设计实现方法 单片机是一种高度集成的微型计算机系统,由中央处理器(CPU)、存储器(RAM和ROM)、输入/输出接口等部分组成[^2]。它能够根据预先编写的程序独立完成各种控制和计算任务。在锂电池充电过程中,采用单片机控制手段,能够通过有效控制均衡电路,提高锂电池充电效率与效益[^1]。 以下是单片机控制锂电池电路设计的实现方法,包括硬件设计、软件编程和核心算法。 #### 硬件设计 单片机控制锂电池的硬件设计主要包括以下几个部分: - **单片机选型**:选择适合的单片机型号,例如STC89C52或STM32系列。这些单片机具有足够的I/O端口和处理能力,可以满足锂电池充电控制的需求。 - **锂电池保护电路**:设计过充、过放、过流和短路保护电路,确保锂电池的安全性。 - **均衡电路**:设计均衡电路以平衡锂电池组中各单体电池的电压,避免因电压不均导致的容量损失。 - **充电电路**:设计恒流恒压充电电路,确保锂电池在充电过程中保持稳定的电流和电压。 以下是一个简单的单片机控制锂电池充电电路设计示意图: ```plaintext +-------------------+ | 单片机 (MCU) | | (STC89C52) | +-------------------+ | I/O v +-------------------+ | 充电管理芯片 | | (如TP4056) | +-------------------+ | v +-------------------+ | 锂电池 | +-------------------+ ``` #### 软件编程 单片机控制锂电池的核心在于软件编程。以下是一个简单的单片机控制锂电池充电的代码示例,使用C语言编写: ```c #include <reg52.h> sbit CHARGE_ENABLE = P1^0; // 定义充电使能引脚 sbit BALANCE_CONTROL = P1^1; // 定义均衡控制引脚 unsigned int voltage; // 用于存储电池电压 void init() { CHARGE_ENABLE = 0; // 初始化充电使能为关闭 BALANCE_CONTROL = 0; // 初始化均衡控制为关闭 } void read_voltage() { // 模拟读取电池电压(实际应用中需要ADC模块) voltage = 3700; // 假设当前电压为3.7V } void control_charging() { if (voltage < 3600) { // 如果电压低于3.6V,启动充电 CHARGE_ENABLE = 1; } else if (voltage >= 4200) { // 如果电压达到4.2V,停止充电 CHARGE_ENABLE = 0; } } void balance_cells() { if (voltage > 4100) { // 如果电压超过4.1V,启动均衡 BALANCE_CONTROL = 1; } else { BALANCE_CONTROL = 0; } } void main() { init(); while (1) { read_voltage(); // 读取电池电压 control_charging(); // 控制充电过程 balance_cells(); // 控制均衡过程 } } ``` #### 核心算法原理 单片机控制锂电池的核心算法包括: - **最大功率点跟踪(MPPT)算法**:在太阳能充电器中,单片机负责协调太阳能电池和锂电池的工作,实现高效、安全的充电过程[^2]。MPPT算法可以通过动态调整充电电流和电压,使太阳能电池始终工作在最大功率点。 - **恒流恒压充电算法**:锂电池充电通常采用恒流恒压充电方式。在充电初期,单片机控制充电电流保持恒定;当电池电压接近额定值时,逐渐降低充电电流,直到充电完成。 ###
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值