news 2026/4/23 9:32:02

同或门教学:超详细版基础概念梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
同或门教学:超详细版基础概念梳理

同或门:不只是“相等判断”的背后逻辑

你有没有遇到过这样的情况——在调试一个简单的数字电路时,明明输入信号看起来完全一样,输出却始终不对?或者在写 FPGA 代码时,用a == b做比较,结果综合出来的逻辑比想象中复杂得多?

其实,这类问题的背后,往往藏着一个看似简单、实则深藏玄机的元件:同或门(XNOR Gate)

它不像与门、或门那样直白,也不像异或门那样常被提及。但它却是实现“两个信号是否一致”这一基础判断的核心。今天我们就来彻底拆解这个常被忽视但极其关键的逻辑单元——从它的数学本质讲起,到如何用最原始的门搭出来,再到真实项目中的妙用。


它到底在做什么?别再只记真值表了

我们先抛开教科书式的定义,直接看行为:

同或门干的事很简单:输入相同出1,不同出0。

ABY (A ⊙ B)
001
010
100
111

这不就是“相等”吗?对!所以它也叫“等价门”。
而它的兄弟——异或门(XOR),则是“不等价”,即相异为1。

所以数学上它们的关系也很清楚:
$$
Y = A \odot B = \overline{A \oplus B}
$$

也就是说,同或 = 异或 + 取反。这是理解一切的基础。

但很多人学到这儿就停住了:“哦,知道了,反一下。”
可问题是:为什么不能直接拿一堆与/或/非去拼?为什么要专门设计一个 XNOR 芯片?

答案是——效率和可靠性。


为什么需要专用同或门?我们来做个对比

假设你要判断两个比特是否相等,只能用基本门来搭,你会怎么写?

方案一:暴力组合逻辑

你想啊,“相同”意味着两种情况:
- A=0 且 B=0 → 输出1
- A=1 且 B=1 → 输出1

那布尔表达式就是:
$$
Y = (\bar{A} \cdot \bar{B}) + (A \cdot B)
$$

听起来没问题,画成电路呢?

+----[NOT]----+ | | A ------+ +----[AND]----+ | +----[OR]---- Y B ------+ +----[AND]----+ | | +----[NOT]----+

用了两个非门、两个与门、一个或门——总共5个门!

而且每一级都有延迟叠加。更麻烦的是,这种结构在 PCB 上占地方,在 FPGA 里还会占用更多查找表(LUT)资源。

方案二:聪明点的做法 —— 先异或再反相

既然我们知道 $ Y = \overline{A \oplus B} $,那就简单了:

A ----\ )----[XOR]----[NOT]---- Y B ----/

只需要两个门:一个异或,一个非。干净利落。

这也就是大多数集成同或门 IC 的内部实现方式,比如经典的74HC266——四路两输入 XNOR,CMOS 工艺,支持 2V~6V 宽压运行,静态功耗低于 1μA。

小贴士:如果你手头只有 74HC86(异或门芯片),完全可以外接一个反相器(比如 74HC04)变成 XNOR。虽然多一级延迟(典型约 9ns),但在低速系统中完全可用。


能不能只用一种门搭出来?当然可以——全用 NAND!

在某些场景下,你可能手头没有异或门,但有一堆 NAND(与非门)。这时候怎么办?

我们可以利用德摩根定律,把整个逻辑转换成纯 NAND 实现。

目标还是:
$$
Y = (\bar{A} \cdot \bar{B}) + (A \cdot B)
$$

经过化简和变换,最终可以用4 到 6 个 NAND 门构建出完整的 XNOR 功能。

步骤如下:

  1. 用两个 NAND 自连接做非门:$\bar{A} = \text{NAND}(A,A)$,$\bar{B} = \text{NAND}(B,B)$
  2. 计算 $A \cdot B$ 和 $\bar{A} \cdot \bar{B}$,都通过 NAND + NOT 实现
  3. 最后将两项“或”起来,同样转为 NAND 形式

虽然看起来绕,但在早期 TTL 设计或 FPGA 原语受限时非常实用。现代综合工具甚至会自动识别 Verilog 中的a === b并映射为最优门网,很可能就是基于类似结构。

比如你在 FPGA 里写一句:

verilog assign eq = (a == b);

综合器一看,a 和 b 都是单 bit,立刻就知道该生成一个 XNOR 结构,而不是展开一堆与或逻辑。


真正的价值在哪?这些应用你未必想过

别以为同或门只是用来“比大小”的。它在实际系统中有不少精巧用途。

应用一:多位数相等比较器

想判断两个 8 位寄存器内容是否相等?每位单独比较,最后全部“与”起来。

A[0] ----\ A[1] ----\ )--XNOR-- )--AND-- ... -- AND --> 相等标志 B[0] ----/ B[1] ----/

每个比特位走一个 XNOR,说明该位相同;所有输出再进一个与门,只有全为1才表示整体相等。

这就是 CPU 中 ALU 实现CMP指令的基础逻辑之一。而且可以轻松扩展到任意位宽。


应用二:偶校验生成器

在串行通信中,为了检测传输错误,常常加一位“奇偶校验位”。

如果是偶校验,要求数据中 1 的个数为偶数。

怎么快速算这个?链式使用 XNOR!

Data[0] ----\ )--XNOR-- Data[1] / \ )--XNOR-- ... -- Parity / Data[7]----/

