从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • 计算机历史

  • 数字电路

  • 计算机组成原理

    • 网课-计算机组成原理(北大-陆俊林)

      • 概述-计算机组成原理(北大-陆俊林)
      • 第1周-计算机组成章节视频简介
      • 101-电子计算机的兴起
      • 102-冯·诺依曼结构的要点
      • 103-冯·诺依曼结构的小故事
      • 104-计算机结构的简化模型
      • 105-计算机执行指令的过程
      • 106-计算机输入和输出
      • 107-冯诺依曼结构和具体实现
      • 201-设计自己的计算机
      • 202-x86体系结构
      • 203-x86指令简介
      • 204-复杂的x86指令举例
      • 205-MIPS体系结构
      • 206-MIPS指令简介
      • 301-算术运算和逻辑运算
      • 302-门电路的基本原理
      • 303-寄存器的基本原理
      • 304-逻辑运算的实现
      • 305-加法和减法的实现
      • 306-加法器的优化
      • 401-乘法的运算过程
      • 402-乘法器的实现
      • 403-乘法器的优化1
      • 404-乘法器的优化2
      • 405-除法的运算过程
      • 406-除法器的实现
      • 407-除法器的优化
      • 501-处理器的设计步骤
      • 502-数据通路的建立
      • 503-运算指令的控制信号
      • 504-访存指令的控制信号
      • 505-分支指令的控制信号
      • 506-控制信号的集成
      • 601-流水线的基本原理
      • 602-流水线的优化
      • 603-超标量流水线
      • 604-流水线的冒险
      • 605-数据冒险的处理
      • 606-控制冒险的处理
      • 701-存储层次结构概况
      • 702-DRAM和SRAM
      • 703-主存的工作原理
      • 704-主存技术的发展
      • 705-高速缓存的工作原理
      • 706-高速缓存的组织结构
      • 707-存储容量的计算
      • 801-中断和异常的来源
      • 802-中断向量表的结构
      • 803-中断向量表的发展
      • 804-中断的处理过程
      • 805-内部中断分类说明
      • 806-基于中断的功能调用
      • 901-输入输出接口的基本功能
      • 902-输入输出接口的编址方式
      • 903-输入输出的控制方式
      • 904-中断控制方式
      • 905-外部中断的处理过程
      • 906-直接存储器访问方式
      • 网课-计算机组成原理(北大-陆俊林)
    • 计算机组成原理
  • 汇编语言

  • C语言

  • 数据结构

  • 操作系统

  • Linux

  • 计算机网络

  • Git

  • 数据库

  • 计算机小知识

  • 编译原理

  • 名人堂

  • 计算机基础
  • 计算机组成原理
  • 网课-计算机组成原理(北大-陆俊林)
2023-06-13

302-门电路的基本原理

# 302-门电路的基本原理

现代计算机的CPU和其它很多功能部件都是基于晶体管的集成电路,想要了解计算机组成的基本原理,还是需要有一些集成电路的基本知识, 就让我们从最简单的门电路的实现开始吧!   晶体管是构成现代集成电路的基本元件, 通常使用的是MOS晶体管,MOS是金属,氧化物,半导体的缩写。而MOS晶体管又主要有两种类型, 一种我们称为N型MOS管,也简称为NMOS,这就是NMOS的符号表示。 它对外有三个连接,一个是源,一个漏, 一个是门。那么只看这个符号是非常抽象的,我们还是来打个比方说明吧! MOS晶体管其工作原理其实很像这个水龙头,电路中的电流 就好比水管中的水流,水流的来源也就是源, 而水流出的地方就称为漏,控制水流的开关就是门。 如果把门打开,水流就会从源流到漏, 也就相当于晶体管导通,电流可以从源到漏。对于NMOS来说, 其导通的条件是gate端连接了高电平,而当gate端连接低电平时, 这个晶体管是不导通的。

与NMOS相对还有另一种类型叫做PMOS, 它和NMOS的区别就在于当gate端连接低电平时 这个晶体管导通,而连接高电平时这个晶体管不导通。 这就好比我们有两种类型的水龙头,一种是把这个 把手向上拉才会出水,另一种是将这个把手向下压才会出水。 用这两种功能相对应的晶体管就构成了互补型的MOS集成电路, 也简称为CMOS。

​

‍

‍

‍

那我们就来看一看如何用晶体管构建逻辑门。 最简单的一种逻辑就是取非, 那么首先来看非门, 这是非门的逻辑符号。a是输入,y是输出, 中间用一个三角再加上一个小圆圈构成。 这是真值表列出了在各种输入情况下输出应该是怎么样的。 非门的真值表非常的简单,当输入a为0的时候,输出y为1, 输a为1的时候,输出y为零。 如果要写成逻辑函数表达式,应该是在a上面加一条横线,但这个表示用纸笔比较容易些, 而用键盘输入就比较困难一些。所以在编程时 经常会用这两种表达式来替代,在a前面加波浪线或者加感叹号来表示取非的操作。 这张图则显示了如何用晶体管来构成非门。 我们可以发现非门非常简单,只需要用两个晶体管。

​

‍

‍

