输出寄存器数据路径在 6502 中如何工作?
How does the output register data path work in the 6502?
我目前正在 LogiSim 中开发 6502 的一个子集,在当前阶段我正在确定要实现哪些部分以及可以删除哪些部分。我的主要资源之一是 Hanson's Block Diagram.
我目前正在尝试确定输出寄存器及其数据路径的工作原理。在此图中,在我看来,数据输出寄存器通过输入数据锁存器返回到总线,但也返回到指令寄存器。
这让我感到困惑,因为通常将图表右侧的地址线发送回程序存储器(未显示),而不是如图所示发送回总线。
这个数据路径究竟是如何工作的?作为后续,是否可以简化此区域以仅获取输出并将其发送到显示器而不是如图所示返回处理器?
This confuses me because usually the Address lines to the right of the diagram are sent back into the program memory (not pictured) and not back onto the bus as pictured.
地址总线的工作方式与数据总线不同。地址总线总是输出,但数据总线可以是输入或输出。我们说数据总线是三态的;它要么读取,要么写入,要么两者都不读取。 d0
到 d7
的每个引脚都有一个简单的电路,涉及几个晶体管来控制它。对于 6502,CPU 的每个周期都在读取或写入内容。换句话说,从 6502 的角度来看,每个周期要么是读周期,要么是写周期。
I am currently trying to determine how exactly the output register and its data path works.
看看:输入数据锁存器和预解码寄存器加载了每个φ2。但是输出数据寄存器加载了每个φ1。 φ1和φ2是CPU时钟的两个相位。这种安排留出了足够的时间,例如,一个值可以从输入数据锁存器通过 ALU 并进入输出数据寄存器。
数据输出寄存器的输出进入数据总线三态缓冲器。如您所见,它由 R/W
和 φ2
控制。如果它是一个读周期,那里什么也不会发生。所以如果它是一个写周期,这意味着数据输出寄存器中的值(加载了前面的 φ1)将被放到数据总线上。它还将加载到预解码寄存器和输入数据锁存器中。
In this diagram, it looks to me like the data output register goes back onto the bus through the Input Data Latch, but also back into the instruction register.
当然可以。 CPU 输出的任何内容也可以加载到输入数据锁存器和预解码寄存器中。但这并不重要,因为一条指令总是以读取周期开始,即操作码获取,因此输入数据锁存器和预解码寄存器将被适当的值覆盖。
我目前正在 LogiSim 中开发 6502 的一个子集,在当前阶段我正在确定要实现哪些部分以及可以删除哪些部分。我的主要资源之一是 Hanson's Block Diagram.
我目前正在尝试确定输出寄存器及其数据路径的工作原理。在此图中,在我看来,数据输出寄存器通过输入数据锁存器返回到总线,但也返回到指令寄存器。
这让我感到困惑,因为通常将图表右侧的地址线发送回程序存储器(未显示),而不是如图所示发送回总线。
这个数据路径究竟是如何工作的?作为后续,是否可以简化此区域以仅获取输出并将其发送到显示器而不是如图所示返回处理器?
This confuses me because usually the Address lines to the right of the diagram are sent back into the program memory (not pictured) and not back onto the bus as pictured.
地址总线的工作方式与数据总线不同。地址总线总是输出,但数据总线可以是输入或输出。我们说数据总线是三态的;它要么读取,要么写入,要么两者都不读取。 d0
到 d7
的每个引脚都有一个简单的电路,涉及几个晶体管来控制它。对于 6502,CPU 的每个周期都在读取或写入内容。换句话说,从 6502 的角度来看,每个周期要么是读周期,要么是写周期。
I am currently trying to determine how exactly the output register and its data path works.
看看:输入数据锁存器和预解码寄存器加载了每个φ2。但是输出数据寄存器加载了每个φ1。 φ1和φ2是CPU时钟的两个相位。这种安排留出了足够的时间,例如,一个值可以从输入数据锁存器通过 ALU 并进入输出数据寄存器。
数据输出寄存器的输出进入数据总线三态缓冲器。如您所见,它由 R/W
和 φ2
控制。如果它是一个读周期,那里什么也不会发生。所以如果它是一个写周期,这意味着数据输出寄存器中的值(加载了前面的 φ1)将被放到数据总线上。它还将加载到预解码寄存器和输入数据锁存器中。
In this diagram, it looks to me like the data output register goes back onto the bus through the Input Data Latch, but also back into the instruction register.
当然可以。 CPU 输出的任何内容也可以加载到输入数据锁存器和预解码寄存器中。但这并不重要,因为一条指令总是以读取周期开始,即操作码获取,因此输入数据锁存器和预解码寄存器将被适当的值覆盖。