首页 > 其他分享 >认识 CPU 底层原理(2)——逻辑门

认识 CPU 底层原理(2)——逻辑门

时间:2023-01-14 20:35:53浏览次数:56  
标签:输出 逻辑 逻辑运算 运算 二进制 门电路 十进制 CPU 底层

本文为B站UP主硬件茶谈制作的系列科普《【硬件科普】带你认识CPU》系列的学习笔记,仅作个人学习记录使用,如有侵权,请联系博主删除

上一篇文章我们从最基本的粒子的角度认识了组成CPU的最基本单元MOSFET的原理。CPU作为计算机的核心硬件,其最主要的功能是进行运算,本章我们将会介绍CPU设计者是如何使用MOSFET组合出更强大的运算单元的。

逻辑运算

为了能够讲清楚计算机是怎么进行计算的,我们首先要从逻辑运算讲起。

逻辑运算指的是“条件”与“结论”之间的一种关系,是对因果关系进行分析的运算,其运算结果并不表示数制的大小,而是表示逻辑概念成立还是不成立。

举例:小帅喜欢吃苹果,小美不喜欢吃苹果。则我们可以得到推论:两人都喜欢吃苹果这个事情为假;两人其中至少一个人喜欢吃苹果这个事情为真;两人都不喜欢吃苹果这个事情为假。

上面这个例子中,小帅喜欢吃苹果,小美不喜欢吃苹果就是“条件”,后面的推论就是逻辑运算的“结论”。逻辑运算就是对逻辑进行代数抽象,用数学的方式表达逻辑推论的过程的一种代数运算。

逻辑运算的种类

从代数的角度看,最简单的逻辑运算有这么几种:非运算,与运算,或运算,异或运算,同或运算。

如果我们用数字1表示条件为真,数字0表示条件为假,则上述几种逻辑运算可以被表示为以下运算表(数学上称为真值表),最后一列均表示括号中的推论是否为真:

非运算

条件A 推论(非A成立)
1 0
0 1

与运算

条件A 条件B 推论(A与B同时成立)
1 1 1
1 0 0
0 1 0
0 0 0

或运算

条件A 条件B 推论(A或B成立)
1 1 1
1 0 1
0 1 1
0 0 0

异或运算

条件A 条件B 推论(A与B不同)
1 1 0
1 0 1
0 1 1
0 0 0

同或运算

条件A 条件B 推论(A与B相同)
1 1 1
1 0 0
0 1 0
0 0 1

逻辑运算与算数运算的关系

明白了逻辑运算的原理,你可能会问这跟计算机有什么关系?

我们都知道,任何信息在计算机中都是使用二进制的方式存储和计算的。比如十进制数19在二进制中表示为10011,十进制数5在二进制中表示为101,19+5的结果是24,用二进制数表示为11000。

下图为十进制竖式加法的运算过程

image

先加个位,9加4超过10,因此向十位进1,个位写4,再把十位上的数和进位相加,1加1等于2没有超过10,因此十位相加的结果是2,最后算出来的结果是十进制数24。

下图是对应的二进制竖式加法的运算过程

image

其实运算法则与十进制相同,十进制是每一位相加满10进1,二进制加法同样是每一位相加,满2进1。最后得到二进制结果11000,刚好也是十进制的24。二进制计算结果与十进制是等价的,由于1和0在计算机中非常天然的可以使用高低电平来表示,因此计算机使用二进制数进行与十进制等价的各种运算。

让我们看一下最基本的两个1位二进制数相加的结果,如果不考虑进位的话,那么1+1的结果是0,1+0的结果是1,0+1的结果也是1,0+0的结果是0。发现了吗,这其实与上一节逻辑运算中异或运算的真值表是相同的。

我们再看一看两个1位二进制数相加的进位是什么情况,1+1进位是1,1+0进位是0,0+1进位是0,0+1进位是0,同样的与上一节逻辑运算的结果比较,可以发现这个结果是与逻辑运算中的与运算真值表相同。

这是两个一位二进制数相加的情况,可以想象,两个多位二进制数相加其实就是对每一位先用异或运算求出该位的值,再用与运算求出该位的进位,就能得到最终的结果。这样我们就把计算机中的算数运算与逻辑运算建立了关系。只要进行简单的逻辑运算,我们就可以在计算机中计算加法。如果能计算加法就能计算减法,因为减法相当于一个数加另一个数的负数。同样如果能计算加减法就能计算乘除法,因为乘法相当于是多个相同的数的加法。

可以想象到,当有了四则运算,计算机就可以做大部分数学计算了。

逻辑门电路

好啦,现在已经掌握了所有基础知识,我们就可以学习逻辑运算是如何通过电路实现的了。MOSFET的作用其实就是构建上述几种逻辑运算器的基本组件,那么我们就看一下如何使用MOSFET来构建上述的逻辑运算。由电子元器件构成的逻辑运算单元就被称为逻辑门电路。

非门电路

上一篇文章我们已经简单的介绍了非门电路的组成,这里我们再复习一下。

image

