当前位置:首页 > 嵌入式 > 嵌入式硬件

由于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编码。

图1 压缩卡原理框图

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接口能实时地将数据流传送到主机。

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和高速缓冲,用于存储和执行写入内部的微码。

图2 系统驱动程序软件结构

主机与VW2005的通信

VW2005内部的编码存储器(encoder SDRAM)中有两个双端口、128字节的共享存储区,作为主机与VW2005的通信媒介。用于主机到VW2005通信的128字节的共享存储区(以下简称host_VW_SM)位于encoder SDRAM中地址0x3F1800处。Host_VW_SM格式如表1所示。

表1 主机到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所示。

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

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的要求。

图3 压缩卡程序流程图

结语

本文详细介绍了基于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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件
关闭
关闭