一种基于FPGA的信号采集卡
2018-12-15吴伟乾柴小丽尹家伟武鑫
吴伟乾,柴小丽,尹家伟,武鑫
(中国电子科技集团第三十二研究所上海201800)
在雷达系统中,时刻需要对雷达信号进行勘测,为假目标欺骗干扰或压制干扰提供测频结果和储频数据,还需要对重要的信号进行存储。所以信号采集卡的读取和存储功能都要重要,目前大部分数据采集卡都是基于 PCI、CPCI、VME 等总线[4]。
数据采集系统是雷达系统的重要组成部分,也是通信技术的基础,数据采集系统被广泛的应用,高效、低损是数据采集卡的重要因素。目前,已面向市场的数据采集卡价格较贵、不适合军用并且没有针对雷达进行优化,文中设计了一种使用A/D转化器、D/A转换器和FPGA作为数据处理流的核心设计出来的一种数据采集卡,由于FPGA器件由于其自身适合高速并行采集与处理领域的特点,具有微处理器单一控制的采集卡或者通用计算机配置数据采集卡无法比拟的优势。这类方式能绕过处理器,所以效率高,实时性好,处理能力强,应用范围广[1]。
基于FPGA实现的滤波方法具有灵活、高效和动态可配置等特点。FPGA的IP核功能强大,采用IP核的方法既可以保证性能,又能极大地缩短了设计时间[14]。
1 系统设计
随着电子技术的迅速发展,由数模转换器方面取得的进展,使得数字信号的处理变得越来越简单、高效,同时,数模信号之间转换的需求也越来越多,传统的雷达测控领域所使用的的单片机或DSP已不能满足功能多样、精度高、以及高速信号的处理要求,FPGA越来越成为信号采集设计人员的研究热点。本采集卡由AD芯片控制器、模数转换器ADS5474、时钟发生器AD9516-4、数模转换器AD9122、FPGA器件是Xilinx系列kintex-7及外围电路组成,系统结构框图如图1所示。由Xilinx的DDS IP核产生20 MHz的正弦波信号经过AD芯片控制器,进入D/A转换器进行数据转换,将得到的模拟信号转换成18位数据,然后数据通过屏蔽导线进入A/D转换器,然后通过AD芯片控制器并将转换的数据按照顺序进行预处理,最后,Xilinx系列kintex-7通过RapidIO总线使用DMA模式对数据进行读取和存储,然后供PC上位机使用[2]。
图1 RapidIO结构
1.1 16位D/A转换芯片AD9122
AD转换器有串行转换和并行转换两种方式。并行转换的AD转换器,控制简单,转换速度快,但接口电路复杂,芯片体积较大;串行AD转换器与控制器的接口电路简单,芯片集体小,使用灵活方便[12]。
AD9122是亚德诺半导体技术(ADI)有限公司推出的采样率高达1200MSPS、16位双通道采样DAC。支持多种工作模式。它具有针对直接变频传输应用进行优化的特性,包括复数数字调制以及增益与失调补偿。DAC输出经过优化,可以与模拟正交调制器无缝接口,例如ADI公司的DL537x F-MOD系列调制器。四线式串行端口接口允许对许多内部参数进行编程和回读。满量程输出电流可以在8.7 mA至31.7 mA范围内进行编程[7]。
1.2 14输出时钟发生器AD9516
ad9516-41提供了一个多输出的时钟分布函数,带有亚秒级抖动性能,还有一个芯片上的锁相环和压控振荡器。芯片上的压控振荡器调谐范围从1.45 GHz到1.80 GHz。另外,可以使用一个外部的vco/vcxo,可以使用2.4 GHz。ad9516-4强调低抖动和相噪声,以最大限度地提高数据转换器的性能,并且可以使其他具有苛刻的相位噪声和抖动要求的应用程序。ad9516-4具有6个LVPECL输出(3对);4个LVDS输出(在2对中);以及8个CMOS输出(两个LVDS输出)。LVPECL的输出为1.6 GHz,LVDS的输出操作为800 mhz,而CMOS的输出操作为250兆赫。
每一对输出都有允许被设定的分割比和粗延迟(或相位)的分数,而LVPECL输出的范围是1到32。lvd/cmos输出允许范围最多为1 024。ad9516-4可以在一个64-铅的LFCSP中使用,并且可以从一个3.3 V的供应中进行操作。一个外部的VCO需要一个扩展的电压范围,它可以通过连接充电泵的供给(VCP)到5.5。一个单独的LVPECL电源可以从2.375 V到3.6 V。
1.3 模数转换器ADS5474
ADS5474是一个14位、400 msps的模数转换器(ADC),它可以同时提供与5 V和3.3 V电源兼容的数字输出,是一个提供从210 MSPS到500MSPS的ADC。ADS5474输入缓冲区隔离了机载跟踪和控制(T&H)的内部切换,并在提供高阻抗输入的同时能干扰信号源。还提供了一个内部参考生成器,以简化系统设计。ADS5474在一个大的输入频率范围内,具有卓越的低噪声性能和无噪声的动态范围,在400兆赫的输入频率超过400 mHz的宽带宽信号的转换中,设计了1.4-ghz的输入带宽。ADS5474可以在tqfp-80 PowerPAD包中提供。该设备是基于德州仪器的互补双相过程(BiCom3),并在整个工业温度范围内指定(-40摄氏度到+85摄氏度)。
1.4 RapidIO接口协议
RapidIO协议分为3层:逻辑层、传输层和物理层。逻辑层定义了操作协议;传输层定义了包交换、路由和寻址机制;物理层定义了电气特性、链路控制和纠错重传等。像以太网一样,RapidIO也是基于包交换的互连技术。RapidIO包由包头、可选的载荷数据和16位CRC校验组成。包头的长度因为包类型不同可能是十几到二十几字节。每包的载荷数据长度不超过256字节,这有利于减少传输时延,简化硬件实现。上述包格式定义兼顾了包效率及组包/解包的简单性。RapidIO交换器件仅需解析前后16 bit,以及源/目地器件ID,这简化了交换器件的实现。逻辑层定义了操作协议和相应的包格式。
RapidIO支持的逻辑层业务主要是直接IO/DMA(DirectIO/irectMemoryAccess)和消息传递(Message Passing)。直接IO/DMA模式是最简单实用的传输方式,其前提是主设备知道被访问端的存储器映射。在这种模式下,主设备可以直接读写从设备的存储器。直接IO/DMA在被访问端的功能往往完全由硬件实现,所以被访问的器件不会有任何软件负担。从功能上讲,这一特点和TIDSP的传统的主机接口(HPI)类似。但和HPI口相比,SRIO带宽大、引脚少,传输方式更灵活。消息传递模式则类似于以太网的传输方式,它不要求主设备知道被访问设备的存储器状况。数据在被访问设备中的位置则由邮箱号(类似于以太网协议中的端口号)确定。从设备根据接收到的包的邮箱号把数据保存到对应的缓冲区,这一过程往往无法完全由硬件实现,而需要软件协助,所以会带来一些软件负担。
RapidIO是基于包交换的互连技术,传输层定义了包交换的路由和寻址机制。RapidIO网络主要由终端器件(EndPoint)和交换器件(Switch)组成。终端器件是数据包的源或目的地,不同的终端器件以器件ID来区分。RapidIO支持8 bit或16 bit器件ID,因此一个RapidIO网络最多可容纳256或65536个终端器件。与以太网类似,RapidIO也支持广播或组播,每个终端器件除了独有的器件ID外,还可配置广播或组播ID。交换器件根据包的目地器件ID进行包的转发,交换器件本身没有器件ID。RapidIO的互连拓扑结构非常灵活,除了通过交换器件外,两个终端器件也可直接互连RapidIO1.x协议定义了以下两种物理层接口标准:8/16并行LVDS协议和1x/4x串行协议(SRIO)。并行RapidIO由于信号线较多(40~76)难以得到广泛的应用,而1x/4x串行RapidIO仅4或16个信号线,逐渐成为主流。串行RapidIO基于现在已广泛用于背板互连的SerDes技术,它采用差分交流耦合信号。差分交流耦合信号具有抗干扰强、速率高、传输距离较远等优点。
为了支持全双工传输,串行RapidIO收发信号是独立的,所以每一个串行RapidIO口由4根信号线组成。标准的1x/4x串行RapidIO接口支持4个口,共16根信号线。这4个口可被用作独立的接口传输不同的数据;也可合并在一起当作一个接口使用,以提高单一接口的吞吐量。
RapidIO互连与其它各种市场上的连接技术共存且兼容。但是其它的连接很少能在支持的广泛性上(支持芯片间连接及背板连接)、功能上和性能上与RapidIO相比。
2 FPGA逻辑设计与实现
现场可编程门阵列(Field Programmable GateArrays,FPGA)是一种可编程使用的信号处理器件,用户可通过改变配置信息对其功能进行定义,以满足设计需求。与传统数字电路系统相比,FPGA具有可编程、高集成度、高速和高可靠性等优点,通过配置器件内部的逻辑功能和输入/输出端口,将原来电路板级的设计放在芯片中进行,提高了电路性能,降低了印刷电路板设计的工作量和难度,有效提高了设计的灵活性和效率[1]。与SIC(Application Specific IntegratedCircuit)相比,FPGA具有显著的优势:开发周期短、前期投资风险小、产品上市速度快、市场适应能力强和硬件升级空间大[2]。
随着FPGA应用范围的不断扩大以及对速度需求的不断提升,集成高速串行模块的FPGA已经应用于市场。以Xilinx的Virtex6系列为代表的集成GTPRocketIO模块的FPGA受到广泛关注。以XC6LX50T为例,这款FPGA集成了一个PCIE的Endpoint以及12个可以支持6 Gb/s以上的高速串行接口模块,支持串行RapidIO、fiber channel以及其他多种串行协议。高速串行接口是系统互联的核心,业内使用较多的是应用于嵌入式系统互联的串行RapidIO协议、应用于PCI系统互联的PCI Express协议以及存储中广泛使用的Fibre光纤协议。在数据采集存储应用中,多种接口的应用使得存储系统越来越复杂[16]。
FPGA是整个系统的核心,它通过RapidIO接口配置AD9122和ADS5474芯片,对RapidIO发送时序信号,仅使用NREAD和NWRITE两种事务,外加简单的存储机制,就能使系统准确接收通过数据链路层传入的PC上位机控制命令,同时完成存储器在各个模式下数据的存储操作。
Xilinx公司的kintex-7 DDS称为直接数字频率合成器(DDFS),由参考时钟、相位累加器、正弦查询表和D/A转换器组成,主要利用采样定理,根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表,通过查表法产生波形。本设计正是利用了它能产生5任意波形的优点。通过 RapidIO提供 IREQ、IRESP、TREQ、TRESP4个端口,FPGA能在读写过程中实现了信号的多路收发。其中,在传输过程中,IREQ模块作为事务的开始,负责组织请求数据包,TREQ负责接收NREAD的响应数据包。当FPGA接收到由D/A转换器输入的信号时,再通过查表法查询由EPROM构成的正弦查询表产生新的波形通过RapidIO传输给PC上位机。
文中主要介绍本设计中芯片的连接关系以及数据流处理的设计和实现。数据流传递全部实现于FPGA芯片中。为确保信号处理和存储正常工作,FPGA逻辑设计必须解决以下几个关键技术问题:
1)准确判断信号时序,抽取数据用于转换;
2)改变信号存储格式以适合信号处理需要;
3)对不同信号进行重组,以供用户存储和读取。
随着信息产业的快速发展,AD控制器(ADC)的采样率越来越高,对FPGA芯片的处理能力要求原来越高,本设计采用的ADC采样速率高达1.2 GSPS,FPGA能够通过串转并的方式使高速AD数据降速,FPGA因此得到一个缓冲时间,这就是本设计能够使用FPGA工作在如此高速的采集信号模式下的原因[8]。
雷达工作在不同工作模式下的主播信号也不同,本系统采用FIFO来完成数据的抽取并对其进行时域和频域的转换[4]。核心采用FPGA的DDS IP核,将数据进行预处理之后,再通过DMA模式,数据就被搬运到外部存储器。PC上位机能通过RapidIO将预处理后的数据读取出来,由于DMA模式并未经过CPU,所以这样就减轻了CPU资源占有率,节省了系统资源,提高了数据处理的效率。
本系统中FPGA的设计作用如下:RapidIO控制器,基于Xilinx系列kintex-7的IP核做开发,做RapidIO的组包,解包转到内部总线供用户逻辑使用,从而实现物理层、链路层的协议,物理层能实现比特流的透明传输,链路层则提供可靠的通过物理介质传输数据的方法。从而使得信号能在此系统实现采集、输入、存储和输出等功能。接口设计见图2。
图2 采集卡原理图
能否精确识别输入信号并进行准确转换是数据采集卡的关键,这一任务由系统框图中位于信号采集模块前端的AD芯片控制器模块完成。如图3,雷达中的传感器收集到的外界信号先进入数据采集卡,再由A/D转换器将输入的信号转换成模拟信号,最后经过AD芯片控制器和FPGA对其进行预处理。
图3 FPGA结构
3 统实验结果分析
为了测试系统的各种功能,给采集通道输入一个Xilinx系列kintex-7的IP核产生20 MHz的正弦波,此正弦波经过数模转换器转换之后得到了模拟信号(以串行或并行方式输入、存储于数码寄存器中的数字量,被数字寄存器输出来的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其权值成正比的电流值,再由求和电路将各种权值相加,即得到对应的模拟量),转换后的模拟电压量用来模拟雷达传感器收集到的信号。信号经由传感器采集之后,由D/A转换器转换成数字信号(经采样、保持和量化、编码3个步骤之后转换成数字信号输出,),再由AD芯片控制器施加时序控制,之后由FPGA进行预处理,预处理之后得到的信号通过DMA方式绕过处理器直接搬运通过内部总线存储到内存中。内存中的信号能够通过内部RapidIO总线供PC上位机读取。用户能够通过这一信号处理流程实现对输入信号读取和存储。
20 MHz正弦输入信号经过本系统处理后的效果如图4所示,从图中可以看出,该系统采集的数据和给定的模拟电压量进行比对后发现:此信号采集系统具有实时性好,可靠性高的特点,该方案可应用于雷达等高精度采集领域。
图4 采集卡信号
将处理后的信号存盘,再通过数据链路读取得到的信号如图5所示,从图中可以看出,存盘之后再读取得到的信号几乎与信号发生器输出的信号一致,证明了本系统进行存盘、读取的可行性。
图5 基于IP核滤波器的仿真输入输出波形
4 结束语
利用了FPGA自身的优势,设计出了一种基于FPGA的高可靠性数据采集系统,采用RapidIO协议的数据传输方式,实现了雷达系统中信号采集、输入、存储和输出的问题[10],减少了PC上位机的运算,提高了采集系统的效率。通过编写FPGA的内核驱动,采用查表法,复现了雷达传入的信号,此系统减少了外界干扰、提高了传输效率。实验表明,这是一种高可靠的信号采集方案。