一种基于Vivado HLS实现的CABAC流水线编码方法技术

技术编号:15654443 阅读:201 留言:0更新日期:2017-06-17 11:03
本发明专利技术公开了一种基于Vivado HLS实现的CABAC流水线编码方法,其步骤如下:(1)、初始化算术编码变量与上下文模型;(2)、常规编码阶段划分,常规编码阶段划分为6步:上下文模型的读取、编码区间的划分、上下文模型的更新、正规化过程、字节码流的生成、码流输出;(3)、编码阶段按流水线布置;(4)、在Vivado HLS上实现设计;(5)、为编码过程添加指令;(6)、编写测试用例;(7)、高级综合;(8)、C与RTL级联合仿真;本发明专利技术基于FPGA平台设计开发了H.264标准熵编码的关键环节CABAC模块,可以根据不同的需要灵活修改配置,调整资源,以适应各种情况下的视频压缩熵编码需求。

【技术实现步骤摘要】
一种基于VivadoHLS实现的CABAC流水线编码方法
本专利技术涉及的是图像处理
,具体的说是一种基于VivadoHLS实现的CABAC流水线编码方法。
技术介绍
以X264、openh_264为代表的软件版H.264标准编码器已经非常成熟,而实时的硬件视频压缩实现上技术还不够成熟,目前,以海思为代表的H.264视频压缩专用芯片已经走向市场,而这些芯片存在的问题的是应用定制性过强,应用不够灵活,实时压缩环节往往是作为图像处理系统的一个子模块,这些处理芯片要么是不好与整个系统兼容,专用芯片需要单独设计电路与其它系统互联,要么是成本过高,一个小型的图像处理系统整体造价都没有一个芯片的成本高,往往会更好。
技术实现思路
本专利技术的目的在于针对现有技术的缺陷和不足,提供了一种基于VivadoHLS实现的CABAC流水线编码方法,基于FPGA平台设计开发了H.264标准熵编码的关键环节CABAC模块,可以根据不同的需要灵活修改配置,调整资源,以适应各种情况下的视频压缩熵编码需求。为实现上述目的,本专利技术采用的技术方案是:一种基于VivadoHLS实现的CABAC流水线编码方法,其步骤如下:1、初始化算术编码变量与上下文模型;2、常规编码阶段划分,常规编码阶段划分为6步:上下文模型的读取、编码区间的划分、上下文模型的更新、正规化过程、字节码流的生成、码流输出;3、编码阶段按流水线布置;4、在VivadoHLS上实现设计;5、为编码过程添加指令;6、编写测试用例;7、高级综合;8、C与RTL级联合仿真。进一步,所述上下文模型的读取步骤是:根据上下文模型的索引值从数组pState[460]中读取上下文模型,它的概率状态为pStateIdx,最大概率符号为valMPS,最小概率符号为1-valMPS。进一步,所述区间划分的步骤是:取上次编码结果codIRange的前3位,与pStateIdx一起构成的坐标,查表得到当发生LPS时,编码区间宽度值codIRangeLPS,默认输入的binVal等于valMPS,并执行发生MPS时的操作:令codIRange减去codIRangeLPS,然后再判断输入的binVal是否等于上下文模型中的MPS,如果等于,则区间划分结束,如果不等于,则执行发生LPS时的操作:令上次编码的结果codILow叠加当前的codIRange,再给codIRange赋以新值codIRangeLPS。进一步,所述上下文模型的更新步骤是:CABAC事先设计好了概率状态转移表,以当前的概率状态为坐标,查表即可得到新的概率状态,将新的概率状态赋给对应的上下文模型。进一步,所述正规化过程的步骤是:判断区间划分结果是否在预先设置的合理区间范围内,如果在,则不执行任何操作,如果不在,则计算需要扩大的倍数,这里扩大的倍数都是2的幂次,所以只用对codIRange和codILow进行左移操作即可,左移的位数累加到变量firstbitflag中。进一步,所述字节码流的生成步骤是:判断firstbitflag是否大于等于8,如果是,则截取codILow的高8位(有时可能是高9或10位)作为码字,并且firstbitflag减8(或者9,10),继续累加下次正规化过程的移位数,如果不是,则跳过接下来的码流输出环节。进一步,所述码流输出的步骤是:判断上一步生成的码字是否等于255,如果是,则bitOutstanding累加1,如果不是,则bitOutstanding赋值为0,由于算术编码过程中,当前生成的码流可能超过8位,需要向上一个生成的8位字节码流进位,所以在输出码字的过程中,我们单独设置一个缓冲字节,存放当前生成的码字,使其在码流输出阶段不必输出,等待下一次生成新的码字,叠加新码字的进位再输出,然后输出bitOutstanding个溢出码流再叠加进位之后的码字,最后新的码字将再次放入这个缓冲字节中。本专利技术的有益效果为:1、CABAC编码速度快,可以实现2个时钟周期处理一个二进值bin。2、节省资源,FPGA芯片的平均LUT使用情况为7000左右。3、开发周期时间短,算法效果在FPGA上运行的效果很快就能得到,无需编写专门的RTL级硬件描述语言。4、应用灵活,容易移植,不用过多考虑与其他模块兼容特性。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术的常规编码流程图;图2是本专利技术的六阶流水线阶段布置示意图;具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施方式,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施方式仅用以解释本专利技术,并不用于限定本专利技术。一种基于VivadoHLS实现的CABAC流水线编码方法,其步骤如下:1、初始化算术编码变量与上下文模型。判断输入的CABAC初始化信号是否有效,有效则执行初始化命令,具体操作为,设置编码区间下界为0,编码区间宽度为510,设置编码区间的合理范围为[28,29),码流生成有效位数为-1,码流溢出情况统计为0,输出码流字节数为0,根据输入的量化值为460个上下文模型分配初始的概率状态,并存放在一个数组中pState[460];2、常规编码阶段划分。常规编码阶段划分。CABAC的编码处理过程分为两条路径:常规编码和旁路编码,通常所说的编码提速主要针对的是常规编码,编码过程如图1所示,我们将常规编码阶段划分为6步:上下文模型的读取(contextfetch,CF),编码区间的划分(intervaldivision,ID),上下文模型的更新(contextupdate,CU),正规化过程(renormalization,RN),字节码流的生成(bytegeneration,BG),码流输出(byteoutput,BP)。各个编码步骤具体实施如下:(1)、上下文模型的读取。根据上下文模型的索引值从数组pState[460]中读取上下文模型,它的概率状态为pStateIdx,最大概率符号为valMPS,最小概率符号为1-valMPS;(2)、区间划分。取上次编码结果codIRange的前3位,与pStateIdx一起构成的坐标,查表得到当发生LPS时,编码区间宽度值codIRangeLPS,默认输入的binVal等于valMPS,并执行发生MPS时的操作:令codIRange减去codIRangeLPS,然后再判断输入的binVal是否等于上下文模型中的MPS,如果等于,则区间划分结束,如果不等于,则执行发生LPS时的操作:令上次编码的结果codILow叠加当前的codIRange,再给codIRange赋以新值codIRangeLPS;(3)、上下文模型的更新。CABAC事先设计好了概率状态转移表,以当前的概率状态为坐标,查表即可得到新的概率状态,将新的概率状态赋给对应的上下文模型;(4)、正规化过程。判断区间划分结果是否在预先设置的合理区间范围内,如果在,则不执行任何操作,如果不在,则计算需要扩大的倍数,这里扩本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/62/201710070543.html" title="一种基于Vivado HLS实现的CABAC流水线编码方法原文来自X技术">基于Vivado HLS实现的CABAC流水线编码方法</a>

