随着信号与处理技术的发展,在通信、雷达、工业控制、智能仪器等领域,对数据采集的速度、精度、实时处理与存储等也提出了越来越高的要求[1]。对于高带宽的信号,如图像、雷达信号等,根据奈奎斯特采样定理[2],为保证采样信号的高精度,所需要的采样速率也很高,往往需要达到上百兆赫兹以上。而随着微电子技术、嵌入式系统技术以及计算机技术的发展,也为实现这样的超高速信号采集与存储系统提供了可能。
目前,国内外也有相关文献对高速数据采集系统进行了研究。如参考文献[3]、[4]基于可编程逻辑器件实现对雷达信号的采集,参考文献[5]则采用USB总线技术设计数据采集系统。但采集速率都不超过100 MS/s,且多数不需要实时存储,不能满足本系统200 MS/s采集与实时存储的要求。
Compact PCI是上世纪90年代后期提出的一种总线接口标准,电气方面采用PCI总线的电气规范,理论传输速率最高可达1 Gb/s[6-7]。而在机械上采用了标准真空连接器以及欧卡规范,机械结构坚固稳定,可满足机载条件下的环境需求。因此,本系统采用CPCI总线作为信号采集电路与计算机主机的接口,完成采集数据的传输。
本文所设计和实现的超高速数据采集存储系统,采样速率达到了200 MS/s,量化精度为12 bit,而且是实时连续采集、传输和存储,最终满足了对高带宽雷达信号的高速高精度采集、实时存储的需求。
1 系统总体架构
1.1 总体结构设计
数据采集系统的总体结构如图1所示,主要由计算机主机、自主研制的CPCI数据采集卡和磁盘阵列组成。
采用标准工控机作为主机平台,主要硬件配置为:(1)Intel Core2 处理器T7500,主频2.2 GHz;(2)2 GB DDR-667内存,组成双通道;(3)Intel GME965主板芯片组。在工控机主板上插入自行研制的基于CPCI总线的回波数据采集卡。采集卡将模拟回波信号通过ADC转换为数字信号,与系统其他数据一起打包,通过CPCI总线以DMA方式传输到主机内开辟的内存缓冲区中。
为保证对采集数据的实时存储,采用磁盘阵列作为存储介质。并且用千兆以太网接口连接磁盘阵列与计算机主机。
在主机平台上运行自行开发的采集系统软件,包括驱动程序和应用程序,将内存缓冲区中的回波数据以文件方式写入磁盘阵列,最终完成对雷达信号的采集。
1.2 CPCI回波数据采集卡
采集卡插入到主机的Compact PCI插槽中,完成的主要功能有:(1)根据前端雷达系统提供的同步信号,采集并缓存雷达回波信号以及五路参数电压信号。(2)完成CPCI总线接口逻辑,将采集到的波形数据按照一定的数据格式从背板CPCI总线传输到计算机主机内存,供应用程序读取和存储。(3)完成雷达系统与主机之间的串口电平和速率转换,采集和存储雷达系统串口输出的数据。
模拟信号调理电路完成对输入信号的滤波和电平调整,以满足ADC转换的需求。同时,该电路模块对外具有很高的输入阻抗,可以起到信号隔离的作用。两路A/D转换器分别完成视频回波信号和模拟参数电压的采样,转换为数字信号。采样数据送入FPGA进行缓存和后续处理。FPGA完成主要的逻辑时序控制,包括模拟回波信号采样时序控制、多路参数电压信号的选通和采样时序控制、采样数据的暂存、PCI总线接口逻辑时序、数据帧的组合以提高传输效率、串口速率的匹配等。
2 优化策略研究
本系统的采集速率要求达到200 MS/s,A/D转换的量化位宽要求达到12 bit。这样的ADC并不难找到,但由于对应的传输速率要求达到2.4 Gb/s,这样的数据传输速率对于总线传输速率和存储速率来说是非常高的。而且,高速采集对应的也是海量的存储数据量。为此,本文提出了三个优化策略,以解决高速传输和存储的瓶颈问题。
优化策略包括:(1)设置采集时间窗,在保证信号质量的情况下尽量降低平均传输速率和采集数据量;(2)数据传输采用二级缓存机制,提高DMA传输的效率;(3)数据格式组合,提高CPCI总线带宽利用率。
2.1 采集时间窗的设计
为降低平均数据传输速率和采集数据量,考虑雷达回波信号的特点。可以看到,有效的雷达回波信号在每个周期内只占据一段时间,其与预同步脉冲的时间距离τ取决于飞行高度。而T的最大可能值τmax取决于飞行器的最高飞行高度。又设雷达回波脉冲的最大宽度为Tp,则可设置采集时间窗,时间窗的长度T0满足:
时间窗的起始时刻为预同步脉冲的上升沿。在每个周期内,对时间窗内的雷达检波信号进行采集和存储,即可满足系统要求。
2.2 数据传输机制
如前所述,采集系统在每个周期的时间窗内完成对信号的采集,得到一组回波数据。若每个周期内采集时间窗为30 μs,则对应的回波数据量为2 250×32 bit。
由于发起一次DMA传输包括产生DMA中断请求、在中断服务程序中设置DMA相关参数、启动DMA传输、DMA结束后再次产生中断、在中断服务程序中做相关处理等。由此可见,频繁地发起DMA传输,主机频繁响应DMA请求会消耗大量的系统资源,大大降低CPCI总线的总线带宽利用效率。
因此,可将每个周期采集的数据在采集卡上暂存,采集若干个周期之后再发起DMA传输,由此可以减少DMA中断次数,提高总线带宽利用率。
根据上述分析,采集卡采用两级数据缓存机制,具体如下:
(1)一级缓存FIFO
该级FIFO的作用是暂存一次采集的回波数据,将其降低速率之后输出,写入二级缓存。
为了保证较高的写入速率,同时由于该级缓存容量并不大,所以由FPGA内部的存储器资源实现。
读取操作在每个周期的采集时间窗结束之后即可启动,由于数据突发写入速率远大于读取速率,所以一级FIFO在读取期间不会被清空。
(2)二级缓存FIFO
一级FIFO输出的数据经过格式转换并添加控制信息和参数电压数据,位宽变为32 bit,速率变为50 MHz。
根据分析,二级缓存的写入和读取时钟频率都不高,但是容量要求较大,以存储20次的采样数据计算,要求至少为45 000×32 bit,FPGA内部实现如此大的存储器比较困难,因此采用片外FIFO实现,由FPGA产生读写控制信号。
每次采集流程都由预同步信号触发,一级FIFO写入第一个数据之后,启动一级FIFO读取流程和二级FIFO写入流程。
当二级FIFO中的数据量达到45 000×32 bit时,启动DMA传输,将数据发送到计算机内存中的指定区域。
2.3 数据格式组合
由于传输总线协议和ADC采集数据的字长不一致,往往需要对数据进行拆分组合,以提高传输带宽利用率。
在本文的采集系统中,CPCI总线的数据宽度是32 bit,文件系统的数据字长可能是32 bit或者64 bit,而ADC输出的数据宽度为12 bit。如果以ADC输出的数据宽度进行DMA传输,对总线带宽的浪费是显而易见的。
因此,针对上述问题,在本设计中采取了对数据进行重组的方法,以提高总线I/O的利用率。具体算法如下描述。
设采集器模数转换有效数据长度为n,总线带宽为L。在传输条件较好,信号完整性很好的情况下,一般认为误码率极低,这样的情况下可以取n与L的公倍数。例如CPCI总线数据字长为32 bit,模数转换字长为12 bit。则在数据组合模块中将数据位拼合成96 bit。实质上即是8个采样周期的数据被串行连接后分割成3个字长为32 bit的数据传输,这种传输方式的总线带宽利用率为100%。
3 各部分设计和实现
3.1模拟前端设计和失真度控制
外围模拟电路主要用于处理输入的回波信号,主要部分包括高阻输入隔离电路和模拟差分放大器。输入级采用高速精密运算放大器AD8057构成电压跟随器,对外提供30 kΩ的输入阻抗。
模拟差分放大器采用增益带宽积高达320 MHz的AD8138,将输入的单端模拟信号转换为差分信号,并调整到合适的幅度和直流偏置,供后续A/D转换。
模拟信号的失真主要由两方面因素导致:信号处理电路的非线性和噪声。
模拟电路的非线性会对信号造成非线性失真。非线性失真的程度可以用放大器的二次和三次谐波成分与基波的幅度比值衡量。AD8138在输入信号20 MHz时的二次和三次谐波比分别为-87 dB和-85 dB,按照该参数计算,放大器造成的总谐波失真为5.15×10-9×100%,基本可以忽略。
本系统中对信号造成的非线性失真全部由前端调理电路造成,经实际测试,前端调理电路造成的实际非线性失真小于0.2%,完全满足系统指标0.5%的要求。
3.2高速ADC电路设计
为实现高的分辨率,本系统采用12 bit高速A/D转换器AD9430完成视频回波的A/D转换。AD9430要求采样时钟为差分输入,而且内部自带直流电平稳定电路,本设计使用FPGA内置锁相环将晶体振荡器产生的时钟倍频至200 MHz,然后以差分方式输出到ADC。
3.3 FPGA逻辑设计
FPGA采用Xilinx的Virtex II Pro高性能FPGA系列中的XC2VP30型号,内部逻辑模块功能划分如图8所示。其中采集卡和计算机内存之间的DMA数据传输采用PCI接口IP核自带的DMA控制器完成,该模块提供了本地逻辑与PCI总线接口IP核之间的接口。
DMA控制器内部采用512×32 bit发送FIFO,在发送数据时,将数据用PCI总线时钟送入发送FIFO,完成总线的申请和数据的发送工作。DMA控制器采用的时钟频率为33 MHz,与CPCI总线同步。
3.4 磁盘阵列
在高速数据采集系统中,大容量高速存储系统往往是限制系统性能提高的最大瓶颈。由于单个硬盘无法达到本系统要求的存储速率,因此需要采用独立磁盘冗余阵列RAID(Redundant Array of Independent Disks)技术。RAID把多块独立的物理硬盘按不同的方式组合起来,形成一个逻辑硬盘,从而提供比单个硬盘更高的存储性能[8]。
如图10所示,RAID0把连续的数据按照数据块(512字节到数兆字节)分散到多个磁盘上存取,系统的数据请求被多个磁盘并行执行,每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽,显著提高磁盘整体存取性能。
本系统选用RAID0以获得最佳存储性能,使用了4个硬盘组成RAID0。
磁盘阵列机箱通过千兆以太网线连接至采集器主机,实际测试持续写入速度大于90 MB/s,完全满足本系统的需求。
4 实验结果
目前该系统已完成研制及与雷达系统的联试。图11为采集的雷达回波信号波形,只截取了回波对应的部分。横轴为时间,单位μs;纵轴为幅度,单位为V。受到图片篇幅的限制,只显示了一个周期内的单个回波信号。
本文根据雷达回波信号的特点,基于虚拟仪器的技术完成了采集系统的设计与开发。在硬件平台上采用CPCI总线接口和千兆以太网磁盘阵列,在系统设计上提出了有效的优化策略,完成了对雷达信号的高速采集与实时存储。该系统在通信、自动控制等领域也有广泛的应用前景。