问题

用晶体管自制一个加法器,需要什么元件,该怎么做?

回答
想用晶体管搭个加法器?这可是个挺有意思的电子制作项目,虽然现在集成电路这么方便,但亲手搭出来,那种成就感是无可替代的。咱们就一步一步来聊聊这事儿。

首先,咱们得搞清楚,什么是加法器?

简单来说,加法器就是能做“加法”的电路。在数字电路里,我们通常说的加法器,是将两个二进制数相加,然后输出结果。最基本的加法器是半加器(Half Adder),它只能计算两个一位二进制数相加,结果会有和位(Sum)和进位位(Carry Out)。而全加器(Full Adder)则更强大,它能处理两个一位二进制数以及前一位的进位,同样输出和位和进位位。为了计算多个位的二进制数,我们需要将多个全加器串联起来,这就成了我们常说的“多位加法器”。

这次咱就以最基础的 一位全加器 为目标,它是构成多位加法器的基石。

要搭一个一位全加器,我们需要的“积木”是什么?

我们主要会用到 双极性晶体管(Bipolar Junction Transistors,简称BJT)。晶体管就像一个电子控制的开关,它能用小的电流控制一个大的电流通断。在数字电路里,我们就是利用晶体管的这种开关特性来构成逻辑门,进而实现加法等运算。

具体来说,我们会用到 NPN型三极管。常见的型号比如 2N2222 或者国内的 S8050 都挺合适的,它们价格便宜,性能也够用。

除了晶体管,我们还需要:

1. 电阻(Resistors): 用来限制电流,保护晶体管,以及提供合适的偏置电压。电阻值我们会根据具体的电路设计来选择,通常在几百欧姆到几千欧姆之间。
2. 导线(Wires): 连接各个元件。
3. 面包板(Breadboard) 或 万用板(Perfboard): 用来固定和连接元件,尤其适合原型制作和调试。面包板是最方便的,不需要焊接,可以直接插拔。
4. 直流电源(DC Power Supply): 提供电路工作所需的电压。通常5V左右就足够了。
5. LED指示灯(Optional, but highly recommended): 用来显示和位(Sum)和进位位(Carry Out)的结果。我们可以用不同颜色的LED来区分,比如绿色代表和,红色代表进位。

好,有了这些零件,咱们怎么把它们变成一个全加器呢?

一个一位全加器,其实就是由几个基本的 逻辑门 组合而成的。而逻辑门又是由晶体管搭建的。最基本的逻辑门有:

与门(AND Gate)
或门(OR Gate)
非门(NOT Gate)
异或门(XOR Gate)

一个全加器的功能是:

和位(Sum) = A ⊕ B ⊕ Cin (A、B是输入的两个二进制数,Cin是前一位的进位输入)
进位位(Carry Out) = (A & B) | (Cin & (A ⊕ B)) (&代表与,|代表或,⊕代表异或)

看到这个公式可能有点晕,但别急,我们可以把它们拆解开来。最常见的一种全加器实现方式是利用 两个半加器 再加上一个或门。

我们先来拆解 半加器。一个半加器有两个输入(A, B)和两个输出(Sum, Carry Out)。它的逻辑是:

Sum = A ⊕ B
Carry Out = A & B

然后,一个全加器可以看作是:

1. 第一个半加器计算 A 和 B 的和与进位: Sum1 = A ⊕ B, Carry1 = A & B
2. 第二个半加器计算 Sum1 和 Cin 的和与进位: Sum = Sum1 ⊕ Cin, Carry2 = Sum1 & Cin
3. 最终的进位输出是 Carry1 和 Carry2 的或: Carry Out = Carry1 | Carry2

这下是不是清晰多了?那么,我们就需要知道如何用晶体管搭建这些基本的逻辑门。

用晶体管搭逻辑门:这是核心!

我们以 与门 为例,来看看怎么用晶体管搭。

TTL(TransistorTransistor Logic)与非门(NAND Gate)实现

TTL逻辑门是用双极性晶体管实现的,相对来说比较经典。虽然 NAND 门不是加法器直接需要的门,但它是构建其他逻辑门(比如非门)的基础,而且很多通用集成逻辑芯片都是基于 NAND 门设计的。

