ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TTL半加器实战:用74LS08与74LS86在面包板上搭建数字逻辑电路

TTL半加器实战:用74LS08与74LS86在面包板上搭建数字逻辑电路 1. 为什么还要用74系列芯片搭半加器很多人第一次接触数字电路实验看到半加器三个字第一反应是打开仿真软件拖两个逻辑门图标连上线点一下运行波形出来了实验报告一交就完事。我当年也这么干过直到有一次帮学弟调试一块真实的74LS系列板子才发现仿真里秒过的电路在面包板上能折腾你整整一个下午。半加器是数字逻辑里最基础也最经典的组合电路之一它的功能简单到一句话就能说清把两个一位二进制数相加输出本位和Sum与进位Carry。真值表就四行逻辑表达式也不复杂。但恰恰因为它简单用它来练手TTL电路搭建是最合适的——你能把全部注意力放在电平驱动布线干扰这些真实世界里才会冒出来的问题上而不是被复杂的逻辑关系分散精力。TTL也就是晶体管-晶体管逻辑是74系列芯片背后的工艺基础。它的输入输出电平有明确的规范一般输入高电平门槛在2.0V左右低电平门槛在0.8V左右输出高电平典型值3.4V以上低电平0.2V左右。这些数字不是随便定的它们决定了你手里的芯片能不能可靠地识别对方送来的信号。你在仿真软件里看到的0和1是理想化的而TTL电路里每一个1都是实实在在的电压每一根导线都有电阻、电容和电感。这篇文章面向的是真正要动手的人电子、自动化、计算机相关专业的学生刚入行的硬件工程师或者纯粹想搞明白芯片里到底发生了什么的爱好者。我会从器件选型、真值表推导、面包板布线、实测排错一路讲到常见坑尽量把每一步为什么这么做讲透。你照着做大概率能一次点亮就算点不亮也能顺着排查思路自己找到问题。提示本文所有操作基于5V供电的标准TTL逻辑涉及实际通电操作请务必在断电状态下插拔芯片和改线避免短路损坏器件。2. 半加器的逻辑本质与真值表推导2.1 从两个一位数相加说起先别急着看芯片型号我们把问题本身想清楚。两个一位二进制数A和B相加可能的结果有哪些0 0 0本位和0进位00 1 1本位和1进位01 0 1本位和1进位01 1 10二进制本位和0进位1把这四种情况列成表就是半加器的真值表ABSum本位和Carry进位0000011010101101看Sum那一列0、1、1、0这不就是异或XOR吗A和B不同时为1Sum就是1。再看Carry那一列只有A和B都为1时才是1这就是与AND。所以半加器的逻辑表达式非常干净Sum A ⊕ BCarry A · B这就是为什么热词里会出现74LS08和74LS86——前者是四路二输入与门后者是四路二输入异或门。用一片74LS86出一个异或结果用一片74LS08出一个与结果半加器就成型了。2.2 为什么叫半加器有半加器就有全加器。半加器只能处理两个输入位它不接收来自低位的进位。而全加器要处理三个输入A、B以及来自低位的进位Cin。两个半加器加一个或门就能拼出一个全加器这也是为什么理解半加器是理解整个加法器体系的第一步。在实际的CPU里加法器是ALU的核心部件之一而ALU又是指令执行的基石。你从这个四行真值表出发一路往上能摸到计算机体系结构的门槛。这也是为什么几乎所有数字电路课程都拿它当第一个实验。2.3 器件选型的几个现实考量热词里出现了74LS08、74LS86还有74LS00、74LS32这些常见型号。为什么偏偏选08和86从逻辑上讲半加器需要异或和与两种运算。74LS86提供异或74LS08提供与这是最直接的映射。但如果你手头没有86也可以用74LS00四路二输入与非门搭出异或一个异或门需要4个与非门具体接法是——A和B先各接一个与非门做反相再交叉送入第三个与非门最后第四个与非门做输出整形。这样一片74LS00就能出一个异或但会占用全部四个门Carry还得另找芯片。从成本和布线复杂度看直接用74LS86是最省事的。74LS08和74LS86都是14脚DIP封装引脚排列规整面包板友好。74LS系列是双极型工艺驱动能力强扇出高但功耗比74HC系列大。如果你只是做实验74LS完全够用如果考虑低功耗可以换74HC08和74HC86但要注意HC系列的输入电平门槛和LS不同混用时要查数据手册确认电平兼容性。注意74LS系列和74HC系列不要随意混用在同一块板子上做级联尤其是HC驱动LS时HC的输出高电平可能达不到LS的输入高门槛导致逻辑误判。稳妥做法是同一逻辑链路用同一系列。3. 面包板上的TTL半加器搭建实录3.1 器件与工具清单动手之前先把东西备齐缺一样都会卡住74LS86 一片四路二输入异或门74LS08 一片四路二输入与门面包板一块建议至少400孔半尺寸的也行但会挤5V稳压电源或USB供电模块一个杜邦线若干公对公为主长度10-15cm比较顺手LED两只红绿各一分别指示Sum和Carry限流电阻两只220Ω或330Ω串在LED上拨码开关或跳线帽两个用来手动切换A、B输入的高低电平万用表一只测电平、查通断排错必备这里重点说两个容易被忽略的东西。第一是限流电阻LED直接接在TTL输出上会拉大电流虽然74LS输出能扛住十几毫安但长期这么干对芯片不好而且LED亮度会随输出电平波动。串一个220Ω电阻电流控制在10mA左右既亮又安全。第二是输入端的处理TTL输入悬空时会被内部电路拉高看起来像1但这是不可靠的容易受干扰。所以A、B两个输入必须明确接VCC或GND不能悬着。3.2 芯片引脚识别与供电拿到74LS86先看缺口或圆点标记那是引脚1的位置。逆时针数1到14脚。14脚接VCC5V7脚接GND。这是所有74系列14脚芯片的通用规则记住这一条能省很多查手册的时间。74LS86的引脚功能1A1脚1B2脚1Y3脚第一路异或2A4脚2B5脚2Y6脚第二路异或GND7脚3Y8脚3A9脚3B10脚第三路异或4Y11脚4A12脚4B13脚第四路异或VCC14脚74LS08的引脚排列和86类似也是四路二输入引脚定义一一对应只是功能是与门。供电这一步有个细节面包板的电源轨通常是上下两条用跳线把5V和GND引到电源轨上再从电源轨取电给芯片。不要从电源模块直接拉一根长线到芯片14脚那样线太长容易引入干扰而且一旦碰掉整块板子断电。先把电源轨布好后面所有取电都从电源轨走这是面包板布线的通用习惯。3.3 分步接线从异或到与门接线顺序建议先搭Sum通路再搭Carry通路最后接指示。这样每一步都能单独验证。第一步给74LS86供电。14脚到电源轨正极7脚到电源轨负极。用万用表测一下14脚和7脚之间是不是5V确认供电正常再往下走。第二步接异或输入。把A信号接到1脚1AB信号接到2脚1B。A和B暂时用跳线帽接到GND也就是先给00。第三步接异或输出。3脚1Y就是Sum先不接LED用万用表测3脚对地电压。A0、B0时异或输出应该是低电平接近0V。然后把A接到VCC再测应该变成高电平接近3.4V以上。这一步是验证异或门工作正常。第四步给74LS08供电同样14脚VCC、7脚GND。第五步接与门输入。A接到1脚1AB接到2脚1B。注意这里A、B要和异或门的输入是同一个信号源也就是并联过去。面包板上同一个节点可以用多根线连或者直接插在同一列。第六步接与门输出。3脚1Y就是Carry同样先用万用表验证A1、B1时输出高其他情况输出低。第七步接LED指示。Sum输出串220Ω电阻接红色LED阳极LED阴极接GND。Carry输出串220Ω电阻接绿色LED阳极阴极接GND。这样Sum为1时红灯亮Carry为1时绿灯亮。第八步完整验证真值表。依次切换A、B为00、01、10、11观察两只LED的状态对照真值表逐行核对。ABSum灯红Carry灯绿预期00灭灭正确01亮灭正确10亮灭正确11灭亮正确如果四行都对上了恭喜你半加器搭成了。如果某一行不对别急下一节专门讲怎么排查。3.4 布线美观与可靠性面包板布线有个经验信号线尽量短电源线尽量粗或者多根并联输入输出分区走线。我见过太多人把线拉得横跨整块板子结果一碰就松或者信号串扰导致误动作。具体做法是把74LS86和74LS08并排插在面包板中间芯片的输入引脚朝左输出引脚朝右。A、B信号从左边输入经过芯片后从右边输出到LED。电源轨在上下两边芯片的VCC和GND就近接到电源轨。这样走线最短交叉最少。另外每片芯片的电源引脚旁边最好并一个0.1μF的陶瓷电容到地这叫去耦电容。它的作用是滤掉电源上的高频噪声防止芯片开关瞬间的电流波动影响其他芯片。虽然半加器这么简单的电路不加也能工作但养成习惯对以后搭复杂电路有好处。4. 实测中那些让人抓狂的坑4.1 LED不亮但万用表测输出是高电平这是最经典的坑之一。你测3脚电压是3.5V明明是高电平但LED就是不亮。原因通常有两个一是LED极性接反了阳极阴极搞反了LED反向不导通二是限流电阻太大比如用了10kΩ电流只有0.3mALED几乎不发光。排查方法很简单把LED拆下来用万用表二极管档测一下正向导通时会有压降读数反向不通。确认极性后重新接。电阻的话220Ω到1kΩ之间都行太小费电太大不亮。4.2 输入切换时输出抖动你拨动开关切换A或BLED不是干脆地亮灭而是闪一下或者半亮。这通常是输入悬空或者开关抖动造成的。TTL输入悬空时电位不确定可能被干扰拉高拉低。解决办法是给每个输入加一个上拉或下拉电阻比如10kΩ上拉到VCC开关再串一个电阻到地这样开关断开时输入被上拉电阻确定在高电平闭合时被拉到低电平。或者直接用拨码开关它内部有确定的状态。开关抖动是机械触点通断瞬间的弹跳持续时间几毫秒到十几毫秒。对于半加器这种组合电路抖动只影响切换瞬间稳定后没问题。但如果后面接计数器之类的时序电路抖动就会被当成多个脉冲必须加消抖电路。这是后话半加器阶段知道有这回事就行。4.3 两片芯片共地没做好我遇到过一块板子异或门工作正常与门死活不出高电平。查了半天发现两片芯片的GND虽然都接到了电源轨但电源轨中间有一处没连通导致与门的GND和异或门的GND不是同一个电位。万用表一测两片芯片的GND之间居然有0.3V压差。面包板的电源轨有时候不是整条连通的中间可能有断点。搭电路前用万用表蜂鸣档测一下电源轨从头到尾是不是通的不通就用跳线短接。这个检查花不了一分钟但能省你半小时的排查时间。4.4 芯片发热甚至烫手TTL芯片正常工作时会有点温但不应该烫手。如果烫先断电检查几个地方VCC和GND有没有接反输出有没有直接短路到地或VCC输入电压有没有超过5V。74LS系列输出短路到地时输出级晶体管会流过很大电流芯片迅速发热。虽然74LS有输出短路保护但长时间短路还是会损坏。所以接线时一定要确认输出没有直接接到电源轨上。还有一个可能是芯片本身坏了。74LS芯片静电敏感拿的时候没接地或者插反过都可能内部击穿。换一片试试是最快的判断方法。4.5 用74LS00替代86时的陷阱前面说过可以用74LS00搭异或但这里有个坑74LS00的四个与非门你用其中三个搭异或第四个门如果输入悬空它的输出可能振荡进而通过电源耦合干扰其他门。解决办法是把不用的门输入端接固定电平比如都接GND或都接VCC让输出确定。或者把不用的门输出悬空输入端接GND。总之不要让不用的门输入悬空。另外用与非门搭异或需要4个门一片74LS00刚好够一个异或Carry还得另找与门。所以除非手头实在没有86否则不推荐这么干布线复杂还容易出错。5. 从半加器延伸到全加器的思路5.1 两个半加器拼一个全加器半加器只能算两个位全加器要算三个位A、B、Cin。用两个半加器加一个或门就能实现第一个半加器算A和B得到S1和C1。第二个半加器算S1和Cin得到Sum和C2。最后C1和C2通过或门得到Carry。逻辑上很好理解AB产生的进位C1和(AB)的结果再Cin产生的进位C2只要有一个为1最终就有进位。用芯片实现的话需要两片74LS86、两片74LS08、一片74LS32或门。或者用一片74LS86、一片74LS08、一片74LS00用与非门搭或门。布线量比半加器翻倍但原理是一样的。5.2 级联成多位加法器把多个全加器级联低位全加器的Carry输出接到高位全加器的Cin输入就能实现多位二进制加法。这就是所谓的行波进位加法器。行波进位的问题是延迟。每一位的进位要等低位算完才能算位数越多延迟越长。8位加法器的进位延迟可能达到几十纳秒。高速CPU里用的是超前进位加法器通过额外的逻辑提前算出各位的进位牺牲面积换速度。你在面包板上搭一个4位加法器就能直观感受到进位是怎么一级一级传下去的。用LED显示每一位的和与进位拨动开关输入两个4位数观察结果。这个实验比半加器有意思得多但前提是半加器你得先搭明白。5.3 从实验到实际的差距面包板上的半加器跑通了不代表你理解了实际芯片设计。真实的加法器在芯片内部是另一套做法晶体管级的电路优化、版图布局、寄生参数提取、时序分析每一步都有大量工程细节。但面包板实验的价值在于建立直觉。你知道TTL电平不是理想的0和1知道导线有电阻电容知道电源噪声会影响逻辑知道输入不能悬空。这些直觉在你以后看数据手册、做PCB设计、调试硬件问题时会一次次帮到你。热词里出现的ttl版图ttl电路这些词指向的就是从逻辑到物理实现的这条路。半加器是你在这条路上的第一个路标。6. 几个容易被忽略的实操细节6.1 万用表测逻辑电平的正确姿势用万用表直流电压档测TTL输出黑表笔接GND红表笔接被测点。高电平读数一般在3.4V到3.6V之间低电平在0.1V到0.3V之间。如果读数在0.8V到2.0V之间说明这个点状态不确定可能是悬空或者驱动能力不足。注意万用表的内阻。普通数字万用表输入阻抗10MΩ对TTL电路影响很小。但如果你用指针式万用表内阻可能只有几十kΩ接上去会拉低被测点电压导致误判。测逻辑电平还是数字表靠谱。6.2 电源的选择与噪声USB供电方便但USB口的5V不一定干净尤其是电脑USB口可能带着开关电源的纹波。如果电路工作不稳定可以换一个线性稳压电源或者在电源轨上并一个大电容比如100μF滤波。电池供电最干净四节镍氢电池串联约4.8V接近5V带74LS没问题。但电池电压会随电量下降低于4.75V时TTL可能工作不正常。所以实验阶段用稳压电源最省心。6.3 芯片的插拔与保护插芯片时对准缺口方向引脚对准面包板孔均匀用力按下去。拔芯片时用专用起拔器或者用小一字螺丝刀从两端轻轻撬。直接用手抠容易把引脚弄弯甚至掰断。拿芯片前先摸一下接地的金属物体放静电尤其是冬天干燥的时候。虽然74LS的抗静电能力比CMOS强但也不是无敌的。养成习惯没坏处。6.4 记录实验数据的方法别光看LED亮灭把每次测量的电压值记下来。A0、B0时Sum脚电压多少Carry脚电压多少A1、B1时又是多少。这些数据写进实验报告比单纯写灯亮了有说服力得多。如果条件允许用逻辑分析仪抓一下输入输出的波形看看切换瞬间有没有毛刺。逻辑分析仪现在很便宜几十块就能买到一个USB的配合电脑软件用比万用表直观得多。7. 常见问题速查现象可能原因排查动作所有输出都不对供电没接或接反测14脚对7脚电压某一路输出恒定输入悬空或芯片坏测输入脚电压换门试LED微亮限流电阻过大换220Ω电阻输出高电平只有2V负载过重或芯片坏断开负载再测切换时输出抖动输入悬空或开关抖动加下拉电阻或消抖芯片发热短路或接反断电检查接线这张表建议打印出来贴在工位上调电路的时候对照着看能省不少时间。8. 我个人的几点体会搭半加器这个事说简单是真简单两片芯片几根线的事。但说深也真深从真值表到逻辑表达式从逻辑门到TTL电平从面包板到芯片内部晶体管每一层都有东西可挖。我自己的习惯是每搭一个新电路先不急着通电对着原理图把线检查一遍用万用表蜂鸣档测关键节点通断。这个习惯让我少烧了好几片芯片。还有一点实验记录一定要当时写别等做完再回忆很多细节当时不记过后就想不起来了。最后说个小事。有一次我搭好半加器四行真值表全对正准备收工随手碰了一下电源线LED闪了一下。我重新测发现A1、B1时Carry灯偶尔不亮。查了半天是电源轨上一个跳线帽接触不良。从那以后我每次收工前都会轻轻拨动一下所有跳线确认没有松动的。这个动作花十秒钟但能避免你下次打开电路时面对一个莫名其妙坏了的板子。硬件实验就是这样理论再清楚手上功夫不到家照样出问题。半加器是个很好的起点把它搭稳了后面的全加器、计数器、状态机都是水到渠成的事。
返回列表