news 2026/7/11 17:26:20

手把手教你认识逻辑门:从与或非开始

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你认识逻辑门:从与或非开始

从零开始搞懂逻辑门:与、或、非的硬核实战解析

你有没有想过,手机里每一条消息、电脑中每一次点击,背后其实都是一群“0”和“1”在疯狂打架?而这场战斗的最小作战单位,就是——逻辑门

别被这个名字吓到。它听起来高深,其实就像电路里的“开关裁判”,专门判断条件是否成立,然后决定信号能不能通过。今天我们就抛开教科书式的刻板讲解,用工程师的视角,带你真正看懂、用懂、写懂最基础的三个逻辑门:与门(AND)、或门(OR)、非门(NOT)


先问一个问题:为什么所有数字系统都从这三个门开始?

答案很直接:因为它们足够简单,又足够强大。

  • 简单到可以用两个晶体管搭出一个非门;
  • 强大到全世界最复杂的CPU,本质上也不过是这三种门的超级组合体。

香农早在1937年就证明了:任何布尔函数,都可以仅用与、或、非来实现。换句话说,只要你能把问题翻译成“是/否”判断,这三个门就能帮你用电压实现出来。

所以,学逻辑门不是背概念,而是掌握一种用硬件思考问题的方式


一、与门(AND Gate):全票通过才放行

它像什么?

想象公司报销流程:必须同时满足“领导签字 ✅” + “发票齐全 ✅”,才能打款。只要缺一个,就不行。

这就是与门的核心逻辑:全为1,输出才是1

数学表达

$$
Y = A \cdot B \quad \text{或} \quad Y = A\ \&\ B
$$

这个“·”不是乘号,是逻辑乘。但有意思的是,它的运算规则恰好和二进制乘法一致:
- 1 × 1 = 1
- 其他情况都是 0

真值表(2输入)

ABY
000
010
100
111

关键洞察:与门的本质是“协同控制”。在数字系统中,它常被用作“使能信号(Enable)”。

比如某个模块只有在clk_en == 1 && reset_n == 1时才工作,否则静默待机。

怎么实现?CMOS结构简析

典型的CMOS与门其实是“与非+非”的组合:
1. 先用NMOS网络实现 NAND(A 和 B 都导通才拉低)
2. 再加一级反相器(Inverter)得到 AND

虽然多了一级延迟,但保证了强驱动能力和低静态功耗。

Verilog 实现(可综合)

module and_gate ( input wire A, input wire B, output wire Y ); assign Y = A & B; endmodule

💡 提示:这段代码会被综合工具自动映射为标准单元库中的AND2X1单元。如果是FPGA开发,还会考虑查找表(LUT)如何配置。


二、或门(OR Gate):一人举手就行动

它像什么?

火灾报警系统:烟雾传感器响了 ❗ 或者 温度超标 ❗,警报立刻拉响。

这就是或门的哲学:一真即真

数学表达

$$
Y = A + B
$$

注意!这里的“+”不是算术加法。比如 $1 + 1 = 1$,而不是2。这是逻辑加

真值表(2输入)

ABY
000
011
101
111

工程妙用:中断请求合并。

多个外设(UART、SPI、Timer)都能发起中断。我们把它们的中断信号接到一个或门,只要有一个置位,CPU就知道该处理中断了。

实现方式

CMOS或门同样采用复合结构:
- PMOS并联实现“任一导通即上拉”
- NMOS串联确保“全断开才下拉”

但由于PMOS载流子迁移率低,或门通常比与门慢一点,在高速设计中需要特别注意路径延迟。

Verilog 实现

module or_gate ( input wire A, input wire B, output wire Y ); assign Y = A | B; endmodule

⚠️ 注意操作符:|是按位或,||是逻辑或(用于条件判断),别混用!


三、非门(NOT Gate):唯一的单兵战士

它是什么?

反相器(Inverter),也叫 NOT 门。它是唯一只有一个输入的逻辑门。

功能极其纯粹:输入是什么,输出就不是什么

数学表达

$$
Y = \overline{A} \quad \text{或} \quad Y = !A
$$

