0xAA55 发表于 2019-1-16 06:35:41

【科普】半导体、硅、二极管与三极管。让我们自己动手做集成电路和CPU(不可能的,没那么多钱

我们的处理器和集成电路上面少不了晶体管,典型例子,CPU,它里面就有上十亿到数百亿的晶体管,那么这些晶体管有什么用?能干啥?

事实上这些晶体管是二极管和三极管(以及其它各种玩意儿)的统称,但主要起作用的是三极管。

我们可以把一个三极管当作一个没有机械结构的开关,也就是“继电器”。打个比方,对于NPN型的BJT晶体管(这个比较常见,拆遥控玩具总能看到),当你往它的Base极(基极)到Emitter极(发射极)之间通入电流后,它就会允许电流从Collector极(集电极)流向Emitter极(发射极)。一个NPN型的三极管的图标如下(来源:Wikipedia)


下图是一个典型的BJT三极管,型号是SS8050:(图片来源于网络)


你肯定会有疑问:“发射极?它发射啥?”其实最初起到相同功能的玩意儿是电子管(也叫真空管),和晶体管还不太一样,它长这个样子:(图片来源于网络)


它在电路上的构造,简单点,是这样的:(来源:Wikipedia)

这里的a指的是阳极(anode),k是阴极(cathode),g是栅极(grid)。其中,阴极会被加热烧红,然后发射出电子。这是真空管,所以电子不会撞上空气,使其离子化。
然后当你有一股从栅极到阴极之间的电势差的时候,这些电子就会受到电荷力的吸引,向阳极方向飞去——其实是向栅极飞去,但栅,顾名思义,就是网兜一样的玩意儿,它上面的空隙能让电子穿过,并被阳极收集。
对于真空管,因为阴极发射出了电子,而阳极收集了电子,所以对应的针脚起名为“集电极”和“发射极”。但随着三极管的诞生,在微电子领域它比真空管更小,消耗的电能更少(至少不需要加热阴极),所以在很多的应用领域它被用于取代电子管。那么为了省得麻烦,它的针脚也被按照曾经的电子管的功能起名。备注:其实我也不知道为啥三极管的三个电极要这么起名。总之我是瞎掰的。

先不管它名字怎么起,总而言之:基极相当于开关,可以控制电流是否可以经过集电极与发射极。

三极管除了有NPN型,还有PNP型。其中的P指的是Positive,也就是“正”,然后N是Negative,“负”。具体我们到后面再详细描述。

大家都知道晶体管是以硅为基础设计的,那么这个过程具体是怎么样的呢?首先让我们来看一下硅的特性。

硅本身导电性较差,可以看作是绝缘体。每个硅最外面有4个电子。


单个硅原子是图上这样的。而多个硅原子,则相当于你复制多个上图。


硅是非金属元素,每个硅原子与临近的硅原子形成共价键。实际上,你看到的图上的两个相邻的电子其实是绕着键轴的方向做旋转运动。你会发现,这一结构会导致电子较难从一个位置转移到另一个位置。这一状态下的硅,导电性较低。

而半导体,比如二极管或者三极管的生产,靠的是往硅里面掺杂磷或者硼原子,来形成所谓“N型硅”(磷)和“P型硅”(硼)。这利用到了磷和硼在微观物理学上的特性。

那就是磷比硅多了一个电子,硼比硅少一个电子。在掺杂硼的时候,硼在其取代硅原子的位置上,它缺少的那个电子被称作“空腔”,可以容纳从别处过来的电子。而磷,则多了一个电子。多出来的电子可以自由移动(从一个磷原子移动到另一个磷原子,将另一个磷原子的电子挤走)

一个二极管,它的结构是由两个紧贴的“P型硅”和“N型硅”组成的“PN结”构成的。通常认为电流只能从P端流向N端,但电压足够大也可以反过来击穿。
而一个三极管,按照前文我所说,三极管有NPN型和PNP型,其中的P和N指的就是硅的类型。

(图片来源https://www.electronics-tutorials.ws/transistor/tran_2.html)

从图上看到,它的结构似乎就是三明治一样,两个N夹着一个P,或者反过来PNP型是两个P夹着一个N。没错。但由于生产工艺的关系,实际的结构稍微有点扭。(图片来源:Wikipedia)


在“P型硅”与“N型硅”的交界处,多出一个电子的磷,它的电子会往硼的空腔位置移动,并且停留在空腔里。
这会导致P端轻微带负电,N端轻微带正电。此时的交界处的电子移动的量是有限的,由硼的空腔的量决定。移动到不能移动的时候,这个状态叫“饱和”。



正向施加电压的时候,电流从P端流向N端,几乎没有障碍。因为外界施加的电荷能“中和”P端与N端所带的电荷。按照前文,P极有很多空腔,N极有很多自由电子。你往N极加入更多的自由电子,它们就会把N极已有的自由电子往P端的空腔挤走。而P端的电子会被你的正电荷“吸”走,从而留出空腔。这样就能让电流持续流动了。
只不过,你需要约0.7V以上的电压来让这些电子能得到足够的动力去流动。这叫“正向压降”。



然而如果你对其反向施加电压,则会N极的电子减少,P极的电子增加。我们知道,P极有很多空腔,N极有很多自由电子。而你把P极的自由电子拿走,把N极的空腔填上,它就会变成像纯硅那样失去较为良好的导电性了。除非你的电压足够大,能抵抗自由电子向空腔移动的电荷力。这样才能造成反向击穿。



这是二极管的单向导电特性,即使你可以反向击穿二极管,但在达到反向击穿前的电压范围内,你基本上可以把一个二极管理解为一个只允许电流单向流动的一个装置。

那么我们来看看,三极管是怎么工作的吧。以NPN三极管为例,它其实不仅仅多了个N极,而且它的P极被做得特别薄,掺入的硼也比较少。



如果你只是连接两端,然后施加电压的话,不管两端的正负极你怎么连,它都不会形成电流。
此时我们用另一个电源给这个三极管的P极和一个N极连接,并施加一个从P到N极的正向电压,这一过程中,薄薄的P极里面,带有自由电子的空腔,它里面的自由电子,可以顺着导线流走。
这一过程中,阻碍电子从P极运动到N极的力就会消失。



这样一来,当你往它的集电极和发射极之间施加电压的时候,电子就可以从发射极流向集电极,从而形成电流。

你也许会问:那既然如此,我能不能反过来接NPN的三极管,让电流从发射极流向集电极?

其实你可以。但你要这样做的话,这个三极管的表现将不在符合它的数据表(datasheet)和文档所描述的那样工作了。它甚至可能无法完成信号的线性放大。

现在的生产工艺里,三极管是如何被生产的?


图片来源:http://www.learnabout-electronics.org/Semiconductors/bjt_02.php

大体上,我们把一个很大的单晶硅锭切成一片片的薄片。线切。
然后打磨得像镜子一样光滑,厚度大约2mm到3mm,以便于下一步的处理。
掺入磷或者硼。多半使用粒子加速器来喷射磷或者硼原子,直接喷进去。
电镀、蚀刻等,把接线什么的搞上去。
然后,一大片晶圆里,就有一格一格的三极管了。再一格一格切下来、封装打包。


图片来源:http://www.learnabout-electronics.org/Semiconductors/bjt_02.php

这张图十分直观地描述了三极管的生产流程。

[*]以高度掺杂磷的N型硅为基础,它具有较高的导电性。
[*]盖上一层轻微掺杂了磷的N型硅,作为集电极。
[*]蚀刻掉一部分,给P型硅留出位置。
这里目测用到了光刻术,也就是用光刻胶来覆盖这片硅,然后来个投影,让光照过的光刻胶可以被除去(或者另一种就是让没有被光照的光刻胶可以被除去)此时再一整个泡进溶液里,光刻胶就可以让不想被蚀刻掉的部分被保留。
[*]加入P型硅,作为基极。
我看了原文,并不知道它是怎么被加入的。电镀沉淀?
[*]再次蚀刻,去掉一部分的P型硅,从而给发射极留出位置。
[*]加入高度掺杂磷的N型硅,作为发射极。
同上,不知道它是怎么被加入的。
[*]添加金属连接,用于导出引脚。



图片来源:http://www.learnabout-electronics.org/Semiconductors/bjt_02.php

图上就是最终做出来的三极管的结构了。

我们的手机里面的CPU,它其实是一个非常复杂的集成电路,同样基于硅,但它的生产工艺是在同一片硅上,使用光刻、电镀等方式,制造出无数的小三极管,再进行布线。
这些三极管可以让CPU实现它的计算功能。

由于三极管可以被用作信号放大器,它依然也可以被当作继电器使用,如果我们只在乎电流的通断的话。这是数字电路的基础。

我们的电子计算机是怎么一回事儿呢?三极管和它又是什么样的关系呢?计算是怎么进行的呢?靠的是二进制。
二进制的计算,以加法器为例,它是如何做加法的呢?参考两个二进制位进行加法计算的四种情形:

0 + 0 =0
0 + 1 =1
1 + 0 =1
1 + 1 = 10

其中的二进制10,十进制是2. 因为它进位了。
你会发现,它的低位,符合XOR(异或)逻辑门的运算结果。只要给的两个输入的值不同,它就返回真,否则返回假.

0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0

然后与此同时,两个二进制位加法的进位条件,符合AND(与)逻辑门的运算结果。如下:

0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1

这样一来,一个1位加法器的低位输出就是两个输入的xor运算的结果,然后高位输出是两个输入的and运算的结果。
虽然实际情况是如果你要做多个位的加法运算,你需要把上一个位的运算的进位结果也加进来,也就是你需要做一个3输入的加法器,不过也不难。
我们假定有3个输入,a和b,以及作为进位的c(“进位”这个单词在英语里是carry,所以用c表示),输出o1为当前位、o2为进位,它符合以下规律:

a + b + c
=========
0 + 0 + 0 =0
0 + 1 + 0 =1
1 + 0 + 0 =1
1 + 1 + 0 = 10
=========
0 + 0 + 1 =1
0 + 1 + 1 = 10
1 + 0 + 1 = 10
1 + 1 + 1 = 11

那么o1、o2与a、b、c的关系应该就是如下的逻辑了:

o1 = (a xor b) xor c
o2 = (a and b) or ((a xor b) and c)

补充(虽然似乎不是很有必要)上面有个or(或)逻辑门,而这玩意儿的规律则是如下所示的:

0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1

像这样有三个输入和两个输出的加法器,我们叫它“全加法器”。也就是完整的、完全的加法器。我们可以把多个全加法器连接在一起,进行多个二进制位整数的加法运算。只需要把低位加法器输出的进位值,输入给高位加法器的进位输入就行了。

有了加法器,那么减法器是如何实现的呢?其实靠的也是加法器,但我们制造“溢出”,丢掉高位的结果。我们用十进制举例,比如,3,减去1,得2,如何只用加法和溢出来实现?

3 + 9 = 12
然后我们拿掉十位,只留下各位,就得到了2. 二进制减法器也是一样的原理。
对于多个位数的计算,这招同样有效,比如1234减去1:
1234 + 9999 = 11233
拿掉最高位1,留下1233,就是我们要的结果。

而如果我们要减去2,我们就要把9999换成9998,比如1234减去2,可以是下面这样的:
1234 + 9998 = 11232
然后1232就是我们要的结果(最高位被溢出掉了)

这就是所谓的有符号整数的原理。在二进制,一个有符号整数,它的“符号”是最高位的值,通常为1表示负,为0表示正。一个二进制数求相反数的方式,是先对每个bit求反,再加上1. 比如我们对一个有符号字节二进制数00000000求相反数,先求反得到11111111,然后加上1,再去掉最高位,得到00000000。没错,零求反就是零。

用二进制加法来实现减法,也是一样的,比如二进制10101010减去1,先对字节00000001求相反数,得到11111111:
10101010 + 11111111 = 110101001
去掉最高位,得10101001,就是我们需要的结果。
或者我们进行复杂一点的减法,比如计算10000000,也就是十进制128,减去00100000,也就是十进制32,我们先对00100000求相反数,得到11100000,然后做加法:
10000000 + 11100000 = 101100000
去掉最高位,得到01100000,转换为十进制,就是96。这就是我们需要的正确结果了。

不多说了,回到主题:二进制计算与三极管是怎么联系起来的呢?很简单。我们可以用三极管来实现and、or、xor等各种的门电路。

如图所示,这就是使用三极管实现的and(与)逻辑门:

(图片来源:https://www.electronics-tutorials.ws/logic/logic_2.html)
可以看出,当A和B都是高电平输入的时候,两个三极管就允许来自Vcc的电流接通到OUT了,此时的R2能让OUT具有一定的输出电压。而A或者B其中一个是低电平的话,从Vcc到OUT之间相当于断路,R2起到下拉电阻的作用,此时的OUT经过下拉电阻接地。

使用三极管实现的or(或)逻辑门:

(图片来源:https://www.electronics-tutorials.ws/logic/logic_3.html)
A或者B其中一个是高电平的时候,从Vcc到OUT的电流接通。

使用三极管实现的not(非)逻辑门:

(图片来源:https://www.electronics-tutorials.ws/logic/logic_4.html)
非门的逻辑是只要A是高电平,来自Vcc的电流经过了R2限流,就会直接接地。OUT也会被接地,但要注意OUT没有经过下拉电阻。

使用三极管实现的nand(与非)逻辑门:

(图片来源:https://www.electronics-tutorials.ws/logic/logic_5.html)
在非门的基础上多了一个输入。

使用三极管实现的nor(或非?非或?我不知道中文怎么说,英文是not or)逻辑门:

(图片来源:https://www.electronics-tutorials.ws/logic/logic_6.html)

而异或逻辑门则是靠别的逻辑门实现的。举个例子,使用4个NAND门来实现一个异或逻辑门:

(图片来源:https://www.electronics-tutorials.ws/logic/logic_7.html)

有了这些门电路,我们就可以实现加法器了。同样,寄存器,也是用门电路来实现的。典型例子就是使用两个NAND门来互锁,实现一个一位锁存器:

(图片来源:https://www.electronics-tutorials.ws/sequential/seq_1.html)
假设它存储了“零”,这意味着Q是低电平,而“反Q”(上面有条线的)是高电平。此时的A的位置是高电平,B的位置是低电平,“反S”和“反R”都是高电平。因为“反R”是高电平,B是低电平,所以“反Q”是高电平,这导致A是高电平,而“反S”则是高电平,那么Q是低电平。
当你把“反S”设为低电平后,这意味你要把这个锁存器存储的值设为1,此时A是高电平,那么Q就会变为高电平。这让B也变成了高电平,那么“反Q”就会变为低电平。你的输出,也就是Q,是高电平,代表“1”,然后“反Q”是低电平。A在此时会变为低电平,但这并不会影响Q保持高电平。
完成了写入后,你再把“反S”设置回它的闲置状态——高电平。此时Q依然为高电平,B也继续保持高电平,然后因为“反R”也是高电平,所以“反Q”依然是低电平。那么A还是低电平,不影响你的Q保持高电平。你的锁存器“锁住”了你要存储的数值。
想把它清零,只需要把“反R”设为低电平,再设回高电平即可。这个下降沿会让“反Q”输出高电平,从而让A变为高电平。而A和“反S”都是高电平,所以Q是低电平。你的锁存器会锁住“零”这个值。

而SDRAM内存则是如何实现的呢?其实靠的是一个三极管和一个电容,以及对应的地址线。电容会缓慢放电导致数据丢失,所以SDRAM是需要不断刷新的。DDR内存也一样。
为什么SDRAM要使用电容呢?因为要实现一个双NAND锁存器,你需要至少6个三极管,并且为了维持其锁存的状态,每个NAND门都需要持续供电。它是在持续消耗电的,每个这样的锁存器,消耗的电量都相当于经过每个R2电阻的电量。

如果你需要存储数量特别多的数据,比如一个4GB的DDR内存条,如果你使用双NAND锁存器,你的耗电量是流经R2电阻的4294967296倍。
但对于使用一个三极管和一个电容器的方式,你就可以显著减少耗电量。你只需要保证随时都能刷新电容器里的数据就好。

事实上对于个人而言如果想要自己生产集成电路,这几乎不太可能。成本过于高昂,并且生产流程十分复杂,以一个人的姿势水平是不够的。需要多个学科的人一起协力才能构建起一整个集成电路生产管线。

对于半导体而言,所需的最基本的条件——制备高纯度硅,难度就十分巨大。并非制备单晶硅难度大,而是制备高纯度的单晶硅难度大。纯度99.99%并不够纯,因为这意味着每大约10000个原子里就有一个别的原子,这会破坏硅的半导体特性。我们需要至少99.9999999%纯度的硅。

但即便如此,我们依然有办法设计自己的集成电路,甚至CPU等,用于通用的计算,或者特定的计算。那就是使用FPGA,你可以把它理解为可编程的电路,里面有无数的逻辑门。你通过编写VHDL语言描述的东西,来配置一个FPGA硬件里逻辑门们之间的连接。不过其实你只需要描述你想要的运算逻辑,然后让软件自动帮你处理逻辑门的连接以及优化等。

勇芳软件 发表于 2019-1-17 22:02:58

从电子管到晶体管,从三极管到门电路,从 0和1 组成我们数字世界,100多年的电子发展就浓缩到此,值得我们学习和知晓。

yzw92 发表于 2019-2-20 06:39:07

感谢楼主的精彩分享
页: [1]
查看完整版本: 【科普】半导体、硅、二极管与三极管。让我们自己动手做集成电路和CPU(不可能的,没那么多钱