新闻  |   论坛  |   博客  |   在线研讨会
基于VW2005的MPEG-4音视频压缩卡的设计
yanqin | 2009-06-24 18:57:19    阅读:1465   发布文章

 

摘  要:本文提出了一种基于vw2005芯片的音视频压缩卡的设计方案,包括硬件设计和windows下设备驱动程序的设计。该方案较其它基于dsp编码或软件编码的方案在性能上有很大的提高。
关键词:mpeg-4;vw2005;usb2.0;音视频压缩

    由于mpeg-4标准具有出色的压缩速率和良好的图像效果,目前无论是压缩电影、视频电话,还是数码摄像机、数码相机,都将mpeg-4作为首选的视频压缩标准。

    本文设计的压缩卡基于mpeg-4音视频编码技术,具有usb2.0接口,支持热插拔,在实现上采用硬压缩,所用压缩芯片为vweb公司的vw2005。

硬件设计
vw2005芯片的主要特点
    vw2005是vweb公司开发的实时mpeg-4音视频编码芯片。该芯片将未压缩的itu-r.bt.656数字视频信号压缩为mpeg-1/2/4或h.263视频格式,将两路独立通道的i2s数字音频信号压缩为mpeg-1/2、mp3、aac或ac3音频格式。该芯片既可以输出用于网络领域的传输流(ts),也可以输出用于存储的程序流(ps)。

该芯片具有以下主要特点:
1. 片内集成2个信号处理/控制单元,包括一个嵌入式处理器risc/dsp(内部扩展一个音频编码dsp),用于总体控制vw2005、音频编码及a/v多路复用,还有一个视频编码器。
2. 具有2个数据输出端:压缩数据输出端(cdo)和主机/pci输出端,但同一时刻只能使用其中一个。
3. 主机/pci接口用于与外部处理器、存储器及其它设备的连接,有三种工作模式:16位motorola模式、16位intel模式和pci目标机模式,可由上电/复位来选择。
4. 外部rom用于存储引导程序及内部寄存器的初始值,可由内部risc处理器和外部主机处理器使用。
5. 提供了与philips公司的i2c接口功能类似的内部设备通信接口(ici),方便对外围设备的控制。提供了12个通用i/o口(gpio),可以用作普通i/o口或配置成特殊功能的接口。

压缩卡硬件设计原理
    压缩卡的原理框图如图1所示。saa7113完成系统前端数字图像的采集,与vw2005可以直接无缝连接,无需其它逻辑电路。saa7113是一个9位可编程视频解码芯片,片外只需提供一个24.576mhz的晶振,片内时钟产生器自动产生内部电路所需的工作频率。saa7113在cy7c68013的i2c总线的时序控制下,将采集到的itu656 yuv4:2:2格式(8位)的数字图像数据以27mb/s的速率通过片外数据总线vpo0~vpo7传输到vw2005,完成数字图像的mpeg-4编码。

    ak5355完成系统前端音频信号的采集,与vw2005可以实现无缝连接,无需其它逻辑电路。ak5355是用于数字音频系统的双声道单片品型16位adc,信噪比为91db,动态范围为91db,其内部嵌有增益放大器和数字高通滤波器,模拟信号单端输入,无需外接滤波器,通过将dif引脚置高使之具有i2s的音频数据格式输出,本系统将ak5355设置为受控模式,即时钟信号mclk、bclk和lrck分别由vw2005的音频系统时钟输出amclk_enc、sck_enc和ws_enc提供。

    8mb的sdram芯片mt48lc2m32b2具有32位宽的数据总线,用于存储输入vw2005的音视频原始数据及压缩过程中产生的中间数据和压缩结果数据。本系统压缩后的数据由vw2005内部的多路复用器控制并从主机接口输出。

    2mb的flash芯片at49bv1614用于存储vw2005内部各模块所有的微码(microcode)及引导程序,上电复位后,flash中存储的数据通过总线读入vw2005的内部寄存器中,之后寄存器的值可由软件读取。

    本系统中主机/pci接口工作于16位motorola模式,可以与cy7c68013无缝连接。cy7c68013作为一款usb2.0接口芯片,集成了usb2.0收发器、串行接口引擎、增强的8051微处理器和可编程的外围接口。主机通过调用sdk中提供的api函数,能方便地完成对vw2005的初始化和配置,并编写usb设备驱动程序。vw2005通过主机接口将压缩后的mpeg-4音视频流传输到接口芯片cy7c68013,通过usb2.0接口能实时地将数据流传送到主机。

