基于PCI总线的DSP视频采集驱动设计
2010-07-09李晨阳续志军
李晨阳,续志军
(中国科学院 长春光学精密机械与物理研究所,长春 130033)
0 引言
随着市场经济的发展和科学技术的进步,对图像与视频的采集和处理己经得到了越来越广泛的应用。无论在居民的日常生活中还是在科研单位,人们对图像与视频采集处理的需求越来越广泛。由于人们对图像分辨率与画质的要求的不断增高,这对信号的采集尤其是实时处理提出了更高的要求。这是由图像信号的特点决定的。由于市场中不断增长的业务需求,视频DSP系统在近年来有了较大的发展。出于现在的视频DSP系统主要以视频采集卡(盒)的形式出现,本节将主要介绍视频采集卡的现状。当今市场上的主流视频采集卡在功能上己经十分强大,已经基本可以满足视频信号的实时采集、处理和传输。大多数采集卡的主要工作步骤为:视频信号的数字采样,并可实时完成一些简单的数字图像处理,通过数据总线传输至计算机,然后由计算机完成进一步的处理。
目前,市场上主要应用的图像采集卡的功能处理单元的实现主要采用:一是不进行任何图像处理,只是单一的实现图像的采集。这种产品己经比较少见,主要出现在早期的图像采集卡中。二是使用专用DSP芯片,以实现一些图像处理算基于PCI的实时视频DSP平台法。三是采用专用ASIC芯片。这种产品往往拥有比较完善和强大的处理功能。采用后两种方式的产品在目前比较常见。
采集卡在进行数字采集和初步的图像处理后,会将数据传输至计算机中进一步处理。目前主流的视频采集卡均使用PCI总线作为其与计算机通信的数据总线,个别外置采集设备则通过IEEE1394,USB2.0等高速数据接口与计算机通信.PCI作为一种高性能的计算机局部总线,近年来早己成为主流的计算机内部总线。当前主流PC中的PCI总线拥有33MHz工作频率、32bit位数据位宽,和最大132MB/s的传输速度,非常适于一些高速外接设备与PC进行数据通信。未来,PC中的PCI总线还将向66MHz,64bit过渡,这将提供更高的的传输速度(264MB/s或者更高)。视频处理和传输需要较大的带宽,由于PCI总线带宽大、兼容性强以及发展潜力大等优点,使其十分适合作为图像与视频处理系统的接口总线。
1 DSP 平台设置
文中所提出的实时视频DSP平台方案使用FPGA芯片。首先搭建平台基本框架之后,利用FPGA的灵活及高速并行处理的特性,可以方便的实现多种功能,也可添加一些特定的功能,以满足特殊的需要。这就克服了DSP芯片和ASIC芯片的的缺点并充分实现了两者的优点。灵活的实现了全程硬件实时处理。本平台对于一些需要经常进行特殊图像处理的研究型单位,如学校、科研机构等,进行教学、研究具有一定的意义。
PC19054有3类数据直接传输模式,分别是PCIInitiator(PCI发起者模式,或称主模式)、PCITarget(PCI目标模式,或称从模式)和DMA(直接存储器访问模式)。其中,主模式是山本地处理器发起访问PCI存储器或I/O,从模式是由PCI主设备发起访问本地存储器或I/O,DMA模式是由PC19054的DMA控制器控制本地总线的存储器或1/O与PCI总线的存储器或I/O之间的数据交换。
本平台中主要的数据交换为:图像数据的双向传输和FPGA控制寄存器的配置信息的写入。图像数据为大量的高速连续信号,最大速度达到了27MB/s,为了保证信号传输的实时性,选择用DMA方式传输;FPGA中含有许多控制寄存器,用于选择和控制自身的工作状态以及SAA7113的IC电路初始化,在进行这些控制寄存器配置和SAA7113的初始化时,写入多为几个或几十字节长度的数据,对实时性要求不高,所以采用从模式传输。
2 PCI总线操作
PCI总线最早是由Intel公司提出概念,并联合IBM,HP等100多家公司于1993年正式推出的一种高性能局部总线。PCI总线是32位或64位地址/数据复用的总线,即外部设备互联。其用途是在高度集成的外设控制器器件、扩展板和处理器系统之间提供一种内部连接机制。目前,PCI总线己经成为工业标准,并广泛使用于个人计算机、苹果的Mac机以及小型服务器之中。
PCI总线特点:
PCI局部总线不受制于处理器,为中央处理器和外围设备提供了一座数据传输的桥梁,可以同时支持多组外设。其特点如下:
1)高性能
PCI局部总线以33MHz的时钟频率工作,采用32位数据总线,可支持多种外设和附加卡。数据传输率可高达132MB/s,远远超过之前的标准ISA总线5MB/s的速率。
2)线性突发传输
PCI能支持线性突发的传输方式,可确保总线不断的满载数据。线性突发传输能够更有效地运用总线的带宽去传送数据,以减少无谓的地址操作。另外,PCI支持突发读取和突发写入。
3)极小的存取延迟
支持PCI的设备,存取延迟很小,能够大幅度减少外围设备取得总线控制权所需的时间。
4)采用总线主控和同步操作
总线主控可以让任何一个具有处理能力的外围设备暂时接管总线,以加速执行高优先级、高吞吐量的任务;同步操作可以保证微处理器能与这些总线主控同时操作,不必等待后者的完成。
5)不受处理器限制基于PCI的实时视频DSP平台
PCI独立于处理器,将中央处理器子系统与外围设备分开。这可以保证处理器技术的变化不会使任何个别的系统的设计过时,使得系统升级平化。
6)兼容性强
PCI总线可与ISA.EISA及MCA总线完全兼容。
7)预留了发展空间
考虑到新一代的高性能外设最总将需要64位宽的数据通道,PCI支持64位地址/数据多路复用,可将数据传输率提高到264MB/s
8)低成本、高效益
PCI的芯片将大量系统功能高度集成,节省了逻辑电路,耗用较小的线路板空间,成本降低。采用地址/数据复用,使得PCI部件用以连接其他部件的引脚数较少。
PCI局部总线是计算机界公认的最具高瞻远瞩的局部总线标准,它的高性能、高效率及与现有标准的兼容性和充裕的发展潜力,是其它总线部不可及的。它可作为当今及未来的设计指引。
3 平台驱动程序设计
PLXSDK提供了功能丰富的API函数,通过调用这些函数可以方便的实现对所有控制寄存器的访问与设置。编程者只需要遵照API函数调用规则编写程序即可实现完全控制PC19054的工作。
Windows操作系统在虚拟环境中实现内存空间,输入/输出操作,外围设备,终端操作的虚拟化.虚拟环境中无法直接访问和控制硬件单元,即管理硬件的程序是在实际的机器上运行而不是在虚拟机上。与管理程序相类似的还有VxD〔虚拟设备驱动程序)。Windows类操作系统(Windows9x,Wind owsNT,Windows2000)为了保证系统的安全性、稳定性和可移植性,对应用程序访问硬件资源加以限制。Windows下的驱动程序通常有两种方式。
第一种是程序被包装成DLL形式的文件,应用程序可以通过加载相应的DLL文件实现对硬件的访问。编写DLL程序以通过标袱的Windows开发工具,如VC++(DLL是运行在虚拟环境中的程序)。第二种方式是通过到月的开发工具如VtoolsD等,编写虚拟驱动程序,这种方法的效率较高。以一个简单的例子来看在系统对硬件中断响应速度上的表现。如果将ISR(中断服务程序)在应用程序以及编写,由于系统在相应ISR之前存在一连串的中断反射过程将使系统响应速度较慢,即系统要先调度虚拟环境后才响应中断,所以可能会是DOS系统下响应时间的20倍以上。如果将中断服务程序放入VxD中编写,则会避免调度虚拟环境而使得响应速度加快。为了方便基于PCI总线的适配卡的设计,PLX公司推出了一套软件辅助设计的解决方案—PLX SDK(Sotfwaer Development Kit).
在编写驱动程序时使用VC环境直接编写应用级程序,通过调用PLX提供的功能丰富强大的API函数(包装在PlxApi.dll中),实现对硬件资源的访问。这样一来就避免了学习Widows下甚至是运用汇编语言编写设备驱动的复杂过程,缩短了系统开发周期。这样做唯一的不利就是降低了系统的工作效率,但不影响系统的正常工作。利用PLXSDK在VC环境下编写程序时应遵循以下步骤:
I)先在VC环境中建立一个Win32 Console Application工程.
2)将P1xMon的头文件包括在工程文件中,在VC环境的Option菜单中的Derection标签加入PIxMon的安装路径.
3)在主函数中定义#define PCI_CODE.应将该句定义放在最开头(任何一个#include之前),因为PCI主设备运行在本地芯片中的软件共享很多头文件,该定义放在最开始可以保证只有与PCI主设备有关的头文件被包括。
4)定义#define LITTLE_ENDIAN。用来确定芯片是工作在LITTLE_ENDIAN模式下.
5)include"PlxApi.h"这个文件中包括TPlx函数的定义.以及数据类型的定义。
6)将PlxLib.h库函数加入该工程.这个库文件中包括与PIxApi.dll文件的连接消息,当程序运行并调用到PLX的API函数时,其中的API DLL函数会被自动加载。
按照以上的步骤建立工程文件后,就可以编写驱动函数了。
在API函数中,对PCI9054寄存器的访问以一种直观的方式表现出来,可以直接在软件中设置,这样极大的方便了对PCI9054的控制。图1给出了平台驱动程序流程。采集生成的图像数据将存储至计算机中或直接播放。
图1 驱动程序设计流程图
4 结论
本驱动程序的优点在于采用FPGA完成图像处理功能。首先,可利用FPGA的灵活性根据需要随时增加新的处理功能或删减不必要的功能;其次,利用FPGA高速并行处理的优点,实现了全部处理功能在平台内实时完成,避免了传统视频采集卡,只进行部分初级处理的缺点,提高了实时性。
[1] DonaldE.Thomas.刘明业等译.描述语言Verilog[M].第四版清华大学出版社.
[2] 夏宇闻.复杂数字电路与系统的VerilogHDL设计技术[M].北京航空航天大学出版社,1998.
[3] J.Bhasker,徐振林,译.AVerilogHDLPremier.第二版[M].机械工业出版社,2000.
[4] 章毓晋,图像工程(上册)—图像处理和分析[M].清华大学出版社,1999.
[5] 张兢.PCI总线主控1/O加速器PCI9054[J].国外电子元器件,2007,1.
[6] 陈露晨,PC19054性能分析及外部FIFO扩充[J].电子产品世界.2008,11.