逻辑门与ALU基本原理

一、布尔逻辑和逻辑门

晶体管计算机采用开/关,两种状态代表信息,这叫做二进制(binary)。

  • 电路闭合,电流流过,代表“真”;
  • 电路断开,无电流流过,代表“假”。

二进制也可以写成1和0,而不是true和false,只是不同的表达方式罢了。

1.1、计算机为什么采用二进制?

  • 原因一:状态越多,越难区分信号
    晶体管不只是只有“开/关”,还可以让不同的电流通过,一些早期电子计算机是三进制的,有三种状态,甚至五进制,5种状态,问题是,状态越多,越难区分信号,如果手机快没电了或者附近有电噪音,因为有人在用微波炉,信号可能会混在一起,而每秒百万次变化的晶体管会让这个问题变得更糟。所以我们把两种信号尽可能分开,只有开和关两种状态,可以尽可能减少这类问题。

  • 原因二:布尔代数的存在
    有一整个数学分支存在,专门处理“真”和“假”,它已经解决了所有法则和运算,叫“布尔代数”。乔治·布尔(George Boole)是布尔二字的由来,是一位19世纪自学成才的英国数学家,他有兴趣用数学式子扩展亚里士多德基于哲学的逻辑方法。布尔用逻辑方程,系统而正式的证明真理。他在1847年的第一本书“逻辑的数学分析”中介绍过:在“常规”代数里变量的值,是数字,可以进行加法或乘法之类的操作,但在布尔代数中,变量的值是true和false,能进行逻辑操作。布尔代数中有三种基本操作:NOT、AND和OR,而用晶体管可以轻松实现这个逻辑。

1.2、如何用晶体管做逻辑门?

晶体管是一种电流控制的开关,有三根引线:2根电级和1根控制线,控制线通电时,电流就可以从一个电级流到另一个电级。
将控制线作为输入,底部的电级作为输出,如果打开输入,输出也会打开,因为电流可以流过。如果关闭输入,输出也会关闭,因为电流无法通过。用布尔术语来说,输入为真,输出也为真;输入为假,输出为假。
在这里插入图片描述

1.2.1、非门(NOT Gate)

非门
如果输入为on,电流可以流过然后“接地”,输出就没有电流,所以输出是off;
如果输入时off,电流没法接地,就流过了输出,所以输出是on。
之所以叫“门”,是因为它能控制电流的路径。

在模电中,当电压值大于某一阈值时,认为是1,当电压值小于某一阈值时,认为是0。
下图(1)中当电压值为0.804V时,为逻辑1,即输入为on,此时输出电压值为0.105V,为逻辑0,输出为off。
在这里插入图片描述
下图(2)中当电压值为0.065nV(接近为0)时,为逻辑0,即输入为off,此时输出电压值为3V,为逻辑1,输出为on。
在这里插入图片描述
非门(反相器)通常采用CMOS逻辑和TTL逻辑,也可以通过NMOS逻辑、PMOS逻辑等来实现。
在这里插入图片描述

非门特征符号

1.2.2、与门(AND Gate)

AND操作有2个输入,1个输出。
与门
如果只打开A,不打开B,电流无法流到输出,所以输出是false
如果只打开B,不打开A,也一样,电流无法流到输出,
只有A和B都打开了,输出t才有电流。

当输入A电压为0.804V,为逻辑1,即输入A为on;输入B电压为0.804V,为逻辑1,即输入B为on,此时输出为2.792V,为逻辑1,即输出为on。
在这里插入图片描述
当输入A电压为-1.156uV,为逻辑0,即输入A为off;输入B电压为0.796V,为逻辑1,即输入B为on,此时输出为0.315mV,为逻辑0,即输出为off。
同理可得当,输入A为on,输入B为off,以及输入A和B均为off时的输出状态均为off。
在这里插入图片描述
与门的实现方法包括使用CMOS逻辑、NMOS逻辑、PMOS逻辑以及二极管实现等。
在这里插入图片描述

与门特征符号

1.2.3、或门(OR Gate)

或门
与与门不同,2个晶体管不是串联而是并联。
如果A和B都为off,结果是off。

当输入A电压为0.804V,为逻辑1,即输入A为on;输入B电压为0.5V(小于阈值),为逻辑0,即输入B为off,此时输出为2.895V,为逻辑1,即输出为on。
在这里插入图片描述
当输入A电压为0.5V(小于阈值),为逻辑0,即输入A为off;输入B电压为0.5V(小于阈值),为逻辑0,即输入B为off,此时输出为0.153mV,为逻辑0,即输出为off。
在这里插入图片描述
或门可以通过不同的方法实现,包括二极管实现、开关实现、CMOS逻辑实现等。
在这里插入图片描述

或门特征符号

1.2.4、异或门(XOR Gate)

异或
输入相同,输出为false
在这里插入图片描述

异或特征符号

二、ALU基本原理

