news 2026/4/16 13:53:34

从逻辑门搭建半加器:手把手教程(零基础入门)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从逻辑门搭建半加器:手把手教程(零基础入门)

从逻辑门搭建半加器:零基础也能看懂的硬件入门实战

你有没有想过,计算机是怎么做加法的?
不是打开计算器点两下那种“加法”,而是——在芯片内部,两个1比特的二进制数是如何被真正相加的?

答案藏在最基础的电路里:逻辑门
而今天我们要亲手“搭”出来的第一个数字电路模块,就是实现这个过程的起点——半加器(Half Adder)

别担心没基础。这篇文章会像拼乐高一样,带你一步步从“0和1”的规则出发,用最简单的与门、异或门,构建出一个能真正工作的加法器。过程中不跳步、不甩术语,只讲你能听懂的人话。


加法,在硬件中是怎么发生的?

我们从小就会算 1 + 1 = 2,但在数字世界里,一切都要回归到电压高低:高电平代表1,低电平代表0
于是,“加法”就变成了一个电路行为:输入两个电平信号,电路自动输出结果和进位。

比如:

  • 输入 A=1, B=1 → 输出 Sum=0, Carry=1 (因为二进制中 1+1=10)
  • 输入 A=1, B=0 → 输出 Sum=1, Carry=0

这听起来像是查表,但其实背后有一套严密的逻辑规律可循。我们先把它写成一张真值表:

ABSumCarry
0000
0110
1010
1101

现在问题来了:能不能用某种“开关组合”,让电路自动按这张表工作?

当然可以。而这正是组合逻辑电路的拿手好戏。


半加器的本质:两个逻辑门的协作

观察上面的真值表,你会发现两个关键模式:

Sum 的规律:A 和 B 不同时为 1

  • A=0, B=0 → Sum=0
  • A=0, B=1 → Sum=1
  • A=1, B=0 → Sum=1
  • A=1, B=1 → Sum=0

这不就是“不同则为1,相同则为0”吗?
这正是异或门(XOR)的功能!

所以:

Sum = A ⊕ B

Carry 的规律:只有当 A 和 B 都是 1 时才进位

  • 只有最后一行 Carry=1
  • 其余情况均为0

这对应的是与门(AND)的行为。

所以:

Carry = A · B

也就是说,整个半加器,只需要两个门电路就能搞定:

┌─────────┐ A ─────┤ │ │ XOR ├───── Sum B ─────┤ │ └─────────┘ │ ▼ ┌─────────┐ │ AND ├───── Carry └─────────┘

就这么简单?
没错。这就是半加器的核心结构。


关键元件拆解:XOR 和 AND 到底是什么?

虽然名字听起来很学术,但你可以把它们理解成“智能开关”。

异或门(XOR):判断“是否不同”

  • 功能口诀:不一样就亮,一样就灭
  • 布尔表达式:Y = A·¬B + ¬A·B
  • 实际芯片举例:74HC86(四路异或门,CMOS工艺)

它在加法器中的作用非常精准——负责生成本位和。
比如 1+1=10,本位是0;1+0=1,本位是1。这种“模2加法”天生适合 XOR。

📌 小知识:XOR 还常用于奇偶校验、加密算法、状态翻转等场景。

与门(AND):判断“是否都满足”

  • 功能口诀:全为高才高,否则为低
  • 布尔表达式:Y = A·B
  • 实际芯片举例:74HC08(四路与门)

它在这里的任务很明确:检测是否产生了进位。
只有当两个输入都是1时,才向高位发出 Carry 信号。

⚠️ 注意:74HC 系列工作电压一般为 2V~6V,典型使用 5V 供电。如果用电压不稳的电源,可能导致逻辑误判。


动手实践:如何在面包板上搭一个真实半加器?

想亲眼看到电路“算加法”?完全可以。以下是最低成本实现方案:

所需材料

  • 74HC86 芯片 ×1(XOR)
  • 74HC08 芯片 ×1(AND)
  • 面包板 + 杜邦线若干
  • 5V 直流电源(可用 USB 接口供电)
  • 拨码开关 ×2(作为输入 A/B)
  • LED ×2(分别显示 Sum 和 Carry)
  • 限流电阻 220Ω ×2
  • 去耦电容 0.1μF ×1(接在芯片 VCC 引脚附近)