初始设为 0,每来一个数据位就跟当前结果 XNOR 一次。由于 XNOR 本质上是“模2加取反”,连续运算相当于统计 1 的个数是否为偶。

接收端重新计算并和收到的校验位比较,如果不一致,说明出错了。

⚠️ 注意:链式结构有累积延迟,高速系统建议改用树形并行结构优化时序。


应用三:锁存器使能控制(冷知识)

这个可能很少见,但在一些低功耗设计中出现过。

考虑这样一个 D 锁存器结构:

CLK ----\ )--XNOR--> 传输门使能 D ----/

当 CLK 和 D 相同时,XNOR 输出高电平,打开传输门,允许数据通过;否则关闭。

这形成了一种电平敏感的数据捕获机制。虽然不如标准主从触发器稳定,但在特定场景下能减少动态翻转次数,从而降低功耗。


实际设计中要注意什么?几个血泪经验

别小看一个小小的逻辑门,工程落地时处处是坑。

✅ 输入别悬空!

CMOS 输入阻抗极高,一旦悬空容易拾取噪声,导致误触发或静态电流上升。

处理方法
- 未使用的输入引脚必须接地或接 VCC;
- 若逻辑允许,可将其接到已用输入端(相当于强制相等);
- 不要留着不管!

✅ 级联太多会拖慢系统

XNOR 本身延迟虽不大(74HC266 约 9ns),但如果多个串联(比如长链校验),总延迟不可忽略。

建议
- 高频系统中进行时序分析,预留足够裕量;
- 关键路径避免超过两级以上逻辑级联。

✅ 电平兼容性必须检查

74HC 是 CMOS 电平,输入阈值约为 0.5×Vcc;而老式的 74LS 是 TTL 电平,低电平上限只有 0.8V。

如果你混用,可能出现:
- HC 输出高电平给 LS 输入 → OK
- LS 输出低电平给 HC 输入 → 可能不能拉到足够低!

解决方案
- 加缓冲器(如 74HCT 系列,专为 TTL 兼容设计)
- 或统一电源电压和逻辑系列

✅ 热插拔防护不能少

如果同或门用于接口状态监测(比如 USB 插拔检测),一定要注意 ESD 保护。

推荐做法
- 电源引脚加 0.1μF 陶瓷去耦电容;
- 信号线串联限流电阻(100Ω 左右);
- 并联 TVS 二极管到地,防止静电击穿。


写在最后:基础的东西,反而最容易被忽略

同或门看起来只是一个小小的逻辑门,但它承载的是数字世界中最基本的“判断”能力:是否一致

无论是微控制器里的地址译码、内存 ECC 校验、FPGA 中的状态同步检测,还是工业控制系统中的双通道冗余比对——背后都有 XNOR 的影子。

更重要的是,掌握这类基础元件的工作原理,能让你在面对复杂问题时,迅速拆解出最小可行模块,而不是盲目调库或依赖 IP。

下次当你看到if (a == b)这样的代码时,不妨多问一句:
硬件层面,是谁在帮我回答“它们真的相等吗”?

也许答案,就是一个静静躺在芯片角落里的同或门。

如果你在项目中用过 XNOR 解决过棘手问题,欢迎留言分享你的实战案例。我们一起把“基础知识”变成“实战武器”。

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

DLSS Swapper终极指南:彻底掌控游戏画质优化技术

DLSS Swapper终极指南:彻底掌控游戏画质优化技术 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 想要在游戏中获得超越官方配置的极致视觉体验吗?DLSS Swapper正是为追求完美画质的玩家量身打造…

作者头像 李华
网站建设 2026/4/23 9:30:48

Bypass Paywalls Clean:3分钟学会付费内容智能解锁技巧

Bypass Paywalls Clean:3分钟学会付费内容智能解锁技巧 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息获取日益受限的今天,优质内容往往被各种付费机制…

作者头像 李华
网站建设 2026/4/23 9:31:00

Windows桌面美化革命:TranslucentTB任务栏透明化完全指南

Windows桌面美化革命:TranslucentTB任务栏透明化完全指南 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB 想要让Windows桌面焕然一新?TranslucentTB这款轻量级工具能瞬间提升你的桌面颜值&#xf…

作者头像 李华
网站建设 2026/4/23 9:32:01

大模型技术演进观察:Qwen2.5-7B在实际项目中的表现

大模型技术演进观察:Qwen2.5-7B在实际项目中的表现 1. 技术背景与选型动因 近年来,大语言模型(LLM)在自然语言理解、代码生成、多模态推理等场景中展现出前所未有的能力。随着模型架构的持续优化和训练数据的不断扩展&#xff0c…

作者头像 李华
网站建设 2026/4/23 9:31:00

显卡性能深度优化:NVIDIA Profile Inspector实战手册

显卡性能深度优化:NVIDIA Profile Inspector实战手册 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏卡顿、画面撕裂而烦恼?你的显卡性能可能被默认设置限制了&#x…

作者头像 李华
网站建设 2026/4/14 21:27:40

Spring Data Elasticsearch配置深度剖析:连接优化策略

Spring Data Elasticsearch连接优化实战:从配置到迁移的全链路解析 你有没有遇到过这样的场景?系统运行得好好的,突然接口大面积超时,日志里满屏都是 NoHttpResponseException 或者 Connection pool shut down 。排查一圈发现…

作者头像 李华