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

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

3天内不再提示

基于AVS 3D实时解码器在 FPGA/SoC平台上的设计与实现

电子工程师 来源:电子技术应用第5期 作者:任鹏飞,于鸿洋 2021-04-07 11:33 次阅读

0 引言

AVS[1](audio video coding standard)是《信息技术 先进音视频编码》系列标准的简称,是我国具有自主知识产权的第二代信息编解码标准。2008年底,AVS标准工作组开始起草双目立体编解码方案[2]。该方案采用双目拼接算法,所用视频序列由基线相互平行的两摄像机采集,将左、右视点信息合成为一个码流进行传输;而在解码端恢复出左、右两路图像数据。

但目前,尚没有针对AVS 3D标准的FPGA/SoC软硬协同平台实现。本文以Xilinx公司的ZYNQ 7020开发板为平台,它是内部具有两个M9处理(Processing System,PS)硬核核心的片上系统芯片,该平台具有芯片集成度高、控制能力强、软件通用性好的优点。本文采用一个主PS作为顶层控制,完成3D ES流的外部接口通信和解码图像显示控制;另一个从PS以及部分硬件加速模块(包括ES流的语法解析、算术码解码、变长码解码等硬件加速模块)共同完成AVS双目拼接解码算法。两个PS协同工作,在FPGA/SoC平台上实现了AVS 3D实时解码器。

1 AVS 3D解码器的算法流程

AVS 3D解码器采用双目拼接算法。AVS 3D ES流同时含有左、右视点的两路信息。3D解码器的算法设计流程图如图1所示。读入3D ES流,以帧为单位解码,其解码原理与AVS单路解码器相似。

6356824742086779696143793.gif

视点分离得到的左、右视点基本层图像存在水平维度的分辨率减半。由于基本层图像和增强层图像存在很强的空间相关性,故对基本层图像进行水平维度的上采样插值滤波,预测得到分辨率提升的增强层图像。为保证增强层图像质量,需要对上采样滤波器核向量进行设置[3],其原理如式(1)所示:

6356824745950979699702128.gif

视点分离得到的基本层图像分辨率为M/2×N,需要在水平维度上进行上采样插值滤波。在具有水平关系的两个基本层像素点xi,j和xi,j+1之间插入半像素点vi。通过水平插值,从分辨率为M/2×N的基本层图像预测得到分辨率为M×N的增强层图像。

2 语法元素解析的CABAC和CAVLC硬件加速模块的设计

本文通过硬件加速模块实现拼接码流的语法解析工作,AVS标准中的熵解码主要采用CABAC[4]和CALVC[5]两种方式实现。语法元素解析模块的硬件加速模块设计框图如图2所示。

6356824750535479696806200.gif

码流输入管理模块的主要任务是读入ES原始码流。其中indata[7:0]存储原始ES流的8 bit数据;avail_n检测输入数据的可得字节数;strobe表示输入码流有效性;当读入的数据解析完成后,req通知ES流继续读入。

语法元素输出模块主要控制熵解码后语法元素的数据输出。其中n_bits表示请求读取语法数据的bit数;req为请求读取语法信息;req_type为当前语法元素所需采用的熵解码方式,根据req_type的不同,对当前元素采用CABAC或CAVLC解析算法;outdata[31:0]为熵解码后的数据;del_ready指示当前语法解析模块是否准备好接受外部请求;strobe为当前请求输出语法信息有效性。

核心语法解析单元运行CABAC或CAVLC的解析算法,涉及模型索引号产生、模型自适应更新、反二进制化等过程。在AVS标准中,CABAC主要用于解析宏块类型、亮度色度预测模式、变换系数等数据;CAVLC主要用于解析亮度和色度残差数据。

AVS的码流数据结构及层次关系从高到低依次为:序列、图像、条带、宏块和块,在解码过程中,需要从高到低依次解析出每一层次中的语法元素数据。将硬件加速模块解析得到的数据赋值给相应的语法元素变量,利用得到的语法元素变量在,恢复出左、右视点的重建图像。

