TTL反相器、OC门、TS门、推挽输出、开漏输出

article/2025/10/28 20:46:20

TTL反相器

这是一个TTL反相器,这是经过了很多工程师多种设计最终沉淀出来的电路,这个电路是比较成熟的。我们只需要对这个电路进行解析即可,不需要再去研究当初是如何设计出来的。

学过CMOS应该知道,右侧的输出级其实也是个推挽输出,因为长得像图腾柱,因此也有人称呼它为图腾柱。推挽输出的好处就是T4和T5是独立的,要么T4导通T5截止、要么T4截止T5导通。

对于输入级,比较简单,就是从T1的发射极传入,往后传。

对于倒相级,叫这个名字,是跟集电极和发射极电压的变化有关系的。T2集电极电压升高时,发射极电压降低。发射极电压升高,集电极电压就降低,这是一个相反的过程,所以叫做倒相级。

通常情况下,我们讲数字电路的时候用的是一个定性的说法,就是高低电平。而对于这个电路来说,我们需要用定量的方法来分析一下。

我们假设:

  • Vcc=5V
  • Vpn=0.7V
  • Vce=0.1V
  • ViH=3.4V
  • ViL=0.2V

当A输入0.2V时,因为T1接了4k电阻拉到了Vcc,T1的PN结就被打通了,因为Vpn=0.7V,所以T1的基极会被钳位在0.9V(0.2+0.7)。

T1的集电极就是T2的基极。要了解这个点的电压,我们要知道T1的工作状态。T1的集电极电阻恰好等于1.6k加上一个反向PN结的阻值。这个节电阻会非常大。有这么大的电阻,饱和电流就会非常低,就非常容易进入饱和状态。T1进入饱和之后,Vce之间的压差通常在0.1V左右,所以此时T1的集电极为0.3V。

T2的基极如果是0.3V,那么T2是截止的状态,如果T2截止,那么T4基极的电位就是高电平。那么T4导通。

那么电流就从R4、T4、D2、Y流出来了。

当输入3.4V时,R1被上拉到5V,T1的PN结还是能打通,打通的话,T1集电极的电压应该是4.1V(3.4+0.7),T1的等效电阻还是非常大,进入深度饱和,那么T2的基极就是3.5V(3.4+0.1),如果是3.5V的话,T2的管子就可以导通了,如果T2基极是3.5V的话,T2就可以导通,T2的E极应有2.8V,那么T5的管子也就导通了。

现在开始倒推,如果T5导通,BE之间被锁定在0.7V,所以T5的基极现在是0.7V。如果T5的基极是0.7V,T2的基极就不会是3.5V,它也被钳位了,就会变成1.4V。因为T1是一个NPN的半导体,那么基极就是一个P型半导体,集电极就是一个N型半导体。P型半导体有4.1V,N型半导体有1.4V,相当于一个二极管又被打通了。那么这个4.1V也无法保持,它会掉到2.1V。

此时T1发射极是3.4V,基极是2.1V,集电极是1.4V。

有两个需要注意的地方,首先是T1:因为基极是P型半导体,集电极是N型半导体,PN结被打通,那么1.4V和4.1V的压差保持不住,一定会往下掉。只要这个二极管导通,那么压降就是固定的,就会钳位在2.1V。

还有就是T2的集电极:如果T2达到深度饱和,那么T2的集电极应该是0.8V左右,如果是0.7V以上,按道理T4的BE之间就能导通,但我这里多了一个D2,如果D2也想要导通的话,那么T2就垫起来一个0.7V。也就是说,T4的基极要达到1.4V,才能让T4的CE导通。而现在0.8V,T4是没办法导通的。

T5和T2导通时,T4就截止了。因为T5是导通的状态,所以此时Y输出的就是接地,接近于0的信号。由于D2的存在,会让T4可靠地截止。如果没有D2,那么T4也会导通,T4,T5都导通的话,Y电压就不固定了。

输入级的D1的作用是保护T1这跟管子。如果电压扰动的话,A点电压可能出现负值,流经T1的电流会非常大。为了保护T1管子,我们接入了D1这个二极管。如果A点电压太低的话,尤其是到了-0.7V以下。D1这个管子会有电流从下往上流过去,就可以保护T1的管子。

