摘要:介绍基于USB 2.0技术的高清晰视频存储系统的软件、硬件实 现。采用MPEG2视频压缩处理芯片MB86391和USB 2.0芯片CY7C68013,给出应用实 例、固件编程框图。 1引言 在组建流媒体服务器时,为了能容纳更多的在线并发用户,要求在前端的视频流需经过压 缩且传输到PC的接口速度不应成为瓶颈。在家庭DVR(数字视频存储)应用中,家用电脑的普及使人们希望通过简单的接口在PC上观看电视节目,并存储、回放精彩片断。对于拥有DV的人们,希望能把自拍的视频存储到PC中并加以剪辑。MPEG2压缩技术 和USB接口正好满足这样的要求。 本文设计的系统相当于一个视频采集卡,带有压缩功能,并且采用USB接口。目前大多数的采集卡是基于PCI接口,他的缺点是置于机箱内部,容易受到干扰;而且PCI插槽数目 有限;虽然PCI的传输速度理论上达到133 MB/s,但是PCI插槽要分享此带宽。现 在支持USB 2.0的主机板越来越多,他的传输速度理论上达到480 Mb/s,在实际测试中也可达到200 Mb/s,完全满足流媒体传输对带宽的要求,再加上USB接口即插即用,置于PC外部,工作电流为500mA,因此把USB技术引入到采集系统是合适的。 2系统硬件结构 系统的硬件框架如图1所示,主要由2个主芯片构成,一个是视频压缩部分的MB86391,他 完成MPEG的硬件压缩;另一个是USB 2.0芯片,他完成数据的传输和USB协议的实现,并且 利用集成的51内核作为其他芯片的控制端。 模拟视频信号先经过SAA7113视频A/D转换形成8 b的YUV4∶2∶2数字信号输入到MB86391 的视频输入接口DVIDEO〔70〕。模拟音频信号则通过PCM1800进行A/D转换,形成串行数字信号,输入到GO7007SB的SDATA引脚。音频A/D转换需要PCM1723提供与压缩芯片的时钟相位 锁相的时钟信号。音视频数字信号经MB86391的压缩处理后,输出符合MPEG 1/2标准的混合影音码流。该码流通过8位并行接口与68013的FD〔7..0〕相连,USB芯片采用Sla ve FIFO方式接收数据,一个FIFO写满后就向USB核心发中断,核心收到中断后把FIFO中的数据 发往PC,完成一次的数据传送,同时第二个FIFO区也在继续接收MB86391的码流,4个FIFO轮流接收。MB8 6391作为该电路的主芯片,由1个E2PROM进行编程和初始化。另外,压缩处理过程中需要 很大的缓存,所以外接1块8 MB的SDRAM。 2.1视频压缩 视频压缩是当今许多图像、多媒体应用中的尖端技术,也是最重要的一部分。高清晰电视 图像 数字化后一般都达到了1 Gb/s,以目前的传输网络和存储容量,一定要先进行压缩。本文采 用的是MB86391视频压缩芯片,208脚、HQFP封装、0.18 μm工艺、工作频率27/54 MHz。其 主要特性如下: (1)编码符合ISO/IEC138182(MPEG1 video)MP@ML或ISO/IEC111722(MPEG1 video)。 (2)25 Hz隔行扫描时,最大的屏幕尺寸:720×576。 (3)D1格式和YUV输入。 (4)8 b并行同步方式输出。 (5)复合音频视频输出,最大的码流速率20 Mb/s。 86391外接1片4 Mb的FLASHROM,上电直接加ROM并且用串口进行参数配置,所 以必须加 1块RS 232电平转换芯片MAX3222,通过串口向MB86391相应的寄存器地址写入数值,来控制 压缩过程。 2.2数据传输 赛普拉斯公司提供的CY68013芯片是世界上第一款集成USB 2.0的微处理器,集成了USB 2.0 收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。GPIF(Genera l Programmable Interface)和主/从端点FIFO(8位或16位数据总线),为ATA,UTOPIA,E PP,PCMCIA和DSP等提供了简单和无缝连接接口。 68013片内集成了4 kB的内部FIFO,可以分成4个端点双缓冲区,即1个端点包括1个 输入缓冲区和1个输出缓冲区,1个缓冲区的大小是512 B,4个缓冲区的选择由FIFOADR 〔1:0〕的4个状态决定,例如初始化后FIFOADR〔1:0〕=00,此时选中ENPOINT2,当MB 86391有 数据要传输时,STEN出现高电平,CPLD把STDATA的8位数据送往FD总线,在IFCLK同步时钟的控制下,向端点2的输入缓冲区FIFO写入数据,CPLD同时对时钟进行计数,当达到188时,送出PKTEN,表示1帧的数据传输完毕,USB核心收到这个帧结束的标志后读端点2的输入FIFO,响应IN请求把数据送出;CPLD除了设定N=188的计数器外,还设定了一个N =4的计数器,每当一个帧满后,以00,01,10,11的状态翻转,并把这状态当作FIFOADR 〔1:0〕的输入,使得CPLD能持续接受数据并轮流向68013的4个输入缓冲区写入。FLAG 设置为Indexed Mode,并且FLAGB表示当前FIFO满状态,而FLAGC表示当前FIFO空状态,CPLD 只有检测到FLAGC的有效状态时,才会往MB86391发请求STREQ,告诉MB86391已准备好接收。 E2USB FX2 Slave FIFO工作模式下数据接口如图2所示。 3软件结构 开发USB接口的应用系统最重要的就是USB驱动程序和固件程序的编制。本文采 用赛普拉斯公司提供的CY7C68013芯片及其开发板,我们可以从复杂的USB驱动程序中解 脱出来,而把主要精力放在芯片的固件程序的编写上。软件结构如图3所示。 3.1应用程序 应用程序把USB设备看成一个文件,对设备的操作相当于读写文件一样的简单,应 用程序与驱动程序的通信主要是通过以下几个函数来实现的: (1) 打开设备句柄函数 (3)写设备函数 在实际编写应用程序时只需将上述3个函数加入到相应的功能模块中便可完成Win 32应用 程序对USB设备进行打开、读、写操作,实现二者之间的通信。 3.2固件程序 固件程序的编译采用Keil C,他具有C的编程风格,可以方便的设置断点,查看各个寄存器的值,编程效率高。Cypress公司提供固件框架,需要根据具体应用,选择相应的函数逐一填写函数体。固件程序框架如图4所示,图4(a)所示是主程序, 完成USB的枚举和初 始化,循环等待时,当SIE发现Setup Packet,就分析执行设备请求,进入到图4( b)中的USB中断处理程序。 USB中断处理程序完成对设备请求的响应,包括接收/发送事件处理,状态转换处理和握 手事件处理。其中当主机发出IN请求时,就会触发接收事件处理程序,主程序调用TD_Pol l函数,完成一次的数据传送。 4结语 USB 2.0在理论上满负荷传输速率是480 Mb/s,在Bulk批量传输方式下,传输极限是53.248 Mb/s,即在1 ms时间片断内再细分为8个微帧,每个微帧可以插入13个512 B的数据 包,实践证明,这种方式能提供稳健的无错传输,适合传输高质量的图像。 MB86391输出的平均码流最大为20 Mb/s,所以在实际传输测试中,不会出现速度瓶颈,完全 满足大容量高质量图像传输系统的要求。 参考文献 〔1〕许永和.EZUSB FX系列单片机USB外围设备设计与应用〔M 〕.北京:北京航空航天大学出版社,2002. 〔2〕曹晨,杨作梅.高清晰度数字视频原理与应用〔M〕.北京:电子工业 出版社,2002. 〔3〕萧世文.USB 2.0硬件设计〔M〕.北京:清华大学出版社,2002. 〔4〕Chris Cant.Writing Windows WDM Device Drivers〔M〕.孙义,马莉波,国雪飞,等译.北京:机械工业出版社,2000.
|