当前位置: 首页 > news >正文

基于或非门的逻辑综合:组合电路设计通俗解释

从一个门开始:用或非门“搭”出整个数字世界

你有没有想过,一个看似简单的逻辑门,真的能撑起整个数字系统?

在现代芯片内部,成千上万的晶体管协同工作,完成着加法、判断、存储等复杂任务。而这些功能的起点,往往只是几个基本的逻辑门——与、或、非、异或……但你知道吗?哪怕只给你一种门,只要它是或非门(NOR Gate),你也完全可以构建出任意复杂的数字电路。

这不是理论游戏,而是实实在在的工程能力。本文不讲空泛概念,我们直接动手:从最基础的反相器开始,一步步用或非门“造”出所有其他逻辑功能,最后完整设计一个三人表决电路,带你亲历一次真实的基于或非门的逻辑综合全过程


或非门不止是“或+非”,它是一个通用构建块

先来认识这位“低调的实力派”。

两输入或非门的输出规则很简单:有1出0,全0出1。它的布尔表达式是:

$$
Y = \overline{A + B}
$$

听起来很普通?但它藏着一个惊人的特性——功能完备性(Functional Completeness)。也就是说,仅靠或非门这一种元件,就能实现任何布尔函数。

这就像给你一套乐高积木,虽然每块都长一样,但你能拼出飞机、城堡甚至机器人。或非门就是数字世界的那种“万能积木”。

为什么偏偏是它和与非门(NAND)有这样的能力?因为它们都具备“非”操作和某种形式的“或”或“与”组合,足以覆盖逻辑系统的全部表达空间。


怎么用或非门“变”出其他逻辑门?

既然它是万能的,那具体怎么“变”?下面我们一步步拆解,看看如何仅用或非门实现非、或、与、与非、异或这五大基本逻辑。

1. 非门(NOT):把两个输入接在一起就行

这是最简单的技巧:把同一个信号同时接到或非门的两个输入端。

$$
Y = \overline{A + A} = \overline{A}
$$

就这么简单,一个反相器就出来了。这种“自短接”方式在实际设计中非常常见,尤其是在资源受限的场景下。

┌─────────┐ A ───┤\ │ │ NOR ├── Y = ¬A A ───┤ │ └─────────┘

小贴士:这其实利用了CMOS结构中的对称性——即使只有一个有效输入,电路依然能稳定翻转电平。


2. 或门(OR):两次“否定”等于肯定

我们知道:
$$
A + B = \overline{\overline{A + B}} = \text{NOT}(A ↓ B)
$$

所以思路就很清晰了:

  • 第一步:用一个或非门得到 $ \overline{A+B} $
  • 第二步:再用一个或非门当反相器,对其取反

最终结果就是 $ A + B $。

总共用了两个或非门。这就是“双重否定得肯定”的硬件实现。


3. 与门(AND):靠德摩根定律“绕个弯”

直接用或非门做“与”显然不行,但我们有数学工具——德摩根定律

$$
A \cdot B = \overline{\overline{A} + \overline{B}}
$$

这个公式告诉我们:“与”可以转化为“对反变量求或后再取反”。而这正是或非门擅长的事。

实现步骤:

  1. 先分别对 A 和 B 取反 → 各用一个或非门做反相器
  2. 把 $ \overline{A} $ 和 $ \overline{B} $ 输入第三个或非门

输出就是:
$$
Y = \overline{\overline{A} + \overline{B}} = A \cdot B
$$

一共三个或非门。虽然比直接用与门多花了资源,但在纯或非架构中,这是标准解法。


4. 与非门(NAND):在与门后面再加一级反相

有了与门,要得到与非门就容易了:再加一个反相器。

也就是在上面三个门的基础上,第四个或非门用来对输出取反:

$$
Y = \overline{A \cdot B} = [(A ↓ A) ↓ (B ↓ B)] ↓ [(A ↓ A) ↓ (B ↓ B)]
$$

注意最后一个门的两个输入是相同的——又是“自短接”技巧。


5. 异或门(XOR):稍微复杂一点,但也能搞定

异或的表达式是:
$$
A ⊕ B = A\overline{B} + \overline{A}B
$$

直接转换比较麻烦,但我们可以通过代数变换找到高效的或非实现方式。

