当前位置:首页 > EDA > 电子设计自动化
[导读]摘要:5/3小波变换硬件实现常用结构是先完成分裂,再依照分裂后的数据完成预测部分和更新部分的变换,这需要复杂的控制结构。在此采用JPEG2000推荐的5/3小波变换公式,在基于行的列变换基础上提出了一种全新的无数

摘要:5/3小波变换硬件实现常用结构是先完成分裂,再依照分裂后的数据完成预测部分和更新部分的变换,这需要复杂的控制结构。在此采用JPEG2000推荐的5/3小波变换公式,在基于行的列变换基础上提出了一种全新的无数据分裂的结构。该结构放弃地址寻址的数据读取模式,采用读取一维数据流节点的输入方式,从时应的寄存器中读取在多个寄存器中依次流动的数据,省略了数据输入的地址控制模块。由于减少了数据分裂步骤,并且无需控制预测及更新步骤的交替进行,因此简化了小波变换控制系统的结构。在此运用软硬件协同的验证方法,利用计算机软件和FPGA结合,完成图片从计算机端输入,在FPGA中完成小波变换,并输出到计算机显示器上显示的步骤。
关键词:小波变换;软硬件协同验证;FPGA;JPEG 2000

0 引言
    小波分析是当前应用数学和工程学科中一个迅速发展的新领域,而近年来基于小波变换的图像压缩技术以硬件方式推向市场,图片压缩已成为小波变换极其重要的应用领域。而在原有的小波变换的理论基础上发展的基于小波变换的更新算法,不采用Fourier变换作为主要的分析工具,这与经典小波变换相比具有小波构造简单、反变换容易实现、运算速度快和节省存储空间等优点。但其在硬件应用开发上,对中间数据量要求较大,占用较多寄存器,因而通过硬件结构的探索来减小寄存器的开销,成为小波变换图片处理的一个重要分支。
    本文提出了无分裂步骤的5/3小波变换结构,完成了该结构的FPGA硬件实现,并结合计算机端Matlab软件,正确完成图片变换验证。

1 硬件结构
1.1 算法实现结构
    本文采用JPEG2000推荐的5/3小波变换算法,算法公式如下:
   
    常见的小波变化实现结构如图1所示,先完成分裂,再进行预测,最后完成更新步骤。分裂步骤是指通过对数据地址n的奇偶进行判断,将数据分裂为奇地址部分和偶地址部分。输入奇地址部分数据,进行预测部分运算,并输出细节数据;输入偶地址部分数据,完成更新部分运算,输出平滑数据。因此需要根据输入数据的地址,对数据进行分裂,或控制预测部分和更新部分交替工作。


    本文提出一种全新的运算结构,以一维数据流输入数据,无需数据分裂步骤,并且不需要控制预测部分和更新部分的运行和停止,通过对数据流固定节点取值,分别完成预测和更新步骤,并根据数据地址的变换,利用数据选择器从2个端口交替读取数据即能控制预测和更新步骤的运行。
1.2 数据存取结构
    本文采用基于行的列变化和流水线结构,完成二维小波变化数据处理。输入数据以一维数据流形式逐一输入,变化模块读取数据流中的数据进行数据计算,产生变化结果。
1.2.1 行变换数据存取结构
    行变换模块输入数据读取方式,是用读取寄存器中数据流的方式代替地址寻址的数据读取模式。
    数据依照输入顺序,在寄存器A,B,C,D中依次流动。变换模块在不同的时间分别从A,C和D中读取数据,进行预测和更新的变化步骤。变换后输出的数据存放在列变换模块的寄存器D1和FIFO-A中。行变换模块结构图如图2所示。


1.2.2 列变化数据存取结构
    在进行列变换时,需要读取变换数据点临近行的同列数据。而完成该数据点变换后,进行的是同一行下一列的数据点的列变换。因此需要依次读出相邻4行的同列数据,行数不变,列数依次递增。
    为了简单的实现该数据读取的顺序,本文使用3个FIFO来保存连续3行的数据:当输入新一行的第1个数据时,3个FIFO释放出第1个数据(即之前3行每1行的第1个数据),刚好组成完成列变换的相邻4行的同列数据。同时,数据的新1行的数据进入FIFO-A,FIFO-A释放出的数据进入FIFO-B,FIFO-B释放出的数据进入FIFO-C。之后,释放出第2列的数据,并重复上述步骤。
    因此在完成数据变换的同时,数据在FIFO-A,FIFO-B,FIFO-C中依次流动。完成该行的所有列数据的变换后,FIFO-A中的数据依次寄存在FIFO-B中,FIFO-B的数据寄存在FIFO-C中,而FIFO-A则寄存了新1行的数据。当下1行的数据输入时,又依照上述顺序,开始下1行的列变换。
1.3 变换模块结构
    常见的小波变换结构是当输入奇数地址数据时完成预测步骤,当输入偶数地址数据时完成更新步骤。而本文提出的结构不进行数据分裂,直接对数据进行预测和更新,并同时输出到数据选择器。数据选择器对地址奇偶进行判断,选择输出数据,可以得到和常用结构相同的结果。列变换模块结构图如图3所示。


