引言
随着视频技术以及大规模集成电路的飞速发展,视频监控系统的应用越来越广泛。视频采集卡可以将视频信息数字化,并将数字化的信息存储或播放出来。目前,大多数视频采集卡都采用了视频局部总线,可以将图像数据直接存入内存,采集卡不再需要专门的帧存储体。其中,基于PCI总线的视频采集卡以其强大的功能和低廉的价格成为市场上的主流产品。但是PCI接口适用于比较稳定、理想的环境中,在环境比较恶劣,尤其是在车载设备方面,PCI接口的视频采集装置往往由于接口本身的问题,造成整个装置的失效或者物理损坏。这主要是接口不牢固,在恶劣环境下容易脱落、断裂造成的。为了提高接口的可靠性,可以采用CompactPCI(简称CPCI)接口进行数据传输。
本文提出一种基于CPCI接口的视频采集卡的设计方法。选用NXP公司的SAA7130HL 芯片完成数据的采集、转换和传输,并通过PCItoPCI桥芯片PCI2050BI完成8路数据的扩展;然后由驱动程序将数据传输到计算机上,通过软件完成视频的压缩工作;最后采用应用程序实现图像的预览、录像、网络传输和回放等功能。
1CPCI技术概述
CPCI技术标准是由PCIMG(PCI工业计算机制造商协会)于1997年正式发布的。它由3项领先技术综合而成:
① PCI局部总线的电气特性(PCI local bus specification,PCISIG)
② 工业级欧卡封装结构和规格(IEC 602973 and 4,Eurocard Specification,IEEE 1101.11,IEEE Standard for Additional Mechanical Specification for Microcomputers Using IEEE1101.1 Equipment Practice)
③ IEC 2 mm高密度针孔连接器(IEC610764101,Specification for 2 mm Connector systems)
CPCI规范定义了严格的设计规则,系统由金属外壳和前后面板组成整体导电以及电路设计,使其具有电磁辐射屏蔽和静电释放能力,表现出良好的电磁兼容性。CPCI规范在电气、逻辑和软件方面与PCI标准完全兼容,是更加坚固耐用的版本[1]。
2硬件设计
如图1所示,CPCI视频采集模块主要包括视频输入部分、视频处理部分、I2C串行EEPROM加载芯片AT24C02和CPCI接口部分。CPCI视频采集模块上有5个CPCI连接器(J1~J5)。其中,J1和J2用来连接PCI总线信号,J3~J5用来扩展系统板的I/O信号。
图1CPCI视频采集模块结构框图
2.1视频输入部分
视频输入部分提供具有5 个模拟输入的内部模拟源选择器,如5CVBS、Y/C 和1CVBS,或1Y/C和3CVBS。
CVBS是被广泛使用的标准,也叫做基带视频或RCA视频。它是全国电视系统委员会(NTSC)电视信号的传统图像数据传输方法,以模拟波形来传输数据。Y和C分别为亮度信号和色度信号。
2.2视频处理部分
视频处理部分的主要功能是采集视频数据,并将模拟视频信号转化为数字视频信号。视频处理芯片分为普通视频处理芯片和一体化视频芯片两种。后者带有处理器和PCI接口控制功能。本设计选用NXP公司的SAA7130HL芯片。它将视频采集功能集成于一体,集成了视频数字化、解码、PCI接口电路,还提供了通用I/O(GPIO)接口组,支持各种扩展应用。
SAA7130HL支持多种数字视频格式,通过9位的ADC 采样后进入标准译码器,通过梳状滤波器和高性能计数器进行二维的色度/亮度分离。它支持包括YUV、RGB在内的多种视频输出格式,可自动进行GAMMA校正、黑电平延伸[4]。由于内部集成了同步时钟控制功能以及亮度、色调和饱和度调节等功能,在系统上电复位后,通过I2C总线对芯片内部相应的寄存器进行合适的配置,便可以实现较高质量的数字视频信号,以及整个系统的同步时钟信号。
主要工作流程是:由SAA7130HL芯片中的A/D转换器对模拟视频信号进行/转换,通过支持PAL制的自适应梳状滤波器将数据传入1 KB的FIFO中;DMA控制器监视寄存器状态,当FIFO达到需要传输的要求时,就将数据传给DMA主通道;DMA将数据传给虚拟地址空间,再由MMU(内存管单元)将虚拟地址转化为内存中的物理地址;最后通过CPCI接口部分将数据传输给PCItoPCI桥芯片PCI2050BI[2]。
2.3CPCI接口部分
CPCI接口部分采用TI公司的32位、66 MHz PCItoPCI桥芯片PCI2050BI。SAA7130HL芯片本身就可以和总线进行通信。本系统采用PCI2050BI芯片的目的是实现多级总线扩展结构,在原有的总线上挂接PCItoPCI桥路,扩展出另一条PCI总线。这样同一个CPCI插槽就可以实现多个CPCI设备复用,既降低了硬件成本,又增强了系统的扩展能力。根据这种设计思想,此视频采集卡采用将1个CPCI插槽通过桥路扩展连接8个CPCI设备的方法,即1个桥路扩展为8路视频采集输入,完成8路视频数据的采集和传输。PCItoPCI总线桥扩展框图如图2所示。
图2PCItoPCI总线桥扩展框图
设计要点:
① PCI2050BI有2个独立的时钟域,主接口受主侧输入时钟P_CLK的控制,从接口受从侧输入时钟S_CLK的控制。这两个时钟可以相互独立,但必须保持同步。P_CLK与S_CLK的最大延时不得超过7 ns,S_CLK不能超前P_CLK。
② PCI2050BI的从侧输出时钟,每个时钟只能驱动一个负载。
③ PCI2050BI的从侧有10个时钟输出S_CLK[9:0]。其中,9个可以供给扩展的PCI槽,而S_CLKOUT9信号必须反馈给从总线的输入时钟S_CLK。
④ 为了减少时钟的信号反射,输出到扩展槽的9个CLK必须在始端加串联电阻匹配。匹配电阻阻值与电路板特征阻抗大小有关,对65 Ω的传输线,选用50 Ω串联匹配电阻。
⑤ 视频采集卡的PCI主总线控制信号必须进行上拉,保证在没有设备使用时能保持稳定。这些信号包括:FRAME,IRDY,TRDY,STOP,DEVSEL,PERR,SERR,LOCK,INTA~INTD。电阻的大小根据设备的负载而定,本设计中电阻值使用了典型值8.2 kΩ。
⑥ 为了减少视频采集卡对背板的影响,除了CLK、REQ和GNT信号外,其他PCI信号都要串接10 Ω的终端匹配电阻。
⑦ 要正确设置总线的信号环境。由于本设计中的PCI总线信号环境为3.3 V,设计时将PCI2050BI的P_VCCP连接到3.3 V;S_VCCP连接到背板的VIO上,根据背板VIO电压的设置,可能是3.3 V或5 V,由此完成对信号环境的设置。
2.4I2C串行EEPROM加载芯片AT24C02
I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02是Atmel公司的低功耗CMOS串行EEPROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5 V)、擦写次数多(大于10 000次)、写入速度快(小于10 ms)等特点。AT24C02主要完成CPCI视频采集卡的上电配置。
3PCB设计
3.1PCB层数的选择
本次设计选择制作6层的PCB板。CPCI 板卡的总线标准连接器引脚间距为2.0 mm,焊盘孔径为0.6 mm,焊盘直径为1.1 mm,所以两焊盘之间走线空间仅为0.9 mm,线宽为6 mil。线间距6 mil的线单层只能走2根,而CPCI总线连接器单排有5个引脚,即必须走5根线,所以信号层不能少于3层。CPCI视频采集模块主要供电为3.3 V,考虑到此板信号的完整性,将信号层设计为4层,地平面和电平面分别设计1层。印制板最终的层分布设计依次为:顶层信号层、地层、内信号层1、内信号层2、3.3 V电层、底层信号层。
3.2PCB布线
在CPCI视频采集模块的设计和布线过程中,严格遵循PCI2.1规范和PICMG2.0 R3.0规范,使用符合IEC—1076国际标准的高精度、屏蔽型、针孔式的CPCI连接器。在进行CPCI视频采集模块PCB布局和布线设计时,设计要点如下:
① 为减小CPCI背板总线上时钟之间的偏移(skew),必须将PCI2050BI从总线的S_CLKOUT9信号反馈给从总线的S_CLK,PCI2050BI供给扩展槽的8根时钟线(8个S_CLKOUT)与S_CLK必须等长。
② 对PCI2050BI的每个电源引脚提供一个0.1 μF的高速去耦电容,并且在布线时尽量靠近电源引脚。
③ 在布线时,让PCI2050B尽量靠近J1和J2连接器,使PCI总线信号到连接器的距离尽量短。
④ 根据CPCI规范,PCI总线信号线的10 Ω终端匹配电阻应该设置在信号连接器引脚的15.2 mm之内。这些总线信号包括AD0~AD31、C/BE0~C/BE3、PAR、FRAME、IRDY、TRDY、STOP、LOCK、IDSEL、DEVSEL、PERR、SERR和RST。
⑤ PCICLK的信号线长度必须为(63.5±2.54) mm,长度不够时通过走蛇形线来增加长度以符合标准。
⑥ PCI信号线都要进行阻抗控制,阻抗为(65±10%) Ω。
4软件设计
本系统基于Windows操作平台,故采用WDM(Windows Device Model)来设计系统的驱动程序。一个完整的WDM驱动程序需要完成初始化硬件设备、创建和删除设备、处理Win32打开和关闭文件句柄的请求、处理Win32系统的I/O请求等一系列工作。Win2000的驱动可以分为3种:高层、中间层和低层。由于本系统的设计是针对视频流媒体,所以采用中间层的视频驱动程序。中间层的驱动依赖Class Driver(类驱动)和Mini Driver(迷你驱动)。Class Driver是微软提供的一种中间驱动,在硬件厂商提供的Mini Driver和操作系统之间提供一个简单的接口。Mini Driver是一个硬件相关的动态链接库,通过函数调用的方式使用Class Driver完成大部分的工作,而它只提供和设备紧密相关的控制。用户态的客户代码可通过WDM流访问Class Driver。
结语
在测试中,基于CPCI总线的视频采集卡结构牢固,能够适应恶劣的环境,并且能够保证图像传输的实时性。该视频采集卡达到了预期目的,缩短了开发周期,具有较高性价比。