用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于VW2010芯片的嵌入式多媒体监控系统压缩/解压卡设计 2

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-11 00:03:42
【本文由PB创新网为您整理】
摘要:在简要分析了多媒体监控系统发展现状的基础上,提出了一种基于VW2010压缩/解压芯片的多媒体压缩/解压卡的设计方案,给出了基于VW2010的多媒体监控系统压缩和解压卡的硬件结构图以及在Linux系统下VW2010的驱动程序,同时给出了在Linux Redhat 7.3下编写的测试程序,并进行了全面的测试。

    关键词:MPEG;监控系统;压缩/解压;设备驱动程序

1 MPEG-4标准及其在多媒体监控系统中的应用

多媒体监控系统是多媒体技术在安防领域的新应用。目前已广泛应用到金融、文博、酒店、交通、商业、医院、工厂、学校、住宅小区物业管理等各个领域。从目前趋势看,多媒体监控系统的应用领域还在不断扩展。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    音视频压缩技术是多媒体监控系统中的关键技术。在数字多媒体压缩(特别是视频压缩)领域内有很多国际标准(如ISO/ITU-T技术委员会的JPEG标准、CCITT制定的H.263标准以及著名的MPEG标准等)。其中,MPEG-1标准适用于传输1.5Mbps的运动图形及其伴音编码,它具有较高的压缩比,其基本算法对于压缩水平方向为360个像素、垂直方向为288个像素,并以每秒24~30帧画面运动的图像有较好的效果。早期的监控系统很多都采用此标准(如著名的以色列芯片Z1510即采用MPEG-1标准);而MPEG-4标准的主要特点是可对图像中的内容进行编码,其核心是基于内容尺度可变性(Content-based scalability)。内容尺度可变性意味着可以给图像中的各个对象分配优先级。其中,比较重要的对象用较高的空间和(或)时间分辨力表示。对于比较低的比特率应用系统来说,尺度可变性是一个关键的因素,因为它提供了自适应可用资源的能力。例如,这个功能允许对具有较高优先级的对象用可接受的质量进行显示,第二优先级的对象则用较低的质量显示,而其余内容(对象)则不显示。对于监控系统来说,在绝大部分时间内,监视画面的背景都保持不变,因此,在要求的比特率比较低时,对于监视画面的背景部分可以以较低的质量显示,这样并不会影响整个画面的效果。

本系统采用MPEG-4压缩标准,选择的实现方式是硬压缩和硬解压,所用的压缩解压芯片为VWEB公司的VW2010。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 硬件设计原理

2.1 VW2010的主要特点

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

(1)片内集成有3个信号处理/控制单元,包括一个视频编码(压缩)器、一个视频解码(解压)器和一个片内CPU(内部扩展一个音频编码DSP、一个音频解码DSP、一个多路复合单元和一个多路解复合单元)。VW2010芯片的内部结构图如图1所示。

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

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

(4)芯片的主机接口采用标准PCI接口。符合PCI局部总线规范2.2。

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

(6)提供有与PHILIPS公司兼容的I2C总线,可方便地对外围芯片进行控制。
javascript:window.open(this.src);" style="cursor:pointer;"/>
    2.2 基于VW2010的压缩/解压卡硬件设计

图2所示是用VW2010设计的压缩卡的原理框图。图中,CVBS信号先经过视频接收电路进行前端处理(包括阻抗匹配、限幅和钳位),然后通过视频解码电路产生符合VW2010视频接口标准的ITU656信号。 视频解码电路的核心是一个视频解码芯片,该解码芯片用于对CVBS信号进行A/D转换和编码,以产生ITU656标准的并行数字电视信号。高档的视频解码器还支持图像尺寸缩放(scaling)和帧提取(decimating)功能,如PHILIPS公司的SAA7114、SAA7115以及Rockwell公司的BT829A等。由于VW2010的视频输入为ITU656/D1格式,所以只需要选择具有基本A/D转换和编码功能的视频解码芯片如SAA7113即可。

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

VW2010是压缩卡的核心处理芯片,该芯片除可完成音、视频信号的编码外,还可提供对解码器和ADC的控制(通过I2C总线),其编码产生的MPEG流可通过芯片内部集成的PCI接口输出。VW2010的解压操作是压缩操作的逆过程,基本原理类似,基于VW2010的解压卡原理框图如图3所示。