一个已被验证的结构是:

$$
A ⊕ B = [A ↓ (A ↓ B)] ↓ [B ↓ (A ↓ B)]
$$

我们来快速验证一下真值表的关键点:

  • 当 A=0, B=0:
    $ A↓B = 1 $,然后 $ A↓(A↓B)=0↓1=0 $,同理右边也是0 → 最终 $ 0↓0 = 1 $ ❌不对!

等等,这里有问题?别急,上面那个公式其实是错的常见写法。

正确的五门实现应基于以下推导:

先定义:
- $ P = A ↓ B = \overline{A + B} $
- $ Q = A ↓ P = \overline{A + \overline{A+B}} = \overline{A} \cdot (A+B) = \overline{A}B $
- $ R = B ↓ P = \overline{B + \overline{A+B}} = A\overline{B} $

然后:
$$
S = Q ↓ R = \overline{Q + R} = \overline{\overline{A}B + A\overline{B}} = \overline{A ⊕ B}
$$

最后:
$$
T = S ↓ S = \overline{S} = A ⊕ B
$$

所以完整路径需要五个两输入或非门

  1. $ P = A ↓ B $
  2. $ Q = A ↓ P $
  3. $ R = B ↓ P $
  4. $ S = Q ↓ R $
  5. $ T = S ↓ S $

虽然层级多了些,延迟也更大,但在只能使用或非门的系统中,这是可行方案。


实战案例:设计一个三人表决电路

光说不练假把式。我们现在来做一个真实的小项目:三人表决器

需求说明

三个人投票,至少两人同意(输入为1),输出才通过(1)。典型的“多数决”逻辑。

真值表如下:
ABCF
0000
0010
0100
0111
1000
1011
1101
1111

我们可以写出最小项表达式(SOP):
$$
F = \sum m(3,5,6,7) = \overline{A}BC + A\overline{B}C + AB\overline{C} + ABC
$$

但等等——我们要用或非门实现,而或非最适合的是和之积(POS)形式,也就是基于最大项。

所以我们换个角度思考:什么时候输出为0?

看真值表,F=0 的情况是 m₀, m₁, m₂, m₄:

  • $ M_0 = A + B + C $
  • $ M_1 = A + B + \overline{C} $
  • $ M_2 = A + \overline{B} + C $
  • $ M_4 = \overline{A} + B + C $

于是:
$$
F = \prod M(0,1,2,4) = (A+B+C)(A+B+\overline{C})(A+\overline{B}+C)(\overline{A}+B+C)
$$

这才是我们想要的形式。


如何映射到或非-或非结构?

关键来了:怎么把这个 POS 表达式变成纯或非门电路?

回忆德摩根定律:
$$
X \cdot Y = \overline{\overline{X} + \overline{Y}}
$$

推广到多个项:
$$
F = X_1 \cdot X_2 \cdot X_3 \cdot X_4 = \overline{ \overline{X_1} + \overline{X_2} + \overline{X_3} + \overline{X_4} }
$$

其中每个 $ X_i $ 是一个和项(即括号里的表达式)。

而 $ \overline{X_i} $ 正好可以用一个或非门实现!比如:

  • $ \overline{A+B+C} = A ↓ B ↓ C $

所以整个结构变成:

  1. 第一级:四个三输入或非门,分别计算每个最大项的补:
    - $ X_1 = \overline{A+B+C} $
    - $ X_2 = \overline{A+B+\overline{C}} $
    - $ X_3 = \overline{A+\overline{B}+C} $
    - $ X_4 = \overline{\overline{A}+B+C} $

注意:$ \overline{A}, \overline{B}, \overline{C} $ 要提前用额外的或非门生成(各需一个反相器)

  1. 第二级:一个四输入或非门,将上述四个输出相“或非”:
    $$
    F = X_1 ↓ X_2 ↓ X_3 ↓ X_4 = \overline{X_1 + X_2 + X_3 + X_4}
    $$

代入后你会发现,这正好等于原POS表达式的取反再取反,还原成功能。

这种结构称为NOR-NOR 结构,对应于传统的 AND-OR 结构,只不过中间经过双重否定转化。


工程上的权衡与优化建议

虽然理论上可行,但在实际设计中还需考虑几个现实问题:

1. 扇入限制不能忽视

