构建 TD4 4 位 CPU

Hacker News Top 新闻

摘要

本文详细介绍了基于《如何构建 CPU》一书及开源 PCB 设计,亲自动手组装并测试 TD4 4 位 CPU 的过程。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/09 18:37

# 构建 TD4 4位 CPU 来源: https://jayakody2000lk.blogspot.com/2026/05/building-td4-4-bit-cpu.html ### 构建 TD4 4位 CPU TD4 是一款著名的 4位 CPU,出现在 *Kaoru Tonami*(田南部香)所著的《How to Build a CPU》(https://book.mynavi.jp/ec/products/detail/id=22065)一书中。该书专注于仅使用基础的 74系列 TTL 逻辑 IC 构建一个功能完整的处理器。虽然这本书不幸只有日文版,但我的一位日本朋友寄给我一本样书以及一块 TD4 PCB 板。我相信这块 PCB 是基于 BG5DIW 在 GitHub 上提供的开源设计文件(https://github.com/wuxx/TD4-4BIT-CPU)制作的。 [](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBQod-9-oGK5lp15DIQjWPiuy7z26yus4mya4CeRhOheVE2ejJOMmU3fEWpTxH0OlMMiaDGmXVGiEiv16QhCggjDJyw2aoqQEFmlpz66JHC_O9KNxSf07TcLY64ERBVmOx0IuI2YlDirXWNiCwKY7Lrm73SsxjUP2g7b8XDWXyWxICj-SUj1pASWFxDag/s1265/IMG_20260426_143716-HD.jpg)《How to Build CPU》书籍及 PCB 板。 最近,我终于找到了时间来组装并实验它。这个项目花了我几个月的时间,因为我必须自己翻译这本书以掌握核心概念。整体设计简单而优雅,提供了一组 12 条指令和一个 16 字节的 ROM(通过 DIP 开关实现)用于编程。电路板工作电压为 5V,可以通过 USB 供电。大多数组件来自本地商店,但我不得不在线订购了一些 74HC 系列的 IC。后来,我通过将一些 74HC 组件替换为 74LS 系列芯片测试了电路,运行没有任何问题。 PCB 的焊接非常 straightforward。唯一的贴片元件是四个 LED 和一个 Micro-USB 插座。如果你以前没有做过贴片焊接,USB 插座可能看起来有点吓人,但你只需要焊接引脚 1 和 5(其余引脚在此设计中未使用)。 [](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmoxl1ygDY1Ah1hkHXlp1RlrQ7hu80rOClDqDwDG6khwy3e3Y9wN4i3bY6Q-SgGk1i7wnlVHI1zrCbVtszUFKEpmMyVps48wiJEEf1p0Z7ngDaQEZd_rygQBe7csCy3vaPPYEIlWvuAmujnad7RpQLwQFg9ry1B4p2yrscf-dEril_kDUileZjMhXNQ_M/s1871/DSCN6688-HD.jpg)组装完成的 TD4 CPU。 组装过程中最耗时的部分是焊接 1N4148 (https://www.vishay.com/docs/81857/1n4148.pdf) 二极管。书中建议使用 1S1588 (https://datasheet4u.com/datasheets/Toshiba-Semiconductor/1S1588/95212) 或 D8-1A (http://www.datasheet.hk/download.php?id=1910162&pdfid=855BD1ACFD341F9660BB1CAE12491DA4&file=0456\d83c_6227371.pdf) 二极管阵列,但这些在本地或在线都难以找到。因此,我选择了单独的 1N4148 二极管。在 TD4 架构中,这些二极管用作二极管矩阵 ROM。由于“程序”是通过物理 DIP 开关存储的,二极管起到单向门的作用。当多个开关被翻转时,它们防止电流反向馈送到电路的其他部分,有效地创建了解码 16 字节内存地址为特定 4 位指令所需的逻辑门。 组装完成后,TD4 即可立即使用;它不需要固件或校准。PCB 提供两种电源选项:最简单的是通过 Micro-USB 端口,第二种是 2.54mm 排针。我使用排针连接了我的逻辑探测器的电源引线,这在研究电路操作时是必不可少的。 [](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2aES6bbDhaCdoP-dLBlRRXQe8pLWSzbAqYlpcZcpbo8bo0Z6ZObsO_o9KkletNCH9cyQMeso_QfYHvaYOt1_4DSJLFuX5ppR6bMwx06aIQ1aHUgTxbafqKqJ6HUSuTSSMGOdw2wozk3E5RKZUvR8KJasnXX4eVGggQtPhmvOnBPsy87lTa2gGVFl0awA/s1440/DSCN6740-HD.jpg)功能正常的 TD4 CPU。 TD4 是一个硬连线逻辑 CPU,意味着它不使用微程序;每条指令都通过逻辑门的直接电气路径执行。芯片组通常包括: - 74HC161 (https://www.ti.com/lit/ds/symlink/cd74hc161.pdf):用于 A 和 B 寄存器以及输出端口。 - 74HC161 (https://www.ti.com/lit/ds/symlink/cd74hc161.pdf):另一个用于程序计数器(PC)的 4 位计数器。 - 74HC153 (https://www.ti.com/lit/ds/symlink/sn74hc153.pdf):作为 ALU 输入选择器的多路复用器。 - 74HC283 (https://www.ti.com/lit/ds/symlink/cd74hc283.pdf):配置为 4 位 ALU。 - 74HC10 (https://www.ti.com/lit/ds/symlink/sn74hc10.pdf) 和 74HC32 (https://www.ti.com/lit/ds/symlink/sn74hc32.pdf):用于指令解码器的 NAND/AND 门。 时钟由一个简单的 74HC14 振荡器电路生成,允许你手动单步执行指令或以非常低的频率运行以观察 LED 在数据在寄存器之间移动时切换。 [](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUkl309YaN6aqLItil_nxoFXx3LCNo8o-TUApufrTtGkOG3pQU5NMwH3ba7M1bmRIbgUfymm9THAKNJ4M_SLtXLsbTXVjUE_RHg8ehVmd2ayMnPGHNAqWhnmDcg3Wp9h5b39dIvVm1nqD-dHP7l8Rs1zJqFBXsyz3Y7o1DAz_TIq4kHv4mlgVgRvIsbrQ/s1440/DSCN6774-HD.jpg)系统时钟可以从任何 74HC161 计数器的引脚 2 监控。 这个项目最有趣的部分是编程系统。由于地址空间有限,你可以执行的任务相对简单。我尝试了各种计数器系统,所有系统都按预期工作。我最初在纸上编写代码,并根据书中的指令集手动计算 DIP 开关位置。 为了简化这个过程,我开发了一个小的基于 Web 的工具,使用 JavaScript 将汇编源代码直接转换为 DIP 开关位置。这使我能够快速迭代并尝试更复杂的逻辑。你可以在这里找到这个 TD4 汇编器工具:github.com/dilshan/td4-assembler (https://github.com/dilshan/td4-assembler)。 [](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpM2yl82Jc3W5B_c8c4fgc_sLaXedK1Oq-4N3_2MU0zkZe8HNJEKv3FTXoGEpnUgYQWjmcVniJMm4HfeX1yMtmoz9qus4bo7E089CT8vchugF6pXR7XOoRZdmCqYjvV2gf2f2IqAIBMownZ2FFQoDDnOBMwYW6FjYRAxmi0xEajEz6y-3rSDEVjpHAxpI/s1440/DSCN6768-HD.jpg)该系统的逻辑电平可以很容易地使用逻辑探测器进行监控。 这是我用 CPU 测试的其中一个计数器程序。这个特定的例程从 DIP 开关读取输入,并在每个时钟周期增加该值。一旦计数器达到 0xF,它重置为用户指定的起始值并继续计数: `` in b out b add b, 1 jnc 1 jmp 0 `` [](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8_r8JJnuC1KVI-cmM3epvAFKuF_p2IqGcEfPcQpgBtU2e1OXyG3y3o9Js9IxUT_gxG-fSqzfcwMRazOBXEFSV_0Tbvpyxhf0G6JqcLa8J0vK1jORd5w-YYJmnXd7xWIKqPCUYWTOqCnMs2zqXhzSBNlKOhfwdd48DlqUDr4iDfV6MIOPboeoo_Z5cCwY/s1920/td4-code-dump.jpg)当输入 = 0x8 时,上述代码列表的地址总线和 C 标志状态。 TD4 是计算机架构完美的“Hello World”,因为它去除了现代处理器的复杂性。没有隐藏层——没有微码,没有复杂的缓存,也没有操作系统。通过构建它,你可以清楚地看到一位如何从开关经过多路复用器进入寄存器。它揭示了物理硬件与软件逻辑之间的关系,对于任何对嵌入式系统或电子工程感兴趣的人来说,这是一个非常有价值的教育工具。 有关《How to Build a CPU》的详细信息可以在出版社的支持站点 (https://book.mynavi.jp/supportsite/detail/4839909865.html) 找到。同样链接处也可下载 TD4 模拟器(仅 *Windows*)。

相似文章

TD4 4位DIY CPU指南

Hacker News Top

关于构建和理解来自阿里巴巴的TD4 4位DIY CPU套件的详细指南,涵盖焊接、原理图和操作原理。

SBCL: 终极汇编代码面包板 (2014)

Hacker News Top

一篇技术博客文章,探讨如何使用SBCL作为汇编代码的面包板,重点介绍基于堆栈的虚拟机技术,如旋转堆栈和高效的原语操作分发,并引用了F18处理器和x87堆栈。

PC Engine CPU

Hacker News Top

关于PC Engine (TurboGrafx-16) CPU HuC6280的详细技术概述,这是一款基于65C02的快速8位处理器,涵盖其架构、时钟速度以及与NES和SNES CPU的差异。

我的2025年高端Linux PC 🐧

Michael Stapelberg

一篇关于在2025年组装高端Linux PC的详细博客文章,包括组件选择、设置以及故障排除有问题的Intel CPU。