单片机(简称MCU)作为嵌入式系统的核心控制器,其地址范围指的是其内部或外部存储器(包括程序存储器和数据存储器)所能访问的地址空间的起始地址到结束地址的区间。通过这个地址范围,单片机能够定位并访问特定的存储单元。
单片机通常包含两类主要存储器:
程序存储器(代码存储器):用于存储固化的程序代码,通常是只读存储器(ROM、Flash)。
数据存储器:用于程序运行时临时存放数据,通常是随机存取存储器(RAM)。
地址范围与容量的关系
单片机的地址范围决定了它可以访问的最大存储单元数目,而存储器容量则是以字节(Byte)为单位的存储大小。两者之间的关系如下:
容量 = 地址范围大小 × 每个地址单元的存储大小
通常每个地址单元存储1字节数据,容量单位与地址范围大小相同。
例如,8位地址总线可访问2^8 = 256个地址,若每地址1字节,则容量为256字节。
那么,如何计算单片机的地址范围及容量?
1. 根据地址线数计算地址范围
单片机的地址范围主要由其地址线数量决定。计算公式为:
地址范围大小 = 2^n
其中,n为地址线数量。
n根地址线可组合形成2^n个不同地址。
地址范围通常以地址的最高值和最低值表示,范围从0开始到2^n − 1。
2. 根据存储器结构计算容量
容量计算时还需要知道每个地址对应存储的字节数。大多数情况下,单片机的存储器是字节寻址,即每个地址对应1字节容量。
因此:
容量(字节) = 2^n × 每地址字节数
若存在多字节组织(例如16位字长),则需要乘以字长对应的字节数。
3. 区分程序存储器和数据存储器地址范围
现代单片机通常采用哈佛结构,程序存储器和数据存储器分别拥有独立的地址空间和地址线。它们的地址范围和容量计算需分别考虑。
例如:
程序存储器地址线为m根,则程序存储器容量为2^m字节或指令数。
数据存储器地址线为k根,则数据存储容量为2^k字节。
举例说明
以一款常见的单片机为例:
地址线数:16根地址线
数据线宽度:8位(1字节)
则:
地址范围大小 = 2^16 = 65536个地址
存储容量 = 65536字节 = 64KB
如果程序存储器有15根地址线,数据存储器有8根地址线,则对应容量分别是:
程序存储器容量 = 2^15 = 32768字节 = 32KB
数据存储器容量 = 2^8 = 256字节
影响地址范围和容量的其他因素
存储器类型:Flash、ROM、RAM等存储器容量和地址组织方式可能不同。
地址扩展技术:部分单片机支持地址扩展技术(如分页、银行切换),从而访问更大容量的存储空间。
字长和总线宽度:影响存取单元数据量和寻址方式。
系统架构设计:可影响地址范围的实际利用效率。