基于PCl-Express高速图像采集卡对扩展源大气倾斜量的实时补偿*

2011-01-25 07:53杨靖文陈善球熊耀恒饶长辉
天文研究与技术 2011年2期
关键词:传输速度采集卡驱动程序

杨靖文,陈善球,熊耀恒,饶长辉

(1.中国科学院国家天文台云南天文台,云南 昆明 650011;2.中国科学院光电技术研究所自适应光学研究室,四川 成都 610209;3.中国科学院自适应光学重点实验室,四川 成都 610209;4.中国科学院研究生院,北京 100049)

在月球激光测距[1]的相关跟踪自适应光学系统中,为能有效消除大气湍流带来的扰动,要求自适应系统的响应时间必须小于大气湍流的特征时间尺度,即在2~5 ms内完成波前探测和补偿[2]对于各个环节的延时都要尽量降到最低。其中,实时图象采集部分,需要使用高速高灵敏的CMOS相机,同时,对图象采集卡也提出了很高的要求。

现在的图像采集卡大多数是借助PCI总线的线性突发传输的特点,采用面向计算机存储器的图像采集方式,即模拟图像通过A/D转换器后,先存于PCI总线产品自身的缓冲器中(一般只需几K的容量)[3],当缓冲器满后直接把图像数据传输给计算机的物理存储器。因此电路设计较为简化、成本低。工作频率为33 MHz,总线带宽为32位的计算机,最大传输率为132 MB/s。但是在实时性要求较高,图像传输数据量巨大的大气倾斜量校正中仍然有较大延迟。

PCI-Express总线的提出将数据传输的速率提升到一个新的台阶。作为第3代高性能IO总线,在传输速率方面,PCI-Express总线利用串行的连接特点能轻松将数据传输速度提到一个很高的频率,达到远超出PCI总线的传输速率,引脚数大大减少;并且点到点的互连,每个设备都由独立的链路连接,独享带宽[4]。这些变革在提高了数据传输速率的同时,大大减少了电路设计的成本。采用这种总线的高速图象采集卡,能够缓解数据吞吐速率不匹配的矛盾,还能够简化电路的设计。根据PCIExpress 1.0规范,PCI-Express采用8位元,2.5 GB/s的工作频率,每个通道支持双向数据传输,每向数据传输带宽250 MB/s,现采用PCI-Express X4规格,单向数据传输带宽为1GB/s。

本文提出一种采用定制PCI-Express的高速图像采集卡,并且在实时操作系统RTAI(Real-Time Application Interface)设计了实时驱动程序,在通用CPU上,实现硬实时图像采集。

1 系统设计

RTAI实时操作系统[5]是对 Linux 内核的硬实时扩展,它可以提供工业级的RTOS(Real-Time Operating System)功能,而且其所有的功能都可无缝地通过GNU/Linux环境访问。采用Linux+RTAI双内核操作系统,在其中设计PCI-E图像采集卡的实时驱动程序,得以最大限度地降低图像传输的延时。

1.1 系统硬件设计

整个相关跟踪系统,结构如图1,PCI-E高速图像采集卡和D/A输出卡通过PCI-E总线、PCI总线和工控机(Industrial PC,IPC)连接构成了波前处理机的硬件平台。其中图像采集卡负责从外部CMOS相机高速实时地采集图像数据,通过PCI-E总线,由RTAI实时驱动程序中的中断响应Block DMA Mode处理之后,传递到处理机的共享内存,D/A输出卡负责将实时任务得到的控制电压输出给外部数模转换器件(DAC)和高压放大器。工控机采用双核CPU并行计算,运行实时任务。

图1 相关跟踪系统结构Fig.1 Block diagram of the correlation tracking system

1.2 系统软件设计

在此之上建立相应的软件层,主要分为两个软件层,如图2,RTAI内核层和Linux用户层,它们之间通过RT-FIFO进行高速数据传输。其中,内核层中,RTAI实时操作系统在Linux内核与硬件中断之间增加一组实时硬件抽象层RTHAL(Real Time Hardware Abst raction Layer),接管了所有的硬件资源。并且RTAI的任务调度系统会为实时任务分配较高的优先级,而Linux操作系统的优先级最低,它所占有的时间片转轮,随时可以被实时任务抢占。Linux用户层,主要是监控和管理的功能,由图形用户接口GUI(Graphical User Interface)和显示线程组成。

