基于FPGA与频分复用的高速EIT系统:实现3906 fps实时成像
1. 项目概述:为什么我们需要“一帧成像”的高速EIT系统?
在工业过程监测和生物医学成像领域,我们常常需要一双能“透视”内部动态变化的“眼睛”。电气阻抗断层成像(EIT)就是这样一双眼睛,它通过在被测物体(比如一根充满流体的管道,或者人体的胸腔)表面布置一圈电极,向其中注入微弱的交流电流,并测量其他电极上的电压响应。这些边界上的电压数据,经过复杂的数学反演算法,就能重建出物体内部电导率或介电常数的分布图像。其物理基础是麦克斯韦方程组,在准静态近似下,可以简化为拉普拉斯方程或泊松方程的求解问题。简单来说,内部不同电特性的物质分布,会改变电流场的路径,从而在边界上留下独特的“电压指纹”,EIT就是解读这些指纹的技术。
传统EIT系统,比如基于时分复用(TDM)的系统,工作原理很像一个老式的机械扫描仪:一次只给一对电极通电(激励),然后依次测量其他所有电极的响应,接着切换到下一对激励电极,如此循环,直到遍历所有独立的电极对组合。对于一个16电极的系统,独立激励对有120对,这意味着要获得一帧完整的图像数据,需要进行120次串行测量。即使每次测量只花1毫秒,完成一帧也需要120毫秒,帧率被限制在8帧/秒左右。对于监测气泡在管道中的快速运动、肺部呼吸的瞬时变化或者化学反应过程中的混合过程,这个速度太慢了,会丢失大量关键动态信息,就像用低帧率相机拍摄高速运动,画面会模糊不清。
因此,业界一直在追求更高帧率的EIT系统。一种思路是减少测量次数(部分扫描),但这会牺牲图像质量;另一种思路是提高单次测量速度,但受限于模拟开关切换速度和信号稳定时间,提升空间有限。有没有可能打破这个串行测量的瓶颈,让所有测量同时进行?这就是“ONE-SHOT”(一次激发)方法的核心思想:让所有120对电极同时注入不同频率的正弦波激励信号,并同时测量所有16个电极上的响应。这听起来像是让120个电台在同一根天线上同时广播,接收端如何区分它们?答案就是频分复用(FDM)。每个“电台”(激励电极对)使用一个独一无二的频率,接收端(测量系统)通过快速傅里叶变换(FFT)这个“频谱分析仪”,就能从混合信号中精准地分离出每个频率分量对应的幅度,从而一次性获得所有120个测量值。
然而,实现这个想法对硬件提出了极致要求:需要能同时生成120个高精度、高稳定度的不同频率正弦波,并以每秒百万次采样(MS/s)的速度同步采集16路模拟信号,并实时完成16路并行的FFT运算。通用处理器(CPU)难以胜任这样的实时、并行、高吞吐量任务。这时,现场可编程门阵列(FPGA)的优势就凸显出来了。FPGA的硬件可编程特性,允许我们设计高度并行的专用数字电路,其数据流驱动和并行处理架构,天生适合完成多通道信号生成、高速数据采集和实时频谱分析这类任务。本文要深入探讨的,正是如何基于FPGA,将ONE-SHOT这一大胆的理论构想,变成一个稳定可靠、帧率高达3906 fps的实时高速EIT数据采集系统。
2. 系统核心架构与硬件选型解析
要构建这样一个高速系统,不能只停留在算法层面,必须软硬件协同设计。整个系统的骨架由三个核心部分构成:传感器、信号调理与路由板卡(PCB)、以及基于FPGA的数据采集(DAQ)控制器。
2.1 EIT传感器与测量模型
传感器是系统与物理世界交互的界面。我们采用经典的16电极环形阵列,电极等间距地、切向地嵌入管道内壁,与内部流体直接接触。在EIT的“注入电流-测量电压”模式下,激励信号通过一对电极注入,在介质中形成电流场,其余电极用于测量由此产生的边界电位。根据电磁场理论中的唯一性定理,在给定边界条件(电流注入)下,域内的电势分布是唯一的。我们的目标是通过测量到的边界电势分布,反推域内电导率σ(x)的分布,这是一个典型的非线性不适定逆问题。
对于ONE-SHOT方法,激励模式是并发的。我们为每一对独立的激励电极对(共120对)分配一个独特的频率fk。那么,在第n个测量电极上测得的时域电压信号Vn(t),将是所有120个频率分量在该电极上产生响应的叠加:Vn(t) = Σ_{k=1}^{120} An,k * sin(2πfk t + φn,k)其中,An,k和φn,k分别是第k个频率分量在第n个电极上的幅度和相位。我们的任务就是从Vn(t)中解算出所有An,k。
2.2 信号调理与路由PCB
这块定制PCB扮演着“交通枢纽”和“信号调理站”的双重角色。
- 信号路由:它将来自DAQ控制器16个模拟输出(AO)通道的激励信号,按照预定的“激励模式矩阵”进行组合与分配,最终施加到16个电极上。这个组合不是简单的连线,因为每个电极可能同时是多个激励回路的组成部分。PCB上的模拟开关网络或加权求和电路需要精确实现这一复杂的映射关系。
- 电流测量:直接测量注入电极的电流在技术上更具挑战性(涉及高边电流检测或精密采样电阻)。本文所述系统采用了一种间接但巧妙的方法:在每条激励信号通路上串联一个精密采样电阻R(例如200Ω),测量该电阻两端的电压降V_R。根据欧姆定律
I = V_R / R,即可得到注入电流。因此,系统的16个模拟输入(AI)通道,实际上测量的是这16个采样电阻上的电压。这16个电压值构成了我们求解逆问题所需的 Neumann 边界条件(电流密度)数据。
注意:采样电阻的精度和温度稳定性至关重要。应选用低温漂(如5ppm/°C)、高精度(0.1%)的金属膜电阻。其阻值选择需权衡:阻值太大会引入过大压降,消耗激励电压;阻值太小则测量信号微弱,信噪比(SNR)下降。通常取一个在激励信号幅度下能产生数十到数百毫伏电压的阻值为宜。
2.3 FPGA数据采集控制器:系统的“大脑”与“引擎”
这是整个系统的核心计算单元。我们选用了美国国家仪器(NI)的cRIO-9039控制器,其内部集成了Xilinx Kintex-7 325T FPGA芯片。围绕它,我们搭配了必要的I/O模块:
- 模拟输出:使用2块NI-9262模块,提供总共16路同步AO通道,每通道更新率高达1 MS/s,分辨率16位,范围±10V。这为同时生成120个高精度正弦波提供了硬件基础。
- 模拟输入:使用4块NI-9223模块,提供总共16路同步AI通道,每通道采样率高达1 MS/s,分辨率16位。这确保了能同步捕获所有16个测量点上的混合时域信号。
选择cRIO平台和LabVIEW FPGA进行开发,并非仅仅因为其性能。在工业与科研领域,这套组合提供了从快速原型验证到最终系统部署的完整工具链。LabVIEW FPGA的图形化编程方式,虽然对资源优化不如手写VHDL/Verilog极致,但极大地加速了并行数据流、定时循环、硬件接口控制等复杂逻辑的开发与调试过程,特别适合多通道同步采集与生成这类任务。Kintex-7 FPGA则提供了足够的逻辑单元、DSP切片和块存储器(BRAM)资源,来承载我们设计的复杂数字信号处理流水线。
3. 多频信号生成:如何在FPGA中“演奏”120个和谐的音符?
让FPGA同时产生120个不同频率的正弦波,是第一个技术挑战。我们不能使用120个独立的“正弦波发生器”IP核,那会耗尽FPGA的DSP和逻辑资源。这里我们采用了基于直接数字频率合成(DDS)结合查找表(LUT)的优化架构。
3.1 频率选择策略:避开谐波干扰的“频谱规划”
频率的选择不是随意的,它必须满足两个核心条件:
- 满足奈奎斯特采样定理:所有生成信号的频率
fk必须小于AI采样频率的一半(f_Nyquist = f_acq / 2 = 500 kHz),否则会发生混叠,高频信号会“伪装”成低频信号,造成无法挽回的信息失真。 - 与FFT分析窗完美匹配:为了在接收端能用FFT完美地分离出每个频率分量,我们希望每个频率
fk都是FFT基频f1的整数倍谐波,即fk = k * f1,其中k为整数。这样,每个频率分量在FFT后的频谱上,会精确地落在某个离散的频率bin上,没有频谱泄漏,从而获得最高的频率分辨率和幅度估计精度。
FFT的基频f1由采样频率f_acq和FFT点数P决定:f1 = f_acq / P。为了追求最高帧率,我们希望f1尽可能大。如果我们设定P = 256,f_acq = 1 MS/s,则f1 = 3.906 kHz。那么,第120次谐波f120 = 120 * 3.906 kHz = 468.72 kHz,仍然低于500 kHz的奈奎斯特频率,满足条件。此时,系统的数据帧率就等于f1 = 3906 Hz,即每秒可输出3906帧完整的测量数据矩阵。
实操心得:质数频率的权衡:在早期探索中,我们曾考虑使用质数作为谐波次数k,以避免低次谐波的高次谐波对高次谐波频率产生干扰(即谐波间的互调干扰)。例如,使用第120个质数661,对应的频率会很高。但为了满足奈奎斯特准则,就必须增加FFT点数P或降低基频f1,这都会导致帧率下降。实测发现,在精心设计的模拟前端滤波和数字处理下,使用连续整数谐波(1,2,3,...,120)产生的谐波间干扰非常小(幅度约为基础谐波的1%),在可接受范围内。因此,为了最大化帧率,我们最终选择了连续整数谐波方案。
3.2 幅度优化:在电压裕量与信号纯度间走钢丝
AO模块的输出范围是±10V。120个正弦波叠加,在某些时刻可能会发生同相叠加,产生很高的瞬时电压峰值,可能超出范围导致饱和失真。我们必须限制每个正弦波的幅度A。通过实时监控和实验调整,我们将A设定为0.15V。这样,最坏情况下的叠加峰值理论上约为120 * 0.15V * (1/π的积分因子估算),实际测量中峰值约在±2.25V左右,留有充足的裕量。
同时,足够大的信号幅度有助于提高信噪比(SNR)。0.15V的幅度在200Ω采样电阻上产生0.75mA的电流,对于典型的EIT应用(如盐水或生物组织)来说,这是一个安全且能产生足够测量电压的激励水平。
3.3 FPGA固件设计:双累加器与LUT共享的巧思
如何在单个FPGA芯片内高效生成120个正弦波?我们的策略是**“时间复用LUT”**。
- 正弦波LUT:我们在FPGA的块RAM(BRAM)中存储了一个周期的正弦波数字样本表。表的深度(点数)决定了频率分辨率。我们使用了8192点的LUT,提供足够高的相位分辨率。
- DDS相位累加器:对于每个需要生成的频率
fk,我们计算一个相位增量(或称为“调谐字”):ΔPhase_k = (fk / f_acq) * 2^N,其中N是相位累加器的位宽(例如32位)。在每个1 MHz的时钟周期,累加器增加ΔPhase_k。 - 关键优化:LUT共享:如果为120个频率配置120个独立的DDS核,资源消耗巨大。我们观察到,FPGA的BRAM读取端口可以运行在比系统时钟更高的频率。我们让LUT运行在2 MHz(双倍于1 MHz的系统时钟)。这样,在一个1 MHz周期内,我们可以从同一个LUT中读取两个不同的相位地址对应的正弦值。我们只为60个LUT实例分配了存储空间,每个LUT由两个独立的32位相位累加器驱动。这两个累加器以1 MHz的速率更新,但它们的相位增量不同,从而从同一个正弦表里实时“提取”出两个不同频率的正弦波样本。这相当于将DDS核心的数量减少了一半,极大地节省了BRAM和逻辑资源。
- 插值与缩放:相位累加器的高位用于寻址LUT。低位则用于线性插值,以提高输出波形的精度。从LUT读取并插值得到的值,再乘以幅度缩放系数A,最后被送往对应的AO通道。
整个AO生成逻辑在FPGA上以一个严格的定时循环运行,确保每秒100万个样本点的精确、同步输出。主机(Host)PC上的LabVIEW Real-Time软件负责在系统启动时,计算所有120个频率对应的相位增量,并通过DMA方式下载到FPGA的寄存器中,实现参数的灵活配置。
4. 同步数据采集与实时FFT处理
信号生成只是上半场,下半场是更富挑战性的高速同步采集与实时处理。16个AI通道以1 MS/s的速度采样,原始数据流高达16通道 * 1 MS/s * 2字节/样本 = 32 MB/s。直接传输和存储这个数据流不仅压力巨大,而且后续还需要进行FFT运算才能得到我们需要的频域幅度信息。我们的策略是:在数据流的源头——FPGA内部——完成FFT,只传输结果频谱中我们关心的120个频点幅度值。
4.1 采集与FFT流水线设计
AI端的FPGA固件同样是一个精密的流水线:
- 同步采样:与AO生成共用同一个1 MHz的采样时钟脉冲,确保激励与采集的严格同步,这是后续FDM解调正确的前提。
- 数据缓冲(FIFO):每个AI通道的数据先被送入一个先入先出(FIFO)缓冲区,以解耦高速数据采集与相对较慢的FFT计算过程。
- 并行FFT引擎:这是最核心的部分。我们为16个通道分别实例化了16个并行的FFT IP核(例如使用Xilinx的FFT IP)。每个IP核配置为流水线Streaming I/O架构,可以连续不断地处理输入数据流。我们将FFT点数P设为256。这意味着,每收集齐256个连续的时域样本,FFT核就自动开始计算,并输出256个复数频域结果(128个独立频点,因实数信号的对称性)。
- 频点提取与打包:FFT输出的频谱中,我们只关心对应于120个激励频率
fk的bin(即第k条谱线)。FPGA逻辑会提取这120个bin的幅度值(计算复数的模sqrt(Re^2 + Im^2))。为了减少数据传输量,我们直接将幅度值(32位)、对应的频点索引k(16位)和通道号n(16位)打包成一个64位的数据字。 - DMA传输:打包好的数据通过直接内存访问(DMA)通道,以高达75 MB/s的速率持续不断地传输到主机内存中。一帧完整的数据(16通道 * 120频点 = 1920个幅度值)仅占用
1920 * 8字节 = 15 KB空间,相比原始32 MB/s的时域数据流,数据量压缩了超过2000倍。
4.2 符号确定:相位模糊问题的工程解决
FFT可以给出频域分量的幅度和相位。在理想情况下,我们可以通过相位信息来确定测量信号的符号(正负)。因为注入的电流是交流电,测量到的电压也是交流的,但其相对于激励信号的相位差φ包含了介质的阻抗信息。当|φ| < π/2时,余弦值为正,符号可由相位确定。
然而,在实际的EIT系统中,特别是在高频下,信号经过介质传播和模拟电路后,可能产生超过90度的相移(|φ| ≥ π/2)。此时,相位信息本身可能发生卷绕(Phase Wrapping),变得不可靠,无法用于确定符号。
我们采用了一种基于物理直觉和实验验证的稳健方法:构建一个固定的符号矩阵S。这个120x16的矩阵,其元素S_{k,n}取值+1或-1。它的定义基于一个简单的假设:在一个均匀介质中,当某一对电极(源和漏)被激励时,距离源电极近的测量点,其电势应为正;距离漏电极近的,电势应为负;位于中间的,电势接近零。这个符号模式对于给定的电极几何排列是固定的。因此,最终用于图像重建的带符号数据矩阵D_signed的元素为:D_signed_{k,n} = S_{k,n} * M_{k,n}其中M_{k,n}是FFT提取的幅度值。这种方法虽然损失了绝对的相位信息,但保证了测量数据在空间分布上符号关系的一致性,这对于基于差分成像或线性反演算法的EIT来说,通常是足够的。
注意事项:符号矩阵
S需要根据具体的电极排列和激励模式(相邻驱动、相对驱动等)预先计算好。它本质上是理想均匀场下灵敏度矩阵符号的体现。在实际部署前,最好通过一个均匀介质的实验对符号矩阵进行验证和微调。
5. 系统性能实测与结果分析
理论设计和FPGA编程完成后,我们需要用实验来验证系统的实际性能。测试分为静态均匀介质、静态非均匀介质和动态两相流三种场景。
5.1 静态实验:信噪比与灵敏度
首先,我们用导电率为635 μS/m的盐水充满传感器管道,进行均匀介质测试。系统以3906 fps的速率采集数据。从图6(原文)所示的数据帧可以看出,120个频率分量在16个电极上的幅度被清晰地区分出来。幅度随着频率升高而逐渐降低,这与电解质溶液的阻抗随频率变化的特性(弛豫效应)相符。
我们计算了系统的信噪比(SNR)。在激励电极所在的通道,对于最低频率(f1 = 3.9 kHz),SNR高达69.1 dB。对于最高频率(f120 = 468.7 kHz),SNR为55.6 dB。在非激励电极通道,由于信号幅度小,SNR约为60 dB。这些指标表明,系统在极宽的频带(3.9 kHz - 468.7 kHz)内都保持了优异的信号质量,为高质量成像奠定了基础。
接着,我们在管道中靠近电极E7的位置插入一根直径10mm的不导电PMMA棒,模拟一个静态异物。对比图6和图7(原文)中电极E7的数据,可以明显看到,在异物附近的频率分量幅度出现了下降。使用一步最小二乘迭代反演算法,我们成功重建了图像,清晰地显示了低电导率异物的位置(图7右上角)。这证明了系统对电导率扰动的灵敏度。
5.2 动态两相流成像:3906 fps的威力
最激动人心的测试是动态两相流实验。在一个水平管道中,水流速度为1 m/s,同时注入微小的气泡。系统以3906 fps的全帧率连续采集。在40毫秒内,我们捕获了156帧完整的EIT数据。
通过对这156帧数据逐帧进行图像重建,我们得到了气泡流过电极截面的动态图像序列(原文图8)。图像清晰地展示了气泡从进入、经过到离开成像区域的全过程。这个实验直观地证明了ONE-SHOT方法结合FPGA实现,在捕捉快速演化流场(如气泡流、段塞流)方面无与伦比的速度优势。传统TDM EIT系统在此场景下可能只能获得寥寥数帧模糊的图像,而我们的系统能提供堪比高速摄像般的动态阻抗分布“电影”。
5.3 与传统TDM及现有高速系统的对比
我们将本系统的性能与文献中报道的其他高速EIT系统进行了对比(基于原文表I):
| 特性 | 本工作 (ONE-SHOT + FPGA) | 典型高速TDM系统 [15] | 另一FPGA高速系统 [11] |
|---|---|---|---|
| 帧率 (fps) | 3906 | ~1000 | 40 |
| 每帧独立测量数 | 1920(16电极全组合) | 通常少于120(部分扫描) | 256 (16电极) |
| 数据吞吐量 (测量数/秒) | ~750万 | ~12万 | ~1万 |
| 激励策略 | 频分复用 (FDM),同时激励 | 时分复用 (TDM),顺序激励 | 时分复用 (TDM),顺序激励 |
| 关键硬件 | FPGA (并行FFT, DDS) | 高速模拟开关,ADC | FPGA (控制逻辑) |
| SNR (典型) | 55-69 dB | 通常更高(单频,干扰小) | 未明确 |
从对比可以看出,ONE-SHOT方法在帧率和数据吞吐量上实现了数量级的提升。虽然由于宽频带同时激励可能引入额外的噪声和串扰,导致SNR略低于优化后的单频TDM系统,但其超高的时间分辨率对于研究瞬态现象的价值是决定性的。FPGA的并行处理能力是实现这一高性能的关键。
6. 深入探讨:阻抗谱、接触阻抗与未来展望
6.1 频率响应与阻抗谱分析
为什么信号幅度随频率升高而下降?我们通过一个辅助实验来探究。在只使用一对电极(E1和E9)激励和测量的情况下,我们测量了不同浓度NaCl溶液在不同频率下的阻抗幅值和相位(伯德图,原文图9)。
- 低频段(f < 100 Hz):阻抗受电极-电解液界面阻抗主导。会形成双电层,表现为一个容性阻抗,幅值较高,相位负向偏移。
- 中频段(~100 Hz - 10 kHz):界面阻抗影响减小,阻抗主要反映溶液本身的欧姆电阻,幅值相对平坦,相位接近零。
- 高频段(f > 10 kHz):介质的容性效应(位移电流)开始显现,阻抗幅值随频率升高而下降,相位再次向负方向移动。
我们的激励频带(3.9 kHz - 468.7 kHz)横跨了中频和高频段。因此,在图像重建时,需要考虑不同频率分量对电导率和介电常数的敏感度权重是不同的。未来的系统可以考虑对每个频率的激励幅度进行预补偿(预加重),使得所有频率分量在均匀介质中产生相近的响应幅度,从而简化重建算法并提高图像一致性。
6.2 接触阻抗的挑战与FDM的优势
在TDM EIT中,通常忽略接触阻抗的影响,因为测量电极在测量时刻并不用于激励。但在ONE-SHOT方法中,所有电极同时既是激励电极又是测量电极。接触阻抗(由电荷转移电阻Re和双电层电容Ce并联构成)会与体电阻Rb串联,形成一个分压器,影响测量电压。
FDM技术在这里提供了一个独特的优势:频率选择性。虽然每个测量电极上叠加了所有120个频率的电流,但当我们通过FFT提取特定频率fk的响应时,我们本质上使用了一个中心频率为fk的窄带滤波器。其他频率fj (j≠k)的电流在接触阻抗上产生的压降,主要落在其对应的频带内,对fk频带的测量影响很小。只要各频率间隔足够大(我们的谐波间隔为3.9 kHz),这种频带间的串扰就可以被有效抑制。实验重建出的清晰图像也间接证明了,在我们的应用频率范围内,交叉频率阻抗项ζ的影响远小于主阻抗项Z(fk)。
6.3 未来发展方向
基于当前的原型系统,还有多个方向可以深入探索和优化:
- 扩展至32电极系统:16电极提供了120个独立测量。对于更高分辨率的成像需求,可以扩展到32电极。这将需要同时处理496个频率和992个信号,对FPGA的逻辑资源、存储器和I/O带宽提出更高要求,可能需要更高性能的FPGA或多FPGA协同方案。
- 激励模式优化:目前我们使用的是简单的相邻电极对激励模式。可以探索基于正交函数(如正弦-余弦模式、Walsh函数等)的激励模式。这种模式可能用更少的频率分量就能激发出空间上正交的电流场,从而在保持测量信息量的同时,进一步减少所需频率数量和数据量。
- 片上实时成像:目前图像重建在主机PC的MATLAB/LabVIEW中完成,速度远低于数据采集。一个激动人心的前景是将反演算法(如一步高斯-牛顿法、D-bar算法等)移植到FPGA上实现。利用FPGA的并行性,可以实现真正的实时(微秒级)图像重建与显示,形成完整的闭环监测或控制系统。
- 模拟前端优化:当前的PCB是原型板。通过优化模拟前端设计,如使用更高精度、更低噪声的仪表放大器,改进屏蔽和接地策略,可以进一步提升SNR,特别是在高频段。
- 多模态融合:将高速EIT与其它传感模态(如超声、电容层析成像ECT)的数据在FPGA层面进行同步采集与初步融合处理,可以为复杂过程提供更丰富的多维信息。
从实验室原型走向工业现场,还需要在可靠性、抗干扰、环境适应性等方面做大量工作。但毫无疑问,基于FPGA和FDM的ONE-SHOT方法,为高速、高时间分辨率的EIT成像打开了一扇新的大门。它不仅仅是一项数据采集技术的革新,更有可能催生出新一代的工业过程可视化仪器和生物医学动态成像设备。