3 Linux下VW2010设备驱动程序设计

3.1 分层软件体系结构

按照操作系统的观点,系统软件体系结构应为表1所列的分层结构。驱动程序工作在核心态,并向下通过Chip API实现对VW2010芯片的直接控制,向上则为应用程序提供驱动程序接口(Driver API)。按照Rubini先生的观点,驱动程序提供的是机制,而不是策略。换句话说,驱动程序的主要任务是为应用提供全面、高效而可靠的服务,具体如何使用硬件则是应用需要解决的问题。

表1 分层软件体系结构示意图

SoftwareMode
ApplicationUser mode
Driver API
DriverKernel mode
Chip API
FirmwareHardWare layer

考虑到Linux系统下的设备驱动程序开发技术已经相当成熟,笔者不打算详细介绍驱动程序的完整框架和各个模块,而是在分析VW2010芯片与host通信机制的基础上,着重讨论在驱动程序中如何实现对VW2010芯片的有效控制以及如何通过应用程序实现VW2010芯片间数据的有效传输。

3.2 VW2010与host的通信机制

VW2010提供了三种与host通信的机制:直接访问内部寄存器、共享存储区(shared memory)和DMA。VW2010允许host直接访问其内部寄存器和外部存储单元,寄存器方式主要用于调试目的和下载固件程序;DMA方式则负责VW2010芯片和应用缓冲区之间的数据传输(如MPEG数据流);共享存储区机制是设备驱动程序和VW2010间的主要通信方式。

(1) 共享存储区(shared memory)

VW2010采用共享存储区机制接收host的命令并返回命令执行结果。host与VW2010进行通信的共享存储区(以下简称SM_PC2VW)位于encoder SDRAM中地址3F1800处,共128字节;而VW2010与host进行通信的共享存储区(以下简称SM_ VW2PC)则位于encoder SDRAM中的地址3F1880处,也是128字节。

SM_PC2VW的格式如表2所列。表中,CMD为命令码,分别为:读数据(CMD=1)、发IOCTL码(CMD=2)、写数据(CMD=3)、打开命令(CMD=4)和关闭命令(CMD=5);IntFlag为中断标识,IntFlag为1时,VW2010执行完CMD定义的任务后将产生一个中断,为0则不产生中断;Device Handle由打开命令从firmware中获得,当CMD不同时,Parameters有不同的含义。

表2 host到VW2010的共享内存区格式

Address31:1615:87:0
3F1800ReservedIntFlagCMD
3F1804ReservedReservedReserved
3F1808Reserved
3F180CDevice Handle
3F1810Parameters
3F1814……

表3 VW2010到host的共享内存区格式

Address31:1615:87:0
3F1880ReservedReservedReserved
3F1884ReservedACK/NACKCMD
3F1888Return Code
3F188CDevice Handle
3F1890Parameters
3F1894……

SM_VW2PC的格式如表3所列。ACK/NACK的含义是:如果SM_PC2VW中的IntFlag为1,且命令CMD成功执行,则为ACK;如果SM_PC2VW中IntFlag为1,而执行命令CMD失败,则为NACK,并将错误码保存在Return Code字段。

一般在发送其它命令之前,必须先发送打开命令,此时,Device Handle字段应为0,Parameters字段为打开类型(TSMUX,PSMUX,TSDEMUX或PSDE-MUX)。如果该命令成功执行,则会在SM_VW2PC的Device Handle字段返回所分配的Device Handle,并在SM_VW2PC的Parameters字段返回辅助参数区的首地址(下面简称为X)。辅助参数区由firmware在encoder SDRAM中动态分配,主要用于传递与命令有关的参数。

在结束使用共享内存区后,必须发送关闭命令以释放辅助参数区。

(2)信号灯

由于共享存储区是临界资源,所以必须提供一种机制,以保证VW2010和host使用时不发生冲突。为此,VW2010分别给SM_PC2VW和SM_ VW 2PC提供了两个硬件信号灯,它们由寄存器REG_INT1和REG_INT2的最低位控制。此外,VW2010还为信号灯定义了以下两种操作。

写操作:向REG_INT1或REG_INT2最低位写入1,然后释放共享存储区。

读操作:返回REG_INT1或REG_INT2最低位的值,同时清该位为0。
javascript:window.open(this.src);" style="cursor:pointer;"/>
   

[1] [2]  下一页

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:26,937.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号