《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 设计应用 > 基于SoPC的二维IDCT分布式算法的IP核研究
基于SoPC的二维IDCT分布式算法的IP核研究
来源:电子技术应用2011年第4期
付 扬, 邓 超
北京工商大学 计算机与信息工程学院, 北京 100048
摘要: 研究基于SoPC的视频解码系统中二维IDCT 硬件设计与实现。针对二维IDCT的运算量大、乘法运算多,导致占用FPGA资源多和系统速度慢等问题,其设计采用一维IDCT复用,研究分布式算法实现乘法累加,并使用偏移二进制编码来减小其查找表大小,其直接占用FPGA逻辑单元内的查找表LUT,没有寄存器或内置RAM。综合结果表明,芯片占用资源少、访问速度快,其最高可综合工作频率达到140.39 MHz。此外,基于Avalon总线接口实现二维IDCT IP核的SoPC Builder系统构建,在以Nios II处理器为核心SoPC视频解码系统中测试,结果表明,该IP核能提高视频解码速度20%以上,很大程度上增强了解码的实时性。
中图分类号: TP391
文献标识码: A
文章编号: 0258-7998(2011)04-0126-04
The IP core research of 2D IDCT distributed algorithm based on SoPC
Fu Yang, Deng Chao
Computer and Information Engineering Institute, Beijing Technology and Business University, Beijing 100048, China
Abstract: Research SoPC system of two-dimensional IDCT hardware design and implementation. Two-dimensional IDCT for computing capacity, multiplication and more, making the occupation of FPGA resources and system slow and so many disadvantages, the design uses a distributed algorithm multiply-accumulate, and use the offset binary coding to reduce the size of the lookup table can be directly FPGA logic cells using the look-up table LUT, there are no registers or internal RAM. The synthesis results show that the chip takes fewer resources, access speed, two-dimensional IDCT integrated work a maximum frequency of 140.39 MHz. Avalon bus interface based on two-dimensional IDCT IP core of the SoPC builder system construction, Testing based on SoPC video decoding system In Nios II processor as the core, the test results show that the IP core rate increased more than 20%, largely enhanced real-time decoding.
Key words : SoPC; IP core; IDCT; DA; OBC


    离散余弦变换(DCT)是最广泛使用的图像和视频压缩变换编码方法之一,它可以去除数据之间的相关性、聚集图像中的能量,使数据便于压缩,是目前大多数图像和视频编码标准(如JPEG、H.26x系列、MPEGx系列标准等)的核心。在图像和视频解码系统中,则使用离散余弦逆变换(IDCT)对数据进行还原,而常用8×8的二维离散余弦逆变换(2D IDCT)的运算量较大,直接影响到图像和视频解码系统的实时性。本文在基于SoPC视频解码系统设计中,考虑到充分利用SoPC具有的软硬件协同设计优势,对二维IDCT优化的硬件设计与实现进行了研究。
    研究采用IDCT的分布式算法(DA),并结合偏移二进制编码(OBC)的查找表方式,设计基于SoPC解码系统8×8的二维 IDCT IP核。在以Nios II处理器为核心的SoPC视频解码系统中,该 IP核设计满足Avalon总线标准的接口。经综合测试表明,该IP核的应用提高了解码的实时性,具有一定的应用价值。
1 IDCT算法
1.1二维IDCT分解

    8×8二维IDCT的定义式[1]如下:

其中Fx,y为DCT变换后的系数,fi,j为原始数据,当x,y=


    从式(9)可以看出,如果预先计算好部分和Dj并存入查找表,则通过移位累加操作,同样可以计算出向量内积Px。dij的取值只可能是-1或+1,部分和Dj关于向量d的正负值成镜像对称。下面以计算P1为例,来说明这种部分和的对称关系:
 
2 二维IDCT硬件设计
2.1 二维IDCT硬件结构

    设计方案利用2D IDCT的行列分解特性,使用一个1D IDCT核、8×8转置RAM和复用器等模块来构成2D IDCT硬件系统。2D IDCT的结构框图如图2所示。

    图中,串并转换缓冲器,每收到8个数据后将其作为一行数据同时输出,该模块还是输入数据的缓存模块。并串转换缓冲器功能与此模块类似。转置RAM用来完成8×8数据的行列转换,按行输入按列输出。1D IDCT模块为整个IP的核心,用来计算8点1D IDCT的值。控制器负责整个IP核的工作时序,保证其运行无误。工作时先按行顺序读入数据,然后由1D IDCT计算每行8点的逆变换值,再按行顺序写入转置RAM中,然后控制器切换复用器,按列顺序从转置RAM中读出数据,计算每列IDCT值后按列顺序写入输出缓存,最后按行顺序读出最终结果。
