【发布时间】:2013-11-06 18:06:18
【问题描述】:
假设我们有一个简单的处理器,可以是一个嵌入式系统,有一个系统总线,为了论证,一个 32 位总线。
现在,如果我们有几个外设,例如一个名为 PER0 的外设连接到总线,我们可以做两件事:
允许它以固定宽度访问主总线,例如 8 位,这样 PER0 将始终与 8 位包中的总线通信。我们可以称之为静态宽度访问。
-
允许它选择如何与 总线根据数据大小使用它告诉的信号 处理器要使用的访问模式。例如,我们 在处理器和 PER0 之间创建两个信号 A1 和 A0,其 价值观会说:
00 - 等待
01 - 8位
10 - 16位
11 - 32位这样处理器就会知道是否发送 8bit 数据到它的 总线或 32 位数据,基于 A1、A0 的值。这我们可以称之为 动态宽度访问总线。
问题: 根据您的经验,这两种方法中的哪一种更受欢迎,为什么?另外,在哪些情况下应该实施?最后,考虑到嵌入式系统,哪种方法传播得更广?
编辑:我想扩展这个话题,所以我不是在问个人喜好,而是想了解关于这两种方法及其应用的更多信息在计算机系统中。因此,我认为这是一个合法的 stackoverflow 问题。
谢谢!
【问题讨论】:
-
现代处理器总线使用字节掩码或其他控件来确定哪些通道有新数据用于写入和读取长度,该长度指示传输的大小/宽度。至于你的问题,这是一个意见问题,所以它真的不适合stackoverflow。
-
您始终在 CPU 内存控制器中配置 PER0 的地址范围。如果您的外设混合了 32/16/8 位寄存器,则必须始终以 32 位访问并屏蔽未驱动位。存储设备将始终是对称的(不混合 8/16/32)。你总是静态配置它,因为额外的行会花钱。如果您想让您的软件在两种不同的填充物上工作并探测设备以确定宽度,然后配置内存控制器,您可以在 BOM 上添加上拉/下拉。您的问题高度依赖于 CPU 架构。
标签: embedded processor bus addressing peripherals