如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使用的一种基础单元里。这个单元的名字叫逻辑门。
普通处理器里动辄几十亿个晶体管,但把它们抽象到最高层,核心结构不过就是与门、或门、非门,以及由此衍生出来的与非门、或非门、异或门等。逻辑门就是数字世界的乐高积木:把电压信号变成0和1的判断,再把0和1的判断组合成加法、比较、存储、控制逻辑,一层层叠出整台计算机。这篇文章既适合刚接触数字电路的学生,也适合想自己搭电路验证原理的爱好者,甚至适合那些写了很多年软件、却始终对“底层到底怎么跑”存有好奇的开发者。我会从二进制和布尔逻辑讲起,逐步拆到门级电路的实际搭建、芯片选型、故障排查,最后分享一些只有反复动手才会知道的经验。
1. 逻辑门到底在“算”什么:二进制与布尔逻辑
1.1 为什么计算机只认0和1
数字电路内部处理的是电压信号,一般约定:高于某个阈值就是高电平,记作逻辑1;低于某个阈值就是低电平,记作逻辑0。至于为什么只分成两种状态而不是十种,背后的工程理由非常实在。
电子器件在开关两种状态之间切换最稳定,也最容易设计。晶体管要么截止、要么导通,就像家里墙上的开关,只有“断”和“通”两种状态。如果强行把电压分成十级,每一级之间的电压差会变得很小,稍微有一点电磁干扰、电源波动,信号就会从3跳到4或者从7跳回6,整个系统根本没法可靠工作。二进制的另一个好处是抗噪声能力极强:只要信号还能被识別为高或低,中间怎么波动都可以忽略。这让电路设计宽容度大、成本低,也让计算机可以做到每秒几十亿次的稳定翻转。
你可以把每一位比特想象成电灯开关:0是灯灭,1是灯亮。你不希望“半亮”也算一种状态,因为电压一旦抖动,例如从半亮变到比半亮更亮,状态就解释错了。计算机内部所有字符、图片、音频、网络包,最终都会被编码成一串串这样的开关状态,而逻辑门就是负责管理这些开关状态如何组合、如何演算的执行者。
1.2 布尔运算:把“判断”交给电路
有了0和1的符号体系,还需要一套规则来操作它们。这套规则来自布尔代数,逻辑门实现的就是其中最核心的三种操作:与、或、非。
与运算的含义是“所有条件同时成立,结果才成立”。举个生活化的例子:公司闸机要求“人在公司且工卡有效”,两个条件缺一个,门都不会开。或运算的含义是“只要有一个条件成立,结果就成立”。比如房间里的两盏灯,任何一个开关合上,房间就会亮。非运算更简单,就是取反:输入是1,输出是0;输入是0,输出是1,像一面镜子,把黑色照成白色。
布尔代数最奇妙的地方在于,它跟电路是一一对应的。你写下一个逻辑表达式F = (A·B) + (¬C),它直接就能翻译成一张电路连接图:A和B先过一个与门,C先过一个非门,再把两者的结果送入一个或门。这种映射关系让工程师能像写公式一样设计电路,也让软件里的if(a && b)在底层编译后,最终体现为处理器内部一个实实在在的与门操作。理解这一点,你才算真正把“软件”和“硬件”这两层打通了。
1.3 从真值表看逻辑门:穷举每一种输入
对刚接触逻辑门的人来说,最直观的认知方式就是看真值表。所谓真值表,就是把所有输入组合全部列出来,然后写下对应的输出结果。对于有n个输入的门,组合数就是2的n次方,比如两个输入就有4种组合。
在真值表里,你不需要背任何公式,只需要逐行对照。比如一个二输入与门,先看A=0、B=0,再看A=0、B=1,再看A=1、B=0,最后看A=1、B=1,只有最后一行输出为1。这种“穷举法”不仅是学习工具,也是工程验证工具。我搭完一块电路后,最喜欢干的事情就是拿真值表逐行核对,哪一行输出不对,问题就锁定在哪一个环节。真值表看似笨拙,却是数字电路调试中最可靠的基本功。
1.4 逻辑门种类一览
在进入细节之前,先把最常见的一批门放在一起对比,建立整体框架:
| 逻辑门 | 功能简述 | 输出为1的条件 |
|---|---|---|
| 与门(AND) | 乘性逻辑 | 所有输入都为1 |
| 或门(OR) | 加性逻辑 | 至少一个输入为1 |
| 非门(NOT) | 取反 | 输入为0时 |
| 与非门(NAND) | 与门结果取反 | 不是所有输入都为1 |
| 或非门(NOR) | 或门结果取反 | 所有输入都为0 |
| 异或门(XOR) | 相异输出1 | 输入不相同 |
| 同或门(XNOR) | 相同输出1 | 输入相同 |
其中与非门和或非门比较特殊,它们属于“万能门”,只用其中一种就能拼出所有其他类型的门。这一点后面实操部分会专门演示,现在先记住这个概念。
2. 七种最常用逻辑门的行为详解
2.1 与门(AND):所有条件都必须满足
二输入与门的真值表非常简单:
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
从电气角度看,与门通常由两级电路组成:先做一个“相与”的晶体管结构,再经过输出整形。实际使用中,与门最适合描述“多项条件同时具备”的场景。比如安全联锁系统里,要同时满足“压力正常”和“舱门关闭”才允许启动设备,两个传感器信号各接一个输入端,输出再接到启动回路,这就是一个标准的与门应用。
需要注意的是,多输入与门也很常见,三个输入、四个输入甚至更多都有。它们的行为依然是“全1才出1”,逻辑上等于把多个二输入与门串起来。但在实际芯片里,多输入与门通常不是简单串联,而是直接设计成更宽的晶体管结构,以获得更均衡的延迟。这个细节在小规模实验电路中看不出来,但在高频设计里差距很明显。
2.2 或门(OR):有1即出1
二输入或门的真值表:
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
或门在逻辑上像是“并列条件”。比如多个紧急停止按钮,任何一个被按下,系统就要停机,这时让所有急停按钮信号进入同一个或门,输出再去控制系统电源,就能实现“一键全停”的效果。
从功能上,或门最容易理解,但实操中踩坑也不少。很多新手以为或门只比与门多加一个并联结构就行了,但在CMOS工艺里,或门往往要先做“或非”再取反一次,实际会有三级以上的传播延迟。所以如果你在设计高频电路,不要想当然认为或门和与门速度一样。实验环境下看不出什么区别,可一旦跑到几十兆赫兹,时序就会开始跟你算账。
2.3 非门(NOT):信号翻转器
非门只有一个输入端和一个输出端,行为极其简洁:
| A | Y |
|---|---|
| 0 | 1 |
| 1 | 0 |
非门又常被称为反相器。在电路里,它不止承担逻辑取反的功能,还经常用来做信号的整形和驱动增强。一个信号经过长导线后波形变得圆钝,接一级非门可以把波形重新修整得比较陡峭,同时输出能力也会增强,后面再带几个门电路都没问题。
我经常给初学者提一个建议:别轻视非门。虽然它结构最简单,但在整个数字系统中出现频率极高。凡是需要“低电平有效”的控制信号、需要把使能信号翻转成互补信号、需要在逻辑链路里修正相位的地方,都要靠非门。你可以把非门看成数字世界的润滑油,看起来不起眼,少了它整套系统到处卡壳。
2.4 与非门和或非门:为什么它们被称为“万能门”
与非门就是与门输出再接一个非门,或非门则是或门输出再接一个非门。它们的真值表分别是各自基础门的取反版本。真正有趣的地方在于,这两种门可以单独构成所有其他逻辑门。
以与非门为例,只要把两个输入接在一起,就变成了非门。把一个与非门的输出再接回另一级与非门的输入,或者按照特定拓扑连接,就能构造出与门、或门、异或门。原因其实在于逻辑代数的性质:与非运算本身带有完全性,任何布尔函数都可以用与非表达式表示。
这个特性在工程上极其重要。早期芯片内部,工程师往往只想用同一种基本门单元,这样掩膜版设计简单、工艺一致性好。所以你会看到某些处理器内部几乎全是与非门结构。对DIY玩家来说,买一盒子通用与非门芯片,就能在家搭出各种逻辑电路,这也是为什么“只用与非门搭一个全加器”成了数字电路实验课的经典项目。
2.5 异或门(XOR):判断两边是否不同
二输入异或门的真值表:
| A | B | Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
异或门的口诀是“相异出1,相同出0”。它最重要的应用是做加法器:两个二进制位相加时,不考虑进位的话,结果就是A异或B。此外,异或门还可以用来做数据传输中的奇偶校验、加密混淆逻辑、以及数值比较。
同或门是异或门取反,输出为1的条件是“输入相同”。它常用在一致性比较电路里,比如判断两组数据是否相等。实际工程中,有些芯片不直接提供同或门,要靠异或门加非门组合出来,这在画电路图时就多一层考虑:尽量用现有库存门搭出目标功能,而不是为了一个特殊门另外采购一颗芯片。
2.6 三态门:除了0和1,还有“放手”状态
严格来说,三态门不算基本逻辑门,但它在计算机总线中太重要了。三态门在原本的高电平1和低电平0之外,增加了第三个状态:高阻态Z。高阻态的意思是输出端口相当于断路,既不能拉高外部线路,也不能拉低外部线路。
为什么要这种“什么都不干”的状态?因为多个器件经常要共享同一条数据总线,但同一时刻只允许一个器件把数据放到总线上。如果所有器件都同时驱动总线,有的输出0有的输出1,就会直接短路烧毁芯片。三态门通过一个额外的“使能”引脚控制是否输出,让非选中的器件自动“松手”,总线才能安全地由一个设备独占。
你可以把三态门理解成公交车门:只有停靠的那辆车打开车门上下客,其他车都关着门在路边等待。如果所有车同时开门,旅客就会挤成一团,信号也一样。
3. 从单个门到能算数的电路:组合逻辑进阶
3.1 半加器:两个门就能做一位加法
在数字电路里,最基础的“计算”行为是加法。我们先把两个一位二进制数相加,得到两种结果:当前位的和(Sum)和是否产生进位(Carry)。
观察一下:A和B相加,如果AB都是0,和为0、进位0;一个为1一个为0,和为1、进位0;两个都为1,和为0、进位1。这个规律正好可以用两个门表达:
- 和 S = A ⊕ B
- 进位 C = A · B
所以半加器只需要一个异或门加一个与门。它非常简洁,但它只处理两个加数自身的输入,无法把从低位传过来的进位也加进去。这意味着半加器只能用在最低位的计算中,一旦涉及到多位相加,就必须用全加器。
3.2 全加器:把进位串起来
全加器比半加器多了一个输入:来自低位的进位Cin。它的行为可以用真值表描述,总共有8种输入组合。核心公式是:
- S = A ⊕ B ⊕ Cin
- Cout = (A · B) + (Cin · (A ⊕ B))
从结构上看,全加器可以拆成两个半加器和一个额外的或门:第一个半加器算A和B的和以及临时进位,第二个半加器把这个结果和Cin再相加,最后两个临时进位经过或门输出最终进位。实际实现中也可以用两个异或门、两个与门、一个或门来完成。
这是我建议每一位学习者亲手搭一遍的电路。当你把一堆离散的门芯片在面包板上连成全加器,再用LED灯显示出和和进位时,会突然产生一种“原来算术真的是被算出来的”通透感。
3.3 多位加法器如何级联
把多个全加器串联,让每个全加器的Cout接到下一个全加器的Cin,就能构成任意位数的加法器。比如4位加法器只需要4个全加器级联即可。
这种接法叫行波进位加法器,优点是结构简单直观,缺点是延迟会随着位数增加而线性增大。原因很简单:最高位的计算结果,必须等低位把进位一级一级传上来才能得出。假设每个全加器的进位延迟是几百皮秒,4位加法器还好,32位加法器的关键路径就会比较长。
工程上为了提速,会设计“超前进位”结构,提前并行算出每一位的进位,而不是逐级等待。这个优化思路跟软件里的缓存思想很像:用空间换时间,提前计算,减少等待。学习逻辑门时先掌握行波进位,再去了解超前进位,理解层次会清晰很多。
3.4 译码器与多路选择器
除加法器之外,译码器和多路选择器是组合逻辑另外两大主角。译码器的作用是把一组输入编码转换成特定的输出信号。最经典的3-8译码器,3个输入可以产生8个输出,对应真值表里每一种输入组合只有对应的那一路输出为1。它的实现就是用与门和非门组合:每个输出都对应一个最小项。
译码器在计算机里无处不在:CPU取指令后需要识别操作码,指令译码阶段就依赖译码器把二进制指令变成控制各个模块的使能信号;内存访问也需要地址译码器,把地址线信号映射到对应存储单元的行列选通。
多路选择器则像是“数据调度员”,从多个输入里选一个送到输出。2选1选择器只需要两个与门、一个非门和一个或门。选择端决定允许哪一路信号通过。这种结构在寄存器堆、运算器的输入源选择里大量使用,本质上就是为了让硬件在不同数据来源之间快速切换。
3.5 时钟来临:从组合逻辑到时序逻辑
前面讲到的电路都是组合逻辑:输出只取决于当前输入,任何时刻输入变了,经过一小段延迟输出就跟着变。但计算机不能只有这种电路,因为程序需要“记住”状态,需要按步骤执行。
于是有了时序逻辑,最关键的基础单元是触发器。触发器由多个逻辑门交叉反馈构成,最常见的是D触发器。它在时钟边沿到来时锁存当前输入,并在之后保持这个输出不变,直到下一个时钟边沿。这就像给电路装上了“步骤节拍器”,让整个系统的状态按精确的时间节奏推进。
我见过不少初学者在组合逻辑部分顺风顺水,一到时序逻辑就卡住。原因往往是把“电平触发”和“边沿触发”混为一谈。记住一句话:触发器只在时钟跳变的那一刻“看一眼”输入,其他时间都在维持现状。牢牢抓住这一点,时序逻辑的很多经典结构就能慢慢理清。
4. 逻辑门的物理实现与芯片选型
4.1 晶体管如何实现一个与非门
理论上的逻辑门要靠物理器件来落地。目前绝大部分数字芯片都采用场效应管工艺构建。以CMOS与非门为例,它的内部结构是将两个P型管并联在电源和输出之间,再把两个N型管串联在输出和地之间。
当两个输入都是高电平1时,N型管全部导通,P型管全部截止,输出被拉到地,也就是0,实现了“与非”效果。只要有一个输入是低电平0,就至少有一个P型管导通、一个N型管截止,输出被拉到电源电压,也就是1。你看,逻辑判断最终变成了一组晶体管的开关动作。
CMOS电路最大的特点是不工作的时候几乎不耗电,只有开关切换时才需要消耗动态功耗。这是它成为当前数字芯片主流工艺的核心原因。理解这一点,你就明白为什么现代CPU的功耗问题本质上是“切换频率太高”的动态功耗问题,而不只是静态漏电问题。
4.2 TTL与CMOS:两种主流工艺怎么选
如果你自己去买逻辑门芯片,最常见的是两大体系:TTL和CMOS。TTL的代表是74LS系列,CMOS的代表是74HC、74HCT系列。两者在电气特性上有明显区别。
| 对比项 | TTL(如74LS系列) | CMOS(如74HC系列) |
|---|---|---|
| 工作电压 | 5V附近,范围窄 | 2V到6V,范围宽 |
| 静态功耗 | 较高 | 极低 |
| 输入阻抗 | 较低 | 非常高 |
| 抗干扰容限 | 适中 | 比较好 |
| 驱动能力 | 较强 | 中等偏强 |
| 速度 | 中高速 | 中高速,且随电压变化 |
对于初学者和DIY爱好者,我强烈建议优先选CMOS的74HC系列。原因很简单:电压宽容度大,用5V供电基本都能正常工作;功耗低,电池供电的实验更方便;输入阻抗高,不会因为信号源带载能力不足而出现诡异故障。TTL在专业高频或老旧系统里有它的位置,但作为学习起点,CMOS更容易让人把注意力放在逻辑本身。
4.3 芯片引脚识别与面包板布局
拿到一块芯片,第一件事是识别引脚顺序。常见DIP封装芯片有缺角或圆点标记,从左上角开始逆时针编号,比如14脚芯片的1脚在左上角,电源通常接14脚,地通常接7脚,不同芯片的具体电源引脚分布一定要对照对应手册,不能想当然。
面包板布局也有讲究。使用时,我会先把电源和地分别接到面包板上下两条电源轨上,然后再放芯片。芯片跨越面包板中间的凹槽放置,让左右两侧引脚互不短接。插线时优先插电源和地,再插信号线,最后接输出端的LED指示灯。这个顺序能避免大量不必要的故障。
还有一个容易忽略的点:CMOS芯片的逻辑输入端不能悬空。悬空会导致输入电平不确定,芯片可能输出随机结果,甚至产生较大漏电。任何不用的输入引脚都要接到电源或者地,具体接谁取决于你想让它恒定为1还是0。这一条虽然是操作细节,但新手遇到的大部分“灵异现象”都源于它。
5. 动手实操:面包板搭建一个1位全加器
5.1 材料准备清单
这次实操,我建议做最经典的1位全加器,因为它的电路规模适中,既能让你体验多芯片协作,又不会复杂到半天理不清。需要的材料如下:
- 面包板一块(至少630孔那种,空间更宽裕)
- 双列直插封装逻辑芯片两片:一个异或门芯片,一个与门芯片,外加一片或门芯片
- 发光二极管三只,用于显示和与进位结果
- 330欧姆左右的限流电阻三只
- 电池盒加5V电源,或者实验电源一个
- 面包板用杜邦线若干,建议不同颜色区分功能
如果你手头没有异或门芯片,可以多买一片与非门芯片,用四五个与非门自己拼出异或功能。后面我会讲这种替代方案,动手能力强的可以两者都试。
5.2 面包板连接规则速成
面包板边缘的上下两长条孔是电源轨,纵向连通,用来给整块板供电。中间区域的孔以凹槽为界,左右两侧各有若干列,每列5个孔在内部是连通的。也就是说,同一列里只能插同一信号线的多个连接点,不同列之间默认不连通。
接线前,先在纸上画出全加器的信号流:输入A、B、Cin分别进入第一片异或门得到的临时和,再进入第二片异或门得到最终和S;同时A和B进入与门得到第一项进位,临时和与Cin进入另一个与门得到第二项进位,两项再进入或门得到最终进位Cout。画清楚信号流再动手,比一边接线一边查手册高效得多。
5.3 接线实操步骤
第一步,接电源。把5V正极接入面包板上标红的长条轨,负极接入标蓝的长条轨。
第二步,放芯片。小心对准引脚方向,把芯片压入面包板,跨在中间凹槽上。确保每一只引脚都完全进入孔内,没有弯脚。这一步很多人因为芯片没压到底导致接触不良,后面折腾半天。
第三步,给芯片供电。根据芯片型号查引脚定义,把每片芯片的电源脚和地脚分别用导线连接到电源轨。这是最容易漏掉的一步,如果芯片没有供电,所有输出都会是低电平,LED一个都不亮。
第四步,接输入信号。用三个拨动开关模块或者杜邦线手动切换高电平和低电平,作为A、B、Cin三个输入。没有开关模块的话,最简单的方式是杜邦线接VCC代表1,接地代表0,靠手动插拔切换。
第五步,接入输出显示。把S和Cout两个输出端分别串上330欧姆电阻,再接到发光二极管,二极管另一端接地。接电阻是为了限制电流,防止LED过流损坏,这个细节不用省。
第六步,逐个验证真值表。先把输入全部置0,此时S和Cout都应该是0,LED全灭。再依次尝试010、001、011等组合,对照全加器真值表逐一勾选。
5.4 故障排查实录
第一次搭全加器时,我遇到过一个特别典型的故障:A和B输入都是0、Cin为1时,LED该亮的S却不亮。用万用表量输出引脚电压发现是1,但LED不亮。排查半天才发现,LED接反了,二极管极性弄反导致电流无法流过。LED的正极接输出端,负极接地,这个顺序在电路图上可能只是一根线,但接实体时容易忽略。
还有一次是输出与门那边偶尔跳动,最后发现是一根杜邦线内部断裂,只有轻轻按压时才接触良好。这种“时好时坏”的故障最讨厌,排查方法也很朴素:用手轻轻逐根拨动导线,同时观察LED状态,一旦拨到某根线时状态突变,十有八九就是它接触不良。换一根线立刻恢复。
5.5 不借助异或门芯片的替代方案
如果手头没有现成的异或门芯片,完全可以用四个与非门拼出一个异或门。异或的逻辑表达式是A·(非B) + (非A)·B,直接搭需要与非门和反相器。更优雅的接法是用四个与非门按经典拓扑连接:第一级两个与非门分别接收A和B并交叉连接到第二级,第二级的输出再进第三级与非门,最终形成异或功能。
这种替代方案的代价是芯片数量和连线变多,延迟也稍大,但它用实际例子验证了“与非门是万能门”的说法。我强烈建议你至少做一次这样的替换实验。经历过用有限的材料实现同一个逻辑目标之后,你才会真正体会到数字电路设计中的“资源约束”是什么意思:方案不止一个,但器件库存会限制你的选择。
6. 常见问题与避坑速查表
6.1 新手最容易踩的五个坑
这些年来,我在教学和DIY交流中反复看到相似的问题,集中记录如下:
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 所有LED都不亮 | 芯片没供电,或电源正负极接反 | 先测电源轨,再逐芯片查电源引脚 |
| 输出结果随机变化 | 输入引脚悬空 | 把所有不用的输入接到VCC或地 |
| LED亮但亮度极低 | 未接限流电阻,或电阻过大 | 改用100到330欧姆限流电阻 |
| 某个输入切换无效 | 杜邦线接触不良或插错列 | 检查面包板列内连通块,换线重插 |
| 更换芯片后功能全乱 | 芯片引脚方向放反了 | 对照封装缺口和引脚编号重新定位 |
第五个错误尤其值得多讲一句:很多人觉得芯片长得都差不多,拿起来就往面包板上压。但每个型号的引脚定义完全不同,放反之后不仅功能混乱,长时间接错电源还可能烧坏芯片。所以每次更换芯片前,先确认缺口朝左、圆点对应的1脚位置,再对照手册查电源和地的位置。
6.2 值得养成的三个工程习惯
第一个习惯是所有接线从地开始。先把所有芯片的地脚接好,再接电源正极,最后接信号线。理由是电源和地构成电路板的骨架,骨架可靠之后信号再乱都还有个稳定的参照。如果反过来先接信号线,最后才发现电源轨没接好,排查范围会一下子扩大好几倍。
第二个习惯是逐级验证。不要等整块电路搭完才通电测试,每完成一个功能模块就先验证一次真值表。比如搭全加器时,先单独验证第一片异或门,输入A和B,检查输出符合异或真值表,再继续往下接。这样问题会被限制在很小的范围内,而不至于整块板出问题时完全无从下手。
第三个习惯是用不同颜色的导线区分信号类型。电源用红色,地用黑色,输入用黄色,输出用蓝色。看起来是小习惯,但对面包板这样视觉信息非常密集的场景,颜色分类能让你在排查时节省大量时间。我见过一些高手两根线就让电路跑起来,但到了调试阶段一样会按颜色找信号,这是工程效率问题,不是美感问题。
6.3 从逻辑门继续往下走的学习路线
把逻辑门吃透之后,后面的路可以规划成一条很清晰的主线。
- 先练熟练化简逻辑表达式,掌握用更少的逻辑门实现同一功能。
- 然后做加法器,从半加器到全加器,再到多位加法器。
- 接着顺序逻辑集合:用触发器做寄存器,用计数器做分频电路。
- 再往下可以动手搭一个极简处理器,把取指、译码、执行、回写这些阶段在逻辑门层面跑通。
- 最后一步可选Verilog或者VHDL硬件描述语言,把这些基础结构用代码描述出来,再上FPGA跑仿真。
这条路线最妙的地方在于没有断层:你每一步做的东西,都能在上一步的电路里找到影子。真到了看一段硬件描述语言代码能想象出晶体管布图的程度,你对“计算机的基石”的理解就已经超越了绝大多数只停留在应用层的人。
最后再分享一个我自己的体会。学习逻辑门最忌讳的是只看书不搭电路。纸上真值表背得再熟,都不如亲手把一根导线插错、看LED错误亮起,再把问题找出来,获得的记忆来得深刻。那些能在数字电路领域走得远的人,几乎都有一个共同的特点:他们不怕把电路搭乱,也不怕把芯片烧掉,只要最后能从一堆看似必需重来的残局里把故障找出来,这次动手就是成功的学习。希望你看完这篇文章,也能找个周末,准备一块面包板和几颗通用逻辑芯片,亲手体验一次这种“把抽象逻辑变成可见光”的快乐。