接线步骤

  1. 给两块芯片接上 5V 电源和 GND,注意方向别反;
  2. 在 VCC 和 GND 之间靠近芯片处焊一个 0.1μF 陶瓷电容,防止振荡;
  3. 将拨码开关一端接地,另一端通过上拉电阻接到 5V(或直接连),输出接芯片输入引脚;
  4. XOR 输出接 LED(串联 220Ω 电阻后接地);
  5. AND 输出同样接另一个 LED;
  6. 上电后拨动开关,观察 LED 亮灭组合。

试试这些组合:
- A=0, B=0 → 两灯都不亮 ✅
- A=1, B=0 → Sum灯亮,Carry灯灭 ✅
- A=1, B=1 → Sum灯灭,Carry灯亮 ✅

恭喜!你的电路刚刚完成了一次真正的二进制加法运算。


写代码也能“搭电路”?Verilog 实现半加器

现代数字设计早已不再靠手工连线,而是用硬件描述语言(HDL)来建模。
下面这段 Verilog 代码,功能完全等价于上面的物理电路:

module half_adder ( input A, input B, output Sum, output Carry ); assign Sum = A ^ B; // XOR 得到本位和 assign Carry = A & B; // AND 得到进位 endmodule

是不是特别简洁?
这正是组合逻辑的魅力:没有时序、没有状态,输入变了输出立刻响应。

更棒的是,这段代码不仅能仿真,还能烧录进 FPGA 芯片变成真实电路。
比如你在 Xilinx Vivado 或 Intel Quartus 中综合后,工具会自动生成对应的门级网表。


如何验证它真的对了?写个测试平台(Testbench)

光看代码不够直观?那就跑个仿真看看波形。

module tb_half_adder; reg A, B; wire Sum, Carry; // 实例化待测模块 half_adder uut (.A(A), .B(B), .Sum(Sum), .Carry(Carry)); initial begin // 打印时间戳和信号值 $monitor("T=%0t | A=%b B=%b | S=%b C=%b", $time, A, B, Sum, Carry); // 测试所有输入组合 A = 0; B = 0; #10; B = 1; #10; A = 1; B = 0; #10; B = 1; #10; $finish; end endmodule

运行结果如下:

T=0 | A=0 B=0 | S=0 C=0 T=10 | A=0 B=1 | S=1 C=0 T=20 | A=1 B=0 | S=1 C=0 T=30 | A=1 B=1 | S=0 C=1

完全匹配真值表。说明无论是硬件还是软件模型,逻辑都是成立的。


半加器的局限性:为什么不能直接用来做多位加法?

你可能已经注意到一个问题:
半加器没有进位输入端(Cin)。这意味着它无法处理来自低位的进位。

举个例子:

1 (进位) + 1 + 1 ----- 11 ← 正确结果应为 3(二进制11)

但半加器只能处理两个输入,没法接收那个“来自之前的进位”。
所以它只能用于最低位的加法,或者作为更大模块的组成部分。

那怎么办?
答案是:用两个半加器 + 一个或门,组成全加器(Full Adder)

结构示意:

第一级:A 和 B 先进半加器1 → 得到 S1 和 C1 第二级:S1 和 Cin 进半加器2 → 得到最终 Sum 和 C2 最后:C1 和 C2 用或门合并 → 得到总 Carry

这样一来,就补齐了“带进位输入”的能力,成为真正可用的加法单元。


设计经验分享:新手容易踩的坑

我在第一次搭这个电路时,也翻过不少车。以下几点建议送给正在动手的你:

❌ 电源不稳定导致输出乱跳

  • 现象:LED 闪烁不定,有时明明输入是 1+1,Carry 却没亮。
  • 原因:未加去耦电容,电源噪声干扰芯片工作。
  • 解决:每个芯片的 VCC 引脚旁并联一个 0.1μF 陶瓷电容到地。

❌ 输入悬空引发不确定状态

  • 现象:不按开关时,输出随机变化。
  • 原因:CMOS 输入引脚不能悬空,否则易受干扰。
  • 解决:给每个输入加上拉或下拉电阻(通常 10kΩ),确保默认电平明确。

❌ 忽视传播延迟影响高速应用

  • 现象:在高频信号下结果出错。
  • 原因:74HC 系列门延迟约 5~10ns,多级级联会产生累积延迟。
  • 提示:若用于高速系统,需考虑采用更快的逻辑族(如 LVC 系列)或优化结构(如超前进位)。

