首页 > 其他分享 >TTL反相器、OC门、TS门、推挽输出、开漏输出

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

时间:2023-04-16 10:33:14浏览次数:38  
标签:输出 推挽 T2 T4 导通 T1 反相器 集电极


TTL反相器

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_单片机

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

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

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

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

我们假设:

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_02

当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流出来了。

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

当输入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。

TTL反相器、OC门、TS门、推挽输出、开漏输出_复用_04

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_05

有两个需要注意的地方,首先是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的管子。

TTL反相器、OC门、TS门、推挽输出、开漏输出_嵌入式硬件_06

OC门

TTL反相器、OC门、TS门、推挽输出、开漏输出_复用_07

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_单片机_08

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_09

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

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_单片机_10

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

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

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

TS门

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_嵌入式硬件_12

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_13

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

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

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_嵌入式硬件_15

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

GPIO输出模式

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

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_嵌入式硬件_16

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

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

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

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_复用_18

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

复用输出

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_19

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

它一共有4种输出模式:

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

推挽输出

TTL反相器、OC门、TS门、推挽输出、开漏输出_复用_20

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

开漏输出

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_嵌入式硬件_21

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

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

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_23

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_物联网_24

复用推挽/开漏输出

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_嵌入式硬件_25

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

TTL反相器、OC门、TS门、推挽输出、开漏输出_单片机_26

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

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

标签:输出,推挽,T2,T4,导通,T1,反相器,集电极
From: https://blog.51cto.com/wushf/6193348

相关文章

  • php输出文言文句 一言接口定义
    随机本地词典内容,随机一行文本输出<?php//获取句子文件的绝对路径$file=file($yiyanPath."yiyan.txt");//随机读取一行$arr=mt_rand(0,count($file)-1);$content=trim($file[$arr]);echo$content;?>......
  • 【Visual Leak Detector】VS 中 VLD 输出解析
    说明使用VLD内存泄漏检测工具辅助开发时整理的学习笔记。同系列文章目录可见《内存泄漏检测工具》目录目录说明1.使用方式2.输出报告1.使用方式在VS中使用VLD的方法可以查看另外一篇博客:在VS2015中使用VLD。2.输出报告在VS中使用VLD时的输出报告,与在QT......
  • CIT 5930 文件I/O输入输出
    CIT5930|Assignment:C-FileI/O–MakingtheLC4Assembler|1SettingupCodioandMakefileforthisHW:1)OpentheCodioassignmentviaCanvas2)FromtheCodioFile-Treeclickon:assembler.c3)Makefilemustimplementthese3targets–all,clean,cl......
  • Python入门基础实例讲解——两个数字比大小,并输出最大值
    嗨害大家好鸭!我是小熊猫~今天也是给大家带来干货的一天~pycharm永久激活码可以从这里找到我:输出:print()print()方法用于打印输出,最常见的一个函数。比较运算符>:大于,如果运算符前面的值大于后面的值,则返回True;否则返回False<:小于,如果运算符前面的值小于后面的值,则返回True;否......
  • m基于matlab的图像方块编码仿真,输出编码后PSNR图像质量指标
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要BTC编码又称方块编码,是一种有效,快速,简单的有损灰度图像数字压缩技术,具有性能高,信道容错力高等特点,在实时图像传输方面具有很高的应用价值,由美国普渡大学的Mitchell和Delphi教授提出.使用Mat-lab实现BTC编码......
  • 解决Spring Boot jar包启动日志输出中文乱码
    在使用slf4j做日志输出时,打jar包运行后,会出现中文乱码问题,只需要将logback-spring.xml配置文件中的<charset>标签注释即可,如图:  解释: 如果不配置logback-spring.xml或resource文件夹下没有logback-spring.xml文件,则springboot使用默认的配置,那么部署jar包,java-jarxxx.......
  • m基于matlab的图像方块编码仿真,输出编码后PSNR图像质量指标
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       BTC编码又称方块编码,是一种有效,快速,简单的有损灰度图像数字压缩技术,具有性能高,信道容错力高等特点,在实时图像传输方面具有很高的应用价值,由美国普渡大学的Mitchell和Delphi教授提......
  • Java接收到MySQL数据库查询出的date类型的数据输出格式不对
    问题查询某条数据,里面有个effective_time字段,数据库里保存的该条数据的effective_time的值是2023-04-13,但是使用postman调用接口,返回的确是2023-04-12T16:00:00.000+00:00,不仅格式不对,而且时间还慢了一天。但是在application.yml中配置数据库连接的时候,确实指定了时区......
  • 在终端命令行中把输出复制到剪贴板的命令 All In One
    在终端命令行中把输出复制到剪贴板的命令AllInOneusecommandcopyfromtheTerminalLinux系统Debian/Ubuntu/RaspberryPiOS#RaspberryPi$grepshutdown|???https://www.raspberrypi.com/documentation/computers/os.htmlhttps://www.debian.org/m......
  • log4jnet中不输出报错的行号
    log4jnet中不输出报错的行号,后来发现原因是因为自己写了一个帮助类,报错的行号一直是该类的行号  需要把原始的Exception的参数传递过来就可以了,要不然一直都是帮助类的行号......