电子技术——CMOS 逻辑门电路

news2024/9/25 9:31:17

电子技术——CMOS 逻辑门电路

在本节我们介绍如何使用CMOS电路实现组合逻辑函数。在组合电路中,电路是瞬时发生的,也就是电路的输出之和当前的输入有关,并且电路是无记忆的也没有反馈。组合电路被大量的使用在当今的数字逻辑系统中。

晶体管的开关模型

CMOS数字电路使用NMOS和PMOS晶体管作为开关使用。之前,我们知道,MOS可以工作在三极管区(相当于开关闭合),也可工作在截止区(相当于开关断开)。

特别的,当一个NMOS作为闭合的开关的时候,此时栅极电压处于高电压,相当于一个从漏极到源极直接相当小的一个电阻 R o n R_{on} Ron r D S r_{DS} rDS ,通常处在高电压 V D D V_{DD} VDD 状态,表示逻辑1。相反,当栅极为低电压的时候,此时MOS截止,表示逻辑0,没有电流流过MOS,如图:

晶体管的开关模型
而PMOS则工作在相反的状态,栅极高电压,MOS管截止,栅极低电压,MOS管导通,如图:

晶体管的开关模型
我们观察到MOS管的栅极通常是逻辑控制输入节点,通常作为逻辑门的输入端。

CMOS反相器

在了解MOS开关的工作方式之后,先让我们制作一个反相器。正如其名,反相器可以逆转输入的逻辑,即输入0输出1,反之亦然。因此该功能可以使用布尔函数表示为:

Y = X ‾ Y = \overline{X} Y=X

其抽象电路模型和实现电路如图所示:

CMOS反相器
它由一对CMOS组成,栅极相连,作为输入端 X X X ,漏极相连作为输出端 Y Y Y 。当 X = 1 X=1 X=1 的时候,即 V X = V D D V_X = V_{DD} VX=VDD ,此时PMOS截止,而NMOS导通,输出 Y = 0 Y = 0 Y=0 。当 X = 0 X=0 X=0 的时候,PMOS导通而NMOS截止,此时输出 Y = 1 Y=1 Y=1

CMOS逻辑门的一般结构

由上面的反相器我们能总结出CMOS逻辑门的一般结构,反相器由一个NMOS 下拉晶体管 和一个PMOS 上拉晶体管 组成。CMOS逻辑门由两个网络组成:一是 下拉网络PDN 由NMOS组成 ,二是 上拉网络PUN 由PMOS组成。如图:

CMOS逻辑门的一般结构
这两个网络都受到输入变量的控制,做出相反的行为,上图是一个三变量输入的逻辑门,当输入变量满足PDN条件的时候,此时PDN网络导通,而PUN网络截止,输出 Y = 0 Y=0 Y=0 ,反之亦然。

因此,我们可以根据不同的PDN和PUN的实现,来实现与门、或门等一些基本的门电路,下图是一些PDN网络的例子:

PDN
在图(a)我们发现当 A = 1 A=1 A=1 的时候, Q A Q_A QA 导通此时 Y = 0 Y = 0 Y=0 ,同样的对于 B = 1 B = 1 B=1 Q B Q_B QB 导通此时 Y = 0 Y = 0 Y=0 ,因此图(a)是一个或门的PDN实现,可以表示为:

Y ‾ = A + B \overline{Y} = A + B Y=A+B

或是:

Y = A + B ‾ Y = \overline{A + B} Y=A+B

图(b)必须两个NMOS全部导通才能输出,是一个与门结构,可以表示为:

Y ‾ = A B \overline{Y} = AB Y=AB

或是:

Y = A B ‾ Y = \overline{AB} Y=AB

最后一个例子图©是一个组合逻辑,可以表示为:

Y ‾ = A + B C \overline{Y} = A + BC Y=A+BC

或者等效于:

Y = A + B C ‾ Y = \overline{A + BC} Y=A+BC

接下来我们考虑一些PUN的一些例子,如图:

PUN
图(a)当 A = 0 A = 0 A=0 或是 B = 0 B = 0 B=0 的时候输出 Y = 1 Y = 1 Y=1 表示为:

Y = A ‾ + B ‾ Y = \overline{A} + \overline{B} Y=A+B

图(b)当 A = 0 A=0 A=0 并且 B = 0 B= 0 B=0 的时候导通,表示为:

Y = A ‾   B ‾ Y = \overline{A} \ \overline{B} Y=A B

而图©表示为:

Y = A ‾ + B ‾   C ‾ Y = \overline{A} + \overline{B} \ \overline{C} Y=A+B C

在学习完PDN和PUN理论之后,我们就可以准备搭建我们的门电路了。首先,为了方便,我们不再使用模拟电路中的MOS符号,而是使用一种更加方便的数字电路MOS表示符号,如图:

