Skip to content

TheStarsBlessing/TD4CPU

Repository files navigation

TD4-CPU

这是一台由 74 系列数字电路芯片组成的满足冯·诺依曼提出的计算机的五个基本构建块的4位计算机,PCB板支持免费打样。 666

项目简介

这个由74系芯片搭建而成的四位计算机可以完成简单的输入输出,操作数传送,加法,(条件)转移运算,支持调节时钟频率、使用单次脉冲输入或使用外部时钟输入。除此以外,该计算机集成了输出数字用的数码管以及大量状态指示灯,可以直观的观察计算机的运行情况。通过使用贴片元器件,该工程的PCB板被压缩在了10*10cm以内,支持免费打样,并且所有元器件均在正面,元器件总体排布均匀,让手动贴片更加简单(若使用SMT,单面贴片可以大幅降低成本),同时提升了计算机的美观性。

本工程的设计方案来自于日本工程师度波郁(Iku Watanami)的著作《用10个IC轻松介绍CPU设计》,在原电路基础上进行了部分修改,并重新设计了PCB板。

本工程在立创开源平台也有发布,请参考: https://oshwhub.com/the_starts-blessing/td4cpu

项目功能

进行简单的输入输出、加法运算,实现操作数传送,进行(条件)转移。适合初学者简单了解计算机的基本组成和运行原理。

项目参数

2个运算寄存器(A、B),1个输出寄存器,1个程序计数器(PC)。

16B ROM(程序存储器),使用拨码开关输入。

1个输入口(含一个四位拨码开关),2个输出口,1个7段数码管(可显示0-15)。

1HZ&10HZ&可调节三组内部时钟(准确性不高,仅供参考)。

TYPE-C接口输入。

原理解析(硬件说明)

TD4-CPU由ROM阵列,寄存器组,算数与逻辑单元(ALU),输入输出单元和时钟与复位单元五部分组成,下面对它们逐一介绍。

ROM阵列的主体由16个拨码开关(U0-U15)组成。拨码开关从右往左为 0-7 位,向上拨为 1 ,向下为 0 。74HC154(U17)负责对PC寄存器发送的2进制数据进行译码,将对应的ROM单元后端下拉至低电平,ROM模块前端通过总线整体由8个电阻上拉至高电平。当ROM单元后端为低电平且拨码开关某一位导通时,这一位对应总线会被下拉至低电平,此时总线的电平状态就是该ROM单元存储的数据取反后的数值;之后总线上的数据经74HC540(U16)反相(增强驱动能力)后输出至ALU模块,完成读取PC寄存器指向的ROM单元数据的操作。

寄存器组由四个74HC161 (4位2进制可预置的同步加法计数器) 构成,包含两个运算寄存器(REG_A (U19) & REG_B (U20)),一个输出寄存器,一个PC寄存器。运算寄存器负责存储即将参与运算的临时数据;输出寄存器负责对即将输出的数据进行锁存;PC寄存器(程序计数器)负责存储下一条要执行指令的首地址,CPU取址后PC寄存器会自动加一,此外PC寄存器内容也可以通过指令修改,从而实现程序的跳转运行。寄存器组数据由累加器(ADD)通过总线输入,四条LOAD控制线分别控制每个寄存器进行锁存操作(低电平有效),在系统复位后,四个寄存器均会被赋值为0x00。

ALU由多路复用器(MUX)、累加器(ADD)和逻辑单元组成,MUX由2个74HC153构成,每个控制两位输入;MUX受到来自逻辑单元的SEL_A和SEL_B两根控制线的控制,可以选择来自REG_A、REG_B、输入端口的数据或无数据输入;数据经MUX进入ADD参与运算。ADD(74HC283)是该计算机的核心,所有加法运算均由ADD完成;ADD的数据来自MUX和ROM单元直接输出的立即数(Im);当立即数为0时,ADD仅转移数据,此时可以完成转移或跳转运算。逻辑单元由D类上升沿触发器74HC74、或门74HC32和三路输入与非门74HC10组成;74HC74负责锁存ADD的进位标志位;74HC32和74HC10负责对指令(高四位)进行处理,控制寄存器组和MUX单元。

该计算机的指令与对应变量值如下所示:

