GPIO简介

简介: 本文所述IO(Input/Output PAD)主要是指集成在CMOS芯片中的连接模块,其负责芯片引脚的外部信号与芯片内部的数字/模拟模块的交互,它是一颗完整芯片设计中不可或缺的组成部分。 文章首先根据IO的使用类型,介绍了IO的分类;紧接着重点介绍了GPIO的输入/输出功能和模式...

1. 概述与分类

本文所述IO(Input/Output PAD)主要是指集成在CMOS芯片中的连接模块,其负责芯片引脚的外部信号与芯片内部的数字/模拟模块的交互,它是一颗完整芯片设计中不可或缺的组成部分。 文章首先根据IO的使用类型,介绍了IO的分类;紧接着重点介绍了GPIO的输入/输出功能和模式,以及输入/输出模式下的一些特点和设计考虑;最后简要介绍了GPIO的功耗/静电保护/tolerance IO等一些问题

1.1 电源IO

电源IO的典型应用如下图所示:
hljs-center

image.png

电源IO主要作用就是提供电源在整芯片中的连接方式以及对电源本身的ESD保护方案。 对于电源IO, 简单归类:1. 是否需要连接到IO power ring上?通常认为可以直接连接到IO power ring上的电源对噪声不敏感; 2. 高压电源/低压电源的分类,这可能会涉及到ESD保护方案的不同

1.2 晶振IO

晶振IO的主要作用就是提供给外部的晶体一定的驱动能力,配合振荡晶体和外围电路产生振荡信号,为系统提供稳定可靠的时钟。目前较为常见的是皮尔斯振荡器,这种振荡器需要占有2个IO。
皮尔斯晶体振荡器的典型应用如下图所示:
hljs-center

image.png

Notes: 晶振的Cload值一般是以无源晶体本身来定义;CL1和CL2的串联值为Cload,即Cload=0.5CL1=0.5CL2 (一般CL1=CL2) 通常这个IO的开发都是专用IO电路,当晶体振荡器功能不用时,无法复用为GPIO。后续开发倾向于单独开发晶振驱动电路,和GPIO复用在一起;当晶体振荡器功能不用时,也能将这两个IO复用为GPIO。

1.3 GPIO

GPIO(General Purpose Input Output)的典型框图如下图所示:

image.png

ST GPIO Diagram

image.png

能就是实现芯片内外隔离,实现电平变化以及缓冲输入/输出的作用。具体的作用和工作模式详见第二章节介绍。

1.4 特殊引脚IO

在芯片设计中,可能会存在某些特殊的引脚。例如RESET复位PIN就通常设定为一个上拉输入的GPIO; SWD通信中SWDIO和SWDCLK也有一个上拉电阻的要求。

2. GPIO基本工作模式

本章节针对GPIO的输入输出工作模式进行描述。

2.1 输入接口电路

输入接口电路负责处理从芯片外部输入信号到芯片内部。

2.1.1 输入接口电路的主要作用

  • 提供适当的电平转换
  • TTL电平和CMOS电平
  • Schmitt触发器输入
  • 对片内电路起保护作用
  • 注意ESD二级保护的电阻应用。一般ESD保护电阻的阻值在250欧姆作用;对输入缓冲,保护电阻可以设计的大一些,电源/高速时钟信号则要相对选小一些

施密特(Schmitt)触发器的基本架构和工作模式如下所示:

image.png

施密特触发器的主要作用:施密特触发器存在一个明显的迟滞窗口,有利于提高输入的噪声容限;尤其是输入上升沿/下降沿不够理想的应用环境

2.1.2 输入接口电路的模式

 PAD模拟输入  需要注意对模拟内部信号的二次ESD保护  直接将模拟信号精确的输入或输出,无需额外的缓冲电路,而且保护电路也不可对模拟信号有所扭曲,使其有所失真  PAD数字输入  严禁浮空输入  上拉输入  下拉输入  上拉/下拉输入电阻阻值一般在几十K的数量级,且随电源电压变化较大

image.png
输入模式下的真值表

2.1.3 输入模式下的注意点

