上下拉电阻会增强驱动能力吗?

最近看到一个关于上下拉电阻的问题,发现不少人认为上下拉电阻能够增强驱动能力。随后跟几个朋友讨论了一下,大家一致认为不存在上下拉电阻增强驱动能力这回事,因为除了OC输出这类特殊结构外,上下拉电阻就是负载,只会减弱驱动力。

但很多经验肯定不是空穴来风,秉承工程师的钻研精神,我就试着找找这种说法的来源,问题本身很简单,思考的过程比较有趣。

 二极管逻辑 

今天已经很难看到二极管逻辑电路了,其实用性也不算高,不过因为电路简单,非常适合用来理解基本概念。

一个最简单的二极管与门如下图。与门实现逻辑与操作Y=A&B,即A或者B任意为L的时候,输出Y为L,只有当A和B都为H时,Y才为H。

图片

    上图,基本二极管与门

假设二极管无导通压降,在这个电路中,二极管充当了单向开关的角色,当A和B等于VDD时,两根二极管反向截至,Y被电阻上拉到VDD,这是Y就是H;当A或者B任意一端为GND时,二极管导通,因为二极管导通时电阻很小,远小于上拉电阻,所以Y被拉到了GND,即逻辑L。

至于二极管或门,只要把二极管转一下,再把电阻从拉到VDD改成拉到GND就可以了,非常简单。

图片

    上图,基本二极管或门

 基本原理 

你看,在这么原始的逻辑电路中就已经出现了上下拉电阻,这里面的原理也非常简单粗暴:利用开关的闭合(电阻为0)和开启(电阻无穷大)的特性,配合电阻,就可以轻松实现两种电压的输出。这种电路还有一个变形,就是用恒流源取代电阻,一方面集成电路工艺,恒流源比电阻更容易获得,另一方面恒流源的驱动能力也更好。根据开关和电阻(或恒流源)的相对位置,有以下基本电路:即开关接到GND(L)或开关接到VDD(H)。

图片

上图,几种开关电路接法。

这几种电路都是由开关的闭合或开启决定了VOUT是VDD还是GND。开关的相对位置不同,还决定了电路在某一状态下的驱动能力:开关的导通电阻为0,可视为驱动力无穷大,可是电阻(或恒流源)的驱动能力呢,只有VDD/R(或者恒流I),这就导致了电路在输出H或L的时候驱动能力不对称(换一个说法,就是电路在输出H或者L的时候,输出阻抗不一样)。

除了驱动能力的问题,这种单开关加电阻的模式还会带来静态功耗的问题,因为只要开关闭合,不管外部有没有负载,都会消耗电流。

既然开关的驱动力比电阻强,那么能不能把电阻也换成开关?恭喜你,发现了现代CMOS逻辑电路的基本单元:俩互补的开关。这样不管输出H还是输出L,驱动能力都是无穷大!好的,这时候上下拉电阻就不见了。

这样两个开关的电路还多出来了一种状态:当两个开关都开启时,VOUT即不是VDD也不是GND,而是一个悬空的状态(即高阻态,Hi-Z),这时候外部给什么信号它就是什么状态。这样又出现了一个新的逻辑门大类:三态逻辑门。

图片

    上图,互补开关电路。

 上下拉电阻增强驱动能力? 

很多经验不是空穴来风,只是在流传的过程中丢失了重要的前提条件。上一节也看到了有一些逻辑器件,他们输出高和输出低时的驱动能力差别很大。

TTL(70xx、74Fxx、74Sxx、74LSxx等)家族的器件就属于这种类型,如下图是7404(TTL反相器)的原理图,由于非对称的输出级设计,输出为高时驱动能力只有0.4mA,而输出低时居然能输出16mA的电流(手册中的输出电流不是晶体管或者电路本身的极限,而是超过这个电流以后,输出的电压可能无法满足逻辑族的要求)。

图片

    上图,7404的简化电路。

这个时候在输出端口外加一个上拉电阻,就可等效以增强端口在输出H时的驱动能力,但代价是端口输出L时,驱动能力相应地减弱,不过这时候芯片输出能力足够强,用这点代价来换取另一个状态下驱动能力的增强,还是划算。

