10.2 地址译码与片选
第 10.1 节说明了不同存储技术。系统通常包含多个芯片,因此一个地址必须同时选择某个芯片和该芯片内的某个位置。地址译码(address decoding)会把地址模式转换成片选(chip select)信号。
低位选择片内位置,高位选择芯片
一个 8 KiB 字节宽芯片包含 个位置,因此使用 A12…A0 作为片内偏移。若它映射到 20000H,闭区间窗口为:
其余高位 A19…A13 必须匹配该窗口的模式。匹配时 /CS 有效,否则芯片忽略读写命令。
正在绘制图表…
二的整数次幂大小的窗口应从其容量的整数倍地址开始,这称为对齐(alignment)。对齐让低位只表示偏移、高位只表示片选,从而形成清晰边界。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
不完全译码会产生别名
完全译码(full decoding)会比较所有未用于片内寻址的地址位。不完全译码(partial decoding)会忽略一个或多个高位以节省逻辑。电路可能仍能工作,但同一物理芯片会出现在多个 CPU 地址范围中。
如果 4 KiB 芯片在内部使用 A11…A0,而译码器忽略 A15…A12,这四位就有 种组合。同一个物理单元因此会拥有 16 个外部别名(alias)或镜像地址。
正在绘制图表…
受严格控制的设计有时会有意使用别名,但别名会让存储器地图复杂化,也可能掩盖译码错误。更严重的是,如果两个芯片的不完全译码条件重叠,它们可能同时被片选。
验证译码器时,应探测窗口两侧边界,并逐个改变所有应该有意义的高位。正确的完全译码应选择窗口内全部地址、拒绝两端之外的第一个地址,并且不产生意外镜像。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
第 10.2 节选择了一个芯片。第 10.3 节将组合多个芯片,使其匹配 8086 数据宽度,并构建超过单个封装容量的位置数量。