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

我目前正在尝试确定输出寄存器及其数据路径的工作方式。在此图中,在我看来,数据输出寄存器通过输入数据锁存器返回到总线,但又回到指令寄存器。

processor - 输出寄存器数据路径在6502中如何工作?-LMLPHP

这使我感到困惑,因为通常情况下,图右侧的地址线被发送回程序存储器(未显示),而不是返回到总线(如图所示)。

该数据路径如何工作?作为后续措施,是否可以简化此区域以仅将输出并发送到显示器,而不是如图所示返回到处理器?

最佳答案

这使我感到困惑,因为通常情况下,图右侧的地址线被发送回程序存储器(未显示),而不是返回到总线(如图所示)。


地址总线的工作方式不同于数据总线。地址总线始终为输出,但数据总线可以为输入或输出。我们说数据总线是三态的。它要么读,要么写,或者都不做。每个引脚d0d7都有一个简单的电路,其中包含几个控制该晶体管的晶体管。对于6502,CPU的每个周期都在读取或写入内容。换句话说,从6502的角度来看,每个周期都是读或写周期。


我目前正在尝试确定输出寄存器及其数据路径的工作方式。


看一下:每个φ2都装入了输入数据锁存器和预解码寄存器。但是输出数据寄存器中的每个φ1都被加载。 φ1和φ2是CPU时钟的两个阶段。这种安排留出了足够的时间,例如一个值从输入数据锁存器通过ALU传递到例如输出数据寄存器。

数据输出寄存器的输出进入数据总线三态缓冲器。如您所见,这由R/W以及φ2控制。如果是读取周期,则那里什么也没有发生。因此,如果是写周期,则意味着数据输出寄存器中的值(之前的φ1已加载)将被放置到数据总线上。它还将被加载到预解码寄存器和输入数据锁存器中。


在此图中,在我看来,数据输出寄存器通过输入数据锁存器返回到总线,但又返回到指令寄存器。


绝对。 CPU输出的所有内容也都可以加载到输入数据锁存器和预解码寄存器中。但这没关系,因为一条指令将始终以读取周期开始,这就是操作码的提取,因此输入数据锁存器和预编码寄存器将被正确的值覆盖。

关于processor - 输出寄存器数据路径在6502中如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46666732/

10-11 19:06