6502中的两个程序计数器寄存器是如何工作的?

How do the two program counter registers work in the 6502?

我目前正在 LogiSim 中开发 6502 的一个子集,在当前阶段我正在确定要实现哪些部分以及可以删除哪些部分。我的主要资源之一是 Hanson's Block Diagram.

我目前正在尝试确定增量逻辑的工作原理。在我之前在学校从事的一个项目中,程序计数器是通过来自解码指令存储器的单个指令递增的。在此图中,程序计数器逻辑看起来与我之前遇到的不同。

这个逻辑究竟是如何工作的,它是否使用指令存储器中的指令来递增?作为后续,是否可以简化程序计数器逻辑以使用指令存储器中的一条或两条指令进行递增?

6502只有一个程序计数器。它是 16 位宽。因为 CPU 中的很多其他东西正好是 8 位宽,所以将 16 位程序计数器分成两半是硬件有意义的,这样每一半都适合 8 位。例如,每一半都单独加载,一个接一个,使用 JMP 之类的指令。相关分支指令将 PCL 带到 ALU 输入。

这两半在内部只称为 PCHPCL。您可以看到 PCL 附加了递增逻辑,其中一个输出是称为 PCLC 的进位执行信号。这是 另一个 递增 PCH 电路的输入。

None 这对程序很重要。该程序只关心 PC 指向接下来要执行的指令,并使用该事实来影响其自身的流程。但是,如果您有兴趣了解更多这些细节,我会向您介绍 Visual6502 模拟。它比 Hanson 的框图更准确和详细。