【问题标题】:How do the two program counter registers work in the 6502?这两个程序计数器寄存器在 6502 中是如何工作的?
【发布时间】:2017-10-09 12:49:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: 6502 program-counter


    【解决方案1】:

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

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

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

    【讨论】:

    • 我不再从事这个项目,但我相信其他人会从这个出色的答案中获得价值。非常感谢!
    • 没问题!你的项目进展如何?
    • 我稍微完成了它,当我离开时它被传递给其他人(这是我的 HS 顶点项目 - 在 logisim 中构建 6502 以开发课程供学生做同样的事情) -- 主要我曾经做过的事情就是对逻辑进行编程,大部分电路都完成了。
    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 2021-08-22
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2018-11-11
    相关资源
    最近更新 更多