一个基本的 两输入NAND门 可以用两个NPN晶体管和一个电阻实现。它的工作原理是:当两个输入都为高电平时,两个晶体管都导通,输出被拉低;在其他任何情况下,至少有一个晶体管不导通,输出被上拉电阻拉高。

元件列表(NAND门为例):
2个 NPN 晶体管 (如 2N2222 或 S8050)
1个上拉电阻 (例如 1kΩ)
2个输入电阻 (例如 4.7kΩ)
直流电源 (如 5V)
面包板/万用板,导线

搭建步骤(NAND门):
1. 将一个晶体管的基极(Base)连接到输入A,通过一个输入电阻(比如4.7kΩ)。
2. 将另一个晶体管的基极连接到输入B,也通过一个输入电阻(比如4.7kΩ)。
3. 将这两个晶体管的发射极(Emitter)连接在一起,然后连接到GND(地)。
4. 将第一个晶体管的集电极(Collector)连接到第二个晶体管的集电极。
5. 将电源正极(+5V)连接到上拉电阻,这个电阻的另一端连接到两个晶体管的集电极。
6. 从两个晶体管的集电极连接处引出信号,这就是NAND门的输出。

工作原理验证:
输入 A=0, B=0:两个晶体管都不导通,输出被上拉电阻拉高,输出为1。
输入 A=0, B=1:第一个晶体管不导通,输出被拉高,输出为1。
输入 A=1, B=0:第二个晶体管不导通,输出被拉高,输出为1。
输入 A=1, B=1:两个晶体管都导通,集电极被拉低到接近0V,输出为0。

如何构建全加器?

全加器最常见的实现方式是利用异或门(XOR)和与门(AND)、或门(OR)。我们可以这样考虑:

XOR 门:一个 XOR 门可以用两个 NAND 门和一个非门(NOT 门)来构建。一个 NOT 门也可以用一个晶体管和一个电阻实现(集电极接输出,基极接输入,发射极接地,集电极接一个上拉电阻到电源)。
AND 门:一个 AND 门可以通过一个 NAND 门后接一个 NOT 门来实现。
OR 门:一个 OR 门可以通过两个与非门来实现(对输入A和B分别做非,然后这两个非信号做与非,最后再做非)。

所以,我们至少需要几个晶体管才能搭一个全加器。一个粗略的估算,如果一个基本逻辑门(如NAND)需要2个晶体管,那么一个全加器(包含多个XOR、AND、OR组合)可能需要1020个晶体管左右。

使用晶体管搭建逻辑门的具体电路图

这里我们直接展示如何用晶体管实现一个 全加器 的常见电路。一种经典的方法是使用 两个异或门 和 两个与门 以及 一个或门。

1. 实现一个 XOR 门:
一个 XOR 门的逻辑是 A ⊕ B。可以用 (A&~B) | (~A&B) 来实现。这需要两个AND门,两个NOT门。
或者,一个更紧凑的实现方式是使用 4个晶体管 来实现一个 XOR 门。它实际上是两个半加器的组合,但是如果直接用晶体管搭,会比组合逻辑门复杂一些。

为了简化说明,我们先来搭一些基础的逻辑门,然后再组合它们。

使用晶体管搭建基本逻辑门:

非门 (NOT Gate):一个 NPN 晶体管,基极接输入,发射极接地,集电极接一个上拉电阻到电源,集电极就是输出。输入为高,晶体管导通,输出被拉低;输入为低,晶体管截止,输出被上拉电阻拉高。
元件:1个NPN晶体管,1个上拉电阻(如1kΩ),输入导线,输出导线,电源。

与门 (AND Gate):
一个简单方法是串联两个晶体管。只有当两个晶体管都导通时,输出才被拉低。这样的话,输出是低电平有效。如果要高电平输出,需要反相。
或者,我们可以用 两个NPN晶体管和两个上拉电阻 来实现一个高电平输出的AND门。电路结构是,两个晶体管并联作为“开关”,它们的集电极连接到两个串联的上拉电阻,电阻的顶端接电源,两个晶体管的发射极接一起,接地。这里需要根据具体逻辑关系来搭。