表示和存储数据是计算机的重要功能,但真正的目标是计算,比如两个数字相加,这些操作由计算机的算术逻辑单元(Arithmetic & Logic Unit)处理,简称为ALU。ALU是计算机的数学大脑。
ALU有2个单元,一个是算术单元和一个逻辑单元
算术单元:负责计算机里的所有数字操作,比如加减法。
ALU的电路设计,可以用单个晶体管一个一个拼,把这个电路做出来,但是很快就会复杂的难以理解,所以与其用晶体管,我们会选用更高层的抽象——用逻辑门来做,我们会用到AND、OR、NOT和XOR逻辑门。

2.1、算术单元:半加器

加法:两个输入,一个输出(两个数字的和)
用异或实现1位的加法器(adder)
半加器
在这里插入图片描述
半加器抽象化(将半加器封装成一个单独组件)
两个输入:A和B都是1位
两个输出:总和与进位

2.2、算术单元:全加器

要完成多位数据的加法,需要将各个位上的运算所得的进位标志位用于下一位的运算中,这时有3个输入,2个输出,这时就需要全加器。
全加器

2.3、算术单元:8位加法器

8位加法器
每个全加器/半加器的进位作为下一个加法器的输入,所以这种8位加法器又称为8位行波进位加法器。

注意最后一个全加器有进位的输出,如果第9位有进位,代表着两个数字的和太大了,超过了8位,这叫溢出(overflow)
如果想避免溢出,可以加更多全加器,可以操作16或32位数字,这将导致一个缺点是是,需要更多的逻辑门;而另一个缺点是,每次进位都要一点时间,当然时间不久,因为电子移动的很快(接近光速),但如今的量级是每秒几十亿次运算,所以会造成影响,所以现代计算机用的加法电路有点不同,叫超前进位加法器。

ALU的算术单元,也能做一些其他数学运算,一般支持:加法、带进位的加法、减法、带借位的减法、增量(+1)、减量(-1)数字无改变通过,同加法器一样这些操作也是由逻辑门构成的。
由于简单的ALU没有专门的乘法和除法电路,所以针对乘法的操作一般采用用多次加法来实现,即需要多次ALU操作来实现这个乘法,很多简单处理器都是这样做的,这种处理方式的处理效率较低。针对于笔记本和手机对性能有较高要要求的处理器,有专门做乘法的算术单元。众所周知乘法电路比加法复杂,需要更多逻辑门,所以便宜的处理器没有。

2.4、逻辑单元

ALU的逻辑单元(logic unit),逻辑单元执行逻辑操作,比如之前讨论过的AND,OR和NOT操作,它也能做简单的数值测试,比如一个数字是不是负数。
是否为0判断电路
检查ALU输出是否为0的电路

2.5 ALU

1970年英特尔发布的74181用了大概70个逻辑门,但不能执行乘除,但它向小型化迈出了一大步。
4位ALU已经要很多逻辑门了,但我们的8位ALU会需要数百个逻辑门,工程师不想在用ALU时去想那些事情,所以想了一个特殊符号去代表它,看起来像一个大“V”。
ALU
1、需要告知ALU做什么?
用4位的操作代码,简言之“1000”可能代表加法命令,“1100”代表减法命令,操作码告诉ALU执行什么操作。(这里的4位操作码只是假设的)
2、对谁操作?
8位ALU有两个输入,输入A和输入B,都是8位。
3、输出什么?
输出的结果(8位)以及一些标志位(高级ALU有更多标志,但这三个标志是ALU普遍用的)。

三、参考资料

[1]: 计算机科学速成课

  • 9
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
算数逻辑运算单元(ALU)是一种用于执行算术和逻辑运算的电路设备。我们可以通过进行一系列实验来研究和验证ALU的功能。在这些实验中,通常会设计和搭建一个ALU电路,并使用数字逻辑电路元件(例如逻辑门、加法器等)来实现不同的运算。 首先,我们可以进行逻辑运算的实验。例如,我们可以测试ALU在执行与、或、非等逻辑操作时的准确性和稳定性。通过输入不同的数字或逻辑位,观察ALU输出是否符合预期的逻辑结果,以此来验证逻辑运算的正确性。 接下来,我们可以进行算术运算的实验。ALU通常支持加法和减法等基本算术运算。我们可以先输入两个数字,然后观察ALU输出的和或差是否正确。为了验证ALU电路在执行这些运算时的精确性,我们可以使用不同的输入值,并检查ALU输出是否与这些值相匹配。 此外,我们还可以进行扩展实验,例如乘法和除法等更复杂的算术运算。这种类型的实验可能需要更复杂的电路和算法来执行。我们可以设计一个基于乘法器和除法器的ALU电路,并使用不同的输入值来验证其准确性和稳定性。 综上所述,通过进行不同类型的实验,我们可以验证和研究算数逻辑运算单元(ALU)的功能。这些实验可以帮助我们了解ALU电路的工作原理,同时也有助于我们探索和发展更复杂的算术和逻辑运算的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值