问题描述
在维基百科的这张图中,ROM和程序地址寄存器都连接到8位总线,但我认为在8051中,内部ROM使用16位地址。 那么为什么程序地址寄存器要连接到 8 位总线上呢?
解决方法
由于我们不是设计这个架构的人,我们只能猜测或思考原因。如果您真的想知道为什么,您需要找到做出决定的人。
8051复用低地址字节和P0上的数据,地址高字节可以通过P2。因为两个字节可以在不同的时间传输,所以 8 位总线就足够了。
这一设计决策可以减少晶体管和电线方面的硅需求。那时硅面积很贵。
这个问题也可能有历史。 8051 系列沿用了地址位较少的 MCS48(8021、8022、8048 等)。
想想这个控制器的设计时间和目标市场。外部 RAM 或内存映射外设可能只需要 8 位地址,因为这已经足够了,或者使用更多的成本太高。
另一个原因可能是图表过于简化,另外可能是基于另一个。程序地址寄存器可能使用两条 8 位总线,每条总线连接到一个端口驱动程序块。而一些“聪明”的人只是把它们放在一起。
,地址总线不仅连接在那里,前 8 位对于微控制器端口 0 中的地址和数据总线是通用的(这就是为什么您在端口 0 的引脚图中看到 AD0,A - 地址,D -数据。但在端口 2 中,您会发现 A0,只有地址),基本上是减少硬件连接数量的优化,其余 8 位,即地址总线的最高有效位在微控制器的端口 2 中,因此总共 8 + 8 = 16 位。