当前位置:首页 > EDA > 电子设计自动化
[导读] 在信息社会迅猛发展的21世纪,多媒体信息日益增多,其中人类主要依靠图像来接收各种各样的信息。图像中包含如此巨大的数据量,如果不经过压缩,不仅超出了计算机的存储和计算能力,而且无法完成信息的实时传输。图像

 

在信息社会迅猛发展的21世纪,多媒体信息日益增多,其中人类主要依靠图像来接收各种各样的信息。图像中包含如此巨大的数据量,如果不经过压缩,不仅超出了计算机的存储和计算能力,而且无法完成信息的实时传输。图像的高速传输和所需巨大的存储容量已成为数字图像通信的最大障碍。离散余弦变换(DCT)由于其变换特点被认为是性能最接近K—L变换的准最佳变换,现在已经是最流行的图像压缩变换技术,并已经在JPEG、MPEG-1/2/4、H.26x等国际编码标准中获得了广泛的应用[1].由于集成电子技术的高速发展和广泛运用,数字图像处理也由软件向硬件过渡并得到了非常迅速的发展。FPGA作为当今运用极为广泛的可编程逻辑器件,也是数字图像处理的理想器件。目前,利用FPGA进行图像处理主要是直接在FPGA上利用硬件描述语言或EDA软件进行设计,这种设计方法的最大优点就是速度快,可以利用流水线实现,具有一定的灵活性。

基于行列分解的2D-DCT由于算法规律性强、实现结构直观、时序控制简单而被广泛应用。本文提出使用行列分解法和分布式算法来实现2D-DCT,可以减少硬件资源,提高运算速度,具有一定的现实意义。

1 2D-DCT系统模块设计

离散余弦变换经常使用在信号处理和图像处理中,用于对信号和图像进行有损数据压缩。这是由于离散余弦变换具有很强的“能量集中”特性,使图像的主要信息集中在变换后的低频上,并且能够去掉像素间较强的相关性,让图像的信息集中在少数几个系数上,以减少冗余达到对图像进行压缩的目的。

 

 

1.2 系统模块设计

根据2D -DCT 的行列分解性及2D -DCT 的计算流程所设计的系统框图如图2 所示, 整个系统由控制模块、1D-DCT 模块和行列转换模块3 个模块组成。

 

 

在每个时钟的上升沿从数据输入端输入一个数据,8 个时钟周期后, 输入的就是8×8 数据块的一行数据。同时, 控制模块给1D-DCT 模块一个信号, 通知它对这8 个数据进行1D-DCT 变换, 并且在计算完之后把结果存进行列转换模块中。如此反复8 次后, 就对8×8 数据块完成了行变换, 所得到的64 个数据依然是以8×8 的矩阵形式存放在行列转换模块中。之后控制模块分8 次从行列转换模块中读出8×8 矩阵的每一列数据, 再送入1D-DCT 模块中进行变换, 变换后的数据就是8×8 数据块的2D-DCT 变换结果。

2模块功能介绍

2.1控制模块

控制模块用于保持整个模块设计的时钟同步,并且使用控制信号来控制1D-DCT模块状态之间的转换。1D-DCT模块有空闲状态和1D-DCT变换状态2个状态。当控制信号控制整个系统复位时,控制模块通知1D-DCT模块进入空闲状态;当需要计算的数据输入完成时,控制模块通知1D-DCT模块进入1D-DCT变换状态。1D-DCT模块的状态转移图如图3所示。

 

 

由于FPGA中硬件乘法器资源有限,直接应用乘法会消耗大量的资源。本方案中使用分布式算法[4]来实现乘法,它是一种适合FPGA的乘加运算,与传统算法实现乘加运算的区别在于,执行部分积运算的先后顺序不一样。分布式算法在实现乘加功能时,首先将各输入数据的每一对应位产生的部分积预先进行相加,形成相应的部分积,然后再对各个部分积累加形成最终结果;而传统算法是所有乘积已经产生之后再相加完成乘加运算的。与传统算法相比,分布式算法可极大地减少硬件电路的规模,提高电路的执行速度。分布式乘法器结构如图5所示。

 

 

其中Cn为常系数。这种乘法器不仅能够有效地减少硬件资源,而且在增加输出端口时能够减小数据传输所带来的延迟和布局布线面积[5]. 2.3行列转换模块本文使用同步动态随机存储器(SDRAM)来存储第一次1D-DCT的中间结果及数据的行列转换。由于SDRAM与系统时钟同步,因此避免了不必要的等待周期,减少了数据存储时间。SDRAM的核心结构由多个内存单元组成,这些内存单元又分成由行和列组成的二维阵列。2D-DCT变换首先是对8×8数据块的每一行数据进行1D-DCT变换,然后将结果放入SDRAM中,每一行的结果就占SDRAM中的一行内存。SDRAM通过采用地址线行列复用技术读取其储存的内容,访问这些内存时,在地址线上依次给出行地址和列地址[6],读出SDRAM中的每一列数据,再重新送入1D-DCT模块中进行1D-DCT变换,这样就完成了整个2D-DCT的变换。

3仿真结果

整个设计采用Verilog HDL语言进行编程,使用Xilinx公司的Spartan3E系列FPGA(XC3S500E)实现,时钟晶振为50 MHz,SDRAM容量为512 MB,位宽为16 bit,同步时钟能达到100 MHz.使用的编程软件是ISE,仿真软件是ModelSim.图6是用ModelSim仿真软件仿真出来的2D-DCT的仿真结果及执行结果。其中,din是8 bit数据输入端口,dout是经变换后12 bit数据输出端口。由执行结果可以看出,从输入端口输入的64个数据在经过2D-DCT变换后,所得到的结果与期望值一致。

 

 

本文提出了分布式算法和行列分解法相结合的方案来实现2D-DCT,该方案不仅能够减少硬件资源的使用,提高资源的利用率,并能提高运算速度,能够满足数字图像和视频压缩的实时性要求。在查找表中所使用的值取的精度不够高,所以存在一定的误差,但这种误差不会引起人眼视觉上的差别,是允许存在的。因此,该方案可作为用FPGA来进行数字图像和视频压缩中的一部分。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