晶体管之前:继电器与真空管如何构建早期计算逻辑 📅 2026/8/26 12:23:11 几年前我第一次拆开一台老式电子管收音机看到底板下面密密麻麻的漆包线、云母电容和发黑的管座整个人愣了好久。那种感觉跟拆开今天的手机主板完全不同——你几乎能看见每一股电流在铜线里流动能听见机器发热时发出的微弱呲呲声。后来我一直对“Before Transistors”晶体管之前的世界着迷翻旧手册、复刻老电路、甚至自己绕线圈。这个标题想说的东西其实远不止“老古董的回忆”它是一整套被现代人遗忘的工程逻辑。晶体管之前的工程师面对的是没有摩尔定律、没有集成度红利的时代所有逻辑都得靠继电器开关和真空管硬凑。可以这么说今天你写的每一行代码、用到的每一个逻辑门都建立在那个年代被反复验证过的概念上。这篇文章我会从元件原理、早期计算机结构、动手复现实验三个角度把它讲透适合对电子史、开源硬件、复古无线电感兴趣的读者哪怕你完全没接触过真空管照着做也能明白。1. 为什么“晶体管之前”值得单独立题而不只是历史八卦1.1 一个时代的技术代际切换不是突然发生的很多人以为电子技术是“先有真空管然后晶体管一夜之间取代了真空管”。你看历史就会发现完全不是这样。1947年贝尔实验室的点接触晶体管确实发明了但直到十年后硅平面工艺把晶体管拉进批量生产才真正形成替代趋势。这中间的十年里真空管和晶体管长期共存计算机里甚至出现过“一半真空管一半晶体管”的混合机。所以“Before Transistors”不是一个时间点而是一整套技术路径。那个时代解决的不是“能不能微缩”的问题而是“能不能工作”的问题。工程师用继电器做逻辑门、用水银延迟线做存储、用阴极射线管当“内存”每一招都在物理极限的边缘反复试探。今天我们在教科书中轻松画出的“与门”“触发器”当年是要用继电器或真空管一组一组焊出来的每焊一组还要担心接触不良、热漂移和噪声。把这段历史单独拿出来研究不是怀旧而是为了看清现代电子技术的底层假设有哪些。比如“存储需要刷新”这个概念早在水银延迟线时代就有了再比如“加法器要分进位和求和”继电器计算机里已经跑得明明白白。晶体管只是把这些概念做小了并没有重新发明它们。1.2 这篇文章想干哪几件事你可以从哪三处收益这篇博文我给自己定了三个目标对应三种读者需求。第一给完全没接触过早期电子技术的人讲清原理继电器为什么能当开关、真空管为什么能放大以及它们如何组合成计算逻辑。这一部分用日常类比来拆解不写晦涩的公式。第二给有一定动手能力的爱好者提供能复现的实验矿石收音机不需要任何电源继电器逻辑门只要十几块钱的零件就能搭出来。我自己的经验是亲手做完一个继电器半加器后对“CPU 为什么需要门电路”的理解会和看书完全不一样。第三给做现代硬件或嵌入式开发的朋友一些对比视角早期机器的功耗、散热和可靠性问题在今天芯片设计里以不同形式重演。理解那段“资源极度稀缺”的设计思路对做低功耗、做极简算法都很有帮助。1.3 先给结论早期技术一点也不“低级”它们只是“昂贵”很多人会下意识觉得继电器计算机是“没技术含量的机械开关拼凑”真空管是“易碎又费电的玻璃泡”。但我实际接触下来那些工程师的智慧密度相当高。继电器有机械磨损他们就发明了“自保持电路”来稳定状态真空管发热严重他们就设计热补偿电路水银延迟线受温度影响大他们干脆把整个存储管泡在恒温油槽里。问题不在于这些技术“笨”而在于它们每一项的代价都极其昂贵体积贵、功耗贵、散热贵、维护更贵。正是这种“每一个逻辑门都要付出物理成本”的现实逼迫设计师把算法压榨到极致。现代程序员可以随手开一百个循环那个年代的工程师却要在纸面上先把逻辑化简到最少触点。这种思维训练放到今天依然奢侈。2. 基础元件拆解继电器和真空管是怎样被用于“思考”的2.1 继电器第一个能处理“逻辑”的机械继电器本质上是一个电磁铁控制的开关线圈通电产生磁力吸合衔铁触点切换。你可以把它理解成“用电控制电的门卫”。它最妙的地方在于控制回路和负载回路之间电气隔离所以我们可以用一个电路去控制另一个更大的电路这就是最早的“信号放大”雏形只不过增益不是连续电压而是0/1通断。早期继电器计算机为什么偏爱它因为它的逻辑含义特别直观线圈得电代表“条件成立”触点闭合代表“输出为真”。把两个继电器的常开触点串联就是一个与门并联就是一个或门再用常闭触点做反相就能搭出非门。1944年完工的哈佛Mark I就是这类机电计算机的代表加法一次需要约0.3秒乘法要做很多次级联耗时六七秒。放在今天这速度连电子表都不如但它的意义在于证明了“逻辑运算可以完全机械地自动执行”。不过继电器有个致命问题机械运动有惯性。一个继电器通断要几毫秒如果做一万次运算光是等待触点稳定就要几十秒。而且触点间通断会产生电弧火花会慢慢烧蚀触点表面次数多了接触电阻变大最终失灵。后来的工程师不得不在触点上并联RC吸收回路用电阻电容配合吃掉反向放电这个经典做法至今仍用在工业继电器驱动电路里。2.2 真空管从“捡波”到“放大”到“开关”真空管的故事是从“爱迪生效应”开始的。1883年爱迪生发现在真空灯泡里加一个独立的金属板金属板能检测到“某种电流”。后来弗莱明把它做成二极管发现它只允许电流朝一个方向流这就是整流和检波的基础。紧接着德福雷斯特在阴极管和阳极屏之间塞进一个螺旋状的栅极做出了三极管。三极管的原理现在看也很有意思阴极被灯丝加热后电子像开水冒蒸汽一样跑出来屏极上加一个高电压把电子吸过去形成屏流插在中间的栅极电压只要有一点点变化就能大幅度影响电子通过的数量。所以三极管是电压控制电流的器件天然能放大信号。这种特性放到数字电路里就是“开关”栅极电压够高电子流通过视为1栅极电压不足截断电流视为0。用真空管做计算机最著名的就是ENIAC总共用了约一万七千多只真空管占地一百六十多平方米工作时功耗超过一百千瓦。真要较真它在加法速度上并不差每秒能算几千次比继电器快得多。但问题是可靠性。真空管灯丝会老化、烧断电子在管内飞行时会受到残余气体干扰任何一个管子坏掉整机就得停机排查。早期ENIAC平均能连续工作几小时就算不错大量时间花在读图和换管上。2.3 元件对比表继电器、真空管、早期晶体管的关键差异我自己整理过一张对比表把晶体管之前的两种核心元件和早期晶体管放在一起看差异一目了然维度继电器真空管早期晶体管点接触/合金管控制方式电流驱动电磁铁电压控制栅极电流/电压控制基极开关速度毫秒级几ms微秒级几μs微秒级几μs典型功耗每触点约0.5W起每只管数瓦到数十瓦每只管几十到几百毫瓦寿命机械磨损、触点烧蚀灯丝烧断、漏气相对长但早期工艺不稳体积大需要机械结构大玻壳加管座小一个数量级抗振动能力弱触点易抖动中等怕震碎玻壳强可焊在电路板上最大痛点速度和触点寿命发热和功耗工艺一致性差这张表最直观的结论是真空管在速度和可靠性上已经甩开继电器但在功耗和体积上依然不够。晶体管看起来只是把“玻璃泡金属丝”换成一小块半导体却同时解决了体积、功耗、寿命三个老大难。这也是为什么后来计算机能以惊人速度缩小。3. 从元件到系统晶体管之前机器是如何算数的3.1 机电时代用齿轮和继电器做加法在现代CPU出现以前数字计算走过了一条“机械—机电—电子”的渐进路线。早期机械计算器用齿轮和棘轮进位键盘一按就是转半天。到了继电器时代逻辑终于从齿轮运动变成可以通过电流控制的触点组合。德国工程师康拉德·楚泽在1941年完成的Z3就是一台使用约两千个继电器的二进制浮点计算机它已经具备了现代计算机的不少基本特征二进制运算、浮点数表示、程序存放在打孔带纸上。继电器计算机的核心部件是“计数器”和“寄存器”。一个继电器能记住自己是吸合还是释放所以单个继电器本身就是一个1位存储器。想存一个十进制数的一位需要至少四个继电器因为二进制编码最少四位用8421码的话四位刚好表示0到9。为了做一次加法设计师要把多个继电器按逻辑连接构成累加器和加法电路然后通过时钟脉冲一步一步驱动。整个运算过程不是“瞬间完成”而是像机械钟表一样一步一步咔嗒咔嗒走完。我复刻继电器实验时最深的感受是这种机器对时序极其敏感。继电器吸合时间有快有慢同一批零件里可能差出一两毫秒如果后一级电路在前一级触点还没稳定时就采样就会读到错误值。所以早期继电器计算机必须设计很大的“时钟裕量”宁可慢一点也不能抢跑。这个“时序收敛”的概念到今天数字芯片设计里依然是核心问题。3.2 电子管计算机让速度从毫秒跳进微秒继电器再快也是机械运动想突破速度瓶颈就必须放弃机械触点改用纯电子流。真空管计算机就是在这一需求下出现的。ENIAC虽然体量巨大但它开了个好头电子流的开关速度比弹簧和衔铁快得多一个基本的计数电路能在几微秒内完成状态翻转比继电器快了近千倍。不过速度提升带来一个新问题如何让这么多真空管协同工作而不乱套。ENIAC的设计团队采用了大量“计数器”和“开关矩阵”把十进制运算直接做成硬件。每做一个操作要拨开关、插拔电缆来重新“编程”。这种“硬件编程”方式写起来极其痛苦改一次接线要大半天所以后来冯·诺依曼等人提出的存储程序概念才成为转折点程序和数据一样放进存储器由指令控制一步步执行。这个架构上的革命发生在真空管时代和晶体管没有直接关系却为后来的计算机奠定了全部基础。从这一节点开始计算机不再是“算数机器”而是“指令执行机器”。你给它一串存储在内存里的指令它就能依次取出、解码、执行再取下一批。这个过程今天叫取指—译码—执行周期当年的真空管计算机已经在我们前面把路走通了。3.3 最难的问题不是算数是“记忆”延迟线与显像管存储计算逻辑好办难的是记忆。继电器本身能记住1位但容量极其有限真空管翻转得更快可一旦断电状态全丢。为了在“昂贵、易失、容量小”的约束下保存数据工程师们发明了一些今天看起来非常科幻的方案。水银延迟线利用了声音在水银里大约每秒1500米的传播速度电脉冲先转换成机械声波在水银管中缓慢传播到达另一端后再转回电脉冲同时把这个脉冲重新放大并循环回输入端数据就“被延迟”在管子里不断绕圈。只要循环电路不中断数据就能一直保存想读数据就在对应时间点把脉冲抽出来。EDSAC和UNIVAC都用手这一招。但水银延迟线对温度非常敏感温度一变声速就变数据位置就会漂移所以整根管子必须泡在恒温油槽里。这和今天的DRAM需要周期性刷新来防止电容漏电逻辑上惊人地相似。比延迟线稍晚的“威廉姆斯管”则利用阴极射线管屏幕上的静电荷来存储数据电子束打在荧光屏上会留下一个带电荷的亮点或暗点这个电荷状态可以用附近的金属板感应读取。缺点是电荷会慢慢泄漏必须不断刷新来保持。这套“读出后重写、周期性刷新”的思路后来被磁芯存储甚至现代DRAM继承了下来。可以说晶体管之前的人们已经把存储器的几乎每一个抽象问题都想明白了。3.4 三个“晶体管之前”的体系遗产把早期计算机研究一遍我觉得有三个遗产被完整保留到了今天。第一个是二进制编码。继电器和真空管天然适合两态切换用二进制不是数学家的偏好而是物理现实逼出来的最优解。第二个是存储程序概念。程序和数据统一编址指令由CPU依次取回执行这个结构让计算机从专用的算数盒子变成通用机器。第三个是分层存储思想。从继电器寄存器、延迟线主存再到磁鼓、磁带外存早期机器已经形成了“高速小容量、低速大容量”的分层结构。你去看今天计算机的缓存、内存、硬盘本质上还是这一套逻辑。所以别小看“Before Transistors”这段历史。现代数字计算机的骨架在晶体管诞生以前就基本确立晶体管做的是“把骨架缩小并加速”而不是另起炉灶。4. 动手重做“晶体管之前”一套可以复现的入门实验4.1 实验零先准备好元件和工具只看书很难对早期技术有体感我强烈建议你动手做三个小实验。它们都不贵也不需要懂很深的理论矿石收音机、继电器与门、继电器半加器。需要准备的器材我列一个清单矿石收音机漆包线直径0.3到0.5毫米、空心纸筒或PVC管、可变电容20到365pF找不到就固定100到300pF的云母电容、锗检波二极管1N34A或2AP9、高阻抗耳机压电陶瓷耳机或旧电话听筒、长导线做天线十米以上、地线金属棒接到大地。继电器实验5V单线圈继电器若干触点额定电流尽量大一点比如5A以上用小的也行、二极管1N4007每个线圈并联一个、轻触开关两个、LED和电阻、5V电源、面包板或接线端子、万用表。工具上一块万用表绝对够用想观察继电器吸合的时序可以再准备一个便宜的逻辑分析仪或示波器当然没有也能做。4.2 实验一一个不插电的“检波器”——矿石收音机矿石收音机是了解检波原理的最好入口因为它完全不需要电源信号从天线上来靠二极管的单向导通性把高频调幅载波里的音频信号“抠”出来。一百多年前的矿石收音机用的是方铅矿晶体和一根金属探针要反复滑动探针找“热点”效果非常不稳定。我用1N34A替代方铅矿省掉大量玄学调试。制作方法很简单用漆包线在纸筒上绕六十到八十圈作为调谐线圈线圈两端并联可变电容形成LC谐振回路天线接线圈上端地线接下端再从线圈中间抽头或直接并接一个二极管到耳机。转动可变电容电容值变化谐振频率随之变化我在这边能收听到本地的中波调幅广播。如果耳机声音很小可以试试把二极管换到线圈的不同抽头找到阻抗匹配点。关键注意事项天线和地线缺一不可尤其是地线接地良好声音能翻一倍。还有雷雨天务必断开天线否则直击雷会顺着导线进入设备非常危险。4.3 实验二用继电器搭出与门、异或门有了矿石收音机的体感可以进入“逻辑运算”世界了。先搭一个与门把一个继电器线圈与两个轻触开关串联开关A和开关B同时按下时线圈得电常开触点闭合LED点亮只要有一个开关没按下线圈失电LED熄灭。这个电路的含义就是“两个条件同时为真结果才为真”。然后搭异或门异或的特点是输入不同时输出1输入相同时输出0。最简单的继电器做法是用两个单刀双掷继电器让A和B分别控制各自的触点把输出信号交叉接到两个继电器的常开/常闭触点之间只有两个开关状态不一致时输出端才导通。如果你手头有双刀双掷继电器一个就能完成交叉接线。我试过接线时用万用表通断档验证每一路触点比目测可靠得多。4.4 实验三把两个继电器装成半加器半加器是CPU加法器的最小单元两个输入A和B产生两个输出S和和C进位。逻辑关系是S等于A异或BC等于A与B。用继电器实现时需要一组异或电路加一组与门电路。也就是至少三个继电器两个做异或一个做与门。装好后你可以列一张真值表验证输入A输入B输出S异或输出C与对应二进制加法00000000110011101010111011110我当年第一次看到这排LED按表亮起来时突然理解了“计算机里的加法就是一堆门电路”这句话。虽然只是两位半加器离整机差着十万八千里但原理已经通了。4.5 调试清单我第一次做这些实验时踩过的坑我踩过不少坑挑三个最有代表性的分享。第一继电器线圈断电瞬间会产生很高的反向电动势直接把我的5V电源模块打挂了。正确做法是给每个继电器线圈反向并联一个1N4007二极管让反向电流走二极管而不是打穿电源。这是所有继电器电路的基本功。第二继电器触点抖动。继电器吸合瞬间金属触点会像乒乓球一样反弹几次如果后续电路采样太快会把一次按键读成多次。模拟时代解决方法是给电路加RC延时让信号稳定后再采样。这和今天按键消抖思路一模一样。第三矿石收音机声音太小。一开始我用普通低阻抗耳机几乎听不见换成正儿八经的高阻抗耳机声音立刻清晰。不是信号太弱是阻抗不匹配。这一段经验让我意识到老技术里“阻抗匹配”这四个字的分量比想象中重得多。5. 晶体管登场它到底改变了什么又完整继承了什么5.1 1947年一次“功能不变、物理全换”的跃迁1947年圣诞节前夕贝尔实验室的几位科学家试图用半导体材料制造一个可以放大和开关的器件他们成功做到了点接触晶体管。从功能上看它依然是一个“电压控制电流的开关”和三极管在电路中的角色类似但物理实现完全换了不再需要灯丝加热不再需要真空玻壳不再需要等电子管预热几十秒才能工作。功能不变、物理全换这句话对整个电子行业的意义极其深远。设备设计者的思维方式不用改变门电路还是门电路、加法器还是加法器、寄存器还是寄存器但可靠性、功耗、体积三个最痛的指标全部得到改善。这也是为什么晶体管能迅速被工程师接受它不是要求大家重新发明逻辑而是让原有逻辑跑得更便宜、更持久。当然早期晶体管并不完美。点接触晶体管非常难制造参数离散性大有人调侃说“同一批生产的管子每一只都有自己的个性”。真正让晶体管赢得市场的是后面十年工艺进步合金管、扩散管、平面管直到1960年代硅平面工艺成熟集成电路才成为可能。5.2 继承清单真空管时代留给晶体管的十个概念整理这部分时我列过一张“遗产清单”可以说晶体管时代几乎原样继承二进制编码0和1表示一切数据。布尔代数与、或、非逻辑组合。门电路用物理开关实现逻辑运算。触发器/锁存器利用双稳态存1位数据。加法器/计数器基础运算单元。时钟节拍所有逻辑步骤按统一节奏推进。寄存器堆高速暂存当前数据。存储程序指令和数据放同一地方。分层存储高速小容量与低速大容量搭配。总线/输入输出数据和控制的通道。每一个概念都可以在1940年代的继电器或真空管机器里找到原型。这也是为什么许多早期计算机史书看起来并不“过时”因为它们在描述的是现代计算机的“前世”而不是一条死在半路的支线。5.3 “Before Transistors”对当代开发者的启示从这段历史里我最大的感悟是所谓“革命性技术”往往不是发明了全新的功能而是把旧功能做到了可以大规模使用。真空管时代已经证明“能做”晶体管时代解决的是“能做得起”。放到今天的开发语境里我们常常执着于找一个“能让事情变得可能”的新框架却忽略了更常见的机会是把已经验证的流程做便宜、做稳定、做小。另一个启示来自资源约束。晶体管之前的设计师在极端受限的环境下逼出了极简方案能少用一个继电器就绝不多用能缩减到五个触点就不会用六个。这种“从成本倒推设计”的思路在今天低功耗嵌入式、边缘计算里依然非常值钱。如果你在做单片机或者物联网设备不妨问问自己如果我手头只有几百微安电流我还会这样写代码吗把这个问题想清楚很多优化方向自然就出来了。6. 常见问题与排查技巧实录6.1 真空管不亮先查灯丝电路如果复刻或维修老设备时真空管不亮最常见的不是管子坏了而是灯丝电路没通。真空管的阴极要靠灯丝加热才能发射电子灯丝不红管子就不工作。用万用表量管座灯丝引脚之间是否导通正常会有几十欧的冷态电阻如果是无穷大那就说明灯丝断了这只管可以报废。但要注意灯丝冷态电阻小、热态电阻大通电瞬间冲击电流很猛用调压器软启动能显著延长老管寿命。还有一种情况是灯丝电压不对。老管子常见2.5V、5V、6.3V等规格稍高一点就容易烧稍低一点又发射不足导致放大和开关性能下降。维修时最好按管身印字确认规格不要盲接电源。6.2 继电器有吸合声但电路不通听到“咔哒”声说明线圈已经得电但输出端不通时大概率是触点问题。第一常开触点没有真正闭合可能是触点氧化或烧蚀第二触点虽然闭合但接触电阻很大万用表通断档能响一过大电流就掉电压。解决办法是用细砂纸轻擦触点或者干脆换继电器。另一个隐蔽问题是“线圈得电但触点类型搞错”。很多人把常闭触点当成常开出线喇叭自然不响。做任何继电器电路第一件事就是用万用表把常开、常闭、公共端的引脚关系测清楚不要只看外壳印刷。6.3 底噪大得没法听接地与屏蔽的经典方案早年无线电和真空管设备最头疼的就是噪声。我复刻矿石收音机时也有同样的经历背景全是嗡嗡声、嘶嘶声信号被淹没。排查顺序是从小到大先检查地线。地线接触不良会引入极大的交流声用一根金属棒打进湿润泥土再用粗铜线连接到电路是最直接的改善。再检查天线走向天线不要靠近电线和金属物体避免感应干扰。最后检查屏蔽如果有多个元件互相辐射信号把敏感节点用屏蔽线包住屏蔽层一端接地能显著降低杂散耦合。这种“找地线—理走线—做屏蔽”的排查顺序放在今天的模拟电路调试里也完全适用。6.4 复刻工程的“劝退点”提前预警我想提前给想尝试的人打几个预防针。第一不要一上来就挑战做一台几十个继电器的“计算机”。继电器数量越多接线工作量越大排查问题的时间成倍增长。我的建议是从最小功能模块开始一个与门、一个异或门、一个半加器先把“搭电路—验证真值表”的流程跑通。第二如果对高压真空管实验感兴趣务必把安全放在第一位。真空管屏极经常用到一百伏以上的直流电压电容放电可能会伤人新手尽量从低压的整流小功率管玩起并且养成“先断电、再放电、后碰线”的习惯。第三老元件市场上鱼龙混杂。二手真空管看似便宜但有些是已烧断灯丝的废品。买之前确认卖家提供“灯丝通断测试”或“跨导测试”结果最好选承诺通电包好的商家。继电器则优先买新品工业控制柜里拆下来的老旧继电器看着便宜触点状态很不确定。第四动手之前先准备一份纸质笔记。早期电路的调试非常依赖“哪根线连到哪”的记录我当年一边焊一边记最后排查问题快了不止一倍。别迷信记忆线一多脑子一定会乱。我个人做完这套实验后最大的改变是看任何现代芯片都有了“另一个维度”眼前的CPU虽然只有指甲盖大但里面每一个逻辑门都曾经是一根根铜线、一只只玻璃泡和一组组机械触点。你再看到功耗、散热、可靠性这些词时就不再只是PPT里的术语而是一段真实发生过的工程斗争。如果你也对这段技术史感兴趣建议先从矿石收音机和继电器半加器开始它们绝对会重新塑造你对“简单电路”的理解。