基于USB2.0的雷达视频信号高速采集与实时显示系统
2008-04-09
作者:宋 杰,何 友,唐小明
摘 要: 基于USB2.0总线设计并实现了一种雷达视频信号" title="雷达视频信号">雷达视频信号的高速采集与实时显示系统。系统以Cypress公司的CY7C68013芯片作为USB2.0的专用接口芯片,以FPGA作为采集的时序控制以及与CY7C68013数据传输的接口控制芯片,采用数据抽取、坐标查表映射和DirectDraw等技术在普通显示器上以P显和A显方式实时显示。
关键词: FPGA USB 数据采集 实时显示
传统的数据采集系统的数据传输接口在低速时常采用标准串行口或并行口,高速时一般采用PCI总线接口。它们存在如下缺点:虽然标准串行口或并行口应用开发比较简单,但是数据传输速率" title="传输速率">传输速率较低;PCI总线尽管数据传输速率可以达到1Gbps,但是硬件设计和驱动开发难度较大,PCI卡的尺寸面积限制了I/O接口的扩展,不能在笔记本电脑或便携式PC上安装,而且驱动程序安装使用不方便;这三者都不支持即插即用的功能。目前流行的USB2.0传输协议的传输速率为480Mbps,是USB1.1传输速率的40倍,接近PCI传输速率的一半,而其接口简单、便携的优点又是PCI无法比拟的,具有广阔的发展前景。
本文设计并实现了一种基于USB2.0的雷达视频信号高速采集与实时显示系统。该系统采样频率达到10MHz,采样精度为12位,采集数据以定时查询的方式读入计算机事先开辟的大容量内存缓冲区,同时从缓冲区读出数据进行实时显示,采集结束后再将内存缓冲区中的数据存盘。为保证实时显示,计算机必须在雷达天线旋转一圈时间内完成一圈所有数据的显示。随着CPU处理速度与内存读写速度的大幅度提高,为充分利用微机资源、降低成本,采用数据抽取、坐标查表映射和DirectDraw等技术实现采集数据的实时显示。
1 系统组成与工作原理
1.1 系统组成
本系统以计算机作为采集主控设备,雷达视频回波信号的采集由一块自行研制的USB2.0采集卡" title="采集卡">采集卡完成。USB2.0采集卡根据来自雷达系统的时钟、同步触发信号和天线方位、仰角信号控制对雷达视频回波信号的采集,并将采集数据通过计算机USB2.0接口传输到计算机内存中,供计算机处理与显示。实际系统中,选用便携式笔记本电脑,同时将采集卡封装于屏蔽盒内,并通过USB电缆与笔记本电脑相连。因此,本系统特别适用于外场数据采集。系统组成框图如图1所示。
本系统提供在线配置功能,用户可通过USB接口对FPGA程序进行配置或升级,无需专用配置芯片,简化了电路板设计,提高了系统的灵活性。
1.2 工作原理
系统采集工作的最高频率为10MHz,基本满足雷达视频信号的采集,可根据实际需要对送给A/D" title="A/D">A/D的时钟进行分频设置相应的采集频率。A/D的结果扩展为16位,高12位是A/D转换结果,低4位为0,因此数据传输速率最高为20MBps。
系统工作原理如图2,其中虚线框部分由FPGA实现。FPGA主要完成数据采集控制与数据传输控制任务。
数据采集控制:FPGA根据上位机设置的采集参数(包括采集起始命令、距离波门参数、方位、仰角波门参数等)完成对雷达视频信号的波门控制,并对采集数据进行数据编码,在波门起始信号有效后的6个采样时钟周期内,将A/D转换结果丢弃,取而代之以同步头、方位、仰角等数据,过6个采样时钟后,再恢复成A/D的转换结果。数据随后送入FIFO A。
数据传输控制:由于USB没有真正意义上的中断,而是用查询方式完成,最快的查询间隔是1ms。以传输速率20MBps计算,在1ms内有20KB的数据,在FPGA内部放不下,因此只能用外部SRAM实现,用SRAM仿真FIFO的功能。SRAM控制部分将FIFO A中的数据传给大容量的外部SRAM,进行数据缓冲,同时,当单片机内部的FIFO“不满”时,将数据通过FIFO B写入单片机内部的FIFO。其中,FIFO A与FIFO B由FPGA内部BlockRAM资源配置生成,对FIFO A进行读操作时,要注意检测FIFO A的状态为“不空”。对FIFO B进行写操作时,要注意检测FIFO B的状态为“不满”。
2 具体实现
2.1 USB2.0采集卡的硬件设计
USB2.0采集卡主要完成对雷达视频回波信号的数据采集,模拟输入信号为一路非相参的视频信号,视频信号的采集控制与数据传输由FPGA完成。方位和仰角信号采用数字量输入。若伺服系统送来数字格式的伺服数据则可以直接输入,若伺服系统送来模拟的自整角机信号则需要外接一个伺服接口板完成方位和仰角信号的数字化。采集卡硬件结构框图如图3所示。
A/D选用美国ADI公司的AD9224,输入范围为0~4V,50Ω匹配,转换精度12位,最高转换频率40MHz,单5V电源。A/D的输入范围设计成只接收雷达视频信号。FPGA选用Xilinx Virtex系列,封装为PQ240,具体型号为XCV50-PQ240,FPGA内部的BlockRAM可配置为数据传输时所需的FIFO。SRAM选用Cypress公司的CY7C1041[B]V33,容量是256K×16bits,用于对数据进行大容量缓存,以满足USB的传输需要。USB控制器选用Cypress公司的EZ-USB FX2系列USB2.0芯片CY7C68013,封装为PQFP128。它支持USB2.0高速传送,最高速率可达480Mbps。
2.2 固件" title="固件">固件(Firmware)设计
Cypress公司提供了固件架构(frameworks),大大简化了固件开发。该固件架构利用8051程序代码实现FX2芯片的起始设置、USB标准设备请求的处理以及USB闲置模式的电源管理服务。固件的编译在Keil μVision的集成开发环境中进行,在建立的项目中包含五个文件:ez_usb.lib、fw.c、usbjmptb.obj、dscr.a51和periph.c。ez_usb.lib是EZUSB函数库对象程序代码,fw.c是固件架构的程序代码,usbjmptb.obj中定义USB中断向量表。用户仅需提供其USB描述符表(dscr.a51)和实现外围功能的程序代码(periph.c),即可完成完全兼容的USB设备固件设计。
本系统的外围功能程序代码(periph.c)的设计如下:
在初始设置函数TD_Init( )中,对FX2的接口模式进行设置,IFCONFIG=OxCB(48MHz内部时钟IFCLK,异步SlaveFIFO),设置四个端点(EP2、EP4、EP6和EP8),端点设置情况见表1。在初始化中,需要对FX2 内单片机的I/O口及串口进行设置,为串行发送FPGA配置文件做准备。
在中断程序中,ISR_Ep2inout( ) interrupt 0用得到的配置数据对FPGA进行配置; ISR_Ep4inout( ) interrupt 0将从应用软件传来的控制命令(包含对FPGA的配置命令)传给FPGA;ISR_Ep6inout( ) interrupt 0将FIFO中的数据发往USB,EP6设置成自动打包方式(AUTOIN=1),在数据传输过程中无须8051固件的干预,数据写入FIFO后,由智能串行接口引擎SIE直接打包通过USB收发器传给主机,因此用户功能函数TD_Poll( )为空,不做任何处理;ISR_Ep8inout( ) interrupt 0将从FPGA得到的状态数据发往USB。在中断程序中,需要添加中断标志清除语句,但在EP6的中断中,如果设置AUTOIN=1,则不需要。
2.3 驱动程序设计与使用
FX2的设备驱动程序有两种:一种用来在设备接入时从主机下载固件到RAM中,称为固件下载驱动程序(wdgtldr.sys);另一种是在设备重新列举后加载的通用设备驱动程序(ezusb.sys),应用软件通过该设备驱动程序与FX2通信。
固件的程序代码既可以通过外部E2PROM下载,也可以通过主机下载。在本系统中选择从主机下载。当采集卡与主机相连后,此时单片机内还没有程序,其缺省的ID号是:VID:0x04B4,PID:0x8613。主机通过这个ID号,找到固件下载驱动程序,并将相应的固件代码下载到FX2的RAM中。wdgtldr.sys的生成是利用Cypress公司提供的固件下载驱动程序源代码和用户编译成功的固件代码,在Win2000 DDK中创建。
在将固件代码下载到RAM后,系统清除内存中的固件下载驱动程序,并重新列举,让8051固件控制FX2。此时,系统获得由8051固件提供的新ID号,认为有新的USB设备接入,并据此加载相应的通用设备驱动程序。通用设备驱动程序一般不需要重新编写,可以直接使用Cypress公司提供的驱动程序ezusb.sys。
为了增强系统的通用性和可移植性,可以对通用设备驱动程序(ezusb.sys)进行动态链接库(DLL)函数封装。动态链接库对驱动程序的访问都是通过DeviceIoControl调用实现:首先调用Win32函数CreatFile( )得到设备驱动程序的句柄,然后调用Win32函数DeviceIoControl( ),通过得到的句柄把IOCTL和相关的输入输出缓冲区提交给驱动程序。当应用软件退出时,用CIoseHandle( )关闭设备。
2.4 应用程序设计
在本系统中,应用软件主要由动态链接库和应用程序两部分组成。动态链接库负责与USB设备驱动程序通信,响应应用程序的各种请求;应用程序则以定时查询的方式将采集数据读入计算机事先开辟的大容量内存缓冲区,同时从缓冲区读出数据实时显示,采集结束后再将内存缓冲区的数据存盘。
现代雷达天线转速通常为每分钟几转至几十转,假设雷达天线转速为10转/分,则天线旋转一圈的时间为6秒。这意味着要实现采集数据的实时P显,则必须在6秒钟完成一屏内所有数据的计算和显示。为此,设计时采用了数据抽取、坐标查表映射和DirectDraw等方法。
由于计算机分辨率要求一屏内显示的像素点远小于天线转动一圈所采集的数据点,为减轻微机负担,可对视频回波在周期和距离上进行数据抽取。假设雷达天线转速为10转/分,脉冲重复频率为700μs,量程设为50千米,则在采样率为10MHz情况下,天线转动一圈采集到的点数约为3000万。假设微机显示器的分辨率为800×600,则一屏内只需显示约50万个点。可见,采用数据抽取方法后数据量降为原来的60分之一。
由于一般雷达回波信号采用极坐标体制,而光栅显示器采用直角坐标系体制,因此必须进行坐标转换。传统坐标变换中正弦、余弦与乘、除法运算耗时过多,若将坐标转换运算改用坐标查表映射,则可显著提高运算速度。具体方法为:将光栅显示器屏幕点阵赋予距圆心距离值、角度值和颜色值等属性,将这些属性依据极坐标的特性进行排序做成索引表,并在系统初始化时调入内存,系统工作时无需再作变换,大大节省了CPU的运算时间。
坐标转换机制建立后,鉴于P显对实时画图速度的特殊要求,采用了DirectDraw技术。DirectDraw是DirectX技术的核心,可直接操作显示内存,进行硬件位操作、硬件覆盖操作和页面切换操作,它绕过了与Windows的图形设备相连的多个层次,直接与硬件的底层打交道,产生快速、平稳的图形。
目前,本系统已对某型舰载警戒搜索雷达成功地进行了实际外场数据采集。实验表明这个系统完全满足所提出的指标要求,能够做到大容量高速连续采集且稳定可靠,测得的数据能够真实地反映出目标与环境的特性,可用于检验各种目标检测、识别、跟踪算法。
本系统还可以应用于高速雷达信号处理机中,利用采集卡上的高速信号处理芯片直接对采集的雷达数据进行高速实时处理与分析。
参考文献
1 汪 涵,罗晓平,谢定富.雷达视频回波信号的高速采集与回放显示.测控技术,1999;(12)
2 李忠民,王子旭.高带宽USB2.0接口的设计.信息与电子工程,2004;(4)
3 梁景新,薛余网.PPI雷达信号微机显示中快速极坐标—直角坐标映射.上海交通大学学报,1999;(1)
4 刘翠海,温 东.光栅扫描显示器上实现PPI雷达长余辉仿真.计算机仿真,2002;(2)