全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

基于SoPC的二维IDCT分布式算法的IP核研究

[复制链接]
1014 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
摘  要:  关键词: 可编程片上系统; IP核; 离散余弦逆变换; 分布式算法; 偏移二进制编码
       离散余弦变换(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]如下:
20121107053649630744335.gif
其中Fx,y为DCT变换后的系数,fi,j为原始数据,当x,y=
20121107053650068234336.gif
20121107053650115104337.gif
     从式(9)可以看出,如果预先计算好部分和Dj并存入查找表,则通过移位累加操作,同样可以计算出向量内积Px。dij的取值只可能是-1或+1,部分和Dj关于向量d的正负值成镜像对称。下面以计算P1为例,来说明这种部分和的对称关系:
   20121107053650161984338.gif
2 二维IDCT硬件设计
2.1 二维IDCT硬件结构

     设计方案利用2D IDCT的行列分解特性,使用一个1D IDCT核、8×8转置RAM和复用器等模块来构成2D IDCT硬件系统。2D IDCT的结构框图如图2所示。
    20121107053650193234339.gif
       图中,串并转换缓冲器,每收到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。
    20121107053650240104340.gif
       图4为1D IDCT的硬件结构图。1D IDCT模块的输入数据精度为13 bit,输出为16 bit。其中移位寄存器输入13 bit,输出为8 bit。为防止数据溢出,移位累加器的输出为14 bit,而非13 bit。经后处理模块将精度扩展为16 bit后,作为最后结果输出。
    20121107053650271354341.gif
       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核的总体结构图。
    20121107053650302604342.gif
   
     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所示。
    20121107053650333854343.gif
   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%以上。
    20121107053650380724344.gif
       本文研究设计的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.

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表