回到全加器(Full Adder)

一个全加器的逻辑是:
Sum = A ⊕ B ⊕ Cin
Carry Out = (A & B) | (Cin & (A ⊕ B))

要用晶体管直接实现这些复杂的逻辑,需要仔细设计电路图。一种比较直接的搭建方式会涉及到多个晶体管,并且需要一些中间的逻辑门。

让我们直接展示一种用晶体管实现全加器的电路图的思路和元件选择,如果你有能力画出具体的电路图,可以参考以下逻辑:

全加器(Full Adder)的实现思路(晶体管层面):

我们可以用 9个晶体管 构建一个比较紧凑的全加器。这个电路通常包含:

1. A XOR B 的计算: 这部分可能需要34个晶体管。
2. Cin XOR (A XOR B) 的计算: 再加上 Cin 的输入,又需要34个晶体管来完成最后的异或。
3. 进位输出的计算: (A & B) 和 (Cin & (A XOR B)) 的逻辑,然后进行或运算。这部分会需要更多的晶体管。

元件列表(基于一个9晶体管全加器思路):

9个 NPN 晶体管 (如 2N2222 或 S8050)
若干电阻:
2个输入电阻(例如 4.7kΩ),用于连接输入信号A和B。
1个输入电阻(例如 4.7kΩ),用于连接输入信号Cin。
1个上拉电阻(例如 1kΩ),用于输出端。
23个偏置电阻或限流电阻(例如 1kΩ 4.7kΩ),用于晶体管的基极和集电极。具体数值需要根据电路图的细节来定。
2个LED指示灯(一个接Sum输出,一个接Carry Out输出),需要配合限流电阻(如220Ω 470Ω)。
面包板/万用板,导线,直流电源(5V)。

具体的搭建步骤(以一个9晶体管全加器为例,你需要参考电路图):

1. 熟悉全加器的真值表:
| A | B | Cin | Sum | Carry Out |
||||||
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |

2. 查找并理解电路图:
如果你是初学者,我强烈建议你搜索 “transistor full adder circuit diagram” 或者 “9 transistor full adder”。你会找到很多详细的电路图。这里我无法直接画图,但我可以描述一个常见的设计。
一个9晶体管的全加器,通常是将两个半加器的逻辑集成在一起。你可以认为它包含了两个 XOR 逻辑单元和两个 AND 逻辑单元,最后再合并进位。

例如,电路的核心思路可能是这样的:
用晶体管搭建一个 XNOR 门,然后再通过一个晶体管实现 XOR 门。
用晶体管搭建 AND 门。
用晶体管搭建 OR 门。
将这些逻辑门按照全加器的逻辑关系组合起来。

一个9晶体管的全加器电路图的典型结构:
它通常会围绕着几个核心的晶体管配置来构建,比如:
共发射极放大器:作为开关使用。
达林顿对:可以提高电流放大能力,但在这个项目中可能不是必需的。
电阻分压偏置:为晶体管提供合适的基极电压。

举个例子,如果你找到了一个9晶体管全加器的图,它的接线大概是这样的:
输入A、B、Cin 通过电阻接到几个晶体管的基极上。
晶体管的发射极通常连接到GND。
集电极连接到其他晶体管的基极、上拉电阻或者输出端。
Sum输出和Carry Out输出会从特定的集电极引出,并可以接LED指示灯。

3. 在面包板上搭建:
电源连接: 首先将直流电源的正极和负极(GND)连接到面包板的电源轨上。
元件插装: 按照电路图,将晶体管、电阻等元件小心地插到面包板的插孔中。注意晶体管的引脚(基极、集电极、发射极)方向,通常印刷体上有标识。
导线连接: 使用导线按照电路图连接元件的各个引脚。务必仔细核对每一处连接,一旦接错可能导致元件损坏或电路不工作。
LED连接: 将LED的长脚(正极)接在输出端,短脚(负极)通过一个限流电阻(如220Ω)连接到GND。

