基于DSP和FPGA的视频编码器

发布者:WhisperingWaves最新更新时间:2013-09-13 来源: ednchina关键字:DSP  FPGA  视频编码器 手机看文章 扫描二维码
随时随地手机看文章
随着宽带Internet的快速发展和电子设备计算能力的迅速提高,在Internet上实时传输高清晰度视频信息成为可能,以Internet为传输媒介的视频会议、视频监控、Internet电视台等视频应用方兴未艾。这些应用的一个共同特点是,都需要一个高性能的实时视频编码器,特别是高分辨率的视频应用给视频编码器的计算能力提出了很高的要求。例如,一幅720×576的4∶2∶2视频格式的画面,包含有3240个16×16的YUV宏块(MacroBlock,即MB)。如果该视频帧按照P帧或者B帧进行压缩,那么每一个YUV宏块都要进行运动估计、运动补偿、DCT(Discrete Cosine Transform)/反DCT变换、量化/反量化和VLC(Variable Length Coding)等环节的运算。如果进行实时压缩(每秒钟压缩25帧)的话,大致需要316~5GIPS(Instruction persecond)的计算能力。

目前,单一的CPU/DSP一般还不具备这样的计算能力。为了解决高清晰画面的实时视频压缩问题,本文提出了DSP和FPGA(Field Pro-grammable Gate Array)协同设计方案。使用FPGA完成视频采集、YUV(视频亮度Y、色度分量

UV)分离、数据I/O(Input/Output)等所有周边功能,使用高性能的DSP进行视频压缩编码,因而在视频编码器内DSP和FPGA能够进行流水操作,有效地提高了编码器的性能。

为了降低算法的计算复杂度,本文提出了基于宏块空间复杂度的宏块编码类型判别算法(MTJBSC)。在标准MPEG24视频运动估计算法中,判别宏块的编码类型是通过计算当前宏块内像素值方差和参考宏块与当前宏块之间的方差来实现的,因此计算量很大。MTJBSC算法首先计算出当前宏块的空间负责度(MBC),然后通过比较当前宏块的MBC与SAD(Sum of Absolute Difference)值来判断当前宏块的编码类型,大大降低了算法的计算复杂度。 [page]

1 硬件设计方案

基于TI公司的图像开发工具包(Imaging Developer Kit,即IDK)[2]架构,设计了视频编码器的硬件平台。从整体上来讲,视频编码器的硬件实现由DSP和FPGA两个模块组成,其逻辑框图如图1所示。由于视频压缩编码计算量很大,为了尽可能提高视频压缩帧率,由DSP专门负责视频压缩编码,而视频采集、YUV转换和编码器I/O接口等其它功能则交由FPGA模块来实现。

如图1所示,用户控制命令(例如视频压缩模式)由FPGA模块首先截获,然后FPGA模块向DSP模块产生外部中断,DSP在响应中断时读取存储在FPGA中的用户控制命令字,然后DSP解析命令字,并根据用户要求的视频格式、帧图像分辨率和视频压缩码流速率进行视频压缩编码。

模拟视频信号经视频解码器转换为裸视频数据流,该数据流(或从数字摄像机直接获得的数据流)经FPGA预处理后送入帧存中。DSP读取帧存中的数据进行压缩编码,压缩后的视频数据送入FIFO中,最后FIFO中的数据通过串口送给信道编码器。

FPGA模块的逻辑框图见图2。如图2所示,视频解码器首先将模拟视频信号量化为复合的YUV数据,然后经FPGA进行YUV分离(和滤波)后送到帧存(图1中的SDRAM1)中,C6201使用DMA通道(异步方式)通过FPGA读取帧存中的YUV数据进行压缩编码。帧存(SDRAM1)在刷新(refresh)或缺页(pagemiss)时会引起DMA读等待,为了平滑这种等待引起的DMA读数据的抖动,设计时在FPGA的内部实现了一个高速FIFO。视频帧存采用了乒乓结构,将8M字节SDRAM分为两个4M字节的地址空间(每一个地址空间可以容纳一帧YUV视频数据(720×576×115字节)),一个地址空间用于存储当前正在采集的视频数据,另一个地址空间用于DSP的数据读取。在压缩CCIR601格式的视频图像(每秒25帧)时,由于DSP的处理速度(大约每秒10帧)慢于视频采集的速度,所以FPGA模块在采集完一帧数据进入等待状态,直到DSP压缩完上一帧视频数据时,这2个地址空间才进行互换。