740)this.width=740" border=undefined
图1  压缩卡原理框图

740)this.width=740" border=undefined
图2 系统驱动程序软件结构

740)this.width=740" border=undefined

图3 压缩卡程序流程图

windows下vw2005设备驱动程序设计
驱动程序总体设计
    设备驱动程序软件结构如图2所示。应用程序由用户根据不同的应用场合来编写,它只与vweb usb驱动程序通信,而不与硬件内部的固件或微码通信。在windows下,应用程序只需三个函数与驱动程序通信:creatfile()用来打开一个基于vw2005的板卡;closehandle用来关闭一个基于vw2005的板卡;deviceiocontrol用来对vw2005板卡进行各种控制和设置。为了支持vw2005芯片的运行,vweb公司提供了用于系统设计的usb驱动api、usb驱动、芯片级api、固件及微码。上电/复位后,固件从rom中导入sdram,vw2005的risc处理器有片内高速缓存(如dmem)用于执行固件程序,微码下载到特殊的内部risc引擎,每个risc引擎都有片内ram和高速缓冲,用于存储和执行写入内部的微码。

主机与vw2005的通信
    vw2005内部的编码存储器(encoder sdram)中有两个双端口、128字节的共享存储区,作为主机与vw2005的通信媒介。

    用于主机到vw2005通信的128字节的共享存储区(以下简称host_vw_sm)位于encoder sdram中地址0x3f1800处。host_vw_sm格式如表1所示。

740)this.width=740" border=undefined

表1 主机到vw2005的共享存储区格式

740)this.width=740" border=undefined

表2  vw2005到主机的共享存储区格式

    vw2005在firmware readycode中写入0x0a00,表示准备接收命令;cmd为命令码,分别是读数据(cmd=1)、发ioctl码(cmd=2)、写数据(cmd=3)、打开命令(cmd=4)和关闭命令(cmd=5);int flag为中断标识,int flag=1则vw2005执行完命令后产生一个中断,int flag=0则不产生中断;device handle由打开命令从固件中获得;paremeters为附加参数。

    用于vw2005到主机通信的128字节的共享存储区(以下简称vw_host_sm)位于encoder sdram中地址0x3f1880处。vw_host_sm格式如表2所示。

    ack/nack的含义是:如果int flag=1,命令cmd执行成功后则为ack,失败则为nack,并将错误代码保存在return code字段。return code的含义是:无错误产生则为0,有错误产生则为错误代码。其它参数与host_vw_sm类似,不再赘述。

信号灯

     由于共享存储区是临界资源,所以必须提供一种机制,用以保证主机和vw2005使用它们时是互斥的。为此,vw2005分别给host_vw_sm和vw_host_sm提供了两个硬件信号灯,分别由寄存器reg_int1和reg_int2的最低位实现。驱动程序通过reg_int1检查固件是否为来自主机的下一个命令作好准备,通过reg_int2告知固件主机已处理完成前一个命令。vw2005为信号灯定义了两种操作:
写操作:向reg_int1或reg_int2的最低位写入1,释放共享存储区。
读操作:返回reg_int1或reg_int2的最低位的值,同时将该位清零。

压缩卡程序流程图
    压缩结果是传输流时的程序流程如图3所示。
   
    主机只需在编码开始前对压缩卡进行初始化操作,之后的编码压缩完全由vw2005芯片独立完成,这样大大降低了压缩卡对主机cpu的要求。

结语
    本文详细介绍了基于vw2005芯片的mpeg-4音视频压缩卡的设计方案,包括硬件设计和windows下设备驱动程序的设计。该系统采用专用mpeg-4音视频编码芯片vw2005,较其它基于dsp编码或软件编码的方案在性能上有很大的提高,采用usb2.0接口,可以满足不同传输速率的要求,能广泛地应用于远程音视频监控、网络数字摄像机和高清晰数字电视等多个领域。

参考文献
1 vw2005 a/v/s encoder chip hardware description manual (revision 0.95) [db/ol]. vweb corporation, december 15, 2003
2 saa7113h 9-bit video input processor [db/ol]. philips semiconductors, july 01,1999
3 ak5355 low power 16bit δ∑ adc [db/ol]. akm corporation,2001,08
4 cy7c68013 ez-usb fx2 usb microcontroller [db/ol]. cypress semiconductor corporation, december 19, 2002

  


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客