图2 相关跟踪系统软件结构Fig.2 Software architecture of the correlation tracking system

2 图像采集卡硬件电路设计

本设计中采用的PCI-Express高速图像采集卡的板卡是交由成都华兴爱达科技产品经营部,按照本文设计硬件电路定制出来,并且设计了测试管脚和调试管脚,由本文按照大气波前倾斜量实时补偿的特点,特别设计开发VHDL软件程序,最大限度地提高系统带宽,降低延时。

本设计中选取ALTERA公司的型号为EP2C35的FPGA芯片作为数字信号处理的核心芯片[6]。直接连接外围的各种接口器件,硬件结构如图3。基于高速的要求,选择CAMERALINK接口和SDRAM存储芯片,做到无像素点遗漏、不间断的数据存储。选择PCI-ExpressX4的总线结构,理论速度能达到1 GB/s。

图3 高速PCI-E图像采集卡硬件电路结构Fig.3 Illustration of the circuit structure of the high-speed PCI-Express image acquisition card

Camera Link接口解码芯片将CMOS相机发出的差分信号转换后,经FPGA,送往双口SDRAM存储。SDRAM存满一帧图像后,将数据传递给主机。为了保证CMOS数据的高速实时采集,采用中断驱动的Block DMA Mode,PCI-E同时控制总线两侧的数据传递,而数据传输的执行则由PCI-E的设备驱动程序通过设置内部寄存器来控制。

2.1 主要芯片的选取

PCI-E高速图像采集卡核心模块FPGA选择的是ALTERA公司cycloneⅡ系列中的EP2C35芯片。由于FPGA内部结构的特点,采集图像信号处理十分有利。适合实时图像信号处理中通常都需要大量数据传输。

采用CAMERA LINK接口,选用的是K4S643232H芯片,Camera Link是采用了一种新型的数字差分传输方法,图像信号传输采用的是数字差分信号,简化了模数转化、视频信号编码解码等工作流程,有较高的传输速度和图像像素精度,图像传输前后端连接简单、灵活。

随机存储器方面,使用FPGA芯片中的SRAM(静态随机存储器),由于本系统是同步系统,在数据传输完一帧后,发中断给计算机,计算机开始接收数据传输,因为计算机先传输,而且速度大于相机端数据传输速度,所以,传输速度足够,并且处理的图像大小为64×64,存储器大小足够。

2.2 FPGA逻辑设计

PCI-E高速图像采集卡的主要结构是FPGA,它的主要功能是实现PCI端的协议,实现主机PCI-E接口到存储器PCI接口的转换,逻辑结构如图4。FPGA主要分为4大模块,其中包括负责数据采集功能的Videoint模块、负责PCI配置功能的Pcislave模块、负责实现DMA传输功能的Busmaster模块、负责存储图像功能的IPM_RAM模块。

图4 高速PCI-E图像采集卡逻辑结构Fig.4 Logic structure of the high-speed PCI-Express image acquisition card

FPGA中,存储器端的接口为并行接口,需要经过PCI—PCI-E桥接芯片将存储器端(Local端)转换成为串行信号接口,此处选择的是P17C9X130桥接芯片(PCI EXPRESS TO PCI-XBRIDGE),它支持双向桥接,而本系统中实现的是“前进模式”,芯片桥可以完成X4PCI-E上行端口至64位PCI下行端口的配置,用于接收FPGA中SRAM并行接口的数据,因此,PCI—PCI-E桥接芯片支持FPGA工作在64位,66 MHz的PCI协议。也就是FPGA中的存储模块IPM_RAM从数据采集模块Videoint模块中,按照PCI协议,遵守PCI 3.0规范将64位地址数据多路复用的并行信号,转换为PCI-E的串行信号,才能够由PCI-Express接口将图像数据传输给计算机,这样就实现了主机通过PCI-E接口控制存储器端接口,实现高速传输。