在所有输入信号中尤其需要注意VDDC_OFF(POC)功能  该信号为高电压域信号  该信号的作用:在电源上电过程,如果VDDC或VDDIO还没有稳定的时候,VDDC_OFF处于有效保护状态,保证IO处于High-Z状态,防止输出的大MOS管发生贯通电流或IO上有强驱动输出  如果是多管脚输出设计(例如管脚数量大于64),建议逐步释放VDDC_OFF信号,防止产生瞬间的大电流

2.2 输出接口电路

输出接口电路负责从芯片内部输出信号。

2.2.1 输出接口电路的主要作用

 电平转换  提高信号的驱动能力;  提高足够大的驱动能力。通常片外负载会在pF数量级别,同时还需要提供适当的上升/下降时间  输出缓冲的总延迟时间小  Slew rate控制  对片内电路起保护作用;

2.2.2 输出接口电路的模式

 CMOS推挽(Push-Pull)输出  开漏(Open-Drain)输出  典型应用场景:I2C  开源(Open-Source)输出

输出模式下的真值表 2.2.2.I 开漏(Open-Drain)输出说明 需要注意的时开漏输出,其典型的几种情况如下:

开漏输出的主要作用:1. 实现“线与”逻辑,即多个开漏输出的管脚可以直接并在一起;2. 实现不同逻辑电平的转换(如3.3V和5V之间), 但可能要注意IO的耐压tolerance问题 2.2.2.II 输出驱动能力说明 GPIO的输出驱动能力一般可选:2mA/4mA/…/24mA等  驱动能力的衡量是在外部管脚拉/灌标称的驱动电流时,输出还能维持一定的VOH/VOL为判定标准  驱动能力越强,GPIO自身消耗的功耗越大,电源/地线引起的扰动噪声也越大;所以建议选择满足需求的合适的驱动能力  虽然驱动能力不同,但一般来说,IO的面积大小相同。主要因为驱动管和ESD管一般都是共用在一起;而ESD管的面积基本决定了IO的面积大小  输出驱动管(也包含部分ESD管)一般都会有比较大的PMOS/NMOS尺寸,容易引发latch-up特性。所以在版图上都会有双重保护环(double guard ring)的设计要求 2.2.2.III 输出延迟时间说明 关于IO的延迟时间:  输出接口电路最重要的一点是对负载电容必须有足够的驱动能力,以达到适当的上升时间和下降时间。当输出要驱动一个很大的负载电容时,为保证电路的工作频率,就必须使电路的输出级能够提供够的驱动电流,电路的延迟时间可 以近似用下式表示:

其中,CL是电路要驱动的总负载电容,V是电路的输出摆幅,Id是输出级的驱 动电流。 从上面的式子可以看出,在负载电容和摆幅一定的情况下,若想减小电路的延迟时间,必须增大MOS管的宽长比。然而,输出级MOS管的宽长比增大,又 将增大前一级的负载电容,影响前一级的工作速度。因此,常采用级联反相器 作为输出缓冲电路。且使反相器的尺寸逐级增大;通过设计适当的级数比例, 以使总延迟最小。

 按固定的比例因子逐级增大器件尺寸: 这样,每级反相器有近似相等的延迟时间,对级联反相器的总延迟最有利。 当n = ln (CL/Cin), S = e时,级联反相器的总延迟最小。延迟时间约为:

 上面的结论只是从速度优化方面考虑的结果。在实际缓冲器的设计中不能简单的套用, 而要从速度/功耗和面积多方面综合考虑。一般这个值会取4~8

3. GPIO的功耗等影响因素

3.1 GPIO的功耗分布

 动态功耗如下图所示  对整个充放电的电流积分乘以电源,可以得到充放电一次消耗的能量为C¬LVDD^2; 因此在一定频率下的平均功耗为P = Freq* C¬LVDD^2

 贯通功耗如下图所示  大驱动PAD的最后一级MOS管的Size非常大,如果存在P/N管同时导通的情况, 会有很大贯通电流  静态电流功耗如下图所示  大驱动PAD的最后一级MOS管的Size非常大。因此,在IO PAD不翻转时的静态功耗(漏电流)可能也会比较大,在设计中,必须进行仿真确认。

 IO PAD的整体功耗分布如下图所示

