首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

H.264中二进制化编码器的FPGA实现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级及其以上档次实时视频编码的要求。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表