激光雷达的高速数据采集系统设计张云鹏,周军,黄春明(武汉大学电信学院,湖北武汉430072)摘要:设计并实现了应用于采集激光雷达回波信号的双路高速数据采集系统。该系统采用现场可编程门阵列(FPGA)作为主控制器,闪电型芯片AD9054作为高速模数转换器,通用串行总线(USB)作为与计算机数据传输接口。对系统进行了软件仿真,解决了关键线路的信号完整性问题。双通道采样率均为200MHz,分辨率为8位,缓存为5kB。实验表明:在输入为70MHz满幅正弦波的条件下,动态测量的信噪比大于43dB,动态有效位(ENOB)达到7位以上,满足了武汉大学最新研制的激光雷达对回波信号数据采集的需要。关键字:数据采集系统;FPGA;信号完整性;USBHighSpeedDataAcquisitionSystemDesignedforLidarZHANGYun-peng,ZHOUJun,HUANGChun-ming(SchoolofElectronicInformation,WuHanuniversity,WuhanHubei430072,China)Abstract:Ahigh-speeddataacquisitionsystemwithtwochannelsbasedonFPGAwasdesignedforsampledthereceivedsignalsofLidar.FPGAisembeddedasthemaincontroller.FLASHkindofADCisusedwithad9054.ItProvidedwithUSBinterfacetoPC.Itunderwentsignalintegrityanalysisandsoftwaresimulation.Thesampledrateofeachchannelisupto200MHz.Theresolutionis8bits.Capacityofbufferis5kbytes.Experimentshowedthat,SNRismorethan43dBandENOBismorethan7.0bits.ThesystemcansatisfytherequirementofLiarmadebyWuHanUniversity.Keywords:Dataacquisitionsystem;FPGA;SignalIntegrity;USB中图分类号:TP332文献标识码:A0引言激光雷达的发射信号为激光,具有很高的空间、时间分辨能力和高探测灵敏度,能分辨被测物种和不存在探测盲区等优点,被广泛的应用于大气、海洋、陆地和其他目标的遥感探测中[1]。武汉大学建立的Rayleigh和钠共振荧光激光雷达于2001年3月开始在武汉大学校园内投入常规观测,研究中纬地区Na层的结构和长期变化[2]。然而激光E4.114,N5.30雷达的发射波及回波光信号经光电器件转换后,形成的电信号脉宽窄,幅度低,而且背景噪声大。如采用低速的数据采集系统进行采集,存在数据精度不高,物理研究价值不高的问题。因此需要研制宽带宽、高采样率、高分辨率的数据采集系统,为后续数据处理工作打下坚实的基础。现有的数据采集系统通常采用单片机作为主控制器,控制模数转换器及外围芯片的工作。单片机时钟频率低,一般不能满足50MHz以上高采样率数据采集。另外,电路工作频率收稿日期:20050115通讯联系人email:cloudy01@sohu.com基金项目:国家自然科学基金重点项目(40336054)作者简介:张云鹏(1979~),男,湖北武汉人,电路与系统硕士研究生,主要研究方向为嵌入式系统设计,ASIC设计。周军(1968~),女,湖北武汉人,副教授,主要从事空间探测技术方向的研究。超过50MHz后直接导致印刷电路板(PCB)信号完整性问题的增加。这也是数据采集系统高采样率指标难以实现的主要原因之一。而本系统采用FPGA设计,采样频率高达200MHz,内部时延小;全部控制逻辑为硬件完成,速度快,效率高。采用IBIS(Input/OutputBufferInformationSpecification)模型进行软件仿真,保证了PCB硬件的实现。1系统的设计原理系统由激光器及其光电转换器提供3个输入信号:触发信号,称为Trig信号;发射波脉冲信号,称其为A脉冲;回波脉冲信号,称其为B脉冲。3个信号的频率均为20Hz。A脉冲在Trig信号发出120ns后发出;而B脉冲作为A脉冲的回波信号,则在时间上滞后0~4ms。Trig信号为TTL电平。A脉冲为高斯正脉冲,全宽为20ns,幅度变化很小。在负载为时,其电压幅度在0~+0.5V之间;B脉冲为负脉冲,全宽为20~1000ns,其波形、脉50冲宽度与幅度变化较大。在负载为时,其电压幅度在+0.5~-1.4V之间。根据激光雷达50数据分析的要求,数据采集系统需要采集A脉冲与B脉冲的波形电压幅度数据,并且进行初步的数据处理获取B脉冲相对于A脉冲滞后的精确时间,精度为一个采样周期5ns。数据采集系统结构如图1所示。CHA、CHB双路输入信号分别接入A脉冲与B脉冲。时钟电路产生模数转换器(ADC)和FPGA所需要的时钟。根据一个脉冲至少存储四个点的要求,确定系统的最高时钟频率为200MHz。CHA,CHB信号经调理电路后再经过ADC转化,得到的采样数据可直接输入FPGA。对于幅度变化较大的B脉冲信号,FPGA根据当前采样幅度调整CHB通道增益。根据脉冲时间宽度乘以采样频率,可计算得到单次存储A脉冲需要4字节,存储B脉冲需要200字节。另存储CHB通道增益需要1字节。最大滞后时间与采样频率相乘,再转化为二进制,为可得存储滞后时间需要5字节。合计单次存储仅需占用210字节空间。如选用自带随机存储器(RAM)的FPGA,传统的缓存芯片设计完全可省略掉。因Trig信号的频率为20Hz,周期则为50ms。而单次数据采集的时间不超过2ms,所以在余下的48ms里,通过最大传输率为480Mb/s的USB2.0接口,FPGA可把存储在RAM里的采样数据在下一个Trig信号来临之前上传至计算机。图1200MHz数据采集系统结构2系统的电路设计2.1硬件设计时钟电路主要器件为Cypress公司的SY89429。其输出为差分PECL电平,与AD9054输入时钟信号电平一致。SY89429为锁相环频率合成结构,频率编程范围为25M~400MHz,输出调理时钟触发ADCUSB2.0FPGAPC机ChAChBTrig调理ADC信号抖动小于25ps,可工作于+3.3V或+5V。通过接口编程可以设置其参数寄存器的M、N值。根据公式[3],选用16M晶振,设置M=200,N=2,则可将输出频率设置NMffXTALout)8(在200MHz,作为AD9054的数据采集时钟。该信号经过PECL逻辑的D触发器2分频后为100MHz,再经过PECL-TTL转换器后与高速FPGA连接。FPGA再根据该时钟信号时序输出使AD9054输出信号同步的DS信号。信号调理电路主要器件为AnalogDevice公司的电流运放AD9631,其输入带宽为350M。运放电路工作在负反馈工作状态,通过设置不同的反馈电阻值可调节增益的大小,可使输出电压保持在AD9054输入电压的工作量程内。A通道增益固定,而B通道的当前增益由FPGA根据B通道的上一次数据所表示的电平值来确定。增益分别设有1、4、16、32四档。高速ADC器件为AnalogDevice公司的Flash方式的AD9054。该芯片+5V单电源供电,输入带宽为350M,转换电压量程为1V,转换速率最高为200MHz,分辨率8位,有效位典型值为6.85位,有两个8位TTL数据输出端口,可工作于单/双口输出两种模式[4]。单口输出时仅一个输出端口输出数据。本系统采用双口输出模式,通过DS引脚输入同步信号以协调两路数据端口交替输出。此工作模式下,总的数据输出率达到200MB/s,但单个端口数据输出的速率仅为100MB/s。FPGA采用的型号为Xilinx公司的SpartnII2S100-PQ208-5,该器件密度为10万门,内置5Kbyte的RAM,最高工作频率可达到125MHz[5]。作为主控制器,FPGA通过自己的可编程端口实现对ADC、时钟、CHB通道、USB的控制与数据处理。工作核心电压引脚接+2.5V电源,其输入输出(I/O)引脚支持TTL、LVTTL电平逻辑,需接+3.3V电源。值得注意的是,SpartanII系列的FPGA支持四种配置模式,分别是从串行模式、主串行模式、从并行模式和边界扫描模式。边界扫描模式一直可用,其它配置模式由芯片引脚M2、M1、M0上的电平所决定。本系统在调试时期采用边界扫描模式;在程序编制成功后,使用通用编程器将程序烧入由EPROM组成的配置存储器,然后将三个配置引脚全设置为高电平,采用从机串行模式进行配置。USB接口采用USB2.0器件,选用CYPRESS公司的CY7C68013,采用SLAVEFIFO方式与FPGA直接通信。USB2.0接口理论上最高传输速率为480Mb/s。CY7C68013内部集成了USB2.0收发器、串口接口引擎(SIE),增强的8051微控制器及可编程的串行接口[6]。本系统通过USB向PC机发送数据时,还需要编写相应的USB固件(FirmWare)及设备驱动程序。2.2PCB的信号完整性分析一般认为,频率超过50MHz后互连线路必须视为传输线。本系统设计中数据采样频率为200MHz,数据传输速率为100MB/s,此时PCB的设计就有必要考虑信号的完整性问题,遏制信号线上的振铃、过冲、串扰等现象以满足器件对信号电平的要求。IBIS模型是一种基于V/I曲线的对I/O快速准确建模的方法,非常适合做振铃和串扰等高频效应的计算与仿真[7]。仿真的步骤一般有四个过程。首先建立电路元器件的仿真IBIS模型,接着通过假设性仿真确认布线参数的约束条件,然后是系统布线的线仿真,最后一步为系统的板级仿真。图2、图3为通过各器件的IBIS模型,采用软件HyperLynxv6.1分别对系统100M数据线信号和串扰的板级仿真结果。该结果表明,数据线上的串扰信号电压幅度峰值小于0.2V,FPGA能正确读取数据线上的数据。PCB制成后,最终实测波形与该仿真波形基本一致。图2100M数据线上的LVTTL信号仿真波形图3100M数据线上的典型串扰仿真波形3软件设计3.1USB固件及驱动程序设计固件程序在Cypress公司为CY7C68013芯片提供的固件框架下开发。该框架的编程语言为KeilC,包括FW.C、PERIPH.C、DSCR.A51、EZUSB.LIB、USBJMPTB.OBJ五个文件,实现了初始化芯片、处理USB标准设备请求及挂起状态下的电源管理等功能。其中DSCR.A51是描述符;FW.C是固件的原始程序代码,主要实现设备初始化和重新列举和响应设备请求;PERIPH.C是用户子函数钩子的相关定义,包括任务分配、设备请求和USB总线中断处理。在本系统中CY7C68013工作在SlaveFIFO高速模式,端点2为输入,端点6为输出。根据此工作模式修改PERIPH.C中对应的参数设置即可完成固件设计。USB设备驱动程序采用软件Windriver开发。Windriver提供的内核程序Windrvr.sys封装了相应的类库,允许用户直接在程序中调用应用程序级API函数及其提供的库函数来对硬件进行访问和控制。具体实现过程为:连接本系统后运行DriverWizard向导,选择对应的USB设备,生成对应的.inf文件;然后在设备诊断对话框中检测到USB接口各端点的正确设置后,选择适合的编译环境生成驱动程序和API函数的示例代码。3.2FPGA程序设计FPGA程序采用VerilogHDL语言编写,主要逻辑功能包括高速ADC、CHB的增益控制、数据存储、USB2.0数据通讯等控制功能。功能基本流程如图4所示。经软件ModelSim5.7g仿真无误后,