3.2 GPIO的ESD保护

IO的ESD保护是个复杂的大课题,在这里只是简单介绍一些ESD保护的基本概念。  随着工艺尺寸的发展,ESD设计挑战越来越大。因为gate oxide break down电压越来越低,ESD设计窗口越来越小

 IO的ESD目前而言,一般来说电源IO的power clamp会选用RC trigger; GPIO会利用NMOS的snapback特性

3.3 GPIO的其他注意事项

 Cu bonding要求有一定的抗压能力,对顶层金属以及通孔阵列有一定的要求  在某些情况下,可能还需要一种类型IO需要tolerance高压设计,即接口信号电压高于电源电压的情况下的应用  Tolerance IO主要应用环境包括  输入高压,输入电压高于电源电压  输出开漏,Termination电压高于电源电压  带charge pump功能的LCD驱动输出,LCD电压高于电源电压  Tolerance IO设计需要考虑的因素  器件的耐压特性  PMOS器件的漏极和衬底之间的寄生二极管  Tolerance IO的负面影响  IO单元的面积有明显变大  相同面积下,驱动能力减弱  相同面积下,ESD能力相对下降 Tolerance IO设计下存在的寄生二极管,示意图如下:
本文作者:yangyf
点击查看原文

相关文章
|
前端开发 算法 Unix
面向前端设计的DFT基础介绍(一)——MBIST存储器内建自测试
本文介绍了MBIST存储器内建自测试的中,MBIST的特点,如何测试,Tessent加入的测试逻辑的结构等基础知识,继而以几个实例的图示和解读,描述了RTL设计满足MBIST设计的前置需求。
47604 3
面向前端设计的DFT基础介绍(一)——MBIST存储器内建自测试
|
Java 程序员 C++
深入探讨内存泄漏的原因及解决方法
深入探讨内存泄漏的原因及解决方法
|
Linux 数据安全/隐私保护
Linux中普通用户使用sudo命令提示lin is not in the sudoers file. This incident will be reported.
Linux中普通用户使用sudo命令提示lin is not in the sudoers file. This incident will be reported.
|
Web App开发
如何设置谷歌浏览器在新窗口中打开链接?如何设置谷歌浏览器在新标签页中打开链接?
一、快捷键方式:  1、左键单击 ==》 在当前窗口中打开目标网页。  2、Shift + 左键单击 ==》 在新窗口中打开目标网页。  3、Ctrl + 左键单击 ==》 在新标签页中打开目标网页。  4、鼠标中键点击书签即打开新的标签页,在新的标签页中显示指定的网页。
63144 0
|
消息中间件 网络协议 物联网
如何入门做物联网系统压测?
【4月更文挑战第18天】物联网系统在架构、网络模式、通信协议等方面与传统的互联网系统有所区别。因此,传统的性能测试方法不能直接套用到物联网系统中。
1361 13
如何入门做物联网系统压测?
WAT测试介绍
本文只要介绍芯片WAT的测试环境,测试结构,测试机台,测试标准,测试项目以及测试的意义。
10542 0
WAT测试介绍
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
1095 0
|
机器学习/深度学习 分布式计算 供应链
阿里云先知安全沙龙(上海站) ——大模型基础设施安全攻防
大模型基础设施的安全攻防体系涵盖恶意输入防御和基础设施安全,包括框架、三方库、插件、平台、模型和系统安全。关键漏洞如CVE-2023-6019(Ray框架命令注入)、CVE-2024-5480(PyTorch分布式RPC)及llama.cpp中的多个漏洞,强调了代码安全性的重要性。模型文件安全方面,需防范pickle反序列化等风险,建议使用Safetensors格式。相关实践包括构建供应链漏洞库、智能化漏洞分析和深度检测,确保全方位防护。
|
运维 前端开发 关系型数据库
高效调试与分析:利用ftrace进行Linux内核追踪(上)
高效调试与分析:利用ftrace进行Linux内核追踪
|
数据采集 存储 数据库
数据完整性验证
数据完整性验证
2025 3

热门文章

最新文章