许多通信接口需要双向数据传输,如I2C、SPI、GPIO。这些接口的信号线需要在不改变物理连接的情况下切换信号方向。双向电平转换器在两个不同电压域之间提供双向信号传输能力。
自动方向检测是最优雅的双向电平转换方案——不需要方向控制信号,转换器自动检测信号从哪一侧驱动,并正确传输到另一侧。
域A (VDDA) 域B (VDDB)
│ │
┌────┤───── TG_A ─────┤────┐
│ │ │ │
│ [驱动A] ←─────→ [驱动B] │
│ │ │ │
│ [检测A] [检测B] │ │
│ │ │ │
└────┤──────────────────┤────┘
│ │
Side A Side B
工作原理:
1. 静态:两侧都高阻,传输门导通,两侧电压各自通过弱上拉保持
2. Side A驱动低:A侧电压下降,检测A检测到变化,增强TG方向
3. Side B跟随:通过传输门,B侧电压也被拉低
4. 反方向类似:Side B驱动时,检测B控制传输门方向
关键技术:弱上拉保持 + 传输门 + 方向加速器
NBS是一种利用NMOS体端切换来实现双向传输的技术:
标准传输门使用PMOS+NMOS并联,可以双向传输信号。但在电平转换场景中,两侧电压不同,直接传输门无法使用。
NBS方案:使用NMOS传输管,但根据信号方向动态切换体端(Body)连接:
优点:单一NMOS管实现双向传输,面积小,寄生电容低
在方向已知的场景(如半双工通信),手动方向控制更简单可靠。
* 手动方向控制双向电平转换器
* DIR=0: A→B (A侧输入, B侧输出)
* DIR=1: B→A (B侧输入, A侧输出)
* A→B路径使能 = NOT(DIR)
* B→A路径使能 = DIR
* A→B转换器(上移: 0.8V→3.3V)
* 使能条件: DIR=0
* 交叉耦合结构 + 使能管
Mn1_a n1_a in_a 0 en_ab nch W=6u L=0.18u
Mp1_a n1_a n2_a vddb vddb pch W=0.8u L=0.35u
Mn2_a n2_a in_a_b 0 en_ab nch W=6u L=0.18u
Mp2_a n2_a n1_a vddb vddb pch W=0.8u L=0.35u
* B→A转换器(下移: 3.3V→0.8V)
* 使能条件: DIR=1
* IO域缓冲 + 交叉耦合
Mp1_b n1_b in_b vddb vddb pch W=4u L=0.35u
Mn1_b n1_b in_b 0 en_ba nch W=2u L=0.35u
* 使能信号生成
* en_ab = NOT(DIR)
* en_ba = DIR
* 13-bidirectional-level-shifter.sp
* 双向电平转换器仿真
Vdda vdda 0 1.2
Vddb vddb 0 3.3
* 方向控制
Vdir dir 0 pwl 0 0 50n 0 50.02n 1.2 100n 1.2
* === A→B 方向 (DIR=0) ===
* A侧输入
Vin_a in_a 0 pwl 0 0 10n 0 10.02n 1.2 30n 1.2 30.02n 0
* 交叉耦合上移
Mn1 n1 in_a 0 0 nch W=6u L=0.18u
Mp1 n1 n2 vddb vddb pch W=0.8u L=0.35u
Mn2 n2 in_a_b 0 0 nch W=6u L=0.18u
Mp2 n2 n1 vddb vddb pch W=0.8u L=0.35u
Mp_inb in_a_b in_a vdda vdda pch W=0.8u L=0.18u
Mn_inb in_a_b in_a 0 0 nch W=0.4u L=0.18u
* B侧输出
Mp3 out_b n2 vddb vddb pch W=8u L=0.35u
Mn3 out_b n2 0 0 nch W=4u L=0.35u
* === B→A 方向 (DIR=1) ===
* B侧输入
Vin_b in_b 0 pwl 50n 0 60n 0 60.02n 3.3 80n 3.3 80.02n 0
* IO域缓冲下移
Mp4 c in_b vddb vddb pch W=4u L=0.35u
Mn4 c in_b 0 0 nch W=2u L=0.35u
* 交叉耦合下移
Mn5 n5 c 0 0 nch W=4u L=0.18u
Mp5 n5 n6 vdda vdda pch W=1u L=0.18u
Mn6 n6 c_b 0 0 nch W=4u L=0.18u
Mp6 n6 n5 vdda vdda pch W=1u L=0.18u
Mp_cb c_b c vddb vddb pch W=2u L=0.35u
Mn_cb c_b c 0 0 nch W=1u L=0.35u
* A侧输出
Mp7 out_a n6 vdda vdda pch W=4u L=0.18u
Mn7 out_a n6 0 0 nch W=2u L=0.18u
Cload_b out_b 0 1p
Cload_a out_a 0 0.5p
.tran 0.01n 100n
.measure tran tpd_ab TRIG V(in_a) VAL=0.6 RISE=1 TARG V(out_b) VAL=1.65 RISE=1
.measure tran tpd_ba TRIG V(in_b) VAL=1.65 RISE=1 TARG V(out_a) VAL=0.6 RISE=1
.print tran V(in_a) V(out_b) V(in_b) V(out_a) V(dir)
.end
双向电平转换器仿真结果:
TI的TXB010x系列是经典的自动双向电平转换IC,其内部架构值得学习:
自动方向检测转换器需要先检测信号方向再传输。如果检测电路的延迟为0.5ns,传输门开启延迟为0.2ns,信号传输延迟为0.3ns。计算总延迟。与手动方向控制方案(无检测延迟)比较。
自动检测:0.5ns(检测) + 0.2ns(开启) + 0.3ns(传输) = 1.0ns
手动控制:0ns(无需检测) + 0.2ns(已开启) + 0.3ns(传输) = 0.5ns
自动检测慢2倍,但无需方向控制信号,引脚更少。
设计一个I2C电平转换器,将1.8V主控连接到3.3V从设备。I2C是开漏协议,信号线需要上拉电阻。设计转换方案。
最简方案:单个NMOS传输门 + 两侧上拉电阻
1.8V侧: 4.7kΩ上拉到1.8V
│
┌────┤────┐
│ │ │
│ NMOS │ 栅极接1.8V
│ (TG) │ W/L大(低Ron)
│ │ │
└────┤────┘
│
3.3V侧: 4.7kΩ上拉到3.3V
工作:任何一侧拉低→通过NMOS传导→另一侧也低。两侧释放→上拉到各自VDD。
完成本课学习,你已经掌握了双向电平转换的设计方法!
✅ 已掌握 自动检测 ✅ 已掌握 传输门方案 ✅ 已掌握 方向控制 ✅ 已掌握 NBS技术
I3C(Improved Inter-Integrated Circuit)是I2C的升级版,支持更高速度(12.5MHz SDR/33MHz DDR)和多主机。I3C的双向电平转换比I2C更复杂。
| 特性 | I2C | I3C |
|---|---|---|
| 最大速度 | 3.4MHz(HS) | 33MHz(DDR) |
| 电压 | 3.3V/5V | 1.0-3.3V |
| 方向 | 开漏/推挽 | 开漏+推挽混合 |
| 动态寻址 | 无 | 有 |
| IBI(带内中断) | 无 | 有 |
I3C在同一总线上混合使用开漏和推挽模式,电平转换器必须支持:
双向转换器引入额外的寄生效应,影响信号完整性:
双向电平转换器的时序裕量是系统可靠性的关键。需要分析方向切换延迟、建立/保持时间等参数。
| 阶段 | 延迟 | 累积 |
|---|---|---|
| 方向命令发出 | 0ns | 0ns |
| 控制寄存器写入 | 1-2个APB时钟 | 10-40ns |
| 原方向驱动器关断 | 1-3ns | 11-43ns |
| 焊盘稳定(RC放电) | 5-50ns | 16-93ns |
| 新方向驱动器开启 | 1-3ns | 17-96ns |
双向转换器在信号传输过程中引入额外的抖动和延迟,可能影响误码率:
| 参数 | 符号 | 典型值 | 单位 |
|---|---|---|---|
| IO电压(3.3V) | VDDIO | 3.0-3.6 | V |
| IO电压(1.8V) | VDDIO | 1.62-1.98 | V |
| 核心电压 | VDD | 0.9-1.2 | V |
| ESD二极管Vf | Vf | 0.6-0.8 | V |
| GGNMOS Vt1 | Vt1 | 6-10 | V |
| GGNMOS Vh | Vh | 3-5 | V |
| GGNMOS It2 | It2 | 8-15 | mA/μm |
| SCR Vh | Vh | 1-2 | V |
| SCR It2 | It2 | 50-80 | mA/μm |
| RC钳位时间常数 | τ | 0.5-2 | μs |
| 施密特Vt+ | Vt+ | 2.0 | V |
| 施密特Vt- | Vt- | 1.3 | V |
| 焊盘电容 | Cpad | 2-5 | pF |
| 焊线电感 | Lwire | 1-5 | nH |
| CML驱动电流 | Itail | 4-16 | mA |
| 差分阻抗 | Zdiff | 85-100 | Ω |
| HBM 2kV峰值电流 | Ipeak | 1.33 | A |
| HBM 4kV峰值电流 | Ipeak | 2.67 | A |
| CDM 500V峰值电流 | Ipeak | 5-15 | A |
| LVTTL VIH(min) | VIH | 2.0 | V |
| LVTTL VIL(max) | VIL | 0.8 | V |
I_HBM = V_HBM / R_HBM = V_HBM / 1500ΩV_clamp = Vf + VDD + I×Rbus + V_clamp_internalRC时间常数: τ = R × C谐振频率: f0 = 1/(2π√(LC))差分摆幅: Vdiff = Itail × Rload × 2SSO噪声: V_noise = L × di/dtESD窗口: Window = BVox - margin - (VDD + margin)环路带宽: fBW ≈ fref / (2×N×M)