供电电压是高压电平,接地电压是低压电平。上面的MOSFET是PMOS,下面的是NMOS。由PMOS和NMOS的特性可知:

  • 当A接入高电平,PMOS不导通,NMOS导通,B端相当于与接地电压联通,输出低电平。
  • 当A接入低电平,PMOS导通,NMOS不导通,B点相当于与供电电压联通,输出高电平。

当我们把高电平定义为1,低电平定义为0,那么这正是非门的运算结果,电路符号如下图:

image

或门电路

或门电路的组成,符号和真值表如下图所示:

image

让我们看看当A和B输入0时,Y是如何得到输出结果的

image

当A和B输入0时,两个PMOS导通,两个NMOS不导通,左半边输出高电平,红框是我们上面讲的非门电路,因此最终Y端输出低电平0。其他情况大家可以自行推导。

或门的作用是,只要有一个输入为1,输出就是1,只有当两个输入都为0,输出才是0。

与门电路

下图是与门电路的组成,符号和真值表:

image

我们来看一下当A和B均输入1时,Y的输出情况:

image

当A和B同时输入1,左边两个PMOS不导通,两个NMOS导通,这时左半边输出为低电平0,经过右边的非门转化为高电平1。其他情况大家可以自己推导。

与门电路的作用是,只有当两个输入都为1时输出才是1,否则输出均为0。

异或门电路

下图展示了异或门电路的组成,符号和真值表,同时也展示了当A和B端均输入1时,输出端Y的结果推导过程:

image

异或门电路的主要作用是,当A和B的输入相同时,输出0,否则输出1。

可以看出上图中为了构建异或门电路,一共使用了10个MOSFET,然而真实使用中,人们研究出了一种更节省材料的方法来实现异或门电路,其电路图如下所示:

image

中间由一个PMOS和一个NMOS两端相连组成的单元叫做传输门,虽然两个MOS组合在一起,其各自的作用还是不变的,与原始电路比较,这里只用了6个MOSFET就组成了异或门电路。

总结

本篇我们学习了逻辑运算与算数运算的等价性,更进一步认识了组成这些基本逻辑运算的电路。下一篇文章我们会继续深入,看看这些基本的逻辑运算电路是如何组成一个计算加法的加法器的。

标签:输出,逻辑,逻辑运算,运算,二进制,门电路,十进制,CPU,底层
From: https://www.cnblogs.com/leometeor/p/17052483.html

相关文章

  • BBS项目功能编写逻辑思路汇总
    BBS项目功能编写逻辑思路汇总一、BBS创数据表二、BBS注册功能三、BBS登录功能四、BBS首页搭建五、BBS修改密码六、BBS个人站点七、BBS文章详情八、BBS导入模块......
  • 认识CPU底层原理(1)——MOSFET
    本文为B站UP主硬件茶谈制作的系列科普《【硬件科普】带你认识CPU》系列的学习笔记,仅作个人学习记录使用,如有侵权,请联系博主删除近年来,由于国内外各种因素影响,半导体行业......
  • 内存的逻辑模型是楼房
    虽然内存的实体是内存IC,不过从程序员的角度来看,也可以把它假想成每层都存储着数据的楼房,并不需要过多地关注内存IC的电源和控制信号等。因此,之后的讲解中我们也同样会使用......
  • 使用vscode调试PHP底层C源码
    使用vscode调试PHP底层C源码一直想着有机会调试一下php底层代码来着,这周正好心血来潮,就跟着教程配置了一下。本篇文章是基于macOS,可能在编译php源码之前的步骤对使用windo......
  • javase知识点总结:三种程序逻辑结构,输入输出
    顺序结构顺序结构程序就是按语句出现的先后顺序执行的程序结构。计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句。分支结构if语句1.语法格式1if(......
  • 5G推了一把后,边缘计算再被底层软硬件创新全面引燃
    来源:财新网地处北京东南的亦庄,半个世纪之前,还是大兴区的红星人民公社。自从1991年北京的唯一一个国家级经济开发区落户于此之后,30年间,亦庄新城“长大”了约60倍,从3.8平方公......
  • java中关于继承,多态及方法调用的底层细节
    java中关于继承,多态及方法调用的底层细节一、继承继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求。子类会拥有......
  • FPGA:逻辑函数的代数法化简
    逻辑函数的最简形式1.化简逻辑函数的意义两个电路的逻辑功能完全相同。但简化电路使用的逻辑门较少,体积小且成本低。化简的意义:根据化简后的表达式构成的逻辑电路简单,可节省......
  • Kotlin 逻辑控制
    程序的逻辑控制 if条件语句Kotlin中的if语句相比于Java有一个额外的功能,它是可以有返回值的,返回值就是if语句每一个条件中最后一行代码的返回值。funlargerNumber(nu......
  • strapi系列--如何自定义非界面化的接口,定制化自己的业务逻辑
    为什么要进行后端定制呢?在实际开发过程中,项目中有些需求是不需要创建界面化接口的,需要我们定制化自己的业务逻辑,那么我们该如何处理这个需求呢?本文以图文并茂的形式,定制一......