其中,PCI下行端口的频率约为66 MHz,因此,PCI下行端口的理论速度为528 MB/s。虽然PCI-E上行端口的理论速度为1 GB/s,但受到桥接转换成PCI端口的限制,PCI-E图像采集卡理论传输速度为528 MB/s。

3 RTAI实时驱动程序设计

Linux内核将所有外部设备看成是一类特殊文件,称之为“设备文件”,这种“设备文件”也就是设备驱动程序,它是Linux内核与外部设备之间的接口,使得内核可以向应用程序提供一个统一的接口,不用考虑底层的技术。也就是设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备。

PCI设备的实时驱动需要实现设备初始化、实时中断处理和设备卸载3部分,程序流程如图5。实时计算线程作为实时内核态程序可以直接调用PCI实时驱动,同时,它和主应用程序通过实时FIFO进行通信,从而间接地实现了实时驱动程序和主应用程序的通信,这样也间接地实现了Linux用户态的主应用程序对PCI-E外设的控制。

图5 高速PCI-E图像采集卡实时驱动程序结构图Fig.5 Structure diagram of the RTAI real-time driver of the high-speed PCI-Express image acquisition card

在运行实时驱动程序时,采用模块加载方式,挂接程序模块,模块加载成功后,module_init()函数会初始化PCI-E,并调用pcie_register_driver()注册PCI-E驱动程序,

注册时需要提前给出两个结构体,第1个描述了被支持的PCI-E设备的ID号及其掩码。

另1个介绍了驱动程序的名称name,检测设备的函数probe(),以及用于识别设备的id_table结构。

在probe()探测函数中,首先调用函数pci_enable_device(pdev),激活PCI-E图像采集卡,完成驱动程序的注册,再调用RTAI的API函数rt_request_global_irq(pdev->irq,pcie_interrupt),申请实时中断,同时注册中断服务例程(Interrupt Service Routine,ISR),保证了PCI-E图像采集卡中的Local中断和DMA中断信号能被系统快速响应,因为实时中断的优先级最高,被接收后,计算机将立刻响应。图像采集卡一帧图像存储完毕后,发出DMA中断,由中断处理程序_interrupt()进行响应,进入DMA数据传输,并存储在计算机共享内存中。当一帧数据传输完毕,计算机发出local linux中断,唤醒实时计算程序中的函数startcal(),进行倾斜量的计算。

由于探测对象是低对比度扩展源目标,月球激光测距中大气倾斜量实时补偿的理论算法采用绝对差分算法,由此造成的大计算量,又结合高实时性的要求。选择使用双核CPU的工控机,在实时计算程序中,同步过程主要为CPU 0发送rt_receive()函数,由CPU 1的函数rt_send()接收信号后,双线程并行运算。

4 实验结果

实验中采用主频为2.66 GHz,双核cpu的工控机。选用相机为Intervac公司的背照明式近红外相机,该相机在采集图像大小为64×64时,帧频最大可达到3000 Hz。

在对比实验中,相机选取1000 Hz帧频,首先选用PCI图像采集卡的Local端总线为32 bit,工作频率为33 MHz/s,根据计算的需要,只传输64×64大小图像,在实时I/O驱动程序中,加入rt_get_cpu_time_ns()函数,通过使用cpu时钟,来测量各操作完成所需要的时间。得到图像数据DMA传输所需时间为260 μs。相对比,换使用PCI-E 4通道高速图像采集卡,它的工作频率为2.5 GHz/s,其他实验条件不变,得到图像数据DMA传输所需时间为26 μs。说明采用该PCI-E高速图像采集卡,相关跟踪系统数据传输所产生的延时,缩短了一个数量级,较好地节省了时间,提高系统效率。

图6a 10 ms长曝光开环图像Fig.6a Image of 10 ms open-loop exposure affected by atmospheric tilt

图6b 10 ms长曝光闭环图像Fig.6b Image of 10 ms closed-loop exposure with effects of atmospheric tilt corrected

同时,实验中通过加载干扰信号的方式,对模拟目标光源进行扩展、干扰,由本文中设计的PCI-E高速图像采集卡,实时采集到图像数据,传输给计算机,并进行实时计算,得到倾斜量误差,输出校正电压给高压放大信号,最终的完成实时闭环。实验结果,图6a中,相机采集帧频为1000 Hz,加载了4 Hz正弦干扰信号,采集10 ms的长曝光像,由于动态干扰,导致图像模糊不清。闭环后的实时校正图像图6b中,图像明显清晰很多,分辨率得到大幅提高。

