0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

电子设计 来源:郭婷 作者:电子设计 2019-04-19 08:14 次阅读

H.264/AVC是ITU-T和ISO联合发布的国际视频压缩标准,比特压缩率分别是MPEG-4、H.263及MPEG-2的39%、49%及64%,是一种高压缩比的新标准。基于内容的自适应可变长编码(CAVLC)是H.264中关键技术之一,应用于H.264的基本档次和扩展档次对亮度和色度残差数据块进行编解码,编码效率高,抗误码和纠错能力强,但计算复杂度大,用软件编码难以满足高清视频实时性要求。H.264编码过程不涉及任何浮点数运算,特别适合硬件电路实现。文献提出的CAVLC编码可分成扫描和编码2部分,扫描部分对残差数据zig-zag逆序扫描后,提取出run-level标志以及相关信息提供给编码部分进行编码。文献对扫描模块进行了优化。编码模块中非零系数级(level)编码计算量最大,复杂度最高。本文充分利用FPGA高速实时特点,采用并行处理及流水线设计,通过优化CAVLC编码结构和level编码子模块,提高CAVLC编码器的性能。

1 CAVLC原理

CAVLC是一种依据4×4块变换系数的zig-zag扫描顺序进行的编码算法。块系数的非零系数幅值较小,主要集中在低频段,经过zig-zag扫描后,连续零的个数较多,采用run-level游程编码,通过编码5个语义元素能够实现高效无损压缩,编码流程如图1所示。zig-zag扫描后,顺序编码系数标记(coeff_token)。尾1的符号(trailing_ones_sign_flag)、除尾1外非零系数的级(level),最后一个非零系数前零的个数(total_zeros)和零的游程(run_before)。其中TC、T1、T0分别表示非零系数个数、尾1个数以及最后一个非零系数前零的个数。由于CAVLC编码流程是串行的,软件容易实现,但执行速度慢且效率低。

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

2 CAVLC编码器硬件结构设计

2.1 并行化编码结构

为了提高运算速度和效率,将图1的CAVLC编码流程并行化处理,适合FPGA实现。根据文献提出的思路,将CAVLC编码分成扫描和编码2部分,见图2。由zig-zag逆序扫描、统计、编码、码流整合4个模块组成。zig-zag模块和统计模块构成扫描部分,编码模块和码流整合模块构成编码部分,系统采用状态机控制。由于trailing_ones_sign_flag、level和run_before都是从zig-zag扫描后序列的尾部开始编码,所以本设计中zig-zag采用逆序扫描。统计模块用计数器统计zig-zag逆序扫描输出序列的TC、T1和T0,将尾1符号(T1_sign)、除尾1外的非零系数(coeffs)和零的游程(runbefore)存入缓存器并输出。编码模块分成6个子模块:NC生成模块、coeff_token模块、trailing_ones_sign_flag模块、level模块、total_zeros模块以及run_before模块。统计模块给各编码子模块提供输入数据,保证各编码子模块并行工作,减少了CAVLC编码的时钟周期,提高了编码器执行效率。由于CAVLC编码是变长的,使得每个编码子模块的输出码流长度不确定,各编码子模块的码字寄存器宽度不同。为了保证各编码子模块生成的码字能够紧凑无缝链接和有效存储,在各编码子模块的码字输出中嵌入输出标志信号和码长信息,当输出标志信号为高电平时码字与码长有效,低电平时则无效,经码流整合模块整合后输出。

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

2.2 level编码的优化实现

非零系数级编码是CAVLC编码中复杂度最高、计算量最大、编码延时最长的部分也是CAVLC编码器高速、高效运行的瓶颈之一。根据H.264中CAVLC的level解码步骤可设计出相应的编码流程,如图3所示。

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

(1)初始化suffixlength为0,如果TC>10,并且T1<3,则初始化为1。

(2)计算中间变量levelcode[ i]:

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

(5)写码字。

非零系数级的码字为“前缀码字+后缀码字”,前缀码字为prefix个0后紧跟一个1(即前缀码字为1,码长为prefix+1),后缀码字值为suffix,码长为levelsuffixsize。

依据图3编码流程,level编码所需的时钟周期与TC和T1之差有关,不同的数据块所需的时钟周期不同,而编码前需经过扫描和统计。当非零系数较多时,level编码采用传统的串行方式所需的时钟周期可能比统计模块所耗要多,导致不稳定的吞吐量。另一方面,获得level的码字需知道该系数的prefix、suffix以及levelsuffixsize,而levelsuffixsize的大小是自适应变化的,与上一个已编码系数的绝对值大小有关,这给并行处理带来了一定困难。为此,采用并行处理和两级流水线相结合的结构并行处理2个非零系数,如图4所示。第一级初始化suffixlength,求coeffs的绝对值及中间变量levelcode;第二级更新suffixlength,计算prefix,suffix和levelsuffixlength。模块coeffs SIPO buffer实现串行输入并行输出,输入输出关系如图5所示。

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

3 实验验证分析

Level编码电路结构采用Verilog HDL语言描述,在ModelSim SE 6.0上进行仿真,使用Synplicity公司的Synplify Pro完成综合过程。最后采用Xilinx公司VirtexⅡ系列的xc2v250 FPGA进行实现和验证。