3 AVS 3D实时解码器在SoC片上系统的设计与实现

本文采用Xilinx公司ZYNQ 7020开发板,ZYNQ 7020采用双核设计,拥有两片Cortex-M9芯片,一片用作主处理系统,一片用作核心AVS算法解码,两片M9可以共享内存和外围设备。针对AVS 3D解码器,本文采用Master-Slave主从控制设计模式。采用MASTER M9作为顶层控制,完成ES 3D码流的外部接口通信、解码图像显示控制等功能;SLAVE M9及语法解析硬件加速模块共同完成AVS 3D核心解码算法; MASTER M9和 SLAVE M9协同工作,最终实现AVS 3D实时解码器SoC片上系统设计[6]。

3.1 AVS 3D解码器在ZYNQ 7020的启动过程

在启动AVS双目解码器的SoC片上系统时,首先在ZYNQ 7020上进行时钟配置,之后在MASTER M9上执行BootROM启动代码。BootROM是整个SoC系统上最先运行的程序,当SLAVE M9等待解码启动指令时,BootROM已经在MASTER M9上运行。BootROM的主要功能是配置整个双目解码器的SoC系统的串口信息,并将第一阶启动程序(First Stage Boot Loader,FSBL)从启动设备复制到MASTER M9的片上内存。

由FSBL初始化SLAVE M9的Xilinx硬件配置信息,并通过读入BootHeader头文件通知MASTER M9是否启动运行。在FBSL运行的过程中,BootROM会先将SLAVE M9设置为事件等待模式,MASTER M9启动后,由MASTER M9通知SLAVE M9是否启动AVS双目立体解码程序。整个启动流程如图3所示。

6356824757716979694957024.gif

3.2 AVS 3D解码器在ZYNQ 7020的设计原理

AVS双目立体解码器在SoC片上系统的整体方案设计如图4所示。在各个模块的交互过程中,通过AXI LITE传送信息量较小的数据;通过AXI VDMA传递解码图像数据等信息量较大的数据;通过AXI CON传送交互频繁的数据。

6356824759925979698333738.gif

MASTER M9是整个AVS 3D解码器在SoC片上系统的顶层控制单元。其功能主要包括:

(1)从以太层获取用于网络传输的3D TS码流;

(2)与TS码流语法解析模块进行信息交互,通知SLAVE M9启动解码过程。SLAVE M9根据码流中解析标志位的不同,调用硬件加速模块采用CALVC或是CABAC的熵解码方式对码流中的语法元素进行解析,并与状态信息模块交互,将熵解码方式标志位、缓存大小、解析完成标志位等信息返回给MASTER M9;

(3)管理解码图像数据及参考帧的位置指针,并将相应数据送往DDR MEMORY不同存储位置。

SLAVE M9运行AVS 3D解码器的核心算法。解码算法包括AVS双目拼接算法和AVS单路解码算法两部分。AVS双目拼接算法如第1节所述。单路解码器算法主要包括:起始码检测、序列及图像头读取、熵解码、宏块数据获取、反变换、反量化、帧内及帧间预测、1/4像素运动向量插值、图像残差恢复、环路滤波等模块。将实现AVS 3D解码功能的C语言代码写至相应的软件开发平台,由硬件加速模块将语法元素解析模块得到的语法元素数值输入各个层级的解码函数,从而通过SLAVE M9上实现AVS 3D解码算法。最终将解码得到的拼接图像序列和左、右视点图像序列写入DDR MEMORY的不同地址空间。

解码图像信息交换模块是MASTER M9和SLAVE M9在解码过程中图像信息交互的中介。在SLAVE M9解码过程中会产生3种图像指针类型:

(1)参考帧指针(针对I、P帧图像),该指针指向的图像作为帧间预测的参考值,并不会立即显示;

(2)显示帧指针(针对B帧图像),该指针指向的图像在解码后直接放入显示序列中;

