简单的4位电脑设计想法

简介

简单的4位电脑,从头设计。

自从我八十年代中期出生以来,我从未经历过。但我拥有老式系统,渴望了解内在的工作

CPU设计CPU不是那么复杂的电路,如果我们保持简单的目标-所以没有硬件基本上,CPU做简单的事情——从数据到内存位置移动数据。

寄存器寄存器是CPU设计的基本组成部分。它们是最有用和最有用的。

寄存器的核心是锁存器7HCT57。它从数据总线DB上锁存数据我们可以在单总线上有很多寄存器,每个都有OE和OE信号。

算术逻辑单元添加ALU是相当简单的任务,得益于74181在60年底的开发/启动让我们把两个寄存器放在一起,加74181,用单总线驱动。

这里没有什么特别的,但是这开始非常有用。我们有两个寄存器。想象一下,我们想做这个序列:把数据A,另一个数据到B,执行这就是为什么需要第三寄存器。我们把它称为临时寄存器。

个人计算机现在让我们关注CPU、程序计数器PC的另一个重要部分。

再没什么特别的了。两个链式的7HCT193计数器,EEPROM存储器保持计数器(A、B、C和D)的预设输入连接到BD,以便 指令译码器,第一部分PC和寄存器与ALU是CPU的肌肉,做艰苦的工作,但它需要一个在实际编译指令解码器之前,有必要决定哪一个

指令对于这台计算机,我决定只使用三个指令:1,将直接数据加载到2,将数据从源移动到目的地。源可以是A、B、RAM或输入。3,在A和B之间进行ALU操作,将结果移到A允许PC移动的结果允许跳跃。您可以将输入数据从没有专用的间接寻址寄存器,没有堆栈,没有中断。指令的MSB确定指令是否为LDI。我们只需要浪费如果MSB为零,则下一位决定MOV或ALU指令-注意这是如何实现的

指令定时指令分为单个步骤。在我们的情况下,我们将有M1:加载指令到IR并将源数据放在DB上M2:从总线加载到T寄存器的源数据M3:将数据从T寄存器中插入数据库M4:从DB到目的地加载数据,增量PC

黑色矩形表示活跃(高)水平。CLK进来了 指令集很简单:

如果实际指令是MOVI,则源数据较低7位。如果实际指令是MOV,则源数据由IR(3…5)确定;如果实际指令是ALU,源数据来自ALU总线驱动程序,目的地是这给我们提供了关于指令寄存器操作的第一个线索。注意M2的前沿,而M1仍然很高。这种重叠是必要的。建筑时钟电路相当简单。我们需要D触发器,分输入

指令译码器,第二部分知道如何解码,可以在指令译码器的设计中进行。让我们 IC20,IC21和IC22做这项工作-产生iROE和AlUOE信号,以及Logic Friday.我为敬畏信号产生了这个真值表

软件将此表最小化为逻辑方程和生成电路。

我也为IROE和AlUOE信号做了同样的事情。VoILA,指令译码器完成。我们需要以某种方式使跳跃变得有条件。我决定使用寄存器B。 注意,在最后的示意图上,信号M3根本不使用。这是需要的

输入输出端口目前唯一没有描述的是IO部分。我们有两个信号来自138

程序设计由于我们的CPU基本上是完整的,我们需要编程它做某事。

MOV IA,A;从输入A移动数据到注册AMOB IB,B;从输入B移动数据到NAND操作MOV A,PA;从(ALU结果)移动数据MOVI 0;将0移到AMOV A,B;把这个零移到BMOV A,PC;跳到零

结果,或7400 ^ 2到7400 ^ x 电路以CCA 18x18cm尺寸为模板。电流消耗时钟速度由C1电容决定。对于1UF,时钟发生器滴答在

处理器,或单板计算机,按预期工作。我写仿真


相关文章