1.3.1 行变换结构
    本文提出了无分裂步骤的结构中,行变换时数据流输入后依次寄存在寄存器D1,D2,D3,D4中。如图4(a),寄存器D1,D2,D3,D4中已分别寄存了输入数据X4,X3,X2,X1,而寄存器D5,D6,D7则分别寄存了数据Y2,Y1,Y0。此时利用寄存器D1,D2,D3中的数据X4,X3,X2经过预测步骤,得到预测结果y3=x3-(x2+x4)/2;此前已在寄存器D5,D6,D7中分别寄存了前3个时钟分别完成计算的结果Y2,Y1,Y0,则经过更新步骤可得y1=x1+(y0+y2+2)/4。此时通过数据选择器输出的值Y1是奇数地址,因此仅需要完成预测步骤运算的结果(即寄存器D6中的数据),也就是说输出寄存器D6中的Y1值,放弃更新步骤产生的Y1值。


    在下一个时钟沿来临时,X4,X3,X2依次取代X3,X2,X1的位置,输入的X5则寄存在X4的位置,同理Y2,Y1依次取代Y1,Y0的位置,预测产生的Y3值则寄存在Y2,则下一次计算时,寄存器中的值如图4b,预测步骤产生Y4,更新步骤产生Y2,由于是偶数地址,所以通过数据选择器输出经过更新步骤的Y2值。
1.3.2 列变换结构
    列变换时,假设第m行的第n列完成行变换后的数据为X(m,n),将该数据寄存在寄存器D1中,下个时钟沿来临时,FIFO-A和FIFO-B中分别释放出第m-1和m-2行的第n列的数据X(m-1,n)和X(m-2,n),同D1中X(m,n)数据共同完成预测步骤生成Y(m,n)并寄存在D2中,同时从D1和FIFO-A,FIFO-B中释放出的数据X(m,n),X(m-1,n)和X(m-2,n)分别寄存进FIFO-A,FIFO-B,FIFO-C。再下一个时钟沿来临时,完成第m行第n+1列的行变换,并寄存在D1中,之后即可按照上述步骤完成第m行第n+1列数据的预测和更新,得出结果Y(m,n+1)。当FIFO把第m行数据完全释放出时,已在该FIFO寄存了第m+1行的完整数据,可以开始下一行的列变换。同理,完成预测步骤的数据寄存在D2,FIFO-D,FIFO-E中,依据预测步骤相似的原理完成更新步骤。之后依据数据的列地址的奇偶,选择不同的Y值输出。
1.4 控制结构
    一般的变化模块,均采用状态机的控制方法,利用状态的跳转,来控制行变化和列变化之间的关系,完成预测和更新步骤。
    而本文提出了全新的、更为灵活的直角坐标系控制法,即利用行坐标(row-c)和列坐标(col-c)形成一个二维直角坐标系,并将图片映射到直角坐标系上,每一对坐标(row-c,col-c)对应直角坐标系上图片的一个点,也对应该点的变换时刻。通过row-c,col-c的值来判断正在进行变换的行列值,来决定FIFO和变化模块的动作。利用row-c,col-c的末位来判断进行变换的行和列地址分别是奇数地址还是偶数地址,决定是进行预测步骤还是更新步骤。结合计数器,通过输入的图片的行像素值M和列像素值N,分别控制row-c和col-c的跳变。因而可以简单的通过改变M,N值的大小来改变进行变换的图片的大小。

2 结果验证
2.1 采用软硬件协同验证的结构
    本文采用软硬件协同工作的结构,如图5所示。利用计算机端的Matlab软件从FPGA芯片中读取变换后的RGB数据,并显示在计算机显示器上。


    具体结构是将图片数据通过北翰科技公司的Verilink插件,从Matlab软件中送入FPGA芯片中的FIFO,小波变换模块从FIFO中依次读取数据,并进行变换,完成变换的数据通过FIFO送回Matlab软件,并显示在计算机的显示器上。
2.2 验证结果
    本文采用128×128像素RGB图片作为变换图像源,在计算机的Matlab软件中,将图片转换成一维数据流,并依次通过Verilink插件送入FPGA芯片的FIFO中,在送入数据的同时,FPGA中的变换模块从FIFO中读出数据进行变换,并将变换结果通过输出的FIFO送至计算机端的Mat lab软件。在完成全部数据变换后,在计算机端将获得的数据重新排列,并转换成128×128×3的RGB图片格式,并对比显示变换前和变换后的图片效果。变换前图片如图6(a),变换并重排后图片如图6(b),图片数据高频分量和低频分量分离正确无误。



3 结语
    本文提出了无分裂步骤的小波变换结构,简化了变换模块的控制系统,采用数据流模式输入数据,并且和软硬件协同的工作方式良好配对,利用FPGA和计算机完成了二维小波变换的板级验证。本文提出的结构在5/3小波变换中有效运行,并起到简化结构的关键作用,下一步将尝试把该结构运用于9/7小波变换的硬件结构实现中,并提出适合9/7小波变换硬件实现的结构。

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

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 隧道灯 驱动电源
关闭