真值表

AY
01
10

为什么它最重要?

  • 延迟最小(通常只有1个单位门延迟)
  • 使用频率最高(几乎每个信号都要取反)
  • 是构建其他复用门的基础(比如NAND = AND + NOT)

CMOS结构揭秘

最经典的互补结构:
- 上面一个PMOS(P型),接VDD
- 下面一个NMOS(N型),接地
- 输入A同时控制两个管子的栅极

当 A=0 → PMOS导通、NMOS截止 → 输出接VDD → Y=1
当 A=1 → PMOS截止、NMOS导通 → 输出接地 → Y=0

完美实现反转,且静态时没有直流通路,功耗趋近于零。

Verilog 实现

module not_gate ( input wire A, output wire Y ); assign Y = ~A; endmodule

🔧 综合提示:综合后会映射为INVX1INVX2等不同驱动强度的反相器单元。大扇出场景下可以选择 INVX4 来增强驱动能力。


实战案例:用基础门搭建一个“等值比较器”

我们现在来玩点真的:只用与、或、非门,做一个判断两个比特是否相等的电路

需求分析

什么时候 A == B?
- 要么 A=1 且 B=1
- 要么 A=0 且 B=0

也就是:
$$
Y = (A \cdot B) + (\overline{A} \cdot \overline{B})
$$

这个表达式你可能眼熟——它正是XNOR(同或)门的定义!

但我们不调用现成的XNOR,而是亲手组装。

构建步骤

  1. 生成反相信号
    - 用非门得到 $\overline{A}$ 和 $\overline{B}$

  2. 计算两种“相等”情况
    - 用与门计算 $A \cdot B$
    - 用另一个与门计算 $\overline{A} \cdot \overline{B}$

  3. 汇总结果
    - 用或门将两个支路合并,输出最终结果 Y

电路结构示意(文字版)

┌─────┐ A ──┤ NOT ├───┬───────────────┐ └─────┘ │ │ ▼ ▼ ┌─────┐ ┌─────┐ ┌───┤ AND ├────┐ │ AND ├─┐ │ └─────┘ │ └─────┘ │ │ │ │ │ └─────┬──────┘ │ ▼ │ ┌─────┐ │ │ OR │──→ Y │ └─────┘ │ ▲ B ──────┼────────────────────┘ │ ┌───┴───┐ │ │ └───────┘ NOT?

抱歉,图有点乱……但重点是理解逻辑拆解过程。

Verilog 实现(模块化设计)

module eq_comparator_1bit ( input wire A, input wire B, output wire Y ); wire not_A, not_B; wire ab_high, ab_low; // 步骤1:取反 not_gate u_inv1 (.A(A), .Y(not_A)); not_gate u_inv2 (.B(B), .Y(not_B)); // 步骤2:两组“相等”条件 and_gate u_and1 (.A(A), .B(B), .Y(ab_high)); and_gate u_and2 (.A(not_A), .B(not_B), .Y(ab_low)); // 步骤3:合并 or_gate u_or (.A(ab_high), .B(ab_low), .Y(Y)); endmodule

✅ 这种写法清晰展示了“自底向上”的设计思想:先有基本门,再搭功能块。

当然,你也可以直接写:

assign Y = (A & B) | (~A & ~B);

效果一样,但前者更适合教学和调试。


工程实践中那些没人告诉你的坑

你以为知道真值表就能上岗了吗?现实远比课本复杂。以下是老工程师踩过的雷:

🛑 坑点1:未使用输入引脚悬空

常见芯片如 74HC32(四或门),如果你只用了其中一个门,剩下三个门的输入绝不能悬空!

后果:引入噪声干扰,可能导致误触发甚至烧毁芯片。

✅ 正确做法:
- 接地(GND)—— 如果希望默认为0
- 接电源(VCC)—— 如果希望默认为1
- 或与其他已用输入并联(谨慎使用)

🛑 坑点2:扇出超限(Fan-out Exceeded)

一个逻辑门能驱动多少个下级门是有上限的。例如 TTL 逻辑门典型扇出为 10。