【技术保护点】
一种基于Vivado HLS实现的CABAC流水线编码方法,其特征在于:其步骤如下:(1)、初始化算术编码变量与上下文模型;(2)、常规编码阶段划分,常规编码阶段划分为6步:上下文模型的读取、编码区间的划分、上下文模型的更新、正规化过程、字节码流的生成、码流输出;(3)、编码阶段按流水线布置;(4)、在Vivado HLS上实现设计;(5)、为编码过程添加指令;(6)、编写测试用例;(7)、高级综合;(8)、C与RTL级联合仿真。

【技术特征摘要】
1.一种基于VivadoHLS实现的CABAC流水线编码方法,其特征在于:其步骤如下:(1)、初始化算术编码变量与上下文模型;(2)、常规编码阶段划分,常规编码阶段划分为6步:上下文模型的读取、编码区间的划分、上下文模型的更新、正规化过程、字节码流的生成、码流输出;(3)、编码阶段按流水线布置;(4)、在VivadoHLS上实现设计;(5)、为编码过程添加指令;(6)、编写测试用例;(7)、高级综合;(8)、C与RTL级联合仿真。2.根据权利要求1所述的一种基于VivadoHLS实现的CABAC流水线编码方法,其特征在于:所述上下文模型的读取步骤是:根据上下文模型的索引值从数组pState[460]中读取上下文模型,它的概率状态为pStateIdx,最大概率符号为valMPS,最小概率符号为1-valMPS。3.根据权利要求1所述的一种基于VivadoHLS实现的CABAC流水线编码方法,其特征在于:所述区间划分的步骤是:取上次编码结果codIRange的前3位,与pStateIdx一起构成的坐标,查表得到当发生LPS时,编码区间宽度值codIRangeLPS,默认输入的binVal等于valMPS,并执行发生MPS时的操作:令codIRange减去codIRangeLPS,然后再判断输入的binVal是否等于上下文模型中的MPS,如果等于,则区间划分结束,如果不等于,则执行发生LPS时的操作:令上次编码的结果codILow叠加当前的codIRange,再给codIRange赋以新值codIRangeLPS。4.根据权利要求1所述的一种基于VivadoHLS实现的CABAC流水线编码方法,其特征在于:所述上下文模型...

【专利技术属性】
技术研发人员:赵亦工孙睿
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1