首页 > 范文大全 > 正文

视频编码器设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇视频编码器设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

1系统总体设计方案

图中单线箭头表示控制流,双线箭头表示数据流。编码器主要由视音频接口模块和视频编码处理模块构成,虚线框内为视频编码处理模块。视频的输入和音频的输入输出分别通过视音频接口单元实现。视频接口负责对输入的模拟量复合视频进行分离,主芯片采用Techwell公司的TW2815;音频接口负责音频的上行和下行,音频采集通过TI的TLV320AIC31实现。如图1所示,对视音频接口模块的控制通过I2C总线进行,视频和音频数据的传输分别通过BT.656和I2S接口进行。此次设计中,主芯片采用海思视频编码芯片Hi3512,该芯片基于ARM9内核,并具有MMU(memorymanage-mentunit)单元,能够完美地支持嵌入式Linux操作系统,同时片内包含一个H.264硬件编码单元,能够极大地提高编码效率;为了实现程序存储,外接了一片32M的NorFlash芯片;同时,针对视频编码算法数据量大的特点,采用两片16位的DDR2内存芯片并行组成32位动态存储单元。主编码芯片Hi3512和外扩的Flash以及DDR2动态存储单元一起构成编码器的视频编码处理模块。经编码后的视音频数据流打包成RTP格式通过网络接口输出。

2视音频接口模块

目前视频监控应用中使用最广泛的摄像头为模拟摄像头,其输出的是模拟量的复合视频,复合视频信号中包含亮度和色度信息,同时,亮度、色度信息与声画同步信息、消隐脉冲一起组成单信号,本设计中通过BNC(BayonetNutConnector)接口获取该视频信号。要实现对复合视频的H.264编码,首先需要对其进行分离和量化:分离步骤负责从复合视频信号中分解出亮度与色差分量;分离得到的亮度色差分量经过模数转换器量化后由视频编码处理模块进行编码。视频接口单元基于TW2815芯片实现。仍参见图1,硬件上通过TW2815芯片的模拟视频接口输入摄像机采集到的复合视频,在片内经过亮度色差分离并进一步量化后通过BT.656接口以YCrCb(亮度、红色差、蓝色差)4:2:2格式输出至视频编码处理模块进行编码。要使TW2815正常工作需要对片内的视频类、音频类及控制类寄存器进行配置,设计中通过I2C总线进行。音频接口单元基于TI公司的TLV320AIC31实现,通过线性输入接口实现左右声道的输入,音频的立体声输出通过高功率输出接口完成。音频接口芯片与编码芯片Hi3512的数据交互采用I2S标准音频接口实现,对片内寄存器的配置与操作仍通过I2C进行。为了增强编码器的稳定型和健壮性,硬件设计时在视频和音频信号的输入端均用瞬态抑制管对信号进行了过压保护;同时,此编码器面向视频监控应用领域,音频的上行采集对此类应用具有重要意义,为了保证该信号可靠传输,硬件设计时将音频输入信号一并引入TW2815芯片的模拟音频输入接口,为音频信号的上行传输提供两条可选路径,如图1所示。通过软件配置可实现音频输入通路的自动切换。

3视频编码处理模块