数字MOS
上图中左边的符号是模拟MOS表示,而右边是数字MOS表示,对于PMOS我们发现在栅极的地方有一个小圈,这表示当输入是低电压的时候才导通。除此之外,数字MOS忽略了漏极栅极之分。

或非门NOR电路

首先我们考虑一个CMOS的或非门电路:

Y = A + B ‾ = A ‾   B ‾ Y = \overline{A + B} = \overline{A} \ \overline{B} Y=A+B=A B

等式中间给出了PDN实现,等式右边给出了PUN实现,将两个实现组合在一起,我们得到:

或非门电路

与非门NAND电路

与非门电路可以表示为:

Y = A B ‾ = A ‾ + B ‾ Y = \overline{AB} = \overline{A} + \overline{B} Y=AB=A+B

等式中间给出了PDN实现,等式右边给出了PUN实现,将两个实现组合在一起,我们得到:

与非门电路

一个更复杂的门电路

考虑下面的组合布尔表达式:

Y = A ( B + C D ) ‾ Y = \overline{A(B+CD)} Y=A(B+CD)

因为PDN是整体反相,因此可以直接给出PDN实现,对于PUN则是变量反相,可以通过德·摩根定律展开表达式:

Y = A ‾ + B ‾ ( C ‾ + D ‾ ) Y = \overline{A} + \overline{B}(\overline{C} + \overline{D}) Y=A+B(C+D)

给出实现:

复杂的逻辑组合
需要注意的是,有时候并不总是可以通过对偶律来获得两个网络的实现。对于以上情况,需要更加复杂的布尔逻辑推导。

异或门XOR电路

另一个重要的逻辑电路是异或门电路,表示为:

Y = A B ‾ + A ‾ B Y = A \overline{B} + \overline{A}B Y=AB+AB

我们观察到给出 Y Y Y 我们可以先考虑PUN,但不幸的是,表达式不是由每个变量的反相值构成,因此我们需要额外的反相器,如图的PUN:

PUN
如上图,左边的 A ‾ \overline{A} A 和右边的 B ‾ \overline{B} B 都需要先反相才能输入到PUN中,因此需要额外的两个反相器,对于PDN,通过对偶变换可以得到:

Y ‾ = A B + A ‾   B ‾ \overline{Y} = AB + \overline{A} \ \overline{B} Y=AB+A B

对应的PDN实现为:

PDN
同样需要两个额外的反相器。则此异或门电路总共需要12个晶体管。

有趣的是,上图中两个PDN和PUN网络不是对偶网络,实际上,PDN和PUN网络对偶并不是必要条件。

总结

  1. PDN网络可以通过关于非互补变量的 Y ‾ \overline{Y} Y 的表达式得到,若表达式中存在互补变量,需要额外的输入反相器。
  2. PUN网络可以通过关于互补变量的 Y Y Y 的表达式得到,若表达式中存在非互补变量,需要额外的输入反相器。
  3. PDN网络可以将PUD网络进行对偶得到,反之亦然。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Educational Codeforces Round 144 (Rated for Div. 2)(A~C)

A. Typical Interview Problem从1开始,遇到3的倍数就在字符串后面加F,遇到5的倍数就在字符串后面加B,若遇到3和5的倍数,就加入FB,这样可以写一个无限长的字符串,给出一个长度最多为10的字符串,判…

CLion+Opencv+QT开发相关

一、QT安装和配置其实我并没有直接在Qt上开发,下载Qt而是因为:CLion可以通过Qt的MinGW作为Toolset,并且可以将Qt creator作为external tool;在进行Opencv的编译安装中可以用Qt自带的MinGW进行编译和安装,不用另外下载M…

C++类和对象:初始化列表、static成员和友元

目录 一. 初始化列表 1.1 对象实例化时成员变量的创建及初始化 1.2 初始化列表 1.3 使用初始化列表和在函数体内初始化成员变量的效率比较 1.4 成员变量的初始化顺序 1.5 explicit关键字 二. static成员 2.1 static属性的成员变量 2.2 static属性的成员函数 三. 友元 …

废气处理设备远程监控

当今工业迅速的发展,工业带给人们的经济效益显著,而同时污染问题也备受关注。国家环保标准对排放至大气的废气指标提出了更高的要求。面临着环保压力,企业为走可持续发展之路,为维护员工利益、改善工作环境及周边环境不受影响&…

一、Sping框架引入

OCP开闭原则 什么是OCP? OCP是软件七大开发原则当中最基本的一个原则:开闭原则 对什么开?对扩展开放。 对什么闭?对修改关闭。OCP原则是最核心的,最基本的,其他的六个原则都是为这个原则服务的。OCP开闭原则…

计算机行业回暖?看网友怎么说?

就业寒潮之下,去年的应届生们可谓哀嚎一片,不少人晒出自己的0offer秋招战绩。 就连过去无往不利的计算机行业,亦不例外。但今年开始,计算机行业逐渐有了回暖的迹象和讨论。 陆续有不少之前哭诉收获惨淡的计算机专业同学&#x…

防静电和浪涌TVS layout设计要点

电子产品精密化刚看过了CES2023,雷卯的外贸伙伴们看了最新的AR,VR,5G产品,新的电子产品更智能、更复杂,嵌入了脆弱和敏感的集成电路。这些设备的环境往往很恶劣,产生高水平静电和快速瞬态浪涌。这些ESD事件可能会干扰设备&#xf…

IIS之web服务器的安装、部署以及使用教程(图文详细版)

WEB服务器的部署 打开虚拟机后查看已经开放的端口,可以看到没有TCP 80、TCP 443,说明HTTP服务端口没有打开 打开我的电脑—双击CD驱动器 选择安装可选的Windows组件 选择应用程序服务器—打开Internet信息服务—选择万维网服务和FTP服务 一路确…

uniapp-首页配置

为了获取到后台服务器发来的数据,需要配置相应的网络地址。位置在main.js入口文件中。 import { $http } from escook/request-miniprogramuni.$http $http // 配置请求根路径 $http.baseUrl https://api-hmugo-web.itheima.net// 请求开始之前做一些事情 $http.…

Spring-Xml配置

一、Spring 简介 1.简介 文档下载地址:Index of /spring-framework/docs 1.简介 Spring framework 是 Spring 基础框架 学习Spring 家族产品 Spring framework SpringBoot SpringCloud Spring 能用来做什么 开发 WEB 项目 微服务 分布式系统 Spring framew…

云服务HCIE变题当天一把过!分享下学习备考和考试经验

大家好,我是誉天云服务学员刘同学。感谢在誉天的学习,让我在临考变题的情况下通过了云服务HCIE考试;也感谢誉天给我这次机会分享出学习备考和考试的经验。 算起来,我和誉天也是老朋友了:一开始是跟着邹老师学习云计算、…

【JAVA】线程和进程

🏆今日学习目标:线程和进程 😃创作者:颜颜yan_ ✨个人主页:颜颜yan_的个人主页 ⏰本期期数:第三期 🎉专栏系列:JAVA 线程和进程前言一、进程与线程1.进程2.线程二、线程的创建2.1 继…

Pytest自动化框架~权威教程03-原有TestSuite的执行方法

前言TestSuite一直是unittest的灵活与精髓之处, 在繁多的测试用例中, 可以任意挑选和组合各种用例集, 比如smoke用例集, level1用例集, webtest用例集, bug回归用例集等等, 当然这些TestSuite需要我们提前定义好, 并把用例加载进去.Pytest采取的是完全不同的用例组织和运行方式…

有些笑话,外行人根本看不懂,只有程序员看了会狂笑不止

我一直都觉得我们写代码的程序员与众不同,就连笑话都跟别人不一样。 如果让外行人来看我们一些我们觉得好笑的东西,他们根本不知道笑点在哪里。 不信你来瞧瞧,但凡有看不懂的地方,说明你的道行还不够深。 1.大多数人开始学编程时…

论文解读14——XGBoost:A Scalable Tree Boosting System

目录1、文章贡献2、算法推导3、寻找分裂点算法3.1 精确贪心算法3.2 近似算法4、稀疏感知算法5、特征维度的并行化6、XGBoost VS GBDT7、XGBoost局限半年前看了这篇XGBoost的原文,网上解读很多,于是迟迟没有将其中的精髓记录下来,准备重点记一…

从工厂打螺丝到月薪18k测试工程师,我该满足吗?

以前我比较喜欢小米那句“永远相信美好的事情即将发生”,后来发现如果不努力不可能有美好的事情发生!01高中毕业进厂5年,创业经商多次战败,为了生计辗转奔波高中毕业后我就进了工厂,第一份工作是做模具加工。从500元一…

1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

文本抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等 2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等…

网络资源面经2

文章目录Kafka 原理,数据怎么平分到消费者生产者分区消费者分区Flume HDFS Sink 小文件处理Flink 与 Spark Streaming 的差异,具体效果Spark 背压机制具体实现原理Yarn 调度策略Spark Streaming消费方式及区别Zookeeper 怎么避免脑裂,什么是脑…

用Python自己写一个分词器,python实现分词功能,隐马尔科夫模型预测问题之维特比算法(Viterbi Algorithm)的Python实现

☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 代码实现 (3)HMM学习问题:Baum-Welch算法 代码实现&#xff08…