新闻中心

EEPW首页>消费电子>设计应用> Motion JPEG视频压缩IP核的设计与实现

Motion JPEG视频压缩IP核的设计与实现

作者:东北大学 李大舟 吴建华 时间:2008-06-25 来源:电子技术应用 收藏

2.4熵编码模块

本文引用地址://m.amcfsurvey.com/article/84771.htm

  熵编码与前面介绍的量化都是数据压缩的手段,但二者有所不同,熵编码利用信号的统计特征来降低位率,理论上不会丢失信息,量化会丢失信息。实现熵编码有多种方式,本文根据ISO/IEC10918协议,使用了游程编码和霍夫曼编码两种方式。游程编码的原理是把沿一定方向排列的等大小量化值的离散余弦变换系数作为连续的整体,用特定码字替代这种连续的整体就会达到数据量减少的效果。霍夫曼编码是一种变长编码,将多次出现的代码用较短的码字代表,很少出现的代码用较长的码字代表。产生哈夫曼编码要求扫描两遍原始数据,第一遍扫描是为了在原始数据中精确地统计每个值出现的频率,第二遍利用构造的哈夫曼树得到编码,两次扫描耗时巨大,因此数据压缩难以满足实时性要求。ISO/IEC10918协议中在对大量8位精度图像的平均统计基础上,给出了4个合适大多数应用的个哈夫曼码表。在实现硬件电路时把哈夫曼码表存储在片上ROM中,使用时直接查找。因为离散余弦变换中直流系数和交流系数分别使用不同的码表,且直流系数不需要进行游程编码,所以直流系数和交流系数使用不同的模块来处理。

2.4.1直流系数处理模块

  直流系数是8×8矩阵内64个像素均值的度量,是包含了整个图像能量的重要部分。利用相邻的8×8矩阵的直流系数具有很强的相关性,对直流系数使用差分压缩编码。前一个8×8矩阵的直流系数作为当前矩阵的直流系数的预测值,求出现实值和预测值之间的差值后,再对差值做霍夫曼编码。在硬件实现时,直流系数只有一个值,所以不需要做游程编码,对其处理的第一步就是求得其与预测值之间的差值。根据差值的大小和正负查找存储在片上ROM的标准霍夫曼码表,得出前缀代码和前缀代码长度,同时根据ISO/IEC10918协议中提出的尾码产生方式得到对应的尾码代码及尾码代码长度。上述处理完成之后再经过合并前缀代码与尾码代码为霍夫曼代码,则直流系数的熵编码完成,之后等待被变长编码模块封装。具体的实现电路由4阶流水线组成,直流系数的熵编码处理过程耗时4个时钟周期。

2.4.2交流系数处理模块

  交流系数首先要现经过游程编码处理。在游程编码中非零交流系数前的零交流系数的个数是游程长度,前缀代码及尾码代码的含义与直流系数中的一致,只不过在交流系数处理中游程长度和前缀代码重新组合为一个新的查找索引来查找新的前缀代码。ISO/IEC10918协议中给出的交流系数标准霍夫曼码表里有两个特殊的代码。一个特殊代码ZRL,ZRL代表游程编码中游程长度大于16,如果游程长度大于32,48,56,分别用1个ZRL,2个ZRL,3个ZRL表示,盈余的游程长度加入下一个游程长度计算中。ZRL代码只有前缀代码,没有尾码代码。为了方便实现,直接把ZRL的尾码代码长度设为零,起到屏蔽尾码的作用。另一个特殊代码EOB,EOB代表最后一个零行程中只有零元素直接代表当前矩阵的游程编码已经扫描结束,若当前矩阵的最后一个交流系数是非零数的则以正常结束一个游程长度的计数作为当前矩阵游程编码的结束。同ZRL类似,EOB也没有尾码代码,所以使用同样的处理手段。具体的实现电路由4阶流水线组成,交流系数的熵编码处理耗时4个时钟周期。