参见图1,编码器的程序存储芯片采用AMD的NorFlash芯片AM29LV256MH123,动态数据存储单元采用两片DDR2芯片构成,编码后的视频数据通过网络接口输出。因设计中包含多个不同的电压等级:5V、3.3V、1.8V和1.2V,故需要合理规划电源和地平面,尽量使相应外设布线时都有完整的参考电源平面,综合考虑成本因素,此次PCB设计时采用6层板进行;同时,因编码器板元件密度较高,PCB设计时应对晶振进行包地处理,以最大程度减小对其它元件的干扰。DDR2动态存储器作为编码器硬件设计中速度最快的高速器件,其能否稳定工作对编码器整体性能有重要影响。因DDR2正常工作对信号质量有很高要求,如何针对DDR2进行信号完整性设计以获得良好的信号质量,同时制定合适的PCB布线约束是本次硬件设计中的难点。此节中对DDR2动态存储单元的构成和信号完整性设计做一详细探讨。因视频编码算法数据量较大,设计中选用了两片SA-MSUNG的DDR2芯片K4T1G164QA构成编码器动态存储单元。该内存颗粒具有16位数据宽度,数据存储带宽达667Mb/s。海思编码芯片Hi3512集成有一个32位宽度的DDR2控制器,设计中通过两片DDR2内存芯片拼接成32位数据位宽:两片DDR2芯片共用地址和控制线;而数据线,数据同步线和掩码信号线则依次与Hi3512DDR2控制器接口的低16位部分和高16位部分分别互连,从而为Hi3512芯片的DDR2控制器提供一个统一的32位数据接口。影响DDR2信号完整性的主要方面包括反射、串扰和拓扑结构等。常见的设计方法有理论计算,电路仿真和经验估计。为了合理平衡时间与效率,本次设计中采用理论分析与电路仿真分析相结合的方法进行信号完整性设计并求解满足信号质量要求的解空间[11]。3.1反射与端接信号在传输过程中,遇到任何的阻抗突变都会发生反射。设源端器件输出阻抗为ZS,传输线阻抗为Z0,负载输入阻抗为ZL,当信号施加在源端时,只有部分电压沿线路向末端传播,该部分是一个频率相关函数,即输入接收函数A(ω)信号反射回源端后,若阻抗不匹配,会发生二次反射,如此往复,造成信号的过冲与振铃。通过迭代求解,第n次反射信号的特性Sn(ω)为Sn(ω)=A(ω)HX(ω)[R2(ω)H2X(ω)R1(ω)]nT(ω)(6)将所有信号叠加求和,即为传输系统从源端到负载的频率响应S∞(ω)本次设计中,保证末端(DDR2芯片端)信号完整性对DDR2芯片的正常工作至关重要,因此设计中采用源端端接策略。此时,若使源端反射函数R1(ω)为零,即可消除二次反射,即第一次反射的信号到达源端后,不会再次发生反射。同时式(7)可简化为SS=HX(ω)A(ω)[R2(ω)+1](8)此时要求DDR2控制器输出阻抗ZS和端接阻抗之和与传输线阻抗Z0相等。本次PCB设计时设定传输线阻抗Z0为50Ω,通过阻抗分析,端接值应小于50Ω。为了确定最佳端接值,本次设计中通过信号完整性软件AllegroPCBSI对该范围内的端接值进行扫描仿真。图2是采用AllegroSigXplorer工具提取的DDR2信号拓扑图。图2中,R1即为源端端接电阻,因设计中采用两片DDR2存储芯片,直接采用T型拓扑连接即可,无须采用更复杂的拓扑结构。仿真时需要首先导入器件的仿真模型,目前常用的仿真模型有IBIS(Input/outputBufferIn-formationSpecification)模型和SPICE(SimulationProgramwithIntegratedCircuitEmphasis)模型。相比SPICE模型,IBIS模型仿真速度更快[13],故本次设计中采用IBIS模型进行仿真。仿真时设定端接电阻阻值的扫描范围为从15Ω开始到50Ω,递增步长为1Ω。图3是在4种典型端接值时的末端信号波形,信号分析的结果由表1中给出。在DDR2中,数据采样在双边沿均会进行;同时边沿斜率是时序修正[14]的参照,其值的大小是评价信号质量的重要依据。故在表1中一并对信号上升和下降两个边沿的斜率进行了测算。DDR2芯片数据手册中对DC特性的要求为VIHDC(Min)=1.025V,VILDC(Max)=0.775V;信号过冲小于300mV。结合图3和表1进行分析,未进行有效端接时,信号过冲严重,超过了DDR2芯片手册中的要求,信号波形如图3(a);当DDR2控制器输出阻抗与端接阻抗之和小于传输线阻抗时,信号的振铃现象明显,如图3(b);反之,如图3(d),振铃虽然消失,但信号边沿退化,斜率变小,信号质量下降;在图3(c)中,信号波形平稳,过冲较小,同时根据表1的计算结果,此时信号的边沿斜率较好。综合考虑过冲大小和信号的边沿斜率等因素,在本次设计中确定端接电阻的阻值为33Ω。3.2串扰相邻网络之间,边缘电磁场会产生容性耦合和感性耦合[15]。其中一个网络的电压产生的电场会对第二个网络产生影响,进一步,两个网络之间的电场会互相影响,这种电的相互作用造成互容。互容电流IM与电压的变化率成正比式(9)中,CM为网络间的互容值,V为网络电压。同时,网络上的电流产生的磁场也会影响相邻网络,两个网络之间磁场的相互作用造成互感,互感电压UM的值为UM=LM·dIdt(10)式中:LM———互感值,I———网络电流。互容和互感均会引起串扰。串扰严重到一定程度会导致逻辑错误。通过式(9)和式(10)分析串扰的成因可知,要有效降低串扰,可以通过从源头上降低信号的变化频率,或者从电磁场的传播过程中加以考虑。在本次设计中,考虑到系统性能要求,信号频率不可改变,只能通过增加网络间距以减弱电磁场耦合来减小串扰。DDR2布线时存在数据组,地址组,命令组等多组并行线路,同时需要通过蛇形走线满足信号时序要求,布线压力较大,有必要对串扰大小进行仿真分析以确定合适的网络间距。为满足阻抗要求,DDR2网络的线宽设定为6mil,布线时主要通过带状线走线;仿真中设定串扰受害网络左右对称分布有2条攻击网络。在上述条件下对相邻网络间距分别为6mil,8mil,12mil,15mil时的串扰大小通过Men-torGraphicsHyperlynx软件进行仿真分析,得到的串扰波形如图4所示。DDR2SDRAM采用SSTL-18电平,信号引脚利用1.8V电源供电,产品设计中一般应保证信号串扰值小于信号阶跃电平幅值的10%,表2中的ρ值为在不同网络间距下最大串扰与信号阶跃电平幅值的比值。结合图4和表2,随着网络间距增大,串扰量显著减小;当网络间距为8mil时,串扰值依然达到了16.1%,对受害网络上的信号完整性造成较大影响;从网络间距12mil开始,串扰值逐渐下降到一个可以接受的水平。本次设计中,为了保证信号完整性,同时兼顾PCB布线压力,设定DDR2区域的网络间距为12mil,此要求与3W布线原则也基本一致。