(3)写入位置指针,SLAVE M9解码一帧图像后,将解码数据写入在该指针指向的DDR MEMORY地址中。通过该模块,SLAVE M9将图像指针的状态和数值传送给MASTER M9,MASTER M9又与DDR MEMORY交互,保证正确的图像解码顺序和显示顺序。

在DDR MEMORY中采用乒乓存储设计,设置两块数据缓存区,每块数据缓存区为拼接图像、左视点图像、右视点图像各分配5帧内存空间。当缓存区1向HDMI接口传输数据时,缓存区2从SLAVE M9接收数据;当缓存区1从SLAVE M9接收数据时,缓存区2向HDMI接口传输数据;如此循环工作,通过两块缓存区的交替工作,提高DDR MEMORY的工作效率。其中每块缓存区中的数据读写位置均由MASTER M9管理,保证DDR MEMORY以正确的显示顺序将图像内容送往HDMI接口。

4 实验结果及分析

本文中,AVS 3D解码器的SoC片上系统设计在Xilinx ZYNQ 7020开发板上实现。通过在AVS单路软件解码器RM52k上增加视点分离模块、层间上采样滤波模块实现AVS 3D解码算法,将代码改写至Xilinx SDK 2014.2嵌入式软件平台,并加载FreeRTOS操作系统用于内存分配和外围设备初始化。AVS双目立体解码参数配置如表1所示。

6356824765332379694164382.gif

将AVS 3D ES流打包成为用于网络传输的TS流,根据Xilinx的LWIP准则进行TCP连接,经IP QAM调制器最终从以太层将码流输入ZYNQ 7020的MASTER M9模块。通过硬件加速模块实现语法元素解析,结合SoC片上系统进行AVS双目立体解码算法处理,最终通过HDMI接口将视频数据输出到三维电视,在三维电视上可以得到左、右视点信息的拼接视频,通过视点分离和层间上采样插值,恢复出左、右视点的增强层图像。经视点交织处理后,得到最终的3D视频,可以观察到解码得到的3D视频具有明显的深度信息,AVS 3D解码器的效果如图5所示。这说明了AVS 3D实时解码器在FPGA/SoC平台的有效性。

5 结束语

本文通过在AVS原有单路解码器的基础上进行功能的扩充,实现了基于AVS标准的3D解码器的设计。结合语法元素解析的硬件加速模块,在Xilinx ZYNQ 7020开发板上创新性地实现了AVS 3D实时解码器的FPGA/SoC协同平台实现。将解码后的视频输入三维显示设备,通过视点交织观察到3D视频的视点差异和深度信息,验证了该AVS 3D实时解码器在FPGA/SoC平台设计的有效性。

参考文献

[1] 侯金亭,马思伟,高文.AVS标准综述[J]。计算机工程,2009,35(8):247-249,252.

[2] 马茜,李栋,汪启扉,等.AVS立体视频编码标准[J]。上海大学学报(自然科学版),2013,19(3):225-228.

[3] 王樟,柳健,严国萍。简单高效地用于SVC标准中的层间上采样滤波方案[J]。通信学报,2008,29(4):8-12.

[4] MARPE D,SCHWARZ H,WIEGAND T.Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2003,13(7):620-636.

[5] ALLE M,BISWAS J,NANDY S K.High performance VLSI architecture design for H.264 CAVLC decoder[C].ASAP 2006:11-13.

[6] 郭炜,郭筝,谢憬,等.SOC设计方法与实现[M]。北京:电子工业出版社,2007.

编辑:jq

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

    关注

    1602

    文章

    21301

    浏览量

    593092
  • 解码器
    +关注

    关注

    9

    文章

    1073

    浏览量

    40146
  • AVS
    AVS
    +关注

    关注

    0

    文章

    51

    浏览量

    23003
  • CABAC
    +关注

    关注

    0

    文章

    4

    浏览量

    2537
