首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» H.264中二进制化编码器的FPGA实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
H.264中二进制化编码器的FPGA实现
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-5-26 21:58
|
只看该作者
H.264中二进制化编码器的FPGA实现
视频会议
,
二进制
,
编码器
,
数字电视
,
上下文
随着数字电视及视频会议的发展以及应用,H.264由于其更高的压缩比、更好的图像质量和良好的网络适应性而备受关注。基于上下文的自适应二进制算术编码(CABAC)则作为H.264编码器系统的最后一环,对整个编码性能影响较大。CABAC充分考虑视频流的相关性.能适应信号统计特性的变化,容易达到渐进性能,编码速度较高,但复杂度大,这造成单纯用软件编码难以达到很高的性能,特别是对于高清晰度视频(HDTV)不能实现实时编码,这就需要硬件加速或设计专门的硬件编码电路。目前,已有相应的硬件加速电路设计问世,但主要是对算术编码部分进行设计,整体性能仍不够理想。这里在对以往加速电路分析的基础上,把握CABAC整个编码原理,主要对其中的二进制化部分进行优化,对相应的二进制化方法进行归类优化,采用并行运算的方案,最终在FPGA上以较优的速度和资源实现硬件编码。
2 二进制化原理
CABAC实现方案包括3个过程:语法元素的二进制化、上下文建模、自适应算术编码,图1是CABAC编码器基本结构。
二进制化是CABAC编码的第1步,提高二进制化模块的编码速度有助于整个系统速度的提高。在二进制化过程中,一个给定的非二进制语法元素被唯一地映射到一个二进制序列(Bin String),其中的每一位称为Bin。 如果输入为给定的二进制语法元素,则此步就可以越过,随后的步骤由编码模式决定。在H.264标准中。语法元素较多,约有20多种,而二进制转换使这些语法元素的二进制表示接近最小冗余编码,以减少码流。 CABAC中二进制转换有4种基本类型:一元(U)编码、截断一元(TU)编码、指数哥伦布(EGK)编码和定长(FL)编码。另外,还可通过这几种编码方式的串联进行二进制化转换。
2.1 一元(U)二进制转换方案
对于一个无符号语法元素x≥0,CABAC中的一元码字是由x个“1”串连并在结尾处加上“0”,因此一元二进制化的长度是x+1,如表1所示,其中Binldx表示字符串的索引。一般来讲,U二进制转换主要用于参考帧队列预测语法元素的编码。
2.2 截断一元(TU)二进制转换方案
截断一元二进制化对语法元素的值有要求,只对不大于某个界限值(S)的语法元素进行二进制化。若语法元素值小于S,则其二进制化结果同一元二进制化;若语法元素值等于S,则其结果为S个“1”。一般,TU二进制转换主要用于帧内色度预测模式的编码。
2.3 指数哥伦布(EGK)二进制转换方案
EGK编码最初由Teuhola在上下文控制长度编码方案中提出,是由Golomb编码派生的。EGK编码由一个前缀和后缀码字串联构成,其前缀部分由一元码字l(x)=[log2(x/2k+1)]的值组成,其后缀部分由x+2k(1-2l(x))计算得出。一般,EGK二进制转换主要用于残差以外数据的编码,具体情形视编码器的设置而定。EGK二进制化随后取值的不同而不同,k的取值为非负整数。
2.4 固定长度(FL)二进制转换方案
固定长度二进制化适用于语法元素值x小于界限值S的情况。方法为直接用x值的二进制表示形式作为其二进制化结果,长度同定为:lFL=[log2S]的向上取值。一般,FL二进制转换被用于统一分配的语法元素,编码块的图形符号部分关系到亮度残差。
2.5 基本二进制转换的串联方案
由以上各种二进制方式可以再推导出3种基本的二进制转换方案。第1种是4位FL前缀与TU后缀(S=2)的串联,而第2和第3种方案来自TU和EGK二进制转换,称为UEGK。这些方案被用于运动矢量微分和变换系数取绝对值。另外语法元素mb_type和sub_mb_type二进制化使用遍历二叉树方法,对应的二叉树已在参考文献中给出。
3 二进制化编码方案优化
H.264标准中的二进制化编码流程是串行的,适合软件的实现,但由于待编语法元素较多,导致执行速度慢且效率低下。而硬件实现的最大优势在于其并行性,可大大提高执行效率。因此,为提高编码速度,在不改变算法实质的前提下,对标准中的编码流程进行相应优化,以利于硬件实现。主要提出以下优化措施: (1)将语法元素归类按照基本的编码方法及H.264对各语法元素的要求,可将20余种语法元素的二进制编码方法归为6类,包括U二进制化、UEGKO二进制化(k=0,uco-eff=14)、UEGK3二进制化(k=3,ucoeff=9)、宏块/子宏块类型二进制化、宏块量化偏移二进制化,定长与截断串联的二进制化。将语法元素归类,将有效减小编码过程中的繁杂和无序性,有利于编码正常完成。 (2)并行化设计语法元素的二进制化方法可归为8类,在设计中,采用控制单元辨别相应的语法元素,并送入二进制化模块进行编码。但依照H.264标准设计,二进制化单元的入口地址不仅取决于语法元素的值,还取决于语法元素的种类,这种数据依存关系无疑增加了运算量。且输出是串行,不利于流水线设计,这样就将降低系统的时钟频率。故采用一种并行设计方案,以语法元素值为输入,结果得到6个不同的输出,将它们锁存后,利用多路选择器以语法元素种类作为控制端选出所需的值。两种不同的实现方式见图2。
4 二进制化编码的FPGA实现
改进后的二进制化编码主要包括:控制单元、二进制化编码单元及选择输出单元,如图3所示。
电路主要分为5级流水线实现。在第1级流水线中,语法元素(SE)、时钟信号(clk)、上下文模型参量(a、b)等输入数据进入控制单元。控制单元采用比较器实现,通过比较给定数值与输入数值的范围确定语法元素的种类,通过种类信号(selector)输出选择所采取的二进制化方式。第2级流水线包含6个模块,分别代表6种二进制化方法。其中U编码、mb_type/sub_mb_type语法元素编码模块较易实现。因为输入语法元素的位宽为6位,数据量不大,分别按照其编码方法制成码表,且此码表所耗资源不多,在硬件实现时以RAM的方式实现,速度较快。对于UEGK0和UEGK3 编码模块的实现,则需采用U编码和EGK编码相结合的硬件方式完成,具体基本结构如图4所示。
图4中,首先由预处理器判断目前比特所进行的编码,在EGK编码中,主要采用首一检测及桶形移位技术实现,最后将两种编码相加输出。 对于UEGK0和UEGK3编码模块,只需选取不同阈值可实现。对于语法元素mb_qp_delta,采用有正负符号的EGK编码,正负号由语法元素值的奇偶性决定。对于语法元素coded_block_patterm,则采用FL与TU相结合的编码方式,因FL与TU编码的数据量均不大,故采用查表方式实现,这样可提高速度,其中FL编码的界限值为15,TU编码的界限值为2。 第3级流水线的主要功能是选择。第2级输出包括已编元素(binary_value)和上下文模型参量(ctxOffset0、ctxOff-set),在第3级中,通过选择信号(selector)对不同输出作以选择。第4级流水线为32位先进先出(FIFO)存储器。对结果进行缓存,有利于下一级处理。 第5级为串行化器,主要对二进制化的数据进行处理,使其按位输出,并将二进制化后的每一位加入其对应的上下文模型,以便后续处理。整个系统的输出即为二进制化后的每位数据(sda)及其偏移(ctxIdxl)。
5 电路仿真及性能分析
该算法经VC++仿真验证,可对H.264标准中的主要档次视频码流进行编码,其结果与H.264标准程序JM8.6相同。电路结构采用Verilog语言进行RTL级描述,并用mod-elsim6.0软件仿真,后仿真波形如图5所示。
由图5可看出,每个周期中,在使能信号有效的情况下,在时钟的上升沿,可产生1 bit数据sda及相应的偏移量ctx-Idx1,满足设计时序要求。电路在Spartan3 FPGA上综合、布局布线,使用Synplify丁具进行综合,最高时钟频率为100 MHz,影响时钟频率的关键路径为先进先出存储器模块。将综合好的edif电路网表文件输入到后端FPGA厂商Xilinx的Foundation软件进行布局布线,生成二进制流文件,逻辑单元为171,占总资源的4%。使用设计的电路对H.264标准中一些标准视频序列进行测试,序列质量为QP=28,并与H.264标准程序JM8.6中二进制化部分的编码时间比较,结果如表2所示。 综上,本文对H.264编码器二进制化部分的优化使其在速度上较软件实现有较大提升,资源占用率也较少。二进制化部分的硬件设计不仅能完成H.264标准中基本档次的编码,还有望应用于更大尺寸更高质量的实时视频压缩编码。
6 结论
在对H.264标准中二进制化部分研究和分析的基础上,提出其FPGA电路结构,采用并行结构及流水线方式设计电路。该结构经Spartan3 FPGA实现,其吞吐量为每周期1 bit,最大时钟频率为100 MHz,能够满足H.264中第3级及其以上档次实时视频编码的要求。来源:
国外电子元器件
作者:王琨,吴宗勇 福州大学
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议