1. 课程导入
超声成像系统的性能上限,往往在信号进入模数转换器(ADC)之前就已经被决定。探头接收到的回波信号极其微弱,典型幅度可低至数十微伏甚至几微伏,而人体组织衰减、探头带宽限制、电缆寄生参数与电路自身噪声会进一步恶化信噪比。超声模拟前端(Analog Front End, AFE)正是位于探头与数字信号处理之间的第一道信号调理链路,其核心任务是在尽量不引入额外噪声与失真的前提下,完成信号的放大、滤波、增益调节与阻抗匹配。低噪声设计因此成为超声AFE设计中最关键、也最具挑战性的环节。
一、什么是超声模拟前端低噪声设计
超声模拟前端通常由发射/接收开关(T/R Switch)、低噪声放大器(LNA)、可变增益放大器(VGA)、抗混叠滤波器(AAF)以及高速ADC驱动器组成。低噪声设计并不是单纯“选一颗噪声低的运放”,而是围绕整条信号链,对噪声、带宽、增益、线性度、功耗与阻抗进行协同优化。其目标是:在给定探头与成像深度条件下,使系统输入等效噪声尽可能低,同时保证信号不失真、不饱和、不混叠。
从噪声角度看,AFE的输入等效噪声由三部分构成:探头与电缆的热噪声、LNA的电压/电流噪声、以及后续各级折算到输入的噪声。由于第一级增益会抑制后级噪声贡献,LNA的噪声性能几乎决定了整条链路的噪声底。因此,低噪声设计的核心原则是:第一级决定噪声,后级决定动态范围与带宽。
二、学习目标与整体知识框架
本课程围绕“如何把微伏级超声回波高质量地送入ADC”这一主线展开,学习目标包括:理解超声信号链的噪声来源与传播机制;掌握LNA、VGA、AAF的噪声-增益-带宽折中方法;能够根据探头参数与成像深度计算输入等效噪声预算;熟悉T/R开关、阻抗匹配与PCB布局对噪声的影响;并具备使用仿真与实测手段定位噪声瓶颈的能力。
整体知识框架可分为五个层次:
- 信号与噪声基础:超声回波特性、热噪声、闪烁噪声、输入等效噪声模型。
- 核心电路模块:T/R开关、LNA、VGA、AAF、ADC驱动。
- 系统级折中:增益分配、噪声预算、动态范围、功耗与面积。
- 实现与验证:版图、屏蔽、接地、去耦、仿真与实测对比。
- 典型应用:便携式超声、相控阵成像、连续波多普勒、内窥超声。
下图给出超声模拟前端低噪声设计的整体信号链与噪声注入位置关系,便于建立“从探头到ADC”的系统视角。
三、典型应用场景与参数约束
不同超声应用对AFE低噪声设计提出不同侧重点。便携式超声强调低功耗与集成度,LNA需要在亚毫瓦级功耗下保持低噪声;相控阵成像通道数多,要求通道间增益与相位一致性高;连续波多普勒关注近场强信号下的线性度与1/f噪声;内窥超声则受限于探头尺寸与电缆长度,对输入电容与阻抗匹配更敏感。
| 应用场景 | 关键噪声约束 | 典型AFE指标 | 设计侧重点 |
|---|---|---|---|
| 便携式超声 | 功耗与噪声折中 | 输入噪声 < 2 nV/√Hz,功耗 < 5 mW/通道 | 低功耗LNA、时分复用 |
| 相控阵成像 | 通道一致性 | 增益失配 < 0.5 dB,相位失配 < 2° | 匹配布局、校准电路 |
| 连续波多普勒 | 1/f噪声与线性度 | 近场THD < -40 dBc | 斩波/相关双采样 |
| 内窥超声 | 电缆寄生与输入电容 | 输入电容 < 5 pF,噪声 < 3 nV/√Hz | 有源电缆驱动、阻抗匹配 |
四、常见误区与复盘要点
初学者最容易陷入的误区是“只盯LNA噪声系数”。实际上,源阻抗、探头等效电容与电缆长度会显著改变最佳噪声匹配点;若忽略这些,即使LNA本身噪声很低,系统输入等效噪声仍可能偏高。第二个误区是“增益越高越好”。过高的第一级增益会在近场强回波下导致饱和,压缩动态范围,反而破坏TGC效果。第三个误区是“仿真通过就等于实测通过”。PCB寄生、接地回路与电源纹波往往在实测中引入额外噪声,必须通过噪声预算表逐项核对。
下面给出一段用于快速估算输入等效噪声的Python示例,帮助建立噪声预算的量化习惯:
import math
k = 1.38e-23 # 玻尔兹曼常数
T = 300 # 温度 K
R_source = 50 # 源阻抗 Ω
BW = 5e6 # 信号带宽 Hz
# 源阻抗热噪声
v_thermal = math.sqrt(4 * k * T * R_source * BW)
# LNA 输入等效噪声(假设 1.5 nV/√Hz)
en_lna = 1.5e-9 * math.sqrt(BW)
# 总输入等效噪声(近似均方根合成)
v_total = math.sqrt(v_thermal**2 + en_lna**2)
print(f"源热噪声: {v_thermal*1e6:.2f} μVrms")
print(f"LNA噪声: {en_lna*1e6:.2f} μVrms")
print(f"总输入等效噪声: {v_total*1e6:.2f} μVrms")