从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 新闻合订本
    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

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

      • 概述-计算机组成原理(北大-陆俊林)
      • 第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-直接存储器访问方式
    • 字符编码入门

  • 操作系统

  • Linux

  • 计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机组成原理
  • 计算机组成原理(北大-陆俊林)
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 晶体管,以及由它们构成的逻辑门, 包括非门, 与门,我们用与门则可以 进一步去实现计算机当中所要求的各种与相关的操作。 我们还实现了或门,用或门可以去实现各种或运算指令,以及更为复杂的异或门,可以实现更多的功能。 ‍ 现在我们已经学习的最基础的门电路, 别看它们简单实际上可以构造出非常复杂的功能了。 但是还有一个问题,这些电路是如何存储信息的呢? 这就是我们下一节要讨论的问题。

上次更新: 2025/5/17 12:26:09
301-算术运算和逻辑运算
303-寄存器的基本原理

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

最近更新
01
新闻合订本 2025-10
10-31
02
2025 年 10 月记
10-30
03
用 AI 批量优化思源笔记排版
10-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式