✅ 推荐封装形式:DIP14

  • 对于学习阶段,优先选择 DIP(双列直插)封装,方便插面包板调试;
  • 等成熟后再转为贴片封装用于 PCB 设计。

从半加器出发,你能走多远?

别小看这个只能算“1+1”的小电路。它是通往复杂数字系统的第一块砖

顺着这条路走下去,你会遇到:

  • 全加器→ 支持进位输入
  • 串行进位加法器(Ripple Carry Adder)→ 多位加法
  • 超前进位加法器(Carry Look-Ahead)→ 减少延迟,提升速度
  • 算术逻辑单元(ALU)→ 不仅能加,还能减、与、或、移位……
  • 最终,走进 CPU 的心脏地带

很多学生觉得计算机组成原理抽象难懂,其实就是缺了这一环——没见过数据是怎么在门电路里流动的

而当你亲手点亮第一个表示“进位”的 LED 时,那种“原来如此”的顿悟感,是任何教科书都无法替代的。


结语:每一个伟大的处理器,都始于一个异或门

你不需要一开始就懂得 CPU 是怎么设计的。
你只需要知道,所有的复杂,都是由简单叠加而来

今天你学会了用两个门做一个加法器。
明天你就可以用十个加法器做一个计算器核心。
后天,也许你就在参与设计下一代国产芯片。

技术的成长,从来不是一蹴而就。
但它一定始于某个晚上,你坐在桌前,看着面包板上的 LED 因你的设计而亮起。

那一刻,你已经踏上了硬件工程师的道路。

如果你正准备参加电子竞赛、考研复试,或是单纯想搞明白“电脑到底怎么工作的”,不妨今晚就试试搭一个半加器吧。

有问题欢迎留言讨论,我也乐意分享更多实物接线图和仿真工程文件。

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

PaddlePaddle社区资源汇总:文档、论坛、示例代码大全

PaddlePaddle社区资源深度解析:从开发到落地的全链路支持 在人工智能技术加速渗透各行各业的今天,一个高效、稳定且贴近本土需求的深度学习框架,往往能成为项目成败的关键。尽管PyTorch和TensorFlow在全球范围内占据主导地位,但在…

作者头像 李华
网站建设 2026/4/1 21:41:32

ESP32连接es数据库:手把手教程(从零实现)

ESP32直连Elasticsearch:从零构建物联网数据上云系统 你有没有遇到过这样的场景?手头有一堆ESP32采集的温湿度、光照或PM2.5数据,想实时查看趋势、做异常预警,却发现SD卡读写麻烦,本地数据库查询慢得像爬虫——更别提…

作者头像 李华
网站建设 2026/4/16 11:00:21

S32DS安装教程:新手必看的路径配置技巧

S32DS安装不踩坑指南:路径配置的那些“隐性规则”你有没有遇到过这样的情况?刚下载完NXP官方推荐的S32 Design Studio(S32DS),兴冲冲点开安装包,一路“下一步”走到底,结果一创建工程就报错&…

作者头像 李华
网站建设 2026/4/15 14:51:23

PaddlePaddle身份证识别实战:金融开户场景应用

PaddlePaddle身份证识别实战:金融开户场景应用 在银行App上动动手指就能完成开户,这背后不只是流程的线上化,更是AI技术对传统金融服务的一次深度重构。尤其是身份信息录入环节——曾经需要用户手动填写十几项内容、客服逐字核对,…

作者头像 李华
网站建设 2026/4/16 6:52:53

Arduino控制舵机转动在机械臂中的系统学习路径

从零开始打造机械臂:深入理解Arduino控制舵机转动的工程实践路径你有没有试过让一个机械臂精准地抓起一枚小螺丝?或者只是想让它挥一挥手,结果关节却“抽搐”不止?如果你正在用Arduino和舵机构建自己的第一台机械臂,那…

作者头像 李华
网站建设 2026/4/16 12:24:22

PaddlePaddle语音合成TTS实战:打造个性化播报系统

PaddlePaddle语音合成TTS实战:打造个性化播报系统 在智能客服、导航提示、无障碍服务等场景中,我们越来越频繁地听到“机器的声音”——不再是冷冰冰的电子音,而是自然流畅、富有节奏感的语音播报。这背后,正是语音合成&#xff0…

作者头像 李华