Skip to content

2、单位及换算

例题

例题 1 2010 年下半年·存储器地址译码题

题目

采用 2K×4 位 的存储器芯片组成 16K×8 位 的存储器(地址单元为 0000H ~ 3FFFH,每个芯片的地址空间连续)。
则地址单元 0B1FH 所在芯片的最小地址编号为( )。

  • A. 0000H
  • B. 0800H
  • C. 2000H
  • D. 2800H

解析

数据规格换算
  • 2K×4:有 2K = 2048 = 2¹¹ 个地址、每地址 4 bit。
  • 16K×8:有 16K = 16384 = 2¹⁴ 个地址、每地址 8 bit。

架构原则:先并后串
  1. 并位宽:两片 2K×4 并成 2K×8(地址线共用,数据线拼 8 位)。
  2. 串容量:将“2K×8 块”再做片选级联,扩到 16K:
    [ \frac{16K}{2K} = 8 \text{ 块} ] 因此共有 8 个 2K×8 的块(每块由两片 2K×4 组成)。

块大小(BlockSize)= 单块容量 = 2K = 0x0800


地址线分配
  • 片内地址线:A10 ~ A0(11 位) → 控制 2K 范围内单元。
  • 片选译码:A13 ~ A11(3 位) → 选择 8 个块之一(000 ~ 111)。
  • 整机地址范围:0000H ~ 3FFFH(共 2¹⁴ 个地址)。

分块起始地址表(步长 0x0800)
块号(A13..A11)起始地址
0000000H
0010800H
0101000H
0111800H
1002000H
1012800H
1103000H
1113800H

定位 0B1FH 所在块

方法一(除法取整): [ \left\lfloor \frac{0x0B1F}{0x0800} \right\rfloor = \left\lfloor \frac{2847}{2048} \right\rfloor = 1 ] → 在第 1 块(从 0 起计),其起始地址为
[ 1 \times 0x0800 = \mathbf{0x0800} ]

方法二(区间判断): [ 0x0800 \le 0x0B1F \le 0x0FFF ] → 仍落在以 0x0800 为起点的块内。

因此,0B1FH 所在芯片(块)的最小地址编号0800H

答案:B. 0800H


易错点与核验
  • 0000H 是第 0 块起始,仅当地址 < 0x0800 时成立。
  • 2000H / 2800H 为第 4 / 第 5 块起始,远大于 0x0B1F。
  • 片数核对:每块 2 片(2K×4 并成 2K×8),共 8 块 → 16 片
  • 地址线数:16K 需 14 根(A13..A0),与“11 位片内 + 3 位片选”一致。

通用解题模板(速记)
  1. 先并位宽,后串容量
  2. 块大小 = 单块地址数(本题 2K = 0x0800)。
  3. 块起始地址 = 向下对齐到块边界
    [ \text{start} = \big\lfloor \frac{\text{addr}}{\text{BlockSize}} \big\rfloor \times \text{BlockSize} ]
  4. 低位 → 片内地址,高位 → 片选译码

2012 年上半年·地址空间容量计算(完整解析与笔记)

题目

内存单元按字节编址,地址 0000A000H ~ 0000BFFFH,共有( )个存储单元。

  • A. 8192K
  • B. 1024K
  • C. 13K
  • D. 8K

解题要点

  • 按字节编址:每个地址对应 1 字节,因此“存储单元数 = 字节数”。
  • 地址范围是闭区间,总数公式: [ N = \text{End} - \text{Start} + 1 ]
  • 将十六进制计算: [ \text{End} = 0x0000BFFF,\quad \text{Start} = 0x0000A000 ] [ N = 0xBFFF - 0xA000 + 1 = 0x1FFF + 1 = 0x2000 = 8192 = \mathbf{8K} ]

也可快速判断:

  • 0xA000 ~ 0xAFFF:4K
  • 0xB000 ~ 0xBFFF:4K
  • 合计 8K 字节

答案

D. 8K


易错点

  • 忽略“+1”(闭区间计算)。
  • K 当成 KB 的个数而非地址个数;本题按字节编址,8K 个地址 = 8KB

KESHAOYE-知识星球 V20251014112120