逻辑门基础:与门、或门、非门、与非门、或非门、异或门

各位同学,咱们今天聊聊最基础的东西——逻辑门。你可能觉得这太简单了,不就是几个门电路嘛。但我跟你说,我做了十几年数字电路设计,见过太多工程师在复杂系统里栽跟头,追根溯源,往往是对这些基本门的理解不够透彻。说白了,整个数字世界,就是由这些门搭起来的。

1. 与门(AND Gate)

与门的逻辑,用大白话说就是「全1出1,有0出0」。两个输入都是高电平,输出才是高电平。我在项目中遇到过一个小问题:一个使能信号和时钟信号做了与门,结果使能信号有毛刺,导致时钟被切出了短脉冲。嗯,从那以后我对与门的输入信号质量就特别敏感。

ABY = A & B
000
010
100
111

电路符号上,与门是一个平头形状,左边两个输入,右边一个输出。我个人习惯在原理图上把与门画得稍微大一点,方便看走线。

2. 或门(OR Gate)

或门正好反过来——「有1出1,全0出0」。只要有一个输入是高电平,输出就是高电平。你想想看,这像不像并联开关?任何一个开关闭合,灯就亮。

ABY = A | B
000
011
101
111

电路符号是弧形头,有点像子弹头。我建议你在画或门的时候,注意输入端的圆弧要平滑,不然仿真器可能会报warning。

3. 非门(NOT Gate / 反相器)

非门最简单,就一个输入一个输出,输出是输入的取反。0变1,1变0。为什么说它重要?因为几乎所有复杂逻辑里,你都需要把信号反一下。我记得刚入行时,有个老工程师跟我说:「没有反相器,你连个D触发器都做不出来。」后来我深以为然。

AY = ~A
01
10

符号是一个三角形后面带个小圆圈。那个小圆圈代表取反,在数字电路里,这个小圆圈随处可见。

4. 与非门(NAND Gate)

与非门就是与门后面加个非门。先做与运算,再取反。所以它的真值表跟与门正好相反——「有0出1,全1出0」。

ABY = ~(A & B)
001
011
101
110

电路符号就是在与门输出端加个小圆圈。这里有个知识点:理论上,只用与非门就能搭出任何逻辑电路。我在FPGA项目里验证过,确实如此。所以有些教材说与非门是「通用门」,不是没道理的。

5. 或非门(NOR Gate)

或非门是或门加非门。先做或运算,再取反。真值表是「有1出0,全0出1」。

ABY = ~(A | B)
001
010
100
110

符号是或门输出端加个小圆圈。或非门也是通用门,不过在实际工程中,我更喜欢用与非门,因为CMOS工艺下与非门的性能通常更好一些。

6. 异或门(XOR Gate)

异或门有点意思——「相同出0,不同出1」。两个输入一样,输出0;两个输入不一样,输出1。

ABY = A ^ B
000
011
101
110

电路符号跟或门有点像,但输入端多了一条弧线。异或门在加法器、校验电路里用得特别多。我曾经在做一个CRC校验模块时,用了一整排异或门做并行计算,那布线布得我头都大了。

核心要点:这六种门是数字电路的「字母表」。你写的任何Verilog代码,最终综合出来都是这些门的组合。理解它们的真值表和符号,是看懂原理图的第一步。

我的小技巧:记真值表不用死记。与门想成「串联开关」,或门想成「并联开关」,非门就是「反一下」。与非和或非就是在后面加个「反」。异或就是「比较器」——比较两个输入是否相同。

注意:实际芯片中,逻辑门的输入不能悬空。悬空的输入会像天线一样接收噪声,导致输出乱跳。我曾经见过一块板子,就是因为一个与非门的输入没接,导致整个系统间歇性死机。查了三天才找到原因。

知识体系总览

下面这张图,我把这六种门的关系和分类画出来了。你可以看到,与门和或门是基础,加上非门就衍生出与非门和或非门。异或门稍微特殊一点,它其实可以用与门、或门、非门组合出来。

逻辑门知识体系 与门 (AND) 或门 (OR) 非门 (NOT) 与非门 (NAND) 或非门 (NOR) 异或门 (XOR) 基础门 + 非门 = 衍生门 异或门可由基础门组合实现 NAND和NOR是「通用门」,可构成任意逻辑

好了,这一章的内容就这些。记住,逻辑门是数字电路的砖瓦,把砖瓦认清楚了,后面盖房子才不慌。可可精品资料库