基于PCIe总线的航空视频采集记录系统的设计
扫描二维码
随时随地手机看文章
摘要:PCIe总线不仅硬件接口简单,软件和PCI总线完全兼容,而且传输速度数十倍于PCI总线。针对载机任务系统实时视频采集记录的需求,设计了一种基于PCIe总线的航空视频采集记录系统,利用现场可编程逻辑器件(FPGA)实现了视频数据流的编解码和PCIe桥接口的设计,简化了硬件接口设计,提高了系统的工作效率。系统在某型数字化对抗训练系统中的实际应用表明该设计实用可行。
关键词:PCIe总线;视频采集;硬件设计语言;INDS
0 引言
航空电子系统之间以传递状态数据和控制数据为主,因为数据量不十分巨大,对传输速率要求并不高。例如,最流行的航空总线ARINC 429和1553B总线,速率分别是100kbps和1Mbps。而随着飞行训练强度和精度的提高,飞行试验和训练过程的多通道视频画面需要实时记录下来以便进行事后分析评估和系统设计改进。与传输状态控制信息相比,这些视频数据是巨量的,对航电系统的海量存储和数据高速传输都提出了更高的要求。本文提出一种航空视频采集记录系统的设计方案,采用速率高达2.5Gbps的PCIe总线构建系统,PCIe总线既有高速的数据传输能力,又有良好的外设接口,有利于大容量信号的实时传输。有效解决了机载多通道视频数据的实时采集与记录,为航空训练任务系统的事后评估和性能分析改进提供了便捷的手段。
1 系统的方案设计
在航空视频采集记录系统中,摄像头把载机任务系统的实时画面视频数据按预定格式组帧,通过LVDS信号总线传输给视频采集模块;经过视频采集模块对LVDS信号电平进行变换处理后,将单端视频数字信号送给可编程逻辑器件(FPGA)进行视频解码处理。解码后的数字视频,一方面通过SAA7121视频编码器直接送给监视器,让飞行员实时掌握训练情况与效果:另一方面通过高速PCIe总线传送给嵌入式CPU模块进行视频数据压缩存储,供事后分析。航空视频采集记录系统总体结构如图1所示。
2 系统的硬件设计
系统的硬件设计主要集中在各个功能模块的电路设计上,是软件设计和系统调试的平台基础。硬件设计应该保证系统运行的高可靠性,在满足要求的前提下,尽量减少可编程逻辑、系统软件的设计与调试的难度。
2.1 视频数据采集
摄像头摄录的视频数据以LVDS差分电平信号进行传输,需要进行电平信号转换才能进行后续视频信号的记录处理。摄像头传输的视频数据包括4对LVDS差分信号,CLK+/CLK-是采集数据的时钟,其余3对差分信号包含着像素灰度。差分信号经过DS90LV032转换,变成4个单端的数字信号,供后面的电路处理。视频采集电路如图2所示。
因为视频数据频率较高,经过转换后的单端信号应该端接10 Ω的电阻以抑制反射,提高信号稳定性。
2.2 视频解码和处理
对前端采集的视频数据,必须进行处理才能实时显示和压缩存储。由于视频数据量大,为达到最流畅的快速处理,应该由硬件逻辑直接进行数据处理。视频数据的解码和处理主要由FPGA完成,也是可编程逻辑设计的主要任务。
当前端DS90LV032将经过信号转换以后的视频数据传输给FPGA,由FPGA完成视频信号的解码还原、格式转换后同步传输给CPU模块进行实时记录和实时回放视频模块。FPGA视频数据处理的硬件接口设计如图3所示。
2.3 视频数据回放
视频回放是方便飞行员能够实时监控训练和试验的情况。系统采用Philips公司的SAA7121视频编码器,将FPGA处理后的视频数据转换为PAL制的综合视频,送给飞行员面前的监视器进行显示。如图4所示。
SAA7121需要进行初始化配置后才能工作,初始化通过设置编码器的寄存器,配置其工作模式。初始化要通过I2C总线完成,系统的I2C总线接口由FPGA实现。同步时钟CLK VO和8-bit并行视频数据都是由FPGA解码处理后传输过来的。编码器的工作频率为27MHz,FPGA解码后的视频数据经过SAA7121编码器的综合视频信号CVBS送给监视器。同时也设计了一个备用的YC分量视频接口。
2.4 视频传输
采集的视频数据经过FPGA解码处理后需要通过PCIe总线传输给嵌入式CPU以便于实时压缩存储。实现高速的PCIe总线是海量数据传输的关键。数据传输总线技术是不断更新发展的过程。在数据通讯的起初阶段,串行通讯因为信号简单、实现方便而应用广泛,占有统治地位,例如RS422串行通讯,尽管速率不高,目前仍然很有生命力。为解决串行通讯的瓶颈问题,开始采用并行传输总线,并行通讯的速率取决于时钟频率和数据宽度。目前最流行33MHz/32bit的PCI总线,峰值传输速率可达132Mbps。当继续提高时钟频率时,并行通讯总线的数据宽度却成为继续提高速率的障碍。由于极高频下的线路串扰和反馈,难以保证多路并行总线信号数据同步的一致性,数据通讯的传输技术从并行回归到串行,并行双向的PCI总线发展为串行单向的PCIe总线。速率高达2.5Gbps的PCIe总线有三对差分信号,即同步时钟CLK+/CLK-、接收信号R+/R-和发送信号T+/T-。PCIe总线设计电路如图5所示。
在PCIe这种高速信号传输总线中,数据不是直接通过信号导线的电压信号,而是通过高频耦合方式传输的。图5中的C1、C2就是发送方的耦合电容,应尽量靠近桥片。每一对差分信号都应该有耦合电容,图5中时钟和接收信号对的耦合电容,隐含在PCIe的主控方。
3 系统的逻辑设计
在硬件设计的基础上,逻辑设计成为整个系统性能实现的关键。逻辑设计完成整个系统的时序控制、视频数据流的采集与解码、视频回放的编码和PCIe桥接口的设计。
3.1 视频解码
在逻辑设计中,视频解码的功能是将DS90LV032所转换的单端信号解码后写入FIFO缓冲,由后续逻辑读取处理。其逻辑接口的VHDL形式描述如下:
摄像头作为视频源,在每一个CLK的上升沿输出一个3-bit数据。与之相反,解码逻辑在CLK的下降沿锁存一个3-bit数据,进行流水线锁存,重新还原视频的灰度数据。对一个16-bit的数据,共需发6次。
3.2 视频编码
为支持SAA7121编码器,视频回放逻辑包括为初始化而提供的I2C接口和PAL制的视频编码。SAA7121的寄存器是8-bit的,则其I2C接口可以描述如下:
上层逻辑调用此模块,每调用一次,配置一个寄存器。所有128个寄存器的配置数据是预先定制的,存放在常量数组中。
经过初始化后的SAA7121可以正常工作了。此时逻辑应该不断输送视频数据。其逻辑接口可以描述如下:
3.3 PCIe桥接口设计
数据高速传输主要体现在PCIe总线的实际吞吐量,此为解码后的数据传输的瓶颈。逻辑设计要特别考虑到软件的方便和高效。接口逻辑设计集中在中断逻辑和数据传输的burst方式上。
需要传输的视频数据,首先送入一个FIFO,写入端为32k×16bit,读出端为16k×32bit,写入时既适合了视频数据的宽度,读出传输时又发挥了PCI32-bit总线的优势,加快了转换。中断逻辑设计如下:
(1)当写入数据达到FIFO容量的1/4时,即写够4k×32bit时产生中断。这个条件可根据FIFO的可编程空判断,亦即PRG1 Empty=‘0’时产生中断。
(2)当主机响应中断,开始读FIFO数据时撤销中断。
(3) 当本次burst读结束后,才允许根据条件重新判断中断条件。
PCIe桥接口的逻辑设计最重要的部分是为它的局部总线(Local bus)提供无缝的粘合逻辑,支持PCIe的单次访问和burst访问。其接口状态机如下:
桥片的局部总线设计了50MHz的时钟,对32-bit数据宽度,理论上可以达到200Mb/s的吞吐率。经过应用软件的实测,可以达到143Mb/s的速率,考虑到软件的许多开销,这个速率已经比较理想了。
5 系统的软件设计
系统的软件设计平台采用WindowsXP Embedded,软件分为针对本硬件系统的驱动程序和视频压缩与处理的应用程序。应用程序把视频存为普通播放器能播放的视频格式,每帧视频为256行×256列共64K像素。在驱动软件中,当打开设备时,申请一组缓冲,共128个缓冲。这个缓冲对应用程序是透明的,每个缓冲可以存放一个完整的视频帧,如图6所示。驱动程序中有两个主要线程,中断线程和数据读出线程。
在逻辑设计时,每当FIFO中写入4kx32bi时产生中断,则驱动程序的中断线程在响应中断时,每次至少读16kB。在中断响应读取FIFO数据时,不要用类似于for(;;)的软件循环实现,这种策略在硬件时序上属于单次访问,效率低下。只有DMA才能触发逻辑设计中的burst周期,最大限度利用硬件性能。在启动DMA时,一定要使能它的burst位操作长度固定为16kB。这样,每次中断响应就变成了维护DMA当前写入缓冲的指针,填入当前写入缓冲地址,然后启动DMA。
在应用程序中,使用一个定时线程,通过驱动程序读取视频数据,然后经过压缩,存放成JPEG2000格式的视频文件。定时读取视频数据的算法需要进行优化,因为如果数据读出线程太慢,中断线程写入时可能覆盖未读走的缓冲,会造成存储视频出现丢失数据帧的现象,影响记录视频的连续性。
5 结束语
本文采用FPGA与嵌入式CPU大容量数据存储相结合的方案,在系统各个处理环节均充分考虑到对视频数据采集记录实时性和可靠性的要求,设计了机载多通道实时视频数据采集记录系统。系统硬件设计简单,并且可同时采集多路视频数据。在某型数字化对抗训练评估系统中的应用表明,本设计方案满足了预期的指标要求,解决了载机任务系统多路视频数据采集与实时记录的关键问题,在实时视频信息采集和数据记录应用中具有较好的通用性和扩展性。