超过限制 → 输出电平无法稳定 → 后级误判。

✅ 解决方案:
- 加缓冲器(Buffer),本质是一串非门
- 改用高驱动能力型号(如 74HC244)

🛑 坑点3:传播延迟不匹配引发竞争冒险

假设两条信号路径分别经过2级门和4级门到达同一个或门,就会出现毛刺(Glitch)

举个例子:在状态机跳转时,短暂出现非法状态,导致误动作。

✅ 缓解方法:
- 插入冗余门平衡延迟
- 使用同步设计(寄存器采样)
- 关键路径添加去毛刺滤波(如RC + 施密特触发器)

🛑 坑点4:忽略电源去耦

即使是最简单的门电路,高频切换也会引起电源波动。

✅ 必做动作:
- 每个IC附近加 0.1μF 陶瓷电容(就近连接 VCC-GND)
- 电源入口加 10μF 钽电容


写在最后:逻辑门不止是知识,更是一种思维方式

当你真正理解了与、或、非,你会发现:
- 编程中的if (a && b)就是一个软件层面的“与门”
- 数据库查询WHERE status=1 OR priority=high就是“或门”的应用
- Git 分支合并策略也能抽象成逻辑运算

数字世界的底层语法,其实就是这些简单门的排列组合。

掌握它们,不只是为了画电路图或者写Verilog,更是为了培养一种“可计算化”的思维习惯——把复杂问题拆解成一系列是非判断,然后交给硬件去执行。

下一步,你可以尝试:
- 用与或非实现半加器(Half Adder)
- 把多个比较器级联做成多位数值比较
- 在FPGA上烧录一个LED控制逻辑,体验真实信号流动

记住:每一个伟大的系统,都始于最微小的“0”和“1”。

如果你正在学习嵌入式、准备转行IC设计,或是单纯对硬件着迷,欢迎留言交流。我们一起把数字世界看得更透彻一点。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/11 9:20:42

高校官宣!发一篇EI位同3区,这几本EI源刊最快一周审稿,沾边就录

部分学校目前已明确规定:发一篇EI期刊论文视同为SCI三区!本期,小编给大家介绍几本目前进展较顺的EI期刊合集,适合时间紧张的学者,供各位投稿参考! EI源刊——最快1周录用 【期刊概况】位于最新EI目录内 …

作者头像 李华
网站建设 2026/7/11 10:37:29

鸣潮智能辅助工具终极指南:3步实现游戏自动化,彻底解放双手

鸣潮智能辅助工具终极指南:3步实现游戏自动化,彻底解放双手 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-wa…

作者头像 李华
网站建设 2026/7/11 6:45:08

Java计算机毕设之基于springboot的老人健康信息管理系统的设计与实现基于 SpringBoot 的社区智慧养老监护管理平台系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/10 10:34:59

openpilot自动驾驶技术演进:从辅助驾驶到智能决策的跨越之旅

在智能汽车技术快速发展的浪潮中,openpilot作为开源驾驶辅助系统的先行者,正经历着从基础辅助功能向全栈智能决策的革命性转变。🚗 这个项目不仅让普通车主体验到了先进的自动驾驶技术,更为全球开发者提供了参与这场技术变革的独特…

作者头像 李华
网站建设 2026/7/11 12:19:23

UAssetGUI终极指南:虚幻引擎资源转换利器

UAssetGUI终极指南:虚幻引擎资源转换利器 【免费下载链接】UAssetGUI A tool designed for low-level examination and modification of Unreal Engine 4 game assets by hand. 项目地址: https://gitcode.com/gh_mirrors/ua/UAssetGUI UAssetGUI是一款专为虚…

作者头像 李华
网站建设 2026/7/9 19:17:27

深入理解 Python 中的函数

在编程中,函数(Function) 是组织代码、提高可读性和复用性的核心工具。Python 作为一门简洁而强大的编程语言,提供了灵活且功能丰富的函数机制。本文将带你全面了解 Python 中的函数:从基本语法到高级特性,…

作者头像 李华