我们一起来看一看非门的工作过程。 首先来看当输入a为0时如何让输出y变为1。先来看最上面, 这个电路上方连接的是电源,也就是高电平用1来表示。 然后再来看下面,这个符号代表的D, 也就是低电平,用0来表示, 当a为0时,我们注意到a同时连接到了两个 晶体管的gate端。上面这个注意这个符号, 这是一个PMOS晶体管,当它的gate端等于0时,请想一想,它是否处于导通状态。 对于PMOS来说,它的gate端为0时是导通的, 所以电源这一端的这个1我们就可以认为它传导了过来。 这个1会传给输出Y,但只有这一点是不够的, 因为我们发现Y还连接下面这个晶体管,这个符号代表了一个NMOS, 同样它的gate端也与a相连, 连接的是0,那对于NMOS来说gate端连接的是零,它是什么样的状态呢? 其实它是关闭的,所以我们可以认为 连接的这个D的这个0是无法通过这个晶体管传导出来, 所以现在y这条线就由上面这个晶体管驱动,因此Y就输出为1了。 这就是a为0时,通过非门,让Y变为了1。

我们再来看另一种情况也就是a等于1时,y等于零, 同样电源是1,D是零, a等于1时,上面这个PMOS的gate端是1,所以处于关闭状态。 而下面这个NMOS的gate端为1时,它就处于导通状态,我们可以认为连接 d的这个0通过这个晶体管传导了出来,因此这时y的输出就是0。 这两张图就说明了非门的工作过程。

​

‍

‍

‍

我们再来看下一个非常常用的逻辑门也就是与门。 与门是有这个符号来表示的, 它的逻辑函数可以写成y等于a点运算符b, 其实这个点儿也是乘号的一种表示方式。 我们来看它的真值表。所谓与操作就是两个输入端都为1时, 输出才会为1,我们可以看第四行, 在其他的情况下输出全为0。 右边这个图是一个与非门实现原理, 它有四个晶体管构成,我们要注意虽然我们需要的逻辑功能是与门, 但是在实现中,与非门,比与门的实现更为简单。 所谓与非门,它的输出结果于与门正好相反, 也就是两个输入均为一时输出为0,其它时候输出都为1, 所以可以很简便的用一个与非门和非门相连就实现了与门的功能。

​

‍

我们再来看一看与非门的工作过程,假设a等于1,b等于1, 对于与非门来说,这时候的输出结果应该是0,我们来看这个工作过程是怎么样的。 这时候a,b为1,我们首先来看b所连接的晶体管, 上面这是一个PMOS,它的gate端为1, 所以这个晶体管是关闭的, 那好我们暂时可以不管它,我们再来看b连接的另一个晶体管,在最下面这里, 它的gate端是1,所以它是导通的,那么它就会把0传导出来, 但这个0还需要经过一个晶体管才能传导到y, 这个晶体管是由输入a来控制的, 这也是一个NMOS晶体管,而我们发现现在输入a也是1, 所以这个晶体管也是导通的,因此这个0 被继续往外传输就传递到了y,与此同时我们还要看到上面这个PMOS晶体管也是由a控制的, 当gate端为1时,这个晶体管是关闭的, 因此信号y与电源之间并联的两个晶体管都处于关闭状态, 而与D之间串联的两个晶体管都处于导通状态。 所以y的值就是0。

​

‍

右边这个例子则说明了a等于1, b等于零时,与非门的输出应该是1。 对于这个例子我就不详加描了。 简单的说就是下面两个串联的NMOS,有一个处于关闭状态, 因此y与D不联通,而上面两个并联的PMOS, 有一个处于导通状态。所以y与电源连通, 因此y的值就是1,这就是与非门的工作过程。 将它的输出y再链接一个非门就构成了与门。

​

‍

‍

然后我们来看或门, 我们与与加号相同的这个符号来表示或操作。 这是或门的真值表,它的规则也很简单。 只有当两个输入都是0的时候,输出为0, 只要有任何一个输入为1,或者两个输入都为1, 输出都是1,那或门也是有几个PMOS和NMOS构成的。 在这里我们就不详细描述了。

‍

​

最后来看一个逻辑门称为异或门,异或操作是指它的两个操作数的值如果不相同则结果为真,也就是1, 如果两个操作数的值相同,则结果为假,也就是0, 它其实可以用我们刚才学过的与或非的操作组合出来,a的非和b进行与, 这个意思就是当a等于零时,a的非为1,而且b也等于1时, 这第一个括号中的表达式就为1,而当a等于1,b等于0时, 第二个括号中的表达式就会为1,中间进行或, 也就是这两个表达式只要其中一个为1,结果就是1, 而当a和b都等于0,或者a和b都等1时,这两个表达式 的结果都是0。取或之后最终的结果也还是0。 这就体现了异或运算的要求,这是异或运算的逻辑符号, 主体与或门类似,只是在左边多了一条线。 这是异或的逻辑函数表示,用一个圈内部带一个加号。 当然这个符号很难直接用键盘输入, 所以在编程时也会用这个符号表示异或。 这是异或运算的真值表,当输入相同时, 比如都等于零,或者都等于1, 则输出为0,当输入不同时,也就是一个0一个1, 这样的形式输出则为1, 这就是异或运算。

​

‍

现在我们已经学习了NMOS晶体管, PMOS晶体管,以及由它们构成的逻辑门, 包括非门, 与门,我们用与门则可以 进一步去实现计算机当中所要求的各种与相关的操作。 我们还实现了或门,用或门可以去实现各种或运算指令,以及更为复杂的异或门,可以实现更多的功能。

‍

现在我们已经学习的最基础的门电路, 别看它们简单实际上可以构造出非常复杂的功能了。 但是还有一个问题,这些电路是如何存储信息的呢? 这就是我们下一节要讨论的问题。

在GitHub上编辑此页 (opens new window)
上次更新: 2023/6/13 17:13:13
301-算术运算和逻辑运算
303-寄存器的基本原理

← 301-算术运算和逻辑运算 303-寄存器的基本原理→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式