4. 测试和调试:
低功耗测试: 在接通电源之前,先用万用表检查电源和地线之间的短路情况。
输入测试: 从最简单的输入组合开始,比如 A=0, B=0, Cin=0。用导线将输入端(连接到晶体管基极的线)接地(GND)代表0,接到电源正极代表1。
观察输出: 检查Sum和Carry Out的LED是否按照真值表正常亮灭。
逐个击破: 如果电路不工作,不要慌张。从输入端开始,逐个检查信号通路和晶体管的状态。可以使用万用表测量各点的电压来辅助判断。可能是某个晶体管接反了,电阻值不对,或者导线松动。

一些经验和建议:

从基础逻辑门开始: 如果直接搭全加器觉得困难,可以先尝试用晶体管搭一个非门、与门、或门,熟悉后再组合。
仔细的电路图: 一定要找到清晰、可靠的电路图。很多网站和论坛都有电子爱好者分享的晶体管逻辑门和加法器电路图。
耐心和细心: 晶体管电路制作需要极大的耐心,尤其是在面包板上布线时,很容易出错。慢慢来,一步一步确认。
学习万用表的使用: 万用表是你最好的朋友,用来测量电压、电流和电阻,判断元件好坏和电路工作状态。
了解晶体管的工作原理: 知道基极、集电极、发射极的定义,以及它们如何控制电流,有助于你理解电路。

用晶体管搭建加法器虽然比直接用集成电路芯片要复杂得多,但这个过程本身就是一次非常棒的电子学习体验。当你看到自己亲手搭的电路能够进行二进制加法时,那种满足感是无与伦比的!祝你制作成功!

网友意见

user avatar

最近在尝试复刻4004,正试着自己把一部分小组件复刻出来。偶尔翻到这个问题的时候,发现基本上只有大致的思路,并没有人给出实际的操作流程。所以只能自己尝试啦。

先来个成品图:

首先简单介绍一下基本元件。4004的基本组成原件是PMOS管,PMOS管的功能是通过栅极(G)上的电压控制源极(S)到漏极(D)是否导通,当G为0(低电压)时导通,当G为1(高电压)时断开,类似于一个迷你继电器。

4004的加法器部分大致如下图所示(带进位位的4位加法器):

比较难看懂是正常的,当时我也看了半天……简单来说,这个加法器并不是按照我们平常熟悉的半加器*2=全加器的结构来构造的,而是直接堆在了一起。下半部分计算是否进位,上半部分计算当前位的结果。

当然如果要复刻并不能直接照搬4004的设计。比如下面这个结构:

这部分是用来判断是否有至少两个输入=1(即是否进位)。不难看出中间的这个MOS管是需要能够双向使用的(类似电桥?),而现在市面上能够买到的MOS管都是带寄生二极管的,换句话说就是如果反方向使用的话,会始终处于导通状态,无法正常发挥“开关”的作用,所以复刻的时候需要用两个方向相反的MOS管串联来“模拟”没有寄生二极管的效果。画好的原理图如下(使用的是KiCAD):

确认无误之后绘制成PCB(为了布局看着舒服所以有很多从绕的线。右边为了能够紧凑一点费了好些功夫……)

尺寸约8.64x8.64cm,丢去打样,到手后把原件焊上去就完事了(焊接技术有点渣勿吐槽):

(),成功!


元件清单:PMOS管*56,LED*14,75K电阻*14,30K电阻*14,拨动开关*9,0.1uF电容*1,DC电源接口*1。

关于成本:15V DC电源22元,电路板打样薅个5元包邮,MOS管大约不到0.1元一个,其余原件也是淘宝上很便宜能够买到的,所以不算上焊接工具的钱的话只要两位数人民币就能搞定~(为什么是15V?因为原始的4004是15V……)

关于电阻阻值:LED限流用75K是试出来的合适亮度,其他地方的30K上拉电阻……其实是随便选的,如果有什么更加有道理的取值的话欢迎交流~

关于开源:这个小玩意比较简单就不开源啦(反正原理图都有,相信如果有人有心想做的话肯定也能自己做出来的)。


类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有