DSP模块接收FPGA模块送过来的YUV视频数据,然后进行视频压缩编码,最后将压缩的码流再转交给FPGA模块,由FPGA模数据发送出去。DSP模块的存储单元(图1中的SDRAM2)用来存放参考帧数据和中间运算结构。MPEG-4压缩编码算法指令存放在PROM中,为缩短取指时间,编码器在启动时已将指令从PROM读到片内存储器中。MPEG压缩码流是变速码流(VBR),而当该码流在恒定速率(CBR)的信道上发送时,需要一个FIFO缓存来平滑编码器输出码率的波动。

该设计的特点主要表现在以下2个方面:

①可扩展性好。FPGA模块除了负责数据I/O功能外,还作为协处理器使用,可根据需要增加FPGA的门数来实现原来由DSP完成的功能,例如Huffman编码、运动估计等;

②灵活的视频压缩编码格式控制,编码器能够实时地根据用户的要求进行压缩编码。

[page]

2 视频压缩算法优化

(1)MPEG-4数据流优化设计

实验表明,如果代码和代码要访问的数据在C6201片内存储区(PRAM和DRAM),其代码执行速度要比代码和数据在片外同步SDRAM中平均快17倍(片内总线宽度为256位,数据访问为1个CPU周期)。因此,将执行代码和数据放到片内将大大提高程序的运行速度。

在MPEG-4算法中,由于没有考虑存储器的限制,算法每次读入一帧YUV数据进行压缩编码。但对于C6201来说,片内只有64K字节DRAM,不可能一次将一帧数据读到片内存储器进行压缩。如果将一帧数据一次读到片外存储器(SDRAM)中进行压缩,又会大大降低代码的执行速度,因此,我们对视频压缩算法进行了改进,一次对一个切片(slice)数据进行压缩编码,并将压缩码流数据直接送入到发送缓冲区中。

编码器一次将一个切片的YUV数据(当前帧)读入到片内存储器中,然后根据计算决定切片宏块的编码类型(帧内/帧间编码)。如果宏块进行帧内编码,则YUV数据被分成8×8的像素块(一个宏块包含4个Y分量像素块和2个UV分量像素块)进行DCT变化,以消除图像空间冗余信息。DCT变化后的系数经过量化后进行游程编码(RunLengthCoding即RLC)和变长编码(VariableLengthCoding,即VLC),变长编码的结果送入到视频发送缓冲区中。与此同时,量化后的DCT系数经过反量化(结果放入内存B中)和反DCT过程形成重建帧,重建帧用作下一帧的参考帧。

如果宏块进行帧间编码,则以宏块为单位进行运动估计,根据运动估计的结果建立预测帧。当前帧和预测帧的差值形成了残差帧(residue frame),残差帧的编码过程与帧内编码过程相同。

(2)宏块编码类型判别算法

在MPEG-4算法中采用了快速运动估计算法,但是在进行宏块编码类型判别时计算量仍然很大。为此,本文提出了基于宏块空间复杂度的判别算法MTJBSC,进一步降低了运动估计过程中的计算量。

在编码P帧宏块的时候,首先要决定宏块是进行帧内编码还是帧间编码。在标准MPEG-4算法中是通过以下方法决定的[5]:

设参考宏块的像素值(Y分量值,以下同)用P(x,y)表示,当前宏块的像素值用C(x,y)表示,x,y表示宏块的纵、横坐标,M,N表示宏块的宽和高。当前宏块像素值的方差用EVAR表示,其值为

参考宏块和当前宏块的方差用EVMC表示,其值为

