新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于VW2010的视频压缩存储系统的软硬件设计

基于VW2010的视频压缩存储系统的软硬件设计

作者:时间:2008-07-09来源:网络收藏

0 引言

MPEG-4 (ISO/IEC 14496)是第二代编码技术制定的国际标准,该标准具有高比、可扩展性和可交互性等优点。在MPEG-4应用方面,由于它能以较少的带宽传输高质量的画面,并可将多种多媒体通信加以综合,所以有着很好的应用前景。为此,本文针对实际需求,提出了采用编解码芯片为核心的嵌人式MPEG-4音方案,详尽介绍了原理,给出了芯片的HOST引导模式程序方法。

1硬件设计

1.1 的主要特点

VW2010是VWEB公司开发的实时MPEG-4音压缩/解压芯片(CODEC)。该芯片具有以下主要特点:

◇片内集成有3个信号处理/控制单元,其中包括一个编码(压缩)器、一个视频解码(解压)器和一个片内CPU(内部扩展了一个音频编码DSP、一个音频解码DSP、一个多路复合单元和一个多路解复合单元);

◇具有可编程、高性能和低功耗特点,芯片内的每个信号处理/控制单元都由一个RISC处理器和专用的硬件加速器构成,此外,片内视频编解码器中还集成了一个专用的SDRAM;

◇在系统上电/复位时,视频编解码器的固件程序可由外部主机(host)载人各自专用的SDRAM,而片内CPU的固件程序则可载人VW2010外挂的SDRAM;

◇芯片的主机接口采用标准PCI接口,符合PCI局部总线规范2.2;

◇为了使编解码性能达到最佳,VW2010内部集成有一个双通道DMAC,系统host可直接通过主机接口对VW2010进行控制,MPEG数据流则采用DMA方式传输。

◇提供有与PHILIPS公司兼容的I2C总线,可方便地对外围芯片进行控制。

1.2VW2010的压缩卡硬件设计

本系统集成了2块VW2010芯片,可以同时对2路音视频流进行编码,并可与IDE硬盘进行无缝连接。具体的系统硬件框图如图1所示。

图1中,复合视频信号先经过视频接收电路进行前端处理(包括阻抗匹配、限幅和钳位),然后通过视频解码电路产生符合VW2010视频接口标准的ITU656信号。视频解码电路的核心是一个视频解码芯片,该芯片可对视频信号进行A/D转换和编码,以产生ITU656标准的并行数字电视信号。本文选取SAA7113作为视频解码芯片。

模拟音频信号经过模拟音频接收电路进行前端处理后,通过音频ADC电路产生符合VW2010音频接口标准的I2S信号。

VW2010是压缩卡的核心处理芯片,该芯片除可完成音、视频信号的编码外,还可提供对解码器和ADC的控制(通过I℃总线),其编码产生的MPEG流可通过芯片内部集成的HOST接口和CDO接口输出。VW2010必须在微码和固件代码下工作,VW2010提供有从ROM引导、从ICI引导、从主机(Host)引导三种引导方式。本文使用的方案是从主机(Host)引导。该方式不同于一般市面上的产品所采用的ROM引导模式。它只进行编码,设计时可通过设置相关的寄存器来将微代码下载到编码SDRAM中。

系统中的FPGA用来进行总线扩展和数据缓存。它一方面可通过HOST-intel总线接口与2片VW2010芯片连接,以用来下载固件代码和VW2010的参数配置,同时通过CDO接口接收VW2010的编码视频流并进行缓存;另一方面,FPGA也可通过IDE接口和硬盘进行连接,以用来进行编码数据的

DSP是本系统的核心控制芯片,可配合FPGA模拟HOST-intel总线接口和IDE接口,从而控制VW2010固件代码的下载和硬盘的读写,同时建立FAT32格式的文件目录系统。本设计中的DSP芯片选用TI公司的TMS320VC5416。

2系统软件设计

本系统的软件主要分为3大模块:VW2010控制模块、硬盘控制模块和数据传输模块。VW2010控制模块主要用于下载固件代码和配置参数,是启动VW2010正常工作的基础,因此也是程序设计的核心模块。本文将着重讨论如何通过HOST-intel总线接口控制VW2010芯片,以进行固件代码的下载和参数的配置。

2.1 固件代码的下载

VW2010需要在固件的支持下工作。固件主要有2部分,一是boot.sre,二是pscodec.sre(PS流)或tscodec.sre(TS流)。HOST接口通过访问相关的寄存器和编码SDRAM来下载固件。对寄存器和SDRAM的访问在有关文献中已有详细讨论,在此不再赘述。具体的固件下载流程如下:

(1)设置寄存器REG_DHIU3,使VW2010处于固件下载状态;

(2)设置寄存器REG_DHIU6,设置VW2010处于VW2005工作模式,并使VW2010的系统时钟为162 MHz;因为本系统只进行编码压缩,所以应设置寄存器REG_DHIU6,使VW2010处于VW2005工作模式,这样,VW2010就会自动分配编码SDRAM的地址,以用于存放固件代码。

(3)设置编码软件寄存器;

(4)设置解码软件寄存器;

(5)通过向0x3F1800地址发送0x0,清除FirmwareReadyCode;

(6)下载boot.sre和pscodec.sre或tscodec.sre;此处要把sre文件中的数据部分按顺序写入编码SDRAM中的相应地址处。

(7)设置REG_DHIU3来启动VW2010;

(8)通过读取SDRAM中的FirmwareReadyCode区来确认固件已经下载并准备好;Firmwar-eReadyCode是编码SDRAM的0x3F1800地址中内容的高16位,如果读到0x0A00,则说明固件已经下载成功。

2.2参数配置

因为固件代码所对应的参数设置是某种模式的默认值,所以要通过参数配置来调整某些参数以适合自己的电路设计。参数配置可通过发IOCTL码进行。VW2010采用共享存储区机制来接收HOST命令并返回命令执行结果。HOST与VW2010进行通信的共享存储区位于编码SDRAM中地址3F1800处,共128字节;而VW2010与HOST进行通信的共享存储区则位于编码SDRAM中的地址3F1880处,也是128字节。共享存储区的格式如表1和2所列。

在发送IOCTL命令前,必须首先发送OPEN命令。OPEN命令可用来打开设备以获得"devicehandle"和辅助参数区的首地址等参数。

要发送的IOCLT命令全部发送完以后,还必须发送CLOSE命令来释放"device handle"。

所有的IOCTL命令都是在OPEN命令和CLOSE命令之间发送的,VW2010提供的IOCTL码共32位宽,由3部分组成。第一部分是固件类型,可形成IOCTL码的高8位;第二部分是操作类型(分为读和写),可作为IOCTL码的[23..16]位;第三部分是要发送的IOCTL命令。其参数配置流程如图2所示。发送IOCTL命令的详细过程如下:

(1)读共享存储区的0x3F1884至0x3F1894中的内容,并在0x3F1888处存放返回码,0x3F188C存放返回的"handle",0x3F1890处存放辅助参数区地址。如果返回码的数值是0,则说明无错,这时,DSP将存储这些返回的参数以备后用;

(2)读REG_INT1,如果REG_INT1=0x01,则表示设备已准备好接受IOCTL命令;如果设备准备好,则继续下一步;否则,重复检查Firmwar-eReadyCode和REG_INT1,直到设备准备好;

(3)写IOCTL命令码到共享存储区0x3F1800地址的CMD区,并写中断指示码到共享存储区0x3F1800地址的Int Flag区(0=关中断,1=开中断)。然后把从第一步中OPEN命令返回的"de-vice handle"写到0x3F180C处,再把从第一步中OPEN命令返回的辅助参数区的地址"x"写到0x3F1810处;

(4)把要发送的IOCTL码参数个数写到辅助参数区的"x"地址处,把要发送的IOCTL码写到辅助参数区的"x+4"地址处,再把要发送的IOCTL码参数写到辅助参数区的"x+8"地址处;

(5)给寄存器REG_DHIU5写0x0,以发送一个中断给VW2010。在处理IOCTL命令前,芯片会锁定semaphore寄存器(REG_INT1=0x0),处理完IOCTL命令后,芯片则会释放semaphore寄存器(REG_INT1=0x01);

(6)处理中断。

3 结束语

本文在介绍VW2010内部结构的背景下,提出了采用DSP作为外部主机的方法。该方法没有采用VW2010的SDK中所采用的利用PC作为主机的压缩编码系统设计方案。文章从系统的工作原理及流程到系统的设计,特别是VW2010固件代码的下载和参数的配置,都进行了详细的阐述。测试结果表明,该设计方案简单可行,可以在低比特率的条件下完成良好的图象压缩编码和存储。



评论


相关推荐

技术专区

关闭