图片

    上图,带上拉电阻的7404。

下表是仿真有无上拉电阻时,负载电流与输出电压的关系,可以看到上拉电阻确实增强了在一定负载下的输出电压,不过当负载电流较大时效果并不明显,而且边际效应也很显著,当上拉电阻减小到一定程度以后,增强效果也不太显著,而且会大大增加静态功耗。

图片

    上表,带不同上拉电阻的7404输出电压与负载电流的关系。

既然非对称的输出级有这样的问题,那为啥不能把这个驱动器设计成上下对称的呢?

一方面,如果要设计成上下对称的结构,上管需要用P管,而当时的工艺限制,P管各方面性能都不如N管,速度、功耗和成本都不是很划算,所以能看到很多上年代的芯片,内部几乎没有P管(包括MOS工艺的器件也是)。

另一方面,TTL输入结构的特点,输入为H时所需电流很小,而输入为L所需的输入电流很大,这样对输出L时的驱动能力要求就很高,反而对输出H时没有驱动能力要求(TTL输入悬空时等效为H)。

但TTL的这种特点,又会带来一个比较麻烦的问题:下拉电阻值需要很大才能满足要求,而下拉电阻太大则会导致输出高时负载太重以至于无法达到规定电压,所以TTL要尽量避免使用下拉。

下图是仿真结果,因为这是一个反相器,所以下拉时输出高是所期望的,而下拉电阻超过1.8kΩ时已经无法满足TTL定义的最低高电平标准了;而上拉时,就算上拉电阻达到20kΩ,也丝毫不影响输出。

图片

    上表,TTL上下拉电阻取值与输出电压的关系。

 CMOS电路 

相信现在已经没多少人会在设计时选用TTL家族的器件了,可能多数人都没接触过这类器件,最常用的还是CMOS家族(HC、HCT、LVC、CD4000等)。

CMOS家族的东西就比较简单粗暴,上下对称的结构,上下管驱动能力也基本一致,这个时候输出的上下拉电阻对增强驱动能力几乎没有帮助不说,还加重了负载,属于得不偿失(其实多数情况下是无关痛痒)。

下图是基本的CMOS反相器,只需要一对互补的MOS管即可实现(现实中的CMOS反相器一般是三对这种管子级联出来的,为了提高开环增益)。

图片

但是CMOS器件的输入悬空时,不会被拉向任何一个方向,处于一种浮空的状态,这样会造成输出紊乱,不是我们所希望的结果,这种情况下需要在输入端接入上拉或者下拉电阻给电路提供一个确定的状态。一般可拔插的对外接口(如JTAG)需要在I/O上加上上下拉电阻,有三态的总线视工作情况也可能需要上下拉,不过大多数的CMOS电路不需要额外的上下拉电阻。

图片

    上图,CMOS器件在使用是一般要加上下来避免输入悬空。

因为CMOS输入是电压控制型,输入阻抗很高,所以上下拉电阻的值可以很大,理论上用MΩ级别的电阻都没问题。

不过理论归理论,工程师得认清现实。现实的CMOS输入结构,为了保护MOS管的栅极,会在栅极上加入ESD二极管,二极管反向偏置的时候是有漏电流的,还会随温度的升高还会指数增长!所以CMOS电路的上下拉电阻一般在100kΩ以下,一些制程比较先进的CPU,I/O口的漏电流或者上下拉电流较大,上下拉电阻一般取在几kΩ级别。所以设计上下拉电阻前一定要仔细阅读芯片手册,查查I/O的输入电流,看看取什么样的电阻值才合理。

图片

    上图,CMOS输入有ESD二极管。

 其他需要上下拉的情况 

开集(Open-Collector)和开漏(Open-Drain)的输出结构往往也需要加上拉电阻:理清推挽、开漏、OC、OD的特点与应用。OC和OD输出结构只有下管,所以只能输出L和高阻(Hi-Z)两种状态,而高阻态是难以被电路识别的,所以需要合适的上拉电阻把高阻态转变为高态。

图片

上图,OC(左)和OD(右)输出结构。

虽然OC和OD输出结构看起来很复古,使用时也需要外接电阻有点麻烦,但这种结构最大的好处就是可以做线与,也就是多个OC或者OD可以接到一起,只要其中一个输出L,总线就是L,这在多外设中断和电源时序控制方面很常用。

