14.2 集成存储器与外设
架构给模块命名,集成则给每个模块分配地址,并证明每个总线周期只有预期模块响应。综合系统使用从 0000H 到 FFFFH 的 16 位地址空间。每个字节地址必须选择零个或一个设备,绝不能同时选择两个。
分配区域并推导片选行为
地址映射(address map)为 ROM、RAM 与外设寄存器分配互不重叠的范围。若设备从基址 开始占用连续 个字节,其末地址为
基址通常应按区域大小对齐,使简单的高位译码就能选择设备。一个从 8000H 开始、大小为 256 字节的 UART 区域结束于 80FFH;低八位地址选择区域内寄存器,高位则识别设备。
正在绘制图表…
区域重叠会让一个地址同时置位两个片选。读周期中,两个设备可能同时驱动数据总线并产生争用。间隙不一定错误——未分配地址可以保留——但软件不能假定它们能保存数据。地址镜像(aliasing)是译码不完整导致一个物理寄存器响应多个地址。为了降低硬件成本可以有意采用,但会增加调试与扩展难度。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
在每个周期验证所有权、时序、宽度与完成
地址正确并不保证传送有效。一个总线周期还必须满足:
- 所有者(owner):CPU 或 DMA,只能有一个。
- 方向(direction):读时只有一个源驱动数据总线;写时目标负责采样。
- 宽度(width):16 位数据总线上的 8 位外设必须使用预期字节通道或适配器。
- 时序(timing):慢速设备需要等待状态,使 CPU 采样前数据已经有效。
- 完成(completion):必须定义就绪、响应、超时或总线错误行为。
正在绘制图表…
假设 CPU 在两个周期后采样,而 ADC 寄存器需要四个周期。若不插入两个等待周期,读操作可能返回旧值或未定义总线电平。无差别加入等待虽然安全,却会拖慢所有传送;译码应只对慢速目标应用等待。
中断与 DMA 导线也需要同样纪律。电平触发中断必须保持有效,直到来源被清除。DMA 请求必须匹配已配置通道、方向、宽度和缓冲区。总线调试器会暴露提前采样、双驱动、错误字节通道与缺失完成,而不是把集成简化为一张地址表。
正在加载交互实验...
正在加载概念检查...
正在加载本节练习...
第 14.2 节证明了每次传送都有唯一目标、唯一驱动者和有效采样时刻。第 14.3 节将构建能在负载下服务这些传送的软件,并验证最终期限与不变量。