2.2 一维IDCT硬件设计
    实现2D IDCT硬件的关键是如何实现1D IDCT。本设计使用OBC编码的分布式算法来完成1D IDCT的硬件设计,其核心是4输入的移位累加模块的设计,其结构如图3所示。移位累加模块可以计算一个乘积和,并行使用8个移位累加模块及1个后处理模块,组成完整的1D IDCT模块。后处理模块用于式(5)、式(6)的计算,其输出为最终8点1D IDCT的结果。在设计移位累加器时,要注意初始值Dapp的设置。在视频解码系统中,对IDCT输出数据的准确性较敏感,对数据的舍入要求较高。因此设计时,对输出数据采用四舍五入,将累加器的初始值加上4 096,右移13次后将输出结果补偿0.5。

    图4为1D IDCT的硬件结构图。1D IDCT模块的输入数据精度为13 bit,输出为16 bit。其中移位寄存器输入13 bit,输出为8 bit。为防止数据溢出,移位累加器的输出为14 bit,而非13 bit。经后处理模块将精度扩展为16 bit后,作为最后结果输出。

    1D IDCT是整个设计的核心,该模块功能的正确与否将影响整个系统的性能。
2.3 Avalon总线接口2D IDCT IP核设计
    基于SoPC视频解码中,IP核还应包含Avalon总线接口以及控制寄存器组。Avalon总线接口包含对总线进行读写操作,它是2D IDCT IP核与Avalon总线数据传输的桥梁[5]。通过接口模块,可以将IP核加入到SoPC系统中。控制寄存器组用于存储控制状态字,以及控制IP核的参数数据[5]。
    图5为基于Avalon总线接口的2D IDCT IP核的总体结构图。


    Avalon总线读取模块根据寄存器中的操作地址,将要处理的64个数据读入输入缓存,经2D IDCT模块处理后由总线写入模块将结果写回原地址。模块运行时,首先向控制寄存器写入控制数据,然后IP核发起总线数据读取操作,等IP核接收到Avalon总线返回的数据后开始对数据进行处理,最后再将结果写回Avalon总线。
3 二维IDCT IP核的综合与测试
3.1 二维IDCT IP核的综合

    使用以Cyclone II EP2C35F672C8 FPGA芯片为核心的SoPC开发平台,硬件设计使用Verilog HDL硬件描述语言编写,在Quartus II软件进行综合,综合报告如图6所示。由此可见,整个2D IDCT占用了4 336个逻辑单元,核心模块1D IDCT只占用了632个逻辑单元。8个查找表模块直接使用了FPGA逻辑单元内的查找表LUT,没有寄存器或内置RAM。这种查找表模块的实现方式简单灵活,并且芯片访问速度快。2D IDCT IP核的最高可综合工作频率为140.39 MHz。其时序分析报告如图7所示。

3.2 二维IDCT IP核的SoPC测试结果
    在以Nios II 为处理器的SoPC系统中,进行实际视频解码测试。将 IDCT IP核添加到SoPC Builder中,将编码过的视频测试文件烧入到Flash中,移植解码程序到Nios II IDE中,删除原有的IDCT软件函数,用C语言编写2D IDCT IP核的驱动函数。经系统解码后,通过带VGA接口的LCD进行播放[6]。
    测试结果看出系统加入IDCT IP核后,LCD显示画面清晰,没有降低系统的解码质量。
    对于不同的测试视频,解码速度是有差异的,为了能更准确地测试出IP核的性能,本研究选用了多个视频文件进行比较如表1所示。从表1可以看出,加入2D IDCT IP核以后,  解码每帧所需时间平均减少了约6 ms,帧率平均提高了6~8帧,使系统的解码速率平均提高了20%以上。

    本文研究设计的2D IDCT IP核针对FPGA的硬件特点,采用分布式算法实现乘法累加模块,使用OBC编码减小了查找表的大小,节省了FPGA资源,优化了硬件设计。
    该IP核的研究基于先进的SoPC技术,应用于视频解码系统中,结果表明,该IP核很大程度上提高了视频解码速度,增强了视频解码系统的实时性。由于SoPC的IP核复用技术,该设计将具有很强的实用性、通用性和扩展性。
参考文献
[1] RICHARDSON I E G.视频编解码器的设计-开发图像与视频压缩系统[M]. 北京:国防科技大学出版社, 2005.
[2] CHEN W H. A fast computational algorithm for the discrete cosine transforms [J]. IEEE Transactions on Communications, 1977,25(9):1004-1009.
[3] 梁刚.分布算术的并行计算技术研究[J]. 微电子学与计算机, 2009(5).
[4] 纪秀花.用查表法快速实现二维8×8离散余弦逆变换的研究[J]. 电子学报,2008(4):639-645.
[5] 刘家良,任怀鲁,陈新华.AVS视频解码中帧内预测模块的硬件化设计及SOPC验证 [J].电子技术应2009,
35(10):18-21.
[6] Altera. Avalon Interface Specifications [DB/OL].2009-11.
 

此内容为AET网站原创,未经授权禁止转载。