
1. 为什么还要用TTL电路搭半加器半加器这个名词很多人在数字电路课本上见过但真正拿74系列芯片在面包板上把它搭出来的人并不多。我最初接触这个实验是因为带新人时发现一个普遍现象大家能用Verilog写出半加器也能在仿真软件里跑出波形但一旦面对真实的芯片、电阻、LED和示波器就完全不知道从哪下手。TTL电路搭建半加器实验恰好是打通“逻辑表达式”和“物理实现”之间那堵墙的最佳入口。这个实验的核心目标很明确用TTL逻辑门芯片实现两个1位二进制数的加法输出“和”与“进位”两个结果。说人话就是你手里有两个开关分别代表两个加数拨动开关后电路自动告诉你相加的结果是0还是1以及有没有进位。听起来简单但它涵盖了数字电路最基础的几个能力真值表到逻辑表达式的转换、逻辑门选型、芯片供电与去耦、信号电平观测、故障排查。适合谁来参考如果你是电子类专业的学生正在做数字电路实验这篇内容可以直接当操作手册用。如果你是嵌入式开发者平时只写代码不碰硬件想补一补底层电路的知识这个实验成本低、周期短一个下午就能搞定。如果你只是对逻辑门好奇想亲手验证一下“异或门到底是不是加法器”那也完全可以跟着做。我用的核心芯片是74LS08和74LS86前者是四路二输入与门后者是四路二输入异或门。半加器的逻辑很简单和位用异或进位用与门。所以理论上只需要这两颗芯片就够了。但实际搭建时你会遇到供电、去耦、LED限流、开关消抖等一系列课本上不会细讲的问题这些才是这篇博文真正要分享的东西。2. 半加器的逻辑拆解与芯片选型思路2.1 从真值表到逻辑表达式别跳步半加器的输入是两个1位二进制数A和B输出是Sum和Carry。真值表如下ABSumCarry0000011010101101观察Sum列它在A和B不同时为1相同时为0这正是异或逻辑。Carry列只有在A和B同时为1时才为1这是与逻辑。所以Sum A ⊕ BCarry A · B这个推导过程看起来简单但我建议你亲手在纸上写一遍。很多新手直接背结论结果到了用与非门搭建的时候完全不知道怎么转换。理解“异或就是不进位的加法”这个直觉比记住公式重要得多。2.2 为什么选74LS08和74LS8674系列TTL芯片里与门和异或门有很多型号。74LS08是四路二输入与门74LS86是四路二输入异或门两者都是14脚DIP封装供电范围4.75V到5.25V典型工作电压5V。选它们的原因有三个第一功能刚好匹配。半加器需要两个输入信号做异或和与运算74LS86提供异或74LS08提供与各用一路就够了剩下的门可以留着扩展全加器。第二LS系列功耗低。相比74系列标准型74LS的输入电流更小功耗更低适合面包板实验。如果你手头只有74HC系列也能用但要注意HC是CMOS工艺输入不能悬空否则会乱跳。第三价格便宜且容易买到。这两颗芯片在电子市场或者线上平台都是几毛钱到一块多一颗坏了也不心疼。注意74LS08和74LS86的引脚排列不同插芯片前一定要查数据手册确认VCC和GND的位置。接反电源是烧芯片最快的方式我见过不止一个新手把芯片插反后通电结果芯片直接发烫冒烟。2.3 电源与去耦最容易被忽略的环节TTL电路对电源噪声比较敏感尤其是面包板上的接触电阻和导线电感容易在开关动作时产生毛刺。我的习惯是在每颗芯片的VCC和GND之间并一颗0.1μF的陶瓷电容位置尽量靠近芯片电源引脚。这个电容叫去耦电容作用是给芯片提供瞬态电流同时滤掉电源上的高频噪声。面包板的电源轨也要注意不要只用一根跳线从电源模块引到面包板一端。我通常会在面包板的两侧电源轨都接上电源和地并且用粗一点的导线。如果电源轨中间有断开记得用跳线短接。3. 面包板实操从零搭出半加器3.1 物料准备与工具清单动手之前先把东西备齐。缺一个元件就要停下来找很影响节奏。74LS08 一颗74LS86 一颗面包板 一块建议至少400孔5V电源模块 一个或者用USB供电的5V稳压模块LED 两颗建议红色和绿色各一分别表示Sum和Carry限流电阻 两颗220Ω到1kΩ都可以我常用470Ω拨动开关 两个或者用杜邦线手动接VCC和GND杜邦线 若干建议公对公和公对母都准备一些万用表 一个用来测电平和通断逻辑笔 可选有的话观测更方便提示LED限流电阻的计算很简单。TTL输出高电平典型值3.4V左右LED正向压降约1.8V到2.2V取2V计算电流想控制在10mA左右电阻就是(3.4-2)/0.01140Ω。用470Ω的话电流约3mA亮度足够也更安全。3.2 芯片插装与电源连接先把74LS08和74LS86插到面包板上两颗芯片之间留出至少一排孔的距离方便走线。芯片的缺口朝左引脚编号从左上角开始逆时针数。74LS08的14脚是VCC7脚是GND74LS86也是14脚VCC7脚GND。连接电源时我习惯先用万用表确认电源模块输出确实是5V然后再接到面包板电源轨。接好后用跳线把两颗芯片的14脚接到正电源轨7脚接到负电源轨。每颗芯片旁边并一颗0.1μF电容电容一脚接VCC一脚接GND。注意插芯片时不要用力过猛DIP封装的引脚很容易弯。如果引脚有点歪先用镊子轻轻掰正再插。拔芯片时用专用起拔器或者用小一字螺丝刀从两端交替撬起不要直接用手抠。3.3 输入开关与信号线布置两个输入A和B我用两个拨动开关来实现。开关的一端接VCC另一端通过一个10kΩ电阻接地同时引出信号线到芯片输入。这样开关拨到VCC时输入为高电平拨到地时输入为低电平。10kΩ电阻的作用是确保开关断开时输入不会悬空。如果你没有拨动开关也可以用杜邦线直接插到VCC或GND来模拟输入。但这样操作时手会抖容易碰到其他线所以我更推荐用开关。信号线布置有个小技巧用不同颜色的线区分A和B。比如A用黄色B用蓝色Sum用绿色Carry用红色。这样排查问题时一眼就能看出哪根线对应哪个信号不用反复查图。3.4 异或门和与门的接线细节74LS86内部有四个异或门我们只用其中一个。以第一个门为例输入是1脚和2脚输出是3脚。把A接到1脚B接到2脚3脚就是Sum输出。74LS08内部有四个与门同样用一个。第一个门输入是1脚和2脚输出是3脚。把A接到1脚B接到2脚3脚就是Carry输出。接线时注意不要跨芯片乱接。我见过有人把A接到74LS86的1脚后又用一根很长的线绕到面包板另一头接74LS08的1脚结果线太长引入干扰输出不稳定。正确做法是让两颗芯片尽量靠近A和B的信号线先分别引到两颗芯片附近再用短跳线连接。3.5 输出指示与限流电阻Sum和Carry输出分别接LED。LED正极接芯片输出负极通过限流电阻接地。这样输出高电平时LED亮低电平时灭。这里有个细节TTL输出高电平时是拉电流能力较弱低电平时灌电流能力较强。所以用LED从输出到地的方式高电平亮是拉电流模式74LS系列高电平输出电流典型值只有0.4mA左右可能亮度很暗。更好的做法是LED正极接VCC负极通过电阻接芯片输出这样低电平时LED亮利用的是灌电流能力74LS灌电流可以到8mA亮度明显更好。但这样逻辑就反了输出低电平时LED亮。如果你不介意反逻辑可以用这种方式。如果希望高电平亮可以在输出和LED之间加一个三极管驱动或者直接用逻辑笔。我为了直观通常用灌电流方式然后在标签上写清楚“LED亮表示低电平”。4. 上电测试与波形观测4.1 静态测试拨开关看LED接好线后先不要急着上电。用万用表蜂鸣档测一下VCC和GND之间有没有短路确认没有短路再通电。通电后按真值表依次拨动开关A0B0Sum灭Carry灭A0B1Sum亮Carry灭A1B0Sum亮Carry灭A1B1Sum灭Carry亮如果结果符合说明逻辑正确。如果不符合先检查芯片电源是否正常再检查输入信号是否真的到了芯片引脚。用万用表测芯片输入引脚电压高电平应该在2.7V以上低电平在0.8V以下。4.2 动态测试用示波器看延迟静态测试通过后如果你有示波器可以进一步观测异或门的传输延迟。把A输入接一个方波信号频率1kHz左右B接低电平观察Sum输出。你会看到Sum跟随A变化但上升沿和下降沿相对于输入有几十纳秒的延迟。74LS86的典型传输延迟约15ns到20ns这个延迟在低速电路中无所谓但在高频电路中必须考虑。如果没有示波器也可以用逻辑分析仪或者用单片机产生方波并读取输出。我最初就是用Arduino产生1kHz方波然后用数字引脚读Sum统计高低电平持续时间间接验证逻辑功能。4.3 电平兼容性与负载问题TTL输出接LED时要注意负载不要超过芯片驱动能力。74LS08和74LS86每个输出最多驱动10个LS系列输入或者8mA灌电流。两颗LED加电阻的电流在3mA到10mA之间单路输出驱动一个LED没问题但不要同时驱动多个大电流负载。另外如果你要把这个半加器级联成全加器下一级的输入会消耗前一级的输出电流。LS系列输入低电平时每个输入约0.4mA高电平时约20μA。一个输出驱动两个输入完全没问题但驱动太多就要算扇出。5. 常见故障与排查速查表5.1 上电后芯片发烫这是最危险的情况立刻断电。原因通常是电源接反、VCC和GND短路、或者芯片已经损坏。用万用表测VCC和GND之间电阻正常应该在几百欧以上。如果接近0检查电源轨有没有短路芯片有没有插反。5.2 LED不亮或常亮先测芯片输出引脚电压。如果输出高电平但LED不亮检查LED极性是否接反限流电阻是否太大。如果输出低电平但LED常亮检查是否用了灌电流接法而逻辑搞反了。如果输出引脚电压在1V到2V之间可能是输出过载或者芯片损坏。5.3 逻辑结果随机跳变输入悬空是常见原因。TTL输入不能悬空悬空时会被当作高电平但容易受干扰。确保每个输入都有明确的拉高或拉低路径。开关消抖也要考虑机械开关在拨动瞬间会产生多个脉冲如果后级有计数器会误计数。可以在开关两端并一个0.1μF电容或者用施密特触发器整形。5.4 排查流程表现象可能原因排查方法芯片发烫电源接反或短路断电测VCC-GND电阻LED不亮极性反、电阻大、输出低测输出引脚电压逻辑错误输入悬空、接线错对照真值表逐脚测电平输出跳变电源噪声、开关抖动加去耦电容、加消抖电容级联失败扇出不够、电平不匹配查数据手册算扇出提示排查时不要同时改多个地方。一次只改一个变量改完测一次否则你永远不知道是哪个改动起了作用。这是我踩过很多次坑之后养成的习惯。6. 从半加器到全加器的扩展思路半加器只能处理两个1位数的加法没有考虑低位进位。实际加法器需要全加器输入是A、B和Cin输出是Sum和Cout。全加器的逻辑是Sum A ⊕ B ⊕ CinCout A·B Cin·(A ⊕ B)用74LS86和74LS08可以搭出来两个异或门串联得到Sum两个与门和一个或门得到Cout。74LS08只有与门还需要一颗74LS32或门。或者用74LS00与非门和74LS10三输入与非门来等效实现。我建议你先把这个半加器搭稳确认每个环节都理解透了再扩展全加器。半加器是地基地基不稳全加器只会让你更迷糊。7. 我踩过的坑和实测心得第一个坑是芯片插反。有一次赶时间74LS86的缺口朝右插进去了通电后芯片烫得不敢碰赶紧断电芯片已经废了。后来我养成习惯插芯片前先看缺口再用万用表测VCC和GND引脚确认没有短路。第二个坑是面包板电源轨中间断开。有些面包板的电源轨不是整条连通的中间有断点。我一开始不知道把电源接在一端芯片接在另一端结果芯片根本没供电。后来用万用表蜂鸣档测了一下才发现电源轨中间不通。现在我用面包板之前都会先测电源轨通断。第三个坑是LED限流电阻用太小。有次手边没有470Ω用了100ΩLED特别亮芯片输出电流超标用了一会儿芯片就烫了。后来老老实实按计算值选电阻再也不敢随便拿一个就用。第四个坑是输入开关没消抖。用拨动开关做输入时如果后级接计数器拨一次开关计数器会跳好几个数。后来在开关两端并了0.1μF电容问题解决。这个电容和开关构成RC低通把抖动滤掉了。实测下来整个半加器从插芯片到验证通过熟练的话半小时以内能完成。新手第一次做建议留出两小时包括查手册、测通断、排查问题的时间。不要追求一次成功把每次故障当成学习机会收获比顺顺利利搭完更大。最后分享一个小技巧搭完电路后用手机拍一张清晰的照片标注好每根线的颜色和对应信号。下次再搭或者给别人讲的时候直接看照片就能复现不用重新查图。这个习惯帮我省了很多重复劳动的时间。