图片

上图,OC/OD的线与接法。

I2C也是OC/OD结构,这样很轻松就能在一条数据线上双向传输数据而不需要额外的方向控制信号,而CAN总线则巧妙地利用线与特性来实现总线仲裁。

在处理OC或者OD电路的时候,一定要注意评估总线负载电容、上拉电阻与所需速度的关系,负载电容越大,速度越快,所需的上拉电阻要越小:通俗理解STM32中的上/下拉电阻。比如I2C总线,如果只挂载了一片从设备,使用4.75kΩ的上拉电阻可能就满足400kHz的总线要求了,但如果挂了10片从设备呢,1kΩ的上拉电阻也不一定能搞定100kHz的总线速度,这种时候可能得考虑总线负载隔离或者降低总线速度了。

下图是在200pF负载电容情况下,上拉电阻为500Ω、1kΩ、2kΩ、4.75kΩ和10kΩ下的波形,可以看到上拉电阻越大,对电容充电速度越慢,所以上升沿也越慢,当上拉电阻不合适时上升沿已经严重变形,无法保证正常工作。

图片

    上图,OC电路不同上拉电阻对波形的影响。

逻辑反相器可以当成放大器来用!不是开玩笑,我还真见过产品上用这种骚操作的,只需要把反相器接成反向放大器就可以了,不过逻辑器件当线性器件用,性能嘛...

图片

    上图,逻辑反相器(非门)当成线性放大器用。

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

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

相关文章

RT-Thread Studio文件消失不见或被排除构建

不得不说RT-Thread Studio里面配置真多,今天我同事的电脑发现根本没有被画斜杠的文件夹,导致我想移植f1的写内部flash这个(可以看上一个文章)时候不能直接点击属性排除构建,然后在网上查找的时候也没怎么找到说法&…

代码随想录算法训练营 ---第五十五天

今天是 动态规划:编辑距离问题。 第一题: 简介: 动态规划五部曲: 1.确定dp数组的含义 dp[i][j] 表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。 2.确定递推公…

智能优化算法应用:基于寄生捕食算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于寄生捕食算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于寄生捕食算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.寄生捕食算法4.实验参数设定5.算法结果6.参考…

玩转Omniverse | 将FBX文件导入Omniverse View,以及step等3D格式如何转换为USD文件的过程

1,参考这个过程,玩转Omniverse | 将FBX文件导入Omniverse View 2,实际操作: 在omniverse中安装usd explorer 打开usd explorer 选择step,然后右键选择convert to USD,点击确认,稍等一会就会转换…

Python神器解析时间序列数据:数据分析者必读

更多资料获取 📚 个人网站:ipengtao.com 时间序列数据是在许多领域中都至关重要的数据类型,它涵盖了一系列按时间顺序排列的数据点。Python作为一种强大的数据分析工具,提供了许多库和工具,能够有效地处理、分析和可视…

高级搜索——伸展树Splay详解

文章目录 伸展树Splay伸展树Splay的定义局部性原理Splay的伸展操作逐层伸展双层伸展zig-zig/zag-zagzig-zag/zag-zigzig/zag双层伸展的效果与效率 伸展树的实现动态版本实现递增分配器节点定义Splay类及其接口定义伸展操作左单旋右单旋右左/左右双旋伸展 查找操作删除操作插入操…

springcloud整合Oauth2自定义登录/登出接口

我使用的是password模式&#xff0c;并配置了token模式 一、登录 (这里我使用的示例是用户名密码认证方式) 1. Oath2提供默认登录授权接口 org.springframework.security.oauth2.provider.endpoint.postAccess; Tokenpublic ResponseEntity<OAuth2AccessToken> pos…

hbase thrift2 jar包冲突导致启动失败问题排查记录

1、启动命令 ${HBASE_HOME}/bin/hbase-daemon.sh start thrift2 2、异常情况 hbase-root-thrift2-hdfs-test07.yingzi.com.out异常日志&#xff1a; Exception in thread "main" java.lang.AbstractMethodError: org.apache.hadoop.metrics2.sink.timeline.Hadoo…

Nginx(十二) gzip gzip_static sendfile directio aio 组合使用测试(2)

测试10&#xff1a;开启gzip、sendfile、aio、directio1m&#xff0c;关闭gzip_static&#xff0c;请求/index.js {"time_iso8601":"2023-11-30T17:20:5508:00","request_uri":"/index.js","status":"200","…

【Java Web学习笔记】4 - DOM文档对象模型

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/javascript 零、在线文档 JavaScript HTML DOM 一、HTML DOM基本介绍 1. DOM全称是Document Object Model文档对象模型 文档<---映射--->对象 2.就是把文档中的标签&#xff0c;属性&#xf…

WebSocket入门介绍及编程实战

HTTP的限制 全双工和半双工&#xff1a; 全双工&#xff1a;全双工&#xff08;Full Duplex&#xff09;是允许数据在两个方向上同时传输。 半双工&#xff1a;半双工&#xff08;Half Duplex&#xff09;是允许数据在两个方向上传输&#xff0c;但是同一个时间段内只允许一个…

解决 引element-plus依赖时的core-js报错

参考资料&#xff1a; https://blog.csdn.net/weixin_42164539/article/details/123388542 本人正在重构两年前搭建到一半的博客网站&#xff0c;相关依赖都很陈旧&#xff0c;用到了 npm-check-updates 检测项目可升级依赖&#xff1a; 补依赖过程始中报错 解决方案&#xf…

linux 内核同步互斥技术之信号量

信号量 信号量允许多个进程同时进入临界区&#xff0c;大多数情况下只允许一个进程进入临界区&#xff0c;把信号量的计数值设置为 1&#xff0c;即二值信号量&#xff0c;这种信号量称为互斥信号量。可允许多个锁持有者。 和自旋锁相比&#xff0c;信号量适合保护比较长的临界…

Java-宋红康-(P133-P134)-多线程创建方式(Thread and Runnable)

b站视频 133-多线程-线程创建方式1&#xff1a;继承Thread类_哔哩哔哩_bilibili 目录 3.1 继承Thread 3.1.1 继承Thread类方式 3.1.2 线程的执行流程 3.1.3 线程内存图 3.1.4 run()方法和start()方法 3.1.5 线程名字的设置和获取 3.1.6 获取运行main方法线程的名字 3.…

Linux进程间通信之共享内存

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解共享内存原理和相关接口的介绍&#xff0c;以及一个…

更换cmd下默认选择Python解释器

问题 我的电脑里有多个Python解释器&#xff0c;一个是自己下载的python37&#xff0c;版本是3.7.0&#xff0c;一个是anaconda的base环境&#xff0c;版本是3.7.4&#xff0c;还有虚拟环境里的python解释器。 最近发现&#xff0c;在cmd下输入python&#xff0c;使用的是anac…

肺是人体的第一道防线,流感频发季节,最有效的养肺方法你得知道!

肺脏是人体的第一道防线&#xff0c;牵动着整个呼吸道的健康&#xff0c;一旦肺脏受损&#xff0c;易引发咳嗽、气喘甚至肺炎。在流感、呼吸道疾病高发的冬季&#xff0c;如何呵护肺脏&#xff0c;保持身体健康&#xff1f; 全民养肺&#xff0c;刻不容缓 养肺不仅仅是中老年朋…

深入浅出之中央空调体系架构及楼宇自控系统

一、关于建筑节能 1、建筑能耗 在中国&#xff0c;建筑能耗占社会总能耗45.5%。来源&#xff1a;《中国建筑能耗研究报告&#xff08;2022&#xff09;》 2、空调、采暖、照明占比最高 建筑节能是指在保证、提高建筑舒适性和生活质量的条件下&#xff0c;在建筑物使用的全过…

12.5 作业

1&#xff0c; 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有…

【Qt开发流程】之对象模型2:属性系统

描述 Qt提供了一个复杂的属性系统&#xff0c;类似于一些编译器供应商提供的属性系统。然而&#xff0c;作为一个独立于编译器和平台的库&#xff0c;Qt不依赖于非标准的编译器特性&#xff0c;如__property或[property]。 Qt解决方案适用于Qt支持的所有平台上的任何标准c编译…