基于Z1510与A/D转换单元的音视频压缩系统的设计

随着计算机、多媒体和数据通信等技术的高速发展,对计算机音视频的需求和应用越来越多,如视频监控、视频会议等。计算机音视频提供给人的信息很多,但其数据量很大,不利于传输和存储,从而使其应用受到不少限制。为解决音视频数据的存储和传输,唯一的途径就是对音视频数据进行压缩。
基于z1510专用音视频压缩芯片设计的具有usb接口的实时mpeg-1音视频压缩卡,较传统的pci接口的mpeg-1音视频卡具有支持热插拔和即插即用等特点,同时该系统还具备很好的可扩展性。本文就来介绍这个系统的设计与实现。
1 硬件设计
本系统主要由音视频a/d转换单元、音视频压缩单元、系统控制单元和ubs接口单元四大部分组成,如图1所示。模拟音视频信号经ak4550、saa7113音视频a/d转换器后送入z1510音视频压缩芯片,压缩编码后生成的mpeg-1码流经usb端口输出。整个压缩系统的控制由tms320f2812和epm7128ae共同完成,压缩后的数据通过usb接口芯片pdiusbd12输出。
1.1 音视频压缩部分的电路设计
本系统中的mpeg-1压缩芯片选用以色列emblaze semiconductor公司的z1510。z1510是一款高性能低成本的音视频压缩编码芯片,它可完成mpeg-1音视频压缩、mjpeg视频编码以及全分辨率静态图像捕获,还可对cd-rom和vcd进行格式化。z1510压缩芯片有三种系统配置(master、direct-data、indirect-data),总共有20余种工作模式,不同的工作模式可通过加载不同的代码来实现。
z1510的音视频输入是通过视频端口和串行接口完成的。视频输入端口主要接收视频a/d转换器产生的itu-r bt.601或itu-r bt.656格式的数字视频信号和相应的时钟同步信号。z1510有五个串行端口,包括三个输入端口(audio0、audio1和cd-drive)和两个输出端口(cd-drive和svcd decoder),每一个端口均可作为主设备端口和从设备端口,本系统中应用的audio1端口作为主设备端口,接收未压缩的数字音频信号,同时为音频a/d转换器提供相应的同步时钟信号。
z1510的主时钟信号频率为稳定的27mhz,该时钟信号频率在芯片内部被pll1倍频为81mhz,驱动z1510的视频压缩内核及sdram。而pll2连接到dsp内核,该pll由软件配置pll寄存器,工作在94.5mhz,用于音频压缩和系统数据流复合。系统主时钟由一个27mhz的晶体振荡器直接提供,该晶振同时也为epm7128ae和tms320f2812提供时钟信号。
在z1510进行mpeg-1压缩时,它是工作在lave(live audio video encoding)模式。在此模式下,z1510只能配置为间接工作(indirect-data)状态,此时z1510作为从设备,受主机控制,主机可以通过其host接口访问它内部的配置和状态寄存器,并且可以通过局部fifo获得压缩后的视频码流。
z1510的host接口的主要信号有:
·had[150] 数据总线;
·hconfig[9,8] 总线数据类型选择;
·hwr_n,hrd_n 读写控制,hcs_n器件片选信号;
·hale在复用总线模式下,锁定低8位地址had[7~0];在非复用总线模式下,指示当前数据总线上发送的是寄存器地址还是寄存器数据。
·hint_n 中断请求信号,低电平有效。
在存储空间分配中,z1510分在tms320f2812外部拓展存储空间(xintf)的0区(0x00 2000~0x00 3fff),因此需将hale管脚在cpld内部通过进位链与dsp的a0相连,而片选信号hcs_n需由a12、a13、a14、a15和dsp的信号经译码实现,hwr_n和hrd_n信号由a12、a13、a14、a15和dsp的信号经译码实现。
1.2 系统控制单元
本系统使用ti公司的tms320f2812和altera公司的max7000系列的epm7128ae实现系统的管理和控制。tms320f2812是基于tms320c28xtm dsp内核的芯片,时钟频率高达150mhz,具有18k的saram和128k的片内flash,另外还具有1m的外部扩展存储空间(xintf)。tms320f2812的外部扩展存储空间只可用作数据空间或程序空间,不支持i/o空间,它分为0、1、2、6、7五个区,没有ds、ps、is三个信号线,取而代之的是三个区选信号,其中0区和1区共用一个区选信号,6区和7区共用一个区选信号,在设计中,由于saa7113的片选信号直接拉高,而它的配置是通过tms320f2812的gpio模拟i2c总线实现的,因此不占用存储空间;z1510的控制接口地址与数据复用和usb接口芯片pdiusbd12一样,都只有一个地址位(占用两个位置);只有外界flash芯片mbm29lv800(512k×16位)占用存储空间较多,因此系统主要存储空间分配如下:
z1510 占用zone0 0x00 2000~0x00 2001
usb接口 占用zone1 0x00 4000~0x00 4001
flash 占用zone2 0x08 0000~0x0f ffff
由于本系统采用专门的视频压缩芯片,cpld主要完成一些逻辑仲裁、地址解码逻辑、控制信号的产生等,无需进行一些较复杂的运算,因而选用内核电压和i/o电压均为3.3v且具有128个宏单元的epm7128ae来实现。
1.3 接口单元
z1510在进行标准的mpeg-1音视频压缩时,系统比特率一般在1.5mbps以下。虽然最高速度12mbps的usb1.1里的开销包括了命令包、帧标记和握手协议传输等,但仍可达2mbps的系统比特率,可以满足系统设计需要。在综合考虑性价比后,选用了philips公司的usb1.1接口芯片pdiusbd12。pdiusbd12看起来就像是一个带八位数据总线和一个地址位的存储器,它提供的微处理器接口可以兼容大部分的dsp环境,其接口信号包括八位数据线d0~d7和ale、a0、、、、,usb控制器可以分为地址/数据复用模式或单地址/数据模式,如表1所示。dsp的数据地址总线是分离的,usb控制器采用单地址/数据总线模式更容易与dsp接口。
2 软件设计
本系统的软件设计主要分两大部分:对硬件的初始化(saa7113、z1510)和pc机与系统的实时通信。系统上电后,由电源输出端的rc电路触发cpld里的d触发器,对dsp进行复位,然后由dsp对其它器件进行复位和初始化。
2.1 硬件初始化
对saa7113的初始化可通过将dsp的mcbsp用作通用i/o脚模拟i2c总线来实现,dsp作为主器件,saa7113作为从器件,用mcbsp的clkr模拟scl,fsr模拟sda。首先设置dsp的gpfmux寄存器的相应位为0,使clkr和fsr用作通用i/o脚;然后设置gpfdir和gpfdat寄存器的相应位以改变clkr和fsr的输入输出方向和高低电平,gpfdir.bit=0时为输入,相反为输出;gpfdat.bit=0,同时引脚为输出时为低电平,相反为高电平。通过clkr和fsr管脚的高低电平的变化和输入输出状态的切换可以实现i2c协议。saa7113的初始化就是对寄存器配置合适的参数,使其能够有符合要求的输出。寄存器配置通过i2c总线来进行,很多可以控制i2c总线的器件都可以作为主器件对7113进行初始化,这里介绍用51单片机初始化7113的例子。
系统在开始工作之前,还要进行一个软复位过程。tms320f2812先向z1510的soft_reset寄存器(地址0x08)写0x55,等待至少1微秒后,设置int_enable [6]寄存器,使能rdy中断,等z1510产生一个rdy中断后,清中断,完成软复位,开始代码加载。saa7113是一种视频解码芯片,它可以输入4路模拟视频信号,通过内部寄存器的不同配置可以对4路输入进行转换,输入可以为4路cvbs或2路s视频(y/c)信号,输出8位“vpo”总线,为标准的itu 656、yuv 4:2:2格式。7113兼容pal、ntsc、secam多种制式,可以自动检测场频适用的50或60hz,可以在pal、ntsc之间自动切换。7113内部具有一系列寄存器,可以配置为不同的参数,对色度、亮度等的控制都是通过对相应寄存器改写不同的值,寄存器的读写需要通过i2c总线进行。7113的模拟与数字部分均采用+3.3v供电,数字i/o接口可兼容+5v,正常工作时功耗0.4w, 空闲时为0.07w。7113需外接24.576mhz晶体,内部具有锁相环(llc),可输出27mhz的系统时钟。芯片具有上电自动复位功能,另有外部复位管脚(ce),低电平复位,复位以后输出总线变为三态,待复位信号变高后自动恢复,时钟丢失、电源电压降低都会引起芯片的自动复位。7113为qfp44封装。
在z1510内部寄存器有一段程序空间,这段空间以块为单位,每块的大小是256字节。其中,dsp核程序空间为0x280~0x2bf(64 banks),视频编码核的二进制代码的装载空间为0x000~0x004和0x00c等六个块。装载步骤如下:
(1)向z1510内部寄存器0x2e写入0x01,表示外部的sdram是1m×16bit;
(2)向0x0c寄存器写0x03,使能fifo ready和end of data中断;
(3)向0x11寄存器写0x18,设定工作模式为内部内存写模式;
(4)向0x10写0x20,设定z1510的fifo满为256字节;
(5)向0x08寄存器写0x04,发送开始命令;等待ready中断,然后清除ready中断;
(6)向data _in寄存器0x01写256个字节数据;等待end of data中断,然后清除中断;
(7)查程序空间的代码是否装载完毕,如没有,回到(5)继续装载。
通过设定z1510内部工作寄存器的特定状态可以使其工作在特定的模式,在本系统中设定z1510工作在lave模式,在此模式下,z1510从音频和视频a/d转换器获取数据并压缩为mpeg-1码流。z1510正常工作后,输出mpeg-1码流。其输出码流要经过输出端口fifo缓冲,每当fifo写入超过半门限时,产生中断frdy(fifo ready)通知dsp,dsp通过读寄存器data_out(0x00)取走数据,其半门限可由threshhold寄存器设定,最大256字节。fifo满后,dsp连续读寄存器256次可以取走数据。z1510的驱动流程见图2。
2.2 接口程序设计
在设计开发一个usb外设的时候,主要需要编写三部分程序:①固件程序;②usb驱动程序;③客户应用程序。固件编程主要完成pdiusbd12的驱动,使dsp系统与外部系统进行数据交换。
在win32系统中,每一个设备对象都抽象为文件。在应用程序设计中,只需通过几条简单的文件操作api函数,就可以实现与某个设备通信。主要使用的api函数有deviceiocontrol()、readfile()、writefile()。其中,deviceiocontrol()用于pc机(主机)向图像压缩系统发送请求;readfile()和writefile()分别用于从图像压缩系统中读出数据和写入数据。在设计过程中必须注意的问题是:由于usb接口是主-从方式的接口,它的一切传输都必须通过主机向外设发送请求后才能进行,所以在使用readfile()、writefile()读写数据之前,必须先通过deviceiocontrol()向图像压缩系统发送请求,系统接收请求后才能读写数据,开始进行音视频压缩。
该音视频压缩系统具有较好的功能扩展性,正如前面所介绍的,由于z1510具有多种工作模式,在系统初始化时可根据所需工作模式加载不同的代码,对相应的寄存器进行不同的初始化,通过改变工作模式,可完成单独的视频压缩、音频压缩、静态非压缩或压缩图像获取(pc camera)等多种功能。如再在系统中设计大容量flash,还可升级为独立的音视频压缩记录系统。

iPhone 15 Pro Max的影像得分不及华为P60 Pro?
无人零售为何没有火起来
基于FPGA的数字波束形成技术的工程实现
51单片机常见的7种时钟电路介绍
英特尔公布1万亿参数AI模型,比ChatGPT大570%
基于Z1510与A/D转换单元的音视频压缩系统的设计
FPGA对芯片有何影响 FPGA如何实现连接?
我国5G毫米波技术已驶入商用冲刺阶段
华为起诉联邦通信 旗舰手机5G基站已不包含任何美国制造零件
为什么PCB要使用高Tg材料
主流电视面板存在缺陷,Micro LED何时能取代OLED?
高手将RTX2070自行翻番成16GB 显存跑分倒退30%
Thorlabs将完成收购JML Optical,扩展光学镜头相关业务
紫光展锐发布5G通信技术平台马卡鲁及首款5G多模基带芯片春藤510
微机消谐装置的作用是什么
为什么需要储能系统?
汽车云服务催生智能网联三大核心场景
Python能做什么?自学Python获得人生的第一桶金经验分享
锂离子充电电池需求逐年快速增长
工程师经验分享之巧妙检验plc输入输出