2.4.3交织模块和冗余ZRL消除模块

  交织模块的作用是把前缀代码和尾码代码合并为一个霍夫曼代码,合并后的代码易于进行下一阶段的变长编码操作,变长编码操作过程需要的移位位数由前缀代码长度加上尾码代码长度做和得到,这个求和过程也在交织模块中实现。该模块具体实现电路由2阶流水线组成。

  冗余ZRL消除模块不是ISO/IEC10918协议的一部分,但它源于标准协议里对EOB的定义。从EOB之前直到最近一个的非零交流系数出现,中间产生的ZRL都是可以消除的。基于全流水线结构的电路设计一般很难满足这一要求,原因是全流水线结构的电路每级产生的结果都会直接传递给下一级,不对结果作保留。唯一的方法就是构造一个同步FIFO来缓存前几个时钟周期内产生的结果,根据之前输入的数据量和当前输入的数据量是否满足ZRL的冗余条件而选择性的对FIFO输出的结果做屏蔽。屏蔽的手段就是把FIFO输出数据的对应的霍夫曼代码长度清零。这样在下一步的变长编码中会因ZRL的霍夫曼代码长度为零而消除冗余的ZRL。

 2.4.4变长编码模块

  变长编码的作用是把交织编码输出的含有不等长有效位的霍夫曼码字,提取其中的有效位并将其组合为一个连续的32位码流。

  编码原理是把交织编码输出的含有不等长有效位的霍夫曼码字向右位,移动的位数是前一个霍夫曼码字的代码长度。移位完成后的当前霍夫曼码字与提供移动的位数的前一个霍夫曼码字做或运算,同时累加两个霍夫曼码字的代码长度。 累加和大于24时表明变长编码的第一步完成。第二步是检查前一步产生的24位封装结果中是否有FF字节,若有则直接在FF字节后面添加00字节。并不是所有的24位封装结果都需要在FF字节后面添加00字节,所以在第二步处理中还有移位处理。移位处理采用的方法与第一步移位处理的方法相同的,把24位封装结果和添加00字节后的32位封装结果,统一封装为32位结果输出。这个32位数据也是整个输出的最终压缩结果。

  3.基于SOPC结构的实际验证系统

  经验证,可以实时处理由NTSC制式摄像头采集经ADV7181处理后输出的CCIR656标准数据,完成对连续视频帧的实时压缩。

  验证系统结构如图15所示,lineswitcher模块把CCIR656标准数据的亮度分量以跳址写入的方式通过Multi-Port SDRAM Controller模块写入到SDRAM中,亮度分量数据从隔行扫描变为逐行存贮。Multi-Port SDRAM Controller模块是一个工业级的SDRAM控制器,可以将一个SDRAM数据端口仿真成四个虚拟的数据端口(两个写端口+两个读端口)。 SDRAM在存储空间使用上划分为4个区块,在lineswitcher模块写入一个区块的同时,读出前一个已写入亮度分量的区块。IP核输出端是一个Avalon总线上的具有流控制属性从端口。DMA控制器与Motion JPEG IP核以流控制的方式进行数据传输,并把数据转移到SRAM中。整个过程无需NIOSII处理器干预,只须等DMA控制器写满SRAM后以中断的方式通知 NIOSII处理器以使其挂起Motion JPEG IP核,防止存入SRAM中数据被覆盖。最后使用DE2_Control_Panel传输SRAM中压缩后的数据到PC中,便可看到采集后图像经压缩后的效果。NIOSII处理器的作用是初始化DMA控制器和通过I2C总线设置ADV7181。

  考虑到芯片上的资源,验证时只对ADV7181输出的亮度分量进行压缩,舍弃了色差分量。虽然没有了色差分量,但是仍然可以得到清晰直观的验证效果。

4.结论

  本设计主要有以下几个特点。

  1:以全流水线结构来实现Motion JPEGIP核。

  虽然流水线技术已经是一种众所周知的技术,但是现有的Motion JPEGIP核仍未实现全部流水线结构,一般多以状态控制模块为核心来协调各个子模块。这就导致系统中最慢的子模块在处理数据时,其它子模块只能等待,对数据块访问的效率低下。同时由于数据块的被多个子模块所使用而又需要复杂的仲裁机制。本文提出的全流水线结构把整个处理过程分解为198个小操作,每个时钟周期内由一阶流水线完成一个小操作。当整个流水线铺满之后,整个数据处理过程中没有等待延迟,没有仲裁协议,大幅提高了系统的运行效率并降低了系统的复杂度。

2:并行矩阵转置结构的提出及基于并行矩阵转置的并行二维离散余弦变换结构。

  并行矩阵转置结构较之以往的串行矩阵转置在处理8×8矩阵上至少节省了100个时钟周期。二维离散余弦变换在采用了并行矩阵转置之后,也实现了全部并行处理,43个时钟周期完成了一次二维离散余弦变换,效率提高显著。

3:因采用全流水线结构而取得的较高的运行频率。

  本文设计的Motion JPEGIP核在Quartus II 6.0中进行静态时序分析,得到的最高运行频率是150Mhz。

  现有IP核与本文设计的IP核的运行频率比较

  实际验证时不仅对处理CCIR656标准数据的能力给予验证,同时也为100Mhz的运行频率进行了验证,结果证明IP核可以在100Mhz的运行频率下正常工作。验证方法是把7帧952×568的亮度分量文件存入SDRAM中作为原始数据,整个验证系统以100Mhz频率运行,经过0.05秒完成7帧的压缩,帧率可达147 frame/s。压缩后图像的大小为原来亮度图像的十分之一。

  4:可以在低成本,低功耗,高密度的CycloneII系列FPGA芯片上运行,通过Avalon总线与NIOSII处理器构成SOPC系统,为将来实际产品的设计搭建了一个良好的平台。

参考文献

【1】Weiping Li, A New Algorithm to Compute the DCT and its Inverse, IEEE TRANSATIONS ON SIGNAL, PROCESSING, VOL. 39. NO. 6, JUNE 1991
【2】Shaw-MinLei, Ming-Ti ngSun, An Entropy Coding System for Digital HDTV Applications, IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 1, NO.1, MARCH 1991
【3】ISO/IEC International Standard 10918-1. June 1992
【4】Altera Corporation. Quartus II Version 7.2 Handbook. October 2007
【5】Altera Corporation. Nios II Processor Reference Handbook. October 2007
【6】Altera Corporation. Nios II Software Developer's Handbook. October 2007
【7】Altera Corporation. Avalon Streaming InteRFace Specification. September 2007
【8】张志刚. FPGA与SOPC设计教程-DE2实践. 西安: 西安电子科技大学出版社, 2007年4月.
【9】吴继华,王诚. AlteraFPGA/CPLD设计(高级篇). 北京: 人民邮电出版社,2005年7月
【10】简弘伦.精通VerilogHDL IC设计核心技术实例详解.北京:电子工业出版社, 2005年10月.

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