汇编 二进制 SEL_A SEL_B MUX选择项 LOAD0 LOAD1 LOAD2 LOAD3 LOAD选择项 ADD输出项
ADD A,Im 0000 XXXX 0 0 REG_A 0 1 1 1 REG_A A+Im
MOV A,B 0001 0000 1 0 REG_B 0 1 1 1 REG_A B
IN A 0010 0000 0 1 IN 0 1 1 1 REG_A IN
MOV A,Im 0011 XXXX 1 1 NC 0 1 1 1 REG_A Im
MOV B,A 0100 0000 0 0 REG_A 1 0 1 1 REG_B A
ADD B,Im 0101 XXXX 1 0 REG_B 1 0 1 1 REG_B B+Im
IN B 0110 0000 0 1 IN 1 0 1 1 REG_B IN
MOV B,Im 0111 XXXX 1 1 NC 1 0 1 1 REG_B Im
OUT B 1000 0000 1 0 REG_B 1 1 0 1 REG_OUT B
OUT B 1001 0000 1 0 REG_B 1 1 0 1 REG_OUT B
OUT Im 1010 XXXX 1 1 NC 1 1 0 1 REG_OUT Im
OUT Im 1011 XXXX 1 1 NC 1 1 0 1 REG_OUT Im
JC B 1100 0000 1 0 REG_B 1 1 1 C PC&Q B
JMP B 1101 0000 1 0 REG_B 1 1 1 0 PC B
JC Im 1110 XXXX 1 1 NC 1 1 1 C PC&Q Im
JMP Im 1111 XXXX 1 1 NC 1 1 1 0 PC Im

*C指的是ADD的进位标志位(CARRY)

输入输出单元由一组输入排针,两组输出排针,一个板载数码管模块组成。上方输出排针左侧时电源、地、时钟、复位排针,顺序与16*16LED显示板上的保持一致,可以用8PIN排线进行直接连接。输入排针在使用时应确保四位拨码开关处于断开状态,否则外部无法输入低电平。板载数码管模块由译码器(74LS247)和数码管(共阳)组成,74LS247是一个可以显示0-16的四线七段译码器,用于驱动247数码管,拨动开关可以禁止74LS247输出,此时数码管保持全亮状态。数码管输出值如图所示: 2025-04-12_153411

时钟与复位单元由定时器NE555和反相器74HC14组成。NE555负责产生固定频率的时钟信号,可以通过拨码开关选择1HZ、10HZ、可调节三种输出模式;在可调节模式下,调节粗调和细调电位器即可调节时钟频率。74HC14用于产生单次时钟信号和复位信号以及驱动时钟复位显示LED灯,复位电路的限流电阻更大,因此在按下一秒钟左右才会发挥作用;单次时钟电路的复位电阻较小,起到一定的消抖作用。时钟产生电路与计算机时钟网络通过跳线帽连接,拔掉跳线帽即可接入外部时钟信号。在第一次打样时,采用了原版TD4CPU的反相RC振荡电路,但在进行测试时发现该振荡电路无法工作,并且找不到问题成因,更换元件重新焊接也未能解决该问题;因此在第二次打样时将原电路替换为更为稳定的NE555。

PCB

PCB采用四层板结构,板材为FR-4。 PCB尺寸为10cm x 10cm;默认板厚1.6mm,默认铜厚1oz。最小线宽:8mil,最小孔径:12mil(0.305mm)。

免费打样需要的其他工艺:绿色阻焊,白色字符,有铅喷锡或沉金,过孔盖油。

注意事项

在焊接插件前请进行通电测试,通过指示灯检查计算机运行情况,防止出现虚焊,芯片损坏等问题,以免影响后续实验。

焊接温度不应高于265℃,并且尽可能减少高温焊接时间,以免对元器件造成损坏。

参考图

原理图

SCH_TD4-CPU v1 1_2025-04-041 SCH_TD4-CPU v1 1_2025-04-072 SCH_TD4-CPU v1 1_2025-04-043

PCB

PCB_TD4_CPU v1 1_2025-04-121 PCB_TD4_CPU v1 1_2025-04-122 PCB_TD4_CPU v1 1_2025-04-1221 PCB_TD4_CPU v1 1_2025-04-1222

仿真图

3D_TD4_CPU v1 1_2025-04-05 3D_TD4_CPU v1 1_2025-04-052

实物图

微信图片_20250405150307 微信图片_20250405150259 微信图片_20250405150250

测试视频

0e6024cace0fa6fe06bf2e3a95cfa347.mp4
TEST.mp4

版本更新

2024.11.4 项目立项。

2024.11.14 原理图绘制完成。

2024.11.16 PCB板绘制完成,第一次打样。

2025.1.18 焊接完成,时钟电路工作异常。

2025.1.20 修改时钟电路、数码管电路,第二次打样。

2025.2.1 第二次焊接完成,数码管线路绘制错误,对样板进行飞线处理后恢复正常。

2025.3.9 第三次打样,因此次打样仅在第二次基础上修改了两条线,基本肯定没有异常。

2025.3.15 收到样板,没有异常,项目暂时结项。

About

这是一台由 74 系列芯片组成的4位计算机。

Resources

License

Stars

Watchers

Forks

Packages

No packages published