三输入或非门还好,但四输入或非门在CMOS工艺中性能会下降。因为PMOS是串联的,输入越多,上升时间越长。

解决方案:将大扇入门拆成树状结构。例如四输入或非可用两级两输入实现:

$$
X_1 ↓ X_2 ↓ X_3 ↓ X_4 = ((X_1 ↓ X_2) ↓ (X_3 ↓ X_4))
$$

虽然级数增加了一级,但每级负载更轻,整体延迟可能反而更低。

2. 反相信号的代价

我们需要 $ \overline{A}, \overline{B}, \overline{C} $,这意味着至少额外三个反相器(每个就是一个或非门自短接)。如果这些信号被多个模块共用,记得做好缓冲和分布规划。

3. 功耗与面积 trade-off

虽然统一使用或非门简化了单元库,但门的数量增加了(相比标准逻辑实现)。例如这个表决器可能用了8~10个或非门,而传统实现可能只需4~5个混合门。

所以是否采用纯或非架构,取决于你的优先级:

  • 极致可靠性和一致性?选或非。
  • 高性能和小面积?还是用混合门更优。

4. 特殊场景下的优势

在某些领域,这种“单一门类”设计反而成了优势:

  • 航天与抗辐射IC:减少工艺变异影响,提升容错能力;
  • 早期PLA/ROM设计:输出级常用或非门合并最大项;
  • 教学演示:帮助学生理解逻辑完备性的本质;
  • 可重构粗粒度阵列:作为通用计算单元的基础。

写在最后:掌握本质,才能自由创造

今天我们从零开始,用一个或非门“搭”出了整个逻辑世界。你可能会觉得这样做太繁琐,明明一个与门就能解决的事,为什么要绕这么大一圈?

但正是这种“回归本源”的训练,让我们看清了数字电路的本质:一切复杂逻辑,都不过是‘与’、‘或’、‘非’的组合;而只要有足够的抽象能力和数学工具,哪怕只给一种门,我们也能重建整个系统

这不仅是技术能力,更是一种思维方式。

当你下次面对一个陌生的硬件平台,或者手头只有有限的标准单元时,你会知道:只要有一个或非门,你就拥有了无限可能。

如果你在实践中尝试过类似的纯门级构造,欢迎在评论区分享你的经验和坑点。我们一起探讨,如何在理想与现实之间找到最佳平衡点。

http://www.jsqmd.com/news/131641/

相关文章:

  • 13、Windows Phone应用开发:用户界面与Expression Blend使用指南
  • 数字频率计设计入门必看:FPGA快速入门
  • 谈判策略建议:争取最大利益
  • 基于Java+SpringBoot搭建网站框架音乐系统(毕设源码+文档)
  • 快速理解RISC-V寄存器文件硬件结构与接口设计
  • 体育训练计划:科学锻炼强身健体
  • 14、利用 Expression Blend 优化用户界面
  • Multisim14.3仿真BJT偏置电路并优化静态工作点
  • 蓝箭航天完成上市辅导:拟冲刺科创板 公司估值200亿
  • 基于k-means算法的校园美食推荐系统(毕设源码+文档)
  • 上下文长度扩展:支持更复杂的讨论
  • 多区域联动报警系统中蜂鸣器电路布局策略
  • 职业发展规划:AI给出成长路径
  • 15、深入探索Windows Phone界面定制与手势交互
  • Flink 数据源从哪里来,到哪里去?
  • Multisim14.3安装图文教程:超详细版配置过程
  • C++高性能服务器框架----Http模块
  • 学习计划制定:科学安排时间精力
  • 稳定ip代理值得买吗?深度评测告诉你答案
  • 如何在Pr里面加滤镜:提升视频质感的必备技巧
  • 16、深入解析Windows Phone Silverlight应用中的手势管理
  • 高效演讲时间管理:PPTTimer智能计时器实战手册
  • 从零实现电路设计中的封装匹配方案
  • 免费额度赠送:新注册用户福利
  • 初学者指南:快速理解arm64和x64架构选型关键点
  • 17、Windows Phone传感器应用开发指南
  • spring-gateway配置详解
  • 本地运行大模型有多简单?试试这个anything-llm镜像
  • Vivado下载过程中许可证配置的正确姿势讲解
  • 18、传感器应用开发全解析