4软件实现

编码器板选用的操作系统为Linux2.6.29,为了支持视频和音频输入,软件设计时需要首先为视频接口芯片TW2815和音频接口芯片TLV320AIC31编写驱动程序;同时,硬件设计时对视音频接口的配置通过I2C总线进行,故需要将对应的I2C驱动一并编译进内核中。下一步需要移植好bootloader,根据Hi3512的平台特点,此次设计中选择u-boot进行引导。完成上述步骤后,对Linux内核进行裁剪并编译,然后下载内核并建立文件系统,编码器板的Linux软件环境就搭建成功了。下面要基于Hi3512平台实现视频音频的编码,此次设计中,对视频的编码基于H.264算法进行,对音频的编码采用G.711标准。要实现基于Hi3512平台的视音频编码,需要首先理解Hi3512片内视音频硬件编码单元的构成方式和工作原理。片内视频硬件处理单元的工作说明如图5所示。Hi3512芯片的视频处理单元主要分为四个模块:视频输入模块VI(videoinput),视频编码模块VENC(videoencoder),视频解码模块VDEC(videodecoder)和视频输出模块VO(videooutput)。获取的视频信号首先输入到VI模块中,通过可编程的逻辑通道“Chn0”将采样到的数字视频信号获取;此时,VENC模块提供一个逻辑通道“Chn0”将两个逻辑通道连接起来,即可完成视频编码通路的构建;进一步通过调用接口使用底层硬件处理中心对数字视频信号进行H.264编码,即可得到压缩后的视频流。同理,将压缩后的H.264视频数据流输入到芯片中,通过建立VDEC和VO的逻辑通道链路,则可以实现视频解码通道的构建和信号输出。音频处理的过程与之类似。对视频音频的编码需要对上述四个模块进行控制,主要包括设置视频的格式,缓冲区等相关参数,并通过管理各模块之间逻辑通道的连接构成处理链路,以实现视频音频数据的编码。其中,视频编码接口属性数据结构用于联系待编码的视频数据与Hi3512片内的硬件编码单元,与后续视频数据能否正确编码密切相关。此次设计中该接口属性数据结构定义如下,包含了视频属性,帧率,缓冲区大小等详细信息。因此次设计的编码器仅对一路视频信号进行编码,故在每个工作单元中选择逻辑通道时,可以均选取通道0来建立视频编码链路;程序设计时,除主线程外,建立了两个线程[16]分别对视频和音频进行编码:视频编码处理线程VENC_proc和音频编码处理线程AENC_proc。线程间通过共享结构体与主线程通信,图6给出了视频和音频编码的软件实现流程,音频编码线程与视频编码线程并行运行。视音频编码完成后,打包成RTP格式的数据包,即可通过网络接口发送至PC机或其它设备,完成与其它设备的视音频流传输。

5测试结果

根据设计时的性能要求,对编码器在视频图像分辨率为D1(704×576)时的编码能力进行了长达30天的不间断测试,测试结果如表3所示。分析表3中的各项指标,基于Hi3512平台的H.264编码器达到了预期的设计要求;进一步对编码后的视频进行了回放,视频画面流畅,能够满足视频监控中的应用要求。6结束语视频编码器是网络化视频监控系统中的关键设备,本设计采用国产芯片海思Hi3512实现了H.264视频编码器。Hi3512芯片内建有H.264视频硬件编码协处理器,基于该平台的编码器方案具有流畅的视频编码质量,经过测试,编码器性能稳定可靠;同时,通过实际设计对比,相对TI的达芬奇平台,采用Hi3512平台的编码器方案具有更低的BOM(BillOfMaterial)成本,尤其适合对成本敏感的视频监控应用领域。文中对编码器的软硬件设计进行了阐述,同时,针对硬件设计中的难点,对DDR2存储单元的信号完整性设计进行了详细的分析,希望能够为基于国产芯片的商业化视频监控产品设计提供参考。

作者:黄伟华,郑贤忠 单位:中国船舶重工集团公司第709研究所