收藏 人收藏

    评论

    相关推荐

    包含具有多种类型信息的3D模型

    三维视图。事实上,AE可以3D BIM模型元素与时间因素联系起来后创建4D模型,从而更广泛地进行产品的可视化预览,更精确地分析建筑项目的实施进度。 以下五个BIM软件平台是目前最受
    发表于 03-28 17:18

    多电机仿真篇丨双电机实时仿真测试应用

    国内虚拟研究平台多基于单电机设计,而实际工业中多电机配合工作更为常见,如机器人、3D打印机等。多电机同步控制工业自动化生产系统中广泛存在,但目前基于FPGA纳秒级
    发表于 03-19 16:13

    友思特C系列3D相机:实时3D点云图像

    3D相机
    虹科光电
    发布于 :2024年01月10日 17:39:25

    酷派手机拥抱鸿蒙,成功展讯T606平台上接入OpenHarmony

    最新消息,酷派技术团队宣布已成功实现将 OpenHarmony 系统接入到展讯平台上,相信这是一个重要的里程碑,标志着推动 OpenHarmony 的发展环节取得了重要进展。
    发表于 11-21 13:51

    DTMF解码器原理是什么?

    DTMF 解码器原理
    发表于 10-27 08:29

    密勒调制副载波编解码器FPGA实现

    电子发烧友网站提供《密勒调制副载波编解码器FPGA实现.pdf》资料免费下载
    发表于 10-26 11:10 0次下载
    密勒调制副载波编<b class='flag-5'>解码器</b>的<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>

    解码器卡住的原因?如何解决?

    解码器卡住
    发表于 09-19 08:27

    AMBA解码器产品手册

    以作为一个简单的保护单元,防止试图访问存储映射的非法或受保护区域。 提供了该解码器的两种实现: ·带译码周期的译码。 这是默认型号。 此实现会自动插入一个
    发表于 08-22 06:26

    光学3D表面轮廓仪可以测金属吗?

    并自动聚焦测量工件获取2D3D表面粗糙度、轮廓等一百余项参数,广泛应用于光学,半导体,材料,精密机械等等领域。 总之,光学3D表面轮廓仪金属测量方面应用广泛,可以
    发表于 08-21 13:41

    实时3D艺术最佳实践-灯光指南

    的照明技术下看起来更糟。 Unity游戏引擎使灯光工作简单易懂。的手机游戏的表现受到你的照明决定的影响,所以需要使用照明高效。 本指南也可在统一学习课程的格式-手臂和统一呈现:3D艺术 移动应用程序
    发表于 08-02 08:34

    实时3D艺术最佳实践-纹理技术解读

    纹理贴图获取2D曲面图像并将其映射到3D多边形上。 本指南涵盖了几种纹理优化,可以帮助您的游戏运行得更流畅、看起来更好。 本指南的最后,您可以检查您的知识。您将了解有关主题,包括纹理图谱
    发表于 08-02 06:12

    imx8mp - wm8962编解码器音频的问题求解

    我的音频编解码器 - WM8962 有问题。 我自己的平台上工作,以 imx8mp-devkit 为模型。 图表: 将设备添加到设备树: reg_audio_pwr: 调节
    发表于 06-09 07:50

    哪些i.MX 8 SOC支持/不支持FTM正交解码器

    8 SOC 支持/不支持 FTM 正交解码器的摘要/表格? 如果 FTM quaddec 不可能,那么支持连接到 imx8qxp 的旋转拨盘或滚轮的下一个最佳方法是什么?作为设备键盘/人机界面一部分的旋转控件。
    发表于 05-22 07:29

    如何将多个AK5554编解码器与i.MX8MN SAI线集成?

    我目前正在从事一个项目,涉及 i.MX8MN 平台上将两个 AK5554 编解码器与同一条 SA5I 线路集成。我的目标是以这样一种方式配置系统,使其有效地充当八个音频通道,所有通道都连接到正确
    发表于 05-18 06:15

    什么叫解码器

    解码器就是在供电侧的一个电阻元件或电容元件,在安定器的12V侧,串在回路中就行了,目的是防止行车电脑报警,不同的车有不同的解码器,主要是应对车灯功率不足及对行车电脑干扰所加的。解码器就是个小方盒,一般材质为塑料的,有插头,一插就
    的头像 发表于 05-06 11:08 3418次阅读