上下拉电阻会增强驱动能力吗?
最近看到一个关于上下拉电阻的问题,发现不少人认为上下拉电阻能够增强驱动能力。随后跟几个朋友讨论了一下,大家一致认为不存在上下拉电阻增强驱动能力这回事,因为除了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电路不同上拉电阻对波形的影响。
逻辑反相器可以当成放大器来用!不是开玩笑,我还真见过产品上用这种骚操作的,只需要把反相器接成反向放大器就可以了,不过逻辑器件当线性器件用,性能嘛...
上图,逻辑反相器(非门)当成线性放大器用。
相关文章:
上下拉电阻会增强驱动能力吗?
最近看到一个关于上下拉电阻的问题,发现不少人认为上下拉电阻能够增强驱动能力。随后跟几个朋友讨论了一下,大家一致认为不存在上下拉电阻增强驱动能力这回事,因为除了OC输出这类特殊结构外,上下拉电阻就是负载,只会减…...
题目:小明的彩灯(蓝桥OJ 1276)
题目描述: 解题思路: 一段连续区间加减,采用差分。最终每个元素结果与0比较大小,比0小即负数输出0。 题解: #include<bits/stdc.h> using namespace std;using ll long long; const int N 1e5 10; ll a[N],…...
换元法求不定积分
1.一般步骤:选取换元对象(不一定是式子中的值,也可以是式子中的最小公倍数或者最大公因数),然后将dx换为dt*t的导数,再用t将原式表示,化简计算即可 2. 3. 4. 5. 6....
在Docker容器中启用SSH服务,实现外部访问的详细教程
目录 步骤 1: 安装 SSH 服务器 步骤 2: 配置 SSH 服务器 步骤 3: 设置 SSH 用户 步骤 4: 重启 SSH 服务器 步骤 5: 映射容器端口 步骤 6: 使用 SSH 连接到容器 要在Docker容器中启用SSH服务,以便从外部访问,您需要执行以下步骤: 步骤 …...
Go 模块系统最小版本选择法 MVS 详解
目录 Golang 模块系统简介 包版本管理 最小版本选择(MVS)原理 MVS 的优点 MVS的缺点 实际使用MVS 小结 参考资料 Golang 模块系统简介 Golang 模块系统是 Go 1.11 版本引入的一个新特性,主要目的是解决 Go 项目中的依赖管理问题。在模…...
ifstream读取txt中的中文数据转成QString出现乱码
使用ifstream从txt文本中读取中文数据到string,再将string转成QString输出时出现了乱码。 分析:如果ifstream能成功从txt文本中读出中文数据,那大概率txt用的编码是ANSI编码(GBK就是ANSI的一种),那么在转成…...
UE4 双屏分辨率设置
背景: 做了一个UI 应用,需要在双屏上进行显示。 分辨率如下:3840*1080; 各种折腾,其实很简单: 主要是在全屏模式的时候 一开始没有选对,双屏总是不稳定。 全屏模式改成:Windows 之…...
$sformat在仿真中打印文本名的使用
在仿真中,定义队列,使用任务进行函数传递,并传递文件名,传递队列,进行打印 $sformat(filename, “./data_log/%0d_%0d_%0d_0.txt”, f_num, lane_num,dt); 使用此函数可以自定义字符串,在仿真的时候进行文件…...
【Rust】结构体与枚举
文章目录 结构体struct基础用法使用字段初始化简写语法使用没有命名字段的元组结构体来创建不同的类型没有任何字段的类单元结构体方法语法关联函数多个 impl 块 枚举枚举值Option 结构体struct 基础用法 一个存储用户账号信息的结构体: struct User {active: bo…...
CentOS7 防火墙常用命令
以下是在 CentOS 7 上使用 firewall-cmd 命令管理防火墙时的一些常用命令: 检查防火墙状态: sudo firewall-cmd --state 启动防火墙: sudo systemctl start firewalld 停止防火墙: sudo systemctl stop firewalld 重启防火墙&…...
【无标题】什么是UL9540测试,UL9540:2023版本增加哪些测试项目
什么是UL9540测试,UL9540:2023版本增加哪些测试项目 UL 9540是美国安全实验室(Underwriters Laboratories)发布的标准,名称为"UL 9540: Energy Storage Systems and Equipment",翻译为中文为"能量存储…...
springcloud整合Oauth2自定义登录/登出接口
我使用的是password模式,并配置了token模式 一、登录 (这里我使用的示例是用户名密码认证方式) 1. Oath2提供默认登录授权接口 org.springframework.security.oauth2.provider.endpoint.postAccess; Tokenpublic ResponseEntity<OAuth2AccessToken> pos…...
Oracle常见内置程序包的使用Package
Oracle常见内置程序包的使用 点击此处可跳转至:Oracle的程序包(Package),对包的基础进行学习常见内置程序包的使用Package1、DBMS_OUTPUT包2、DBMS_XMLQUERY包3、DBMS_RANDOM包4、UTL_FILE包5、DBMS_JOB包6、DBMS_LOB包7、DBMS_SQL包8、DBMS_LOCK包9、DB…...
Flutter:视频下载案例
前言 最近在研究视频下载,因此打算一边研究一边记录一下。方便以后使用时查看。 使用到的库有: permission_handler 11.1.0 :权限请求 flutter_downloader 1.11.5:文件下载器 path_provider 2.1.1:路径处理 视频…...
要求CHATGPT高质量回答的艺术:提示工程技术的完整指南
要求CHATGPT高质量回答的艺术:提示工程技术的完整指南 第2章:指令提示技术 现在,让我们开始探索“指令提示技术”,以及如何使用它从ChatGPT生成高质量的文本。 指令提示技术是一种通过为模型提供特定指令来指导ChatGPT输出的方…...
JDK 历史版本下载以及指定版本应用
参考: 官网下载JAVA的JDK11版本(下载、安装、配置环境变量)_java11下载-CSDN博客 Gradle:执行命令时指定 JDK 版本 - 微酷网 下载 打开官网地址 Java Downloads | Oracle 当前版本在这里,但是我们要下载历史版本 选…...
Linux基础项目开发1:量产工具——UI系统(五)
前言: 前面我们已经把显示系统、输入系统、文字系统搭建好了,现在我们就要给它实现按钮操作了,也就是搭建UI系统,下面让我们一起实现UI系统的搭建吧 目录 一、按钮数据结构抽象 ui.h 二、按键编程 1.button.c 2.disp_manager…...
面试就是这么简单,offer拿到手软(四)—— 常见java152道基础面试题
面试就是这么简单,offer拿到手软(一)—— 常见非技术问题回答思路 面试就是这么简单,offer拿到手软(二)—— 常见65道非技术面试问题 面试就是这么简单,offer拿到手软(三ÿ…...
深入理解Redis分片策略:提升系统性能的关键一步
目录 引言 1. 一致性哈希算法 2. 范围分片 3. 哈希槽分片 实战经验分享 结论 引言 Redis作为一款高性能的键值存储系统,为了应对大规模数据和高并发的访问,引入了分片策略,使得数据能够分布存储在多个节点上,实现系统的横向…...
【数据结构(七)】查找算法
文章目录 查找算法介绍1. 线性查找算法2. 二分查找算法2.1. 思路分析2.2. 代码实现2.3. 功能拓展 3. 插值查找算法3.1. 前言3.2. 相关概念3.3. 实例应用 4. 斐波那契(黄金分割法)查找算法4.1. 斐波那契(黄金分割法)原理4.2. 实例应用 查找算法介绍 在 java 中,我们…...
Android画布Canvas绘制drawBitmap基于源Rect和目的Rect,Kotlin
Android画布Canvas绘制drawBitmap基于源Rect和目的Rect,Kotlin <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android"http://schemas.android.com/apk/res/android"xmlns…...
深度优先搜索LeetCode979. 在二叉树中分配硬币
给你一个有 n 个结点的二叉树的根结点 root ,其中树中每个结点 node 都对应有 node.val 枚硬币。整棵树上一共有 n 枚硬币。 在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到…...
C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解
上篇文章,我们用 Qt5 实现了在小工具箱中添加了《JSON数据格式化》功能,还是比较实用的。为了继续丰富我们的工具箱,今天我们就再增加一个平时经常用到的功能吧,就是「 时间戳转换 」功能,而且实现点击按钮后文字进行变…...
Linux 5.15安全特性之ARM64 PAC
ARM64 PAC(Pointer Authentication Code)机制是ARM架构中引入的一种安全特性,旨在提供指针的完整性和安全性保护。它通过在指针中插入一段额外的代码进行签名,以验证指针的完整性,从而抵御缓冲区溢出和代码注入等攻击。…...
同旺科技 分布式数字温度传感器
内附链接 1、数字温度传感器 主要特性有: ● 支持PT100 / PT1000 两种铂电阻; ● 支持 2线 / 3线 / 4线 制接线方式; ● 支持5V~17V DC电源供电; ● 支持电源反接保护; ● 支持通讯波特率1200bps、2…...
状态空间的定义
状态空间是描述一个系统所有可能状态的集合。在系统理论、控制论、计算机科学、强化学习等领域,状态空间是一种常见的概念。 状态空间框架是一种用于描述和分析系统的方法,它包括系统的状态、状态之间的转移关系以及与状态相关的行为。下面详细解释状态…...
数据挖掘实战-基于word2vec的短文本情感分析
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
大数据面试总结
1、冒泡排序、选择排序 2、二分查找 3、 hashmap和hashtable的区别?hashmap的底层实现原理? a、hashtable和hashmap的区别: 1、hashtable是线程安全的,会在每一个方法中都添加方法synchronize(同步机制)…...
利大于弊:物联网技术对电子商务渠道的影响
For Better or For Worse: Impacts of IoT Technology in e-Commerce Channel 物联网技术使用传感器和其他联网设备来手机和共享数据,并且被视为一种可以为供应链成员带来巨大的机会的突破性技术。本文的研究背景是:一个提供物联网基础设备的电子商务平…...
Python 元组详解(tuple)
文章目录 1 概述1.1 性质1.2 下标1.3 切片 2 常用方法2.1 访问:迭代、根据下标2.2 删除:del2.3 运算符:、*2.4 计算元组中元素个数:len()2.5 返回元组中元素最大值:max()2.6 返回元组中元素最小值:min()2.7…...
网站建站wordpress/手机打开国外网站app
--可以把外键约束暂时停止了,再删除数据,删除后再恢复外键约束具体语句是,sql2000中用法alter table 表的名字nochek constraint 外键约束名字truncate table 表的名字alter table 表的名字check constraint 外键约束名字 -- -- 停止c_MxbCardInfo所有约…...
广州建设职业/苏州百度推广排名优化
在一些应用程序中,除非用户去结束应用程序的运行,否则其中的子线程会一直处于运行状态。如果应用程序在结束时不主动通知子线程退出,有可能导致主线程结束后,子线程的系统资源得不到释放。如何通知子线程结束运行呢?这…...
东莞多语言网站建设/鞍山seo公司
2020/05/16 每日十句英语口语 21.How do I call this number? 21.这个号码怎么打? 22.Do you have a phone book (directory)? 22.你有电话簿吗? 23.I would like to make a long distance call to Taibei. 23.我想打个长途电话到台北去。 24.I want …...
我学的 网站开发 能进华为公司么/如何在百度发广告
主要对一些失败问题做下记录。 1、复制公钥出错,xshell一些快捷键功能会省略末端空格,有可能会导致公钥串中间空格丢失 可以将两个文件做下对比,以便排除这个问题 2、~/.ssh/authorized_keys和.ssh权限不对 解决办法: chmod 6…...
2017网站开发新技术/seo模拟点击软件
计划上:在之前的想了一下怎么设计 通过定义运算符优先级 分数的话将它转化成小数 然后通过不断简化算式来计算结果 实际操作上:在定义优先级的时候 将乘除定义的比加减多一个优先级 括号内的可以用栈来实现 搜索查到(就入栈直至检查到&#…...
北碚网站建设哪家好/外链代发软件
2015-09-09 15:30:24近来,有些win10系统反映自己的电脑在自动更新驱动程序之后,在桌面上点击右键时,发现菜单栏里多出了NVIDIA面板或者AIT催化剂等选项,看着很不舒服。那么,win10系统该如何...2017-03-28 13:48:10电脑…...