红外成像技术早期在军事领域有着广泛的应用[1],随着非制冷红外热成像技术的生产成本大幅度降低以及红外成像和测温具有非接触、无损等特点,该产品的应用目前已延伸到了电力、消防、工业、医疗、安防等各个领域。
常见的热像仪都是以FPGA、DSP、ARM为核心实现,其中以FPGA为核心的嵌入系统[2]具有并行处理和实时性强的优点,只是FPGA在任务调度、网络协议等功能设计上处理起来较为复杂。以ARM为核心的嵌入系统[3]能够轻松实现多任务调度、移植各种复杂的网络协议及实现多种IO接口,但ARM的处理器架构在实时性和高吞吐量上能力较差。
为实现更高性价比,满足红外图像数据处理和传输要求,本文提出以TI公司的DM642处理器为核心设计红外热像仪。从硬件上看,该处理器主频能够工作在600 MHz以上,并且片内具有多总线、多处理器单元,具有多种IO总线和多通道EDMA,加上片内自带的VP口、EMIF接口和EMAC控制器,能够无缝连接外部设备,如FPGA、SDRAM、FLASH、网络物理层芯片等。同时为了降低设计复杂性和更好地利用处理器硬件资源,TI公司还针对6000系列的高性能DSP处理器,提供BIOS操作系统、DDK驱动开发包、NDK网络协议栈开发包以及RF5程序框架等。利用DM642和TI达芬奇多核系列DSP处理器的软硬件通用性,基于DM642设计的嵌入系统还可以很方便地移植到性能更强的达芬奇平台。
1 设计总体框架
总体设计如图1所示。首先红外探测器把热辐射转换为电信号数据;其次FPGA接收探测器串行输出的数据并调整时序后加入行同步和场同步信号形成RAW格式的热图数据,这种RAW格式的数据可以直接通过DM642的采集VP口输入到DSP中。当VP口采集到一帧以后就会给DM642产生输入中断,此时DM642就可以对热图数据进行非均匀性校正[4]、直方图均衡、温度计算,模拟视频生成、数字视频网络传输等处理。由于选用的是处理性能强的DM642,结合TI公司的BIOS操作系统及DDK、NDK、RF5等开发软件包,因此本设计可以选用价格较为低廉的FPGA芯片进行数据采集的时序处理,如EP1C6T144C8,从而把复杂的数据处理和传输等功能放到DM642芯片中,提高系统的稳定性和灵活性。
2 硬件设计
2.1 红外探测器接口电路
红外探测器选用FILR公司的Photon 640机芯,该探测器实现热辐射到电信号的转换。机芯内置非制冷氧化钒(VOx)焦平面阵列,像素分辨率达到640×480,提供8 bit或14 bit的串行低电压差分信号LVDS(Low Voltage Differential Signaling)图像输出,并且可以方便地通过串口进行配置。由图2所示,机芯提供8根引脚输出,其中数据时钟PH_DCLK+和PH_DCLK-、帧同步时钟PH_FSYNC+和PH_FSYNC-、数据输出PH_DATA+和PH_DATA-,均为LVDS信号格式,通过DS90LV032A芯片转换为3 V CMOS信号,转换后的数据信号和时钟信号输出到FPGA中对应引脚。TXD_PHOTON和RXD_PHOTON为串口发送和接收引脚,通过MAX3232CD芯片转换为TTL信号后连接到DM642对应的引脚上。 2.2 FPGA的接口设计
FPGA采用Altera Cyclone系列的EP1C6T144C8,包含5 980个逻辑单元,价格低廉、处理性能适中。主要实现以下功能接口:(1)红外探测器接口。根据机芯输出的时钟信号和帧同步信号把热图数据采集到FPGA,并且为了和DM642的VP采集口的RAW格式数据一致,还需要在采集的热图数据中添加行同步和帧同步信号。(2)ADV7179编码器配置和时钟接口。为了降低DM642 I2C控制的复杂度,对编码器的配置和初始化通过FPGA完成,并且为了显示PAL格式的红外模拟视频,编码器还需要一个27 MHz的时钟信号,该信号也是通过FPGA的PLL模块产生。(3)DM642接口。分别包括:16 bit的数据接口,输入用VP1,因此需要和VP1的DATA[9:2]以及 DATA[19:12]连接;采集使能接口 VP1CTL0;采集时钟接口VP1CLK0。具体如图3所示,H为行同步,V为帧同步,FPGA在VP1CTL0为高电平时输出一行数据,数据的采集时钟为VP1CLK0。 2.3 DM642的接口设计
DM642作为系统设计的核心,其主要接口如图4所示,主要包括:(1)通过EMIF总线对SDRAM和FLASH进行数据读写。FLASH主要保存程序代码、与热像仪相关的配置和测温系数等数据;SDRAM是程序运行中需要用到的外部存储器,由于基于BIOS操作系统的代码量都较大,无法把程序和数据都加载到DM642的L2缓存中,因此必须合理使用SDRAM,并且将其配置为L2的外部CACHE,通过EDMA通道和L2对应一致。(2)编码器接口。ADV7179的时钟信号和初始化由FPGA提供,但编码器的输入数据由DM642通过VP0提供,数据格式是8位宽的BT.656格式,内嵌同步信号,因此这里不再需要提供额外的行同步和帧同步信息。(3)FPGA接口。这部分在介绍FPGA接口设计时已经提到,DM642需要把VP1配置为RAW格式的采集模式,采集宽度为16位,采集时钟和采集使能信号都由FPGA提供。(4)EMAC接口。DM642内嵌EMAC控制器,并且在片内由EDMA通道及通过专用的EMAC数据线和外部物理层芯片LXT971ALC连接,这种架构设计正是DM642网络通信性能优异的保证,具体的测试结果在实验与总结部分给出。EMAC控制器还可以通过MDIO接口对LXT971ALC芯片进行配置,获取以太网连接状态信息等。(5)I2C接口,该接口主要用来配置探测器,使得探测器工作在合适的模式,并且获取相关的配置信息,如探测器内部温度、控制快门校正等。 3 软件设计
基于DM642的软件设计有两种主要方式,其中之一是类似单片机的程序设计方法,主程序是一个死循环,通过中断和定时器来实现各个任务的控制。这种方式在程序较大、任务较多并且任务间需要同步和通信时不太适合,难以发挥出处理器的性能。因此本文采用TI公司针对C6000芯片的BIOS操作系统来进行软件设计,采用多线程技术,对硬件的访问都通过BIOS架构的Mini-Driver方式,这就保证了系统的稳定性和可靠性。
3.1 驱动程序
对硬件的访问都封装成对应的驱动模块,并且需要用到TI的DDK和NDK开放包,主要包括:(1)对VP1和VP0的驱动设计,在DDK中TI为了降低设计难度,已经针对VP口提供了常用的编码器和解码器的驱动模块,如TVP5146 和TVP5150等,因此可以在现有的VPORT.lib库上进行修改。具体来说就是把头文件中的VPORTCAP_Params和VPORTDIS_Params结构中位宽定义字段修改为需要的位宽格式,然后把编码器和解码器的OPEN、CLOSE、CTRL函数中参数和实际用到的编码器和解码器对应修改即可。修改完后需要重新编译VPORT工程,把编译得到的VPORT.lib文件保存到新工程目录下调用。(2)TI已经在NDK中提供了TCP/IP协议栈的支持,但NDK要在自己设计的板子上运行,还需要在用户板级驱动包中添加对EMAC和MDIO的初始化操作。这里在BIOS的全局初始化函数中首先对物理层芯片进行复位,然后实现两个回调函数_getConfig和_linkStatus,分别实现对MAC地址配置和以太网链路状态信息的读取。
3.2 主程序设计
主程序流程如图5所示。首先进行硬件初始化,包括CACHE、VP口、EMAC、I2C、EDMA、中断等;然后启动网络监听任务和热图采集任务;最后启动数据处理任务和视频显示任务。各个任务的功能如下:(1)在热图采集任务中采集到一帧完整的640×480×16 bit的红外图像原始数据并通过双缓冲模式通过EDMA把数据保存在SDRAM中,然后通过TI提供的RF5框架中的SCOM通信模块,把地址指针和同步信号发送到数据处理任务。(2)数据处理任务把原始红外数据进行非均匀性校正、直方图均衡、温度计算等处理,并且同时生成具有字符叠加后的模拟视频数据;然后数据处理任务把模拟视频数据通过SCOM通信模块发送到视频显示任务,通过ADV7179得到PAL格式的模拟红外视频。如果热像传输任务已经启动,数据处理任务还需要把处理后的热图数据发送到热像传输任务。(3)热像传输任务和命令收发任务都是基于NDK提供的网络通信,首先是初始化TCP SOCKET连接并监听,当接收到网络来的连接请求并通过鉴权后,再启动对应传输和命令收发任务。其中热像传输任务的输入数据是来自数据处理任务,然后通过TCP协议发送到PC计算机进行显示、存储和进一步处理。命令收发任务接收网络传来的命令信息,包括对探测器的配置、对热像仪定标数据的配置,以及通过该任务对FLASH进行读写,实现热像仪在线软件更新功能。 这种基于BIOS操作系统的多线程、多任务处理方式,充分利用了DM642的高效和并行处理能力,能在保证红外热像网络传输不受干扰的情况下,同时对机芯进行有效的命令配置。并且在有多个PC的上位机程序同时通过网络连接热像仪时,只需要额外启动对应的热像传输线程即可。
4 实验与总结
热像仪网络传输的速度非常重要,这是由于红外图像通常不希望进行有损压缩,而高分辨率的热像仪对网络带宽要求较高。如FLIR公司的PHOTON640机芯的热像数据输出为9帧/s,每帧分辨率为640×480,每点14 bit。为了方便处理,在DM642和FPGA的处理中用16 bit存储每点的数据,这样每秒在网络中传输的带宽至少需要42 Mb/s。
为了测试DM642的传输速度并且和基于ARM9的设计方案进行比较,在百兆局域网中通过PC和三种设计方案的热像仪原理样机直接连接,并用测试数据进行网络传输,其中包括本文的设计方案,以及文献[3]中提出的ARM9+DM9000和ARM9+AX88180。LXT971ALC是物理层芯片,这是由于DM642内嵌EMAC控制器,实现网络连接外部只需要物理层芯片即可。而ARM9没有内嵌EMAC控制器,只能通过外部通用地址和数据总线和外部MAC控制器连接,这里分别选用16位宽的百兆DM9000和32位宽的千兆AX88180 MAC控制器。测试结果如表1所示。可见由于处理器架构限制,ARM9即使搭配32位宽的千兆MAC芯片,其传输速度才33 Mb/s,而DM642却可以达到80 Mb/s,能够实现640×480这样的高清晰度热像仪无损网络数据传输。 基于DM642的嵌入式系统设计由于其软硬件的灵活剪裁,并且能充分利用BIOS的多任务机制,非常适合高性能的嵌入式设备设计。本文设计的红外热像仪可以作为独立的手持设备,也可以方便地通过网络集成到现有系统,因此已经作为产品,批量地生产应用在消防、医疗和边防监控中,并在甲型H1N1防疫工作中起到了关键作用。
参考文献
[1] 彭焕良.红外焦平面热成像技术的发展[J].激光与红外,2006,36(12):776-780.
[2] 刘国贺,李玉惠,李勃,等.基于FPGA的数字图像水印实时嵌入系统的设计与实现[J].电子技术应用,2010(3):27-30.
[3] 吴华,谢礼莹,徐泽宇.基于ARM9的红外热像仪设计与实现[J].计算机工程,2010,36(16):234-236.
[4] 代少升.红外焦平面阵列非均匀性非线性校正新方法[J].光电工程,2008,35(4):121-125.