图6给出了ModelSim的仿真波形,其结果与JVT校验软件模型JM16.2的值一致。从图6可以看出,并行编码TC-T1个level值比串行方式节省(TC-T1)/2个时钟周期,当非零系数较多时,也能获得稳定的吞吐量。表1给出了Synplify Pro综合的硬件资源报告。系统允许的最高时钟频率为158.1 MHz,硬件资源消耗如表1所示。综上所述,本设计满足H.264实时高清视频编码的要求。

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能

基于FPGA技术实现H.264/AVC中CAVLC编码器设计并优化性能


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21748

    浏览量

    603797
  • 编码器
    +关注

    关注

    45

    文章

    3645

    浏览量

    134630
  • 仿真
    +关注

    关注

    50

    文章

    4091

    浏览量

    133663
收藏 人收藏

    评论

    相关推荐

    FPGA实现H 264 AVC视频编码标准

    质量常常大受影响。而在 FPGA 结构,硬件资源则可得到完全分配(三步和完全搜索运动估计对比)。使用 FPGA 实现功能模块图 1 为定义了主功能块和数据流的整个
    发表于 06-25 11:33

    如何利用FPGA技术实现H.264/AVCCAVLC编码器设计优化性能

    本文充分利用FPGA高速实时特点,采用并行处理及流水线设计,通过优化CAVLC编码结构和level编码子模块,提高
    发表于 04-28 06:34

    H.264/AVC是什么? H.264/AVC有哪些核心技术

    H.264/AVC是什么?H.264/AVC有哪些核心技术
    发表于 06-02 07:15

    如何去实现优化一种H.264视频编码器

    什么是H.264视频编码技术?如何去实现优化一种H.264
    发表于 06-03 07:00

    H.264视频编码在DM642上的实现优化

    设计实现了基于DSP 芯片TMS320DM642 的H.264 编码器。详细介绍了H.264 算法在DSP上的移植和
    发表于 09-03 14:30 23次下载

    基于TMS320DM642平台的H.264编码器优化

    H.264 实时编码器的研究和实现是目前视频通信研究领域的一个热点问题,本文介绍了基于TMS320DM642 平台的H.264 编码器
    发表于 12-18 12:13 19次下载

    基于ADSP-BF561的H.264视频编码器实现

    基于ADSP-BF561的H.264视频编码器实现 H.264AVC是ITU-T VCEG和ISO/IECMPEG联合制定的
    发表于 12-26 14:43 774次阅读

    H.264二进制化编码器FPGA实现

    H.264二进制化编码器FPGA实现 1 引言    随着数字电视及视频会议的发展以及应用,
    发表于 11-04 10:27 1659次阅读
    <b class='flag-5'>H.264</b><b class='flag-5'>中</b>二进制化<b class='flag-5'>编码器</b>的<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>

    基于TMS320DM6446的H.264编码器实现优化

    基于TMS320DM6446的H.264编码器实现优化 1 引言   H.264是ITU-T的视频
    发表于 02-10 09:20 1451次阅读
    基于TMS320DM6446的<b class='flag-5'>H.264</b><b class='flag-5'>编码器</b><b class='flag-5'>实现</b>与<b class='flag-5'>优化</b>

    H.264视频编码器在DSP上的实现优化

    摘要:在DM642 EVM平台上实现H.264视频编码器,并从内存分配、Cache优化、代码优化以及汇编程序级
    发表于 01-10 14:12 3379次阅读
    <b class='flag-5'>H.264</b>视频<b class='flag-5'>编码器</b>在DSP上的<b class='flag-5'>实现</b>与<b class='flag-5'>优化</b>

    针对DSP、ASIC与FPGA三种产品平台的H.264编码器方案

    目前的视频监控行业,基于DSP的H.264编码器解决方案占有绝对优势的市场份额,这是由DSP方案开发周期相对较短的特性决定的。在ASIC或FPGA方案仍处于研发阶段时,DSP方案已捷足先登,
    的头像 发表于 10-29 08:21 1.3w次阅读

    什么是AVC编码? 简述H.264概念和发展

    关键词:AVC , 编码 频编解码技术有两套标准,国际电联(ITU-T)的标准H.261、H.263、H
    发表于 12-25 14:22 2187次阅读

    基于DE2开发板和NiosII处理实现H.264编码器的设计

    根据H.264AVC编码器原理及结构,同时考虑到现有硬件资源的限制以及该设计的应用需求,设计了图1所示的H.264AVC
    的头像 发表于 03-16 14:12 2487次阅读
    基于DE2开发板和NiosII处理<b class='flag-5'>器</b><b class='flag-5'>实现</b><b class='flag-5'>H.264</b><b class='flag-5'>编码器</b>的设计

    H.264标准CABAC算法和CAVLC算法的比较与研究

    H.264标准CABAC算法和CAVLC算法的比较与研究(通信电源技术期刊2020)-H.264标准
    发表于 09-15 11:58 2次下载
    <b class='flag-5'>H.264</b>标准<b class='flag-5'>中</b>CABAC算法和<b class='flag-5'>CAVLC</b>算法的比较与研究

    H.264编码原理

    )提出的高度压缩 数字视频编解码标准。这个标准通常被称之为 H.264/AVC(或者 AVC/H.264或者
    发表于 08-31 15:39 2次下载