OC门

这个TTL电路存在一些局限:

  • 高电平电压不够高:R4、T4、D3都会分压。
  • 不能直接线与:电流太大,会对三极管造成损伤。

为了解决第两个问题,我们将上面的电路和下面的电路的反相器都给去掉一部分,此时的电路只能输出低电平,我们需要再额外给它挂一个电阻和Vcc',Vcc'就可以给它提供高电平了。

在上面的电路中,Vcc和Vcc'是独立的,我们不需要Vcc提供高电平,Vcc'可以是5V,也可以更高。通过这样一个改变方式,我们甚至可以用TTL电路来推动CMOS电路,因为TTL和CMOS电压是不匹配的,而我们现在电压是可以外置的,我们可以让Vcc'高一点,也可以让它低一点,就看我们后面电路的需要了。这样,第一个问题也就被解决了。

这样的电路结构有一个专有名词,叫OC门。OC就是Open Collector集电极开路。与OC对应的还有一个OD,也就是Open Drain漏极开路,功能与OC门类似。

OC门指的是框起来的这一部分。

OC门只是习惯上的叫法,如果搜索Open Collector Gate,基本上是搜不到的。因为OC门对应的是Open Collector Output,就是OC输出。虽然叫OC门,但不属于门电路,和与或非门不是一个东西。

在此灵感基础上,飞利浦公司发明了I2C协议:

TS门

上一小节出现了线与,这一节说一下线或的接法。

必须使用OC门和外接电压来实现线与。线或的实现比较简单粗暴。只要加两个二极管,保证1来了不能从另一条路跑回去就可以。

如果使用TTL电路,左边的应使用OC门搭建,但右边的线或不能使用OC门,因为TTL电路输出时只有三点几伏,又要过一个二极管,可能只剩二点几伏。尽管仍在TTL电路对高压的识别范围内,但还是很少有人会用到这种接法。

对于上一节末尾提到的I2C总线协议。很多个从机仅仅是物理上连接在一起的,主机很难判断信息是从哪台设备发过来的,如果此时有一个开关,可以指定某台设备发送信息,其他的设备都不能开,就可以解决这个问题。

我们知道,多发射极之间是一个与门的关系,我们通过新增加的橙线来控制设备的输出状态。只有当橙线输入为0时,理想状态是设备将不起作用。而事实是输入0时,T4是可以导通的,Y将输出1。我们再加一部分电路,就可以使T4停止导通。

此时T1的集电极将是0,T4和T5都处于截止状态,Y既不是1也不是0,处于一个断路的状态,这就起到了一个开关的作用。

此时控制端输入0,能使设备停止工作,但如果将0改为1,T4和T5都将导通,如果外接电压过大,还有可能烧坏T2,解决方法就是加一个二极管,在使能信号为1时不去干扰T4。

EN是使能端,通常传递取反后的信号,传入时需要再取一次反。

GPIO输出模式

GPIO(英语:General-purpose input/output),通用型之输入输出的简称。

这是一个GPIO配置为输出时的内部示意图,我们要关注的其实就是这两个MOS管的开关状态。排列组合一下,一共就只有四种状态:

  • 上面的MOS管打开,下面的MOS管关闭时,输出高电平。
  • 上面的MOS管关闭,下面的MOS管打开时,输出低电平。
  • 两个MOS管都关闭时,输出处于一个浮空的状态,此时他对其他点的电阻时无穷大的,所以这个状态也被称为高阻态。
  • 当两个MOS管都打开时,电源直接对地短路,MOS管就被烧毁了。所以这种个状态并不存在。

当GPIO输出高电平时,电流流出去,给右边的MOS管的栅极充电,这个过程被称为“推”,把电流推出去。

当GPIO输出低电平时,电流流进来,给右边的MOS管的栅极放电,这个过程被称为“挽”,把电流挽回来。

所以所谓的推挽,其实就是描述了MOS管输出高低电平时电流的一个动作而已

我们再把下面两种状态拿出来组成一个组合。在这个组合里,上面的MOS管始终是关闭的,所以可以认为它就是不存在的,那么这个时候,下面的MOS管的漏极就等于啥也没接,处于一个开路状态,所以这个模式被称为开漏模式。

如果我们想用这个GPIO去控制一个芯片的引脚,但是这个GPIO输出的是5V,而后面的芯片的enable只支持3.3V输入。如果用推挽的话

复用输出

如果我们要点亮一颗LED灯,只需要单片机内部输出高电平即可,那么单片机内部如何控制引脚输出高电平呢?

右侧的两个二极管只是起保护作用,为了便于理解,我们暂时不理它。

它一共有4种输出模式:

  • 推挽输出
  • 开漏输出
  • 复用推挽输出
  • 复用开漏输出

推挽输出

如果它处于推挽输出模式,则可以控制PMOS和NMOS,如果要输出高电平,则PMOS导通、NMOS不导通;如果要输出低电平,则NMOS导通、PMOS不导通。

开漏输出

当处于开漏输出时,PMOS永远都是截止的,当NMOS导通时,输出低电平。当NMOS截止时,它输出的是高阻态。

这是因为这两个晶体管都处于截止状态,它的电阻可以看作无穷大,此时它的引脚就相当于连着一个无穷大的电阻,所以此时对外呈现的是高阻态。它正常工作时必须接一个上拉电阻,一般工作在电平不匹配的场合。比如STM32输出的是3.3V,如果要输出5V,就要接一个5V的上拉电阻。

当NMOS截止时,它就会输出5V高电平。这是因为内部阻抗无穷大,而这个上拉电阻阻值有限,所以引脚上输出的就接近5V。它还具有“线与”的特性。比如多个开漏输出引脚连接在一起,只有他们都输出高电平,也就是开漏输出的高阻态,最终才能输出高电平。但凡有一个开漏输出低电平,所有的引脚电压都被这一个拉低了

因为MOS管的漏极相当于开路,所以被称作“开漏输出”,与OC门的命名方式相同:OC门是集电极开路。

复用推挽/开漏输出

我们的推挽输出和开漏输出通过的是上面的那条线。我们直接对这跟线编程,就可以控制它输出高低电平了。

而复用推挽输出和复用开漏输出用的是下面那条线。它连接的是单片机和内部外设,比如PWM、USART、I2C,因为这些通信的频率很高,每秒钟电平变化上万次。如果使用推挽或者开漏输出的话,那我们就需要通过对上面的引脚编程,来控制它的输出。而如果我们使用它的复用功能,它的这些模块直接控制它的引脚输出,方便了我们的编程。

具体看哪一个工作模式,要看它的工作方式。

如果是I2C这种需要线与的场合,就需要用到单片机的复用开漏输出,而PWM、串口通讯这些,则需要用到它的复用推挽输出模式。


http://chatgpt.dhexx.cn/article/1hsZjeSa.shtml

相关文章

理解OC门

注:本文转载自新浪博客。 什么是集电极开路(OC)? 我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相…

OC门

reference: http://www.cnblogs.com/xiangxiangyuan/p/3787831.html (其他总结也精彩) OC(open collector)门,又称 集电极开路门。 OD门(Open Drain, 漏极开路门,对场效应管而言)。实际使用中&a…

Golang 切片

文章目录 和数组的区别声明空切片可以和nil相等切片长度,容量切片增加元素切片删除元素切片排序切片截取范围多维切片 和数组的区别 1.数组是定长,切片不是 2.数组是值传递,切片不是 声明 1.通过var声明 2.简短声明 package mainimport "fmt"func mai…

Java 各种 切片 操作(Array String List)

在python的 [xx:xx] 切片操作中快乐之后,返回Java变成发现这个习惯保持保持下去了!,可惜JDK并不认账反手给我爆了两个红JDK:这是别人的香水味! 所以这次总结一下在Java中各种数据类型的切片操作如何实现&#x…

python切片操作方法小总结

文章参考自:link. python切片的详细总结 最近学习python切片,时而醍醐灌顶时而云里雾里,今天终于弄清楚了 python切片 里面自己经常疑惑的地方,记录一下,方便以后查看。 一、切片的2种索引方向 如果掌握切片方法&a…

Python中numpy数组切片

参考Python中numpy数组切片 - 云社区 - 腾讯云 1、基本概念 Python中符合切片并且常用的有:列表,字符串,元组。 下面那列表来说明,其他的也是一样的。 格式:[开头:结束:步长] 开头&#xff1a…

python切片

前言 所谓切片就是在某个数据里提取需要的部分,提取到的是某个索引下的值,或者索引区间的值 一、认识切片 ① 支持切片操作的数据类型有: list(列表),tuple(元祖),st…

字符串的切片操作

字符串的切片操作: 1.知识点: str[start: end:方向和步长],没有方向和步长默认正向。 方向: 1 表示从左向右 0,1,2,3,4,5。。。 -1 表示从右向左 注意数值的顺序:[5:0]正向不行,反向行 [0:5]正向…

25. Python 字符串的切片方法

25. Python 字符串的切片方法 文章目录 25. Python 字符串的切片方法1. 索引取值知识回顾2. 什么是切片3. 切片的语法4. 切片示例4.1 步长为1的切片取值4.2 步长为2的切片取值4.3 省略开始索引4.4 省略结束索引4.5 步长为-2 5. 课堂练习6. 总结 1. 索引取值知识回顾 【索引取值…

Go语言切片详解

切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型(因此更类似于 C/C 中的数组类型,或者 Python 中的 list 类型),这个片段可以是整个数组,也可以是由起始和终止索引…

字符串的切片1

切片的基本语法格式:[头下标:尾下标:步长] 1.字符串切片可以对字符串进行截取操作,获取一段子串。 2.[头下标:尾下标]遵循前闭后开规则(头标可取到,尾标取不到)。 3.步长可省略&a…

Python3的切片

Python3的切片非常灵活,可以很方便地对有序序列进行切片操作,代码简单易用。 大家都知道,我们可以直接使用索引来访问序列中的元素,同时索引可分为正向和负向两种,而切片也会用到索引,下面放上一个图&…

Python列表切片详解([][:][::])

Python切片是list的一项基本的功能,最近看到了一个程序,里面有这样一句类似的代码: a list[::10] 不太明白两个冒号的意思就上网百度,发现大多数人写的博客中都没有提到这一个用法,因此自己翻阅《Python核心编程中文…

Numpy 数组切片

一、列表切片(一维数组) 1.1、切片原理 列表切片是从原始列表中提取列表的一部分的过程。在列表切片中,我们将根据所需内容(如,从何处开始,结束以及增量进行切片)剪切列表。Python中符合序列的…

python 字符串切片

1. 字符串的索引 字符串的索引从前往后是从0开始计数,从后往前是从-1开始依次 -1 2.字符串切片方法 语法格式 str[beginIndex:endIndex:step]取值结果: [begin,end) / 含头不含尾 步长不设置时默认为1 3.切片 ① 取x-y位置的字符串: 从中间开始,中间…

Python 列表切片操作

Python列表切片 切片是Python序列的重要操作之一,适用于列表、元组、字符串、range对象等。可以用切片截取列表中任何部分来获得一个新的列表,也可以进行元素的增、删、改。在Python中,序列的序号即可以从左向右以0开始依次增加,…

Python 列表切片详解

一、列表切片 切指–将某些东西切成小块。列表切片是从原始列表中提取列表的一部分的过程。在列表切片中,我们将根据所需内容(如,从何处开始,结束以及增量进行切片)剪切列表。 Python中符合序列的有序序列都支持切片&a…

详解Python中的切片(一看就懂版)

前言 在我们使用Python的时候,经常会听到“切片”这个词!那什么是切片呢?切片是对序列数据(列表、元组、字符串),根据下标索引,对一定范围内数据的获取。 简单来说就是,通过下标索引…

图片切片分割

在处理图片时,若加载一个大的图像,它加载所需要的时间一般会很长。 普通解决办法:压缩图片。 压缩时需要注意以下几个问题: 1、实际文件的大小; 2、分辨率; 3、压缩; 一般来说,压缩图片会使图像质量受…

python中[-1] [:-1] [::-1] [n::-1] 切片的用法

首先简明概要说明用法,然后再用实际例子阐述。 用法概述 [-1] [:-1] [::-1] [n::-1]都是python中切片的使用方法。 [-1]:获取最后一个元素,类似于matlab中的end;[:-1]:除了最后一个元素,获取其他所有的元…