基于Linux平台的天气雷达高速数据采集系统设计
完成用户与设备的读、写及设备控制访问等功能,其数据结构设计为:
static const struct file_operations plx9054_fops = {
.owner = THIS_MODULE,
.open = plx9054_open, /*打开设备*/
.release = plx9054_close, /*释放设备*/
.ioctl = plx9054_ioctl, /*IO操作*/
.read = plx9054_read, /*读设备*/
};
这个数据结构在设备装载过程中,作为设备注册的参数完成与设备挂接、使用户在系统调用中能访问到上述关联的设备接口函数。
设备打开函数plx9054_open完成以下操作:设备私有数据结构内存空间分配及初始化,DMA连续物理内存空间申请,为天气雷达最大距离探测采集数据的大小;调用pci_map_single将分配的DMA内存空间映射为用于DMA传输地址;DMA数据缓冲区分配(容量为2 MB),缓冲区保存每次DMA传输中获取的数据;调用request_irq对中断函数p9054_interrupt进行中断号申请;对天气雷达工作参数进行缺省配置,启动雷达工作。设备释放函数PLX9054_close完成的操作与设备打开函数与PLX9054_open相反。IO操作函数PLX9054_ioctl通过sys_ioctl系统调用,完成用户与设备的信息查询、雷达工作参数配置与查询,如驱动软件版本号、雷达当前工作各参数配置和查询,主要用于对FPGA中RAM内存空间的雷达工作参数数据访问。由于这部分数据对访问速度要求不高,使用IO操作能很好地满足设计要求。读设备函数PLX9054_read将驱动DMA数据缓冲区中的数据实时读取到用户空间缓冲区内,完成采集数据从设备到用户的读取操作。
2.1.3 中断处理及DMA传输
中断处理及DMA传输是驱动的核心部分,它的设计质量直接影响到雷达采集数据能否正确、实时地从采集系统板传送到设备驱动缓冲区,并实时被用户获取。中断处理工作流程如图2所示。
由于DMA数据缓冲区远大于每次DMA数据传输大小,这对于雷达数据采集中因用户读取数据延迟而导致的缓冲区溢出有较好的抑制作用,而相对于现有计算机平台,2 MB内存容量已足够。DMA数据缓冲区设计为循环缓冲区,使用读、写指针维护,在中断处理中更新其写指针,在PLX9054_read中更新其读指针,采用溢出则覆盖的机制,既方便管理,节省资源,同时又可对溢出进行计数,很方便进行实时性能的测试。
2.2 数据采集处理程序实现
数据采集处理程序是雷达高速数据采集系统的应用处理程序,完成雷达高速数据采集及对采集数据的数字信号处理、输出天气雷达生成一次产品。其主要流程如图3所示。
在采集I/Q数据时,I/Q两路数据采用交叉采集方式存入FIFO缓冲中,每路数据有效位为23,最高位为符号位。因此,在采集数据处理中需对读取的数据进行I/Q数据分离,即将采集数据恢复为原始I、Q两路数据,同时将24 bit数据转换为32 bit数据方式存储,以满足后面数字信号处理要求。
在软件设计中,不同数字信号处理功能采用不同数字信号处理函数实现,在采集数据获取前进行选择配置,数字信号处理功能增加可通过增加相关的数字信号处理函数来满足,以方便功能的完善和移植。通过对I/Q数据分离后获得的数据进行相关数字信号处理即可获得天气雷达中的一次产品,如功率和反射率等。
本文基于Linux2.6平台,设计实现了天气雷达高速数据采集系统的驱动和数据采集及对采集数据的数字信号处理,并在现有天气雷达上完成了调试验证。目前,本设计已成功地应用在现有的天气雷达中。
- 基于DSP和USB的三维感应测井数据采集系统(06-14)
- 基于DSP的USB口数据采集分析系统设计(09-22)
- 基于CPLD的线阵CCD数据采集系统(06-05)
- 基于FPGA的主从式高速数据采集与传输系统(06-05)
- 100MHz 数字存储示波表样机的研究与试制----数据采集系统设计(一)(06-04)
- 用RS-485构成总线型多点数据采集系统(06-04)