EVMC值越小(比如EVMC

if(EVMC>EVARandEVMC≥9)then帧内编码else帧间编码

显然,在MPEG-4算法中,为了判断宏块的编码模式进行了大量的计算(对于每一个P帧宏块都要进行上面的计算)。为了减少计算复杂度,本文提出了基于宏块空间复杂度(EMBC)的宏块类型判断(MTJBSC)算法,用以判断P帧宏块的帧内/帧间编码模式。

定义宏块的空间复杂度为水平方向上相邻像素差值的绝对值之和,即

在基于帧间差原理进行视频压缩的MPEG标准中,一般都是采用绝对差总合(ESAD)来进行运动估计的。在MPEG标准中,宏块的ESAD值定义为

式中:m,n为该宏块的运动向量。

根据上述定义,MTJBSC算法可简单描述为:

如果宏块的ESAD小于其EMBC,则该P帧宏块进行帧间编码;否则进行帧内编码。实验表明,在压缩质量和压缩输出码率均没有大的变动的情况下,该算法有效降低了视频编码器的计算复杂度,编码器的压缩帧率(f/s)得到明显提高。

[page]

3 测试结果

表1为编码器进行装载测试的测试结果(1帧的平均值)。装载测试是首先将视频测试序列装载到编码器的SDRAM中,然后进行压缩编码。使用的视频序列为标准测试序列mother(CIF格式,彩色,YUV4∶2∶0,5帧),DSP主频设置为200MHz。

表2为美国TI(TexasInstrument)公司基于DSK6711EVM板开发的H.263视频编码器的性能测试数据(装载测试)[6],DSP主频为150MHz。TI公司针对DSK6711对H.263做了全面优化,算法关键代码采用了线性汇编语言编写。H.263视频编码算法与MPEG视频编码算法的压缩编码原理、过程和计算复杂度大致相当,因此二者具有可比性。

从表1和表2可以看出,研制的视频编码器平均压缩帧率为39.2f/s(CIF图像),而TI公司开发的视频编码器平均压缩帧率为20f/s(CIF图像),绝对性能提高了96%,考虑到DSP主频的因素,相对性能仍然提高了47%。

4 结论

采用DSP和FPGA协同技术设计实现了一个高性能的MPEG24视频编码器。使用FPGA完成编码器I/O功能,使用DSP进行视频压缩编码,二者能够很好地并行工作,系统设计结构简捷,硬件工作可靠。同时,针对DSPC6201片内资源特点优化了视频压缩的数据流模式,采用MTJBSC算法有效地降低了压缩算法的计算复杂度。测试结果表明,采用MPEG24视频标准该视频编码器每秒能够每秒压缩39.2帧CIF图像。

关键字:DSP  FPGA  视频编码器 引用地址:基于DSP和FPGA的视频编码器

上一篇:设计基于Windows 8的无线触控人机接口设备
下一篇:高清数字电视机顶盒方案

推荐阅读最新更新时间:2024-05-02 22:46

中科昊芯李任伟:首款基于RISC-V的DSP年内预计出货量达数百万颗
日前,在第二届滴水湖RISC-V论坛上,北京中科昊芯科技有限公司创始人、董事长李任伟介绍了首款基于RISC-V的DSP芯片Haawking-HX28027,并表示今年将出货数百万颗,从而为RISC-V在中国乃至行业内在DSP领域的落地生根发芽奉献更多的力量。 李任伟表示,目前DSP市场每年有9.3%的增长率,预计市场到2025年会达到200亿美元。但目前本土DSP厂商无法满足国内旺盛的需求,主要原因之一是DSP基本上被国外垄断,不像Arm或者RISC-V一样开放,市场具有较高门槛。 源于中科院的中科昊芯,其团队核心自2016年起就开始基于RISC-V的处理器研究,并从2019年公司成立之后开始基于RISC-V的DSP研发,
[嵌入式]
借并购Hardi之机,FPGA巨擘“坐享其成”巧分ASIC验证市场一杯羹
尽管FPGA合成供应商Synplicity并购ASIC原型设计供应商Hardi Electronics AB并不是一个大型的EDA收购行动,但是这一动作却引人注目:Synplicity由此进入ASIC验证市场,却无需与其他大型EDA供应商直接竞争。 Synplicity在6月1日宣布以2400万美元收购Hardi,Hardi的14名员工成为Synplicity公司的雇员。Hardi销售能够咬合起来形成快速原型解决方案的母板和子板,运行速度可达125MHz。其所在的快速原型市场尚处于成长期,供应商也不多。Synplicity公司最近推出支持合成和调试基于FPGA的ASIC原型的软件,进入ASIC验证市场。 Synplicity公
[焦点新闻]
DSP处理器上并行实现ATR算法
  自动目标识别(ATR)算法通常包括自动地对目标进行检测、跟踪、识别和选择攻击点等算法。战场环境的复杂性和目标类型的不断增长使ATR算法的运算量越来越大,因此ATR算法对微处理器的处理能力提出了更高的要求。由于通用数字信号处理芯片能够通过编程实现各种复杂的运算,处理精度高,具有较大的灵活性,而且尺寸小、功耗低、速度快,所以一般选择DSP芯片作为微处理器来实现ATR算法的工程化和实用化。 为了保证在DSP处理器上实时地实现ATR算法,用算法并行化技术。算法并行化处理的三要素是:①并行体系结构;②并行软件系统;③并行算法。并行体系结构是算法并行化的硬件基础,并行算法都是针对特定的并行体系结构开发的并行程序。根据DSP处理器的数目,A
[嵌入式]
基于导航接收机的DSP外设存储器行进测试技术
基于导航接收机的DSP外设存储器行进测试技术 DSP作为电子系统中数字运算的核心,所操作数据的正确性是系统正常运行的基本保证。以导航接收机中的DSP应用为例,捕获跟踪、信号解调、电文格式转换、多径抑制、抗干扰等实时任务每时每刻都在进行比特信息的交互。作为系统数据的中转站,存储器的任何物理故障都有可能导致系统出现严重的异常。因此,需要一种快速有效的存储器测试算法对DSP外设存储器进行实时功能验证和检测,确保器件没有物理故障 。本方法专门针对存储器中AF、SAF、SOF、TF、CF故障的检测,如图1中虚线框内所示。 在已有的故障检测算法中,Checkerboard算法的测试向量类似于国际象棋中黑白相间的棋盘格,使用0-1
[工业控制]
基于导航接收机的<font color='red'>DSP</font>外设存储器行进测试技术
采用2mm x 3mm DFN 封装的低VIN 同步降压型DC/DC 转换器提供高达250mA 的电流
2006 年 8 月 15 日 - 北京 - 凌特公司( Linear Technology Corporation )推出高效率、 2.25MHz 、同步降压型稳压器 LTC3549 ,该器件能用低至 1.6V 的输入电压提供高达 250mA 的连续输出电流。 LTC3549 采用恒定频率和电流模式架构,用 1.6V 至 5.5V 的输入电压工作,非常适用于单节锂离子或两节碱性 / 镍镉 / 镍氢电池应用。该器件可以产生低至 0.61V 的输出电压,因此能够为最新一代低压 DSP 和微控制器供电。其 2.25MHz
[新品]
Altera面向OpenCL的SDK 充分利用FPGA优势
    Altera公司6日宣布,提供FPGA业界的第一款用于OpenCL™ 的软件开发套件(SDK) (开放计算语言) 的软件开发套件,它结合了FPGA强大的并行体系结构以及OpenCL并行编程模型。利用这一SDK,熟悉C语言的系统开发人员和编程人员能够迅速方便的在高级语言环境中开发高性能、高功效、基于FPGA的应用。Altera面向OpenCL的SDK使得FPGA能够与主处理器协同工作,加速并行计算,而功耗远远小于硬件方案。Altera将在SuperComputing 2012 430号展位演示面向FPGA的OpenCL的性能和效能优势。     Altera公司产品和企业市场副总裁Vince Hu评论说:“业
[嵌入式]
利用FPGA进行高速可变周期脉冲发生器设计
   1 概括 要求改变脉冲周期和输出脉冲个数的脉冲输出电路模块在许多工业领域都有运用。采用数字器件设计周期和输出个数可调节的脉冲发生模块是方便可行的。为了使之具有高速、灵活的优点,本文采用atelra公司的可编程芯片FPGA设计了一款周期和输出个数可变的脉冲发生器。经过板级调试获得良好的运行效果。    2 总体设计思路   脉冲的周期由高电平持续时间与低电平持续时间共同构成,为了改变周期,采用两个计数器来分别控制高电平持续时间和低电平持续时间。计数器采用可并行加载初始值的n位减法计数器。设定:当要求的高电平时间以初始值加载到第一个减法器中后,减法器开始减计数,计数到零时自动停止,同时启动第二个记录低电平持续时间的
[嵌入式]
利用<font color='red'>FPGA</font>进行高速可变周期脉冲发生器设计
德州仪器首届大陆—台湾两岸大学生DSP 设计大奖赛总决赛落幕
台湾国立交通大学和北京理工大学分别摘取算法和系统类别冠军 2006 年 12 月 11 日,上海讯 日前,由德州仪器主办的大陆 - 台湾两岸大学生 TI DSP 设计总决赛在上海交通大学徐汇校园胜利落下帷幕,来自台湾国立交通大学和北京理工大学的两支代表队从 14支参赛队伍中脱颖而出,分别摘取算法实现组和系统类别组的冠军。这是两岸大学生在 DSP 教育、开发、创新和应用方面的第一次直接对话和交流。   作为 DSP 技术全球领先的半导体公司,德州仪器( TI ) DSP 大学生设计大赛,是 “ TI大学计划 ” 的经典项目,一直为广大电子工程领域高校的学生、教师和产业界的积极关注。此次竞赛分
[焦点新闻]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved