找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 2D-DCT的FPGA实现

[复制链接]
admin 发表于 2013-3-26 12:43:17 | 显示全部楼层 |阅读模式

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

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

×
摘  要: 设计了采用FPGA来实现2D-DCT的方案,对于其中的关键部分--乘加运算,给出了基于查找表的分布式算法。整个设计节省了资源,提高了运算速度。仿真结果表明,经过2D-DCT变换后的数据与期望值总体上是一致的,这对于数字图像和视频压缩的研究有一定的意义。
关键词: 2D-DCT;FPGA;图像视频压缩
    在信息社会迅猛发展的21世纪,多媒体信息日益增多,其中人类主要依靠图像来接收各种各样的信息。图像中包含如此巨大的数据量,如果不经过压缩,不仅超出了计算机的存储和计算能力,而且无法完成信息的实时传输。图像的高速传输和所需巨大的存储容量已成为数字图像通信的最大障碍。离散余弦变换(DCT)由于其变换特点被认为是性能最接近K-L变换的准最佳变换,现在已经是最流行的图像压缩变换技术,并已经在JPEG、MPEG-1/2/4、H.26x等国际编码标准中获得了广泛的应用[1]。
 由于集成电子技术的高速发展和广泛运用,数字图像处理也由软件向硬件过渡并得到了非常迅速的发展。FPGA作为当今运用极为广泛的可编程逻辑器件,也是数字图像处理的理想器件。目前,利用FPGA进行图像处理主要是直接在FPGA上利用硬件描述语言或EDA软件进行设计,这种设计方法的最大优点就是速度快,可以利用流水线实现,具有一定的灵活性。
 基于行列分解的2D-DCT由于算法规律性强、实现结构直观、时序控制简单而被广泛应用。本文提出使用行列分解法和分布式算法来实现2D-DCT,可以减少硬件资源,提高运算速度,具有一定的现实意义。
1 2D-DCT系统模块设计
 离散余弦变换经常使用在信号处理和图像处理中,用于对信号和图像进行有损数据压缩。这是由于离散余弦变换具有很强的“能量集中”特性,使图像的主要信息集中在变换后的低频上,并且能够去掉像素间较强的相关性,让图像的信息集中在少数几个系数上,以减少冗余达到对图像进行压缩的目的。
20121107045412133724539.gif
20121107045412180594540.gif
2 模块功能介绍
2.1 控制模块

 控制模块用于保持整个模块设计的时钟同步,并且使用控制信号来控制1D-DCT模块状态之间的转换。1D-DCT模块有空闲状态和1D-DCT变换状态2个状态。当控制信号控制整个系统复位时,控制模块通知1D-DCT模块进入空闲状态;当需要计算的数据输入完成时,控制模块通知1D-DCT模块进入1D-DCT变换状态。1D-DCT模块的状态转移图如图3所示。
    20121107045412243094541.gif
    20121107045412336844542.gif
       由于FPGA中硬件乘法器资源有限,直接应用乘法会消耗大量的资源。本方案中使用分布式算法[4]来实现乘法,它是一种适合FPGA的乘加运算,与传统算法实现乘加运算的区别在于,执行部分积运算的先后顺序不一样。分布式算法在实现乘加功能时,首先将各输入数据的每一对应位产生的部分积预先进行相加,形成相应的部分积,然后再对各个部分积累加形成最终结果;而传统算法是所有乘积已经产生之后再相加完成乘加运算的。与传统算法相比,分布式算法可极大地减少硬件电路的规模,提高电路的执行速度。分布式乘法器结构如图5所示。
    20121107045412368084543.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-29 10:13 , Processed in 0.056433 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表