经测量,基于该PCI-E高速图像采集卡的相关跟踪系统各项系统延时如下:图像数据的最大传输时间28 μs,实时计算最大延迟时间320 μs,PCI D/A输出卡只需传输相对偏移量校正电压,所以延时基本忽略不计,共计348 μs。因此,整套系统的响应时间大幅度小于大气湍流波前误差变化的时间尺度(2~5 ms)。

5 总结

根据上述实验结论,PCI-E高速图像采集卡实现了通过Camera link接口对相机的图像采集,并实时地传输到计算机中。进一步缩短了大气湍流倾斜量探测的相关跟踪系统的延迟。同时,多次反复实验中,该PCI-E高速图像采集卡,高速、实时、准确地采集图像数据,传输图像数据,RTAI实时操作系统下的实时驱动程序为其提供了与计算机之间良好的通信,以及数据传输通道,它的硬实时特性是大幅度减少图像数据采集延时的关键。

本系统中传输的图像大小为64×64,每个像素值是10位,由上述实验测得DMA传输时间为26 μs,可得PCI-E图像采集卡实际传输速度为188 MB/s。而 PCI-E 4通道的理论传输速度为528 MB/s。经分析,造成速度减小的原因有两点:其一,DMA传输过程信息时,需PCI-E图像采集卡发出一系列相互识别的握手信号,从设备(主机内存端)需要准备好并响应,完成硬件握手,再进入到数据传输阶段,这样造成了传输的延迟;其二,传输过程先进行地址部分的数据传输,再进行图像数据部分的传输,也导致实际数据传输速度不能达到理想速度。

将来,为使月球激光测距精确性得到进一步提高,采集和传输更大幅面图像时,可以选用通道数量更多的PCI-Express接口,例如:PCI-E×8接口,PCI-E×16接口。并选用PCI-Express 2.0规范或者随着PCI-Express 3.0规范的出现而不断升级扩展。其中PCI-Express 2.0规范在1.0版本基础上更进了一步,将接口速率提升到了5 GHz,传输性能也翻了一番。新一代芯片组产品均可支持PCI Express 2.0总线技术,X1模式的扩展口带宽总和可达到1 GB/s,X16图形接口更可以达到16 GB/s的惊人带宽值。可以进一步缩短图像数据采集和传输的系统延时。

[1]熊耀恒.月球激光测距的新技术方法研究[D].昆明:中国科学院云南天文台,2001.

[2]郭锐,熊耀恒.自适应光学技术应用于激光测月中大气波前倾斜量的探测与计算[J].天文学报,2004,45(4):413-421.Guo Rui,Xiong Yaoheng.The Detection and Computation of Atmospheric Tip-Tilt in Lunar Laser Ranging when Adaptive Optics Technology is used[J].Acta Astronomica Sinica,2004,45(4):413 - 421.

[3]李贵山,戚德虎.PCI局部总线开发者指南[M].西安:西安电子科大出版社,1997.

[5]阮鸿芳,钟家骐.Linux与硬实时扩展系统——RTAI的分析与研究[J].嵌入式操作系统应用,2007(23):44-45.

[6]郑千洪,王黎,高晓蓉.基于FPGA的图像采集卡的设计[J].电气自动化,2007,29(6):65-66.Zheng Qianhong,Wang Li,Gao Xiaorong.The Design of Image Sampling Card Based on FPGA[J].Electrical Automation,2007,29(6):65 -66.

猜你喜欢
传输速度采集卡驱动程序
高精度AD采集卡性能测试及评价方法研究
血液采集卡存储装置的设计与应用
SSD移动硬盘大降价,可以考虑了
阻止Windows Update更新驱动程序
计算机硬件设备驱动程序分析
面向数控机床的多通道传感数据采集卡设计
并行高速采样在地震物理模拟采集中的应用
电网中无线通信技术的应用探析
浅谈提升互联网信息传输速度技术分析
妙用鼠标驱动