CN105611115B - 一种基于Zynq系列FPGA的时分复用二维小波变换系统 - Google Patents
一种基于Zynq系列FPGA的时分复用二维小波变换系统 Download PDFInfo
- Publication number
- CN105611115B CN105611115B CN201510922444.5A CN201510922444A CN105611115B CN 105611115 B CN105611115 B CN 105611115B CN 201510922444 A CN201510922444 A CN 201510922444A CN 105611115 B CN105611115 B CN 105611115B
- Authority
- CN
- China
- Prior art keywords
- transformation
- row
- module
- data
- linux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
Abstract
本发明公布了一种基于Zynq系列FPGA的时分复用二维小波变换系统,用于图像处理和数据分析。该套系统仅使用一个行变换模块,和一个列变换模块,高速稳定的实现多级97提升式小波变换系统,并通过将FPGA与Linux系统结合,实现图像数据通过网络传入,变换结束后通过网络传出的系统架构。
Description
技术领域
本发明属于电子电路技术领域,特别涉及一种基于Zynq系列FPGA的时分复用二维小波变换系统,可用于图像处理和数据分析。
背景技术
小波变换具有良好的时频定位性质和多分辨率特征,在各种数据分析中得到广泛的应用。但由于其复杂的计算过程,给小波变换的应用带来了一定的阻碍。目前,多数小波变换的应用多选择在计算机平台上实现,在微处理器平台上,使用小波变换的并不多。即使在微处理器平台上实现的小波变换,其性能也受到很大的限制。
近年来,FPGA的发展为电子领域带来了很多改变,其大规模并行化运行的能力,实现了很多在微处理器平台上难以实现的算法。而小波变换的计算过程中,存在着大量的可并行化的运算,将FPGA与小波变换结合,便可以实现高性能的小波变换系统。
随着技术水平的提升,市场上出现了各式各样的FPGA,而Zynq系列的FPGA具有独特的优势。它集成了ARM处理器的软件可编程性和FPGA的硬件可编程性,不仅可实现重要分析与硬件加速,同时还在单个器件上高度集成CPU、DSP、ASSP以及混合信号功能。Zynq系列的FPGA将可定制智能性融入当前嵌入式系统,可灵活的适应各种应用需求。在Zynq系列FPGA上实现小波变换系统,可将系统与网络直接相连,通过网络传入传出数据,实现高性能云计算。
虽然使用FPGA实现小波变换可获得较高的性能,但现有的基于FPGA的二维小波变换系统,尤其是多级小波变换系统,都使用了较多的硬件资源。如发明专利1(发明人:顾晓东,陈军,王怀超,安军社,陈晓敏,“一种基于 FPGA的星载图像压缩的小波变换系统及方法”:专利申请号:201110156077.4)中所述的小波变换系统,在进行第一级二维小波变换的时候,使用了一套计算系统,进行第二级变换的时候需要另一套计算系统来完成。其专利中所述的小波变换系统完成三级的小波变换,便需要三套计算系统,以实现多级小波变换的并行计算。而发明专利2(发明人:雷杰,李云松,李双十,叶繁,郭杰,张皓,吕宝刚,“基于FPGA的多级复用小波变换器”:专利申请号:201310476968.7)中所述的小波变换系统,通过时分复用,减少了计算系统的资源消耗,但其小波变换系统中,仍需要第一级的一套计算系统和时分复用的一套计算系统,共两套计算系统来实现多级小波变换,仍然消耗较多的硬件资源。
通过理论分析发现,多级小波变换通过时分复用,用一套计算系统便可完成,即通过一个行变换模块和一个列变换模块便可实现任意级数的小波变换。同时,每多实现一级变换,仅需添加十行数据左右大小的FIFO即可(行的长度随级数增加,以0.5为倍数减小)。但要达到理想效果,有一定的设计难度。
发明内容
在实现基于行的二维97提升式小波变换的过程中,行变换需要输入两个图像数据,才会输出两个变换结果,如果每个时钟送入两个数据给行变换模块,则每处理一行的数据,行变换模块会空闲半行的时钟周期。而列变换模块需要输入两行图像数据,才输出两行变换数据,每处理两行的数据,会空闲一行的时钟周期。无论是行变换模块还是列变换模块,中间都会有一段空闲时间,且这段空闲时间与模块运行的时间相等。第二级小波变换需要的空闲时间和运行时间都是第一级小波变换的一半,第三级所需要的时间则是第二级的一半。所以在第一级小波变换的空闲时间里,完全可以进行第二级小波变换,并且还剩下第二级的空闲时间;而在第二级的空闲时间里,完全可以进行第三级变换,依此类推,通过时分复用的方法,可以实现使用一套计算系统,而实现任意级数的小波变换。
本发明的目的在于提供一种基于Zynq系列FPGA的时分复用二维小波变换 系统,仅使用一个行变换模块,和一个列变换模块,高速稳定的实现多级97提升式小波变换系统,并通过将FPGA与Linux系统结合,实现图像数据通过网络传入,变换结束后通过网络传出的系统架构。
为实现上述目的,本发明对各级数据流以及图像输入输出进行规整,并结合少量的缓存,实现计算模块的时分复用。同时,对计算模块内部进行优化,保证其稳定高速的运行状态。
本发明的基于Zynq系列FPGA的时分复用二维小波变换系统的技术方案包括如下三个设计:
设计1:图像数据送入系统后,并不是直接送入行变换模块,而是先送入行缓存模块,等待控制模块给出读信号后再输入到行变换模块。行变换模块的结果先送入列缓存模块,待控制模块给出读信号后再输入到列变换模块。列变换模块输出的数据流中,包含各级变换结果,并配有各级结果的标志。同时,数据流中各级变换结果的LL子带会送入到行缓存模块中,以进行多级变换。
设计2:行变换模块和列变换模块由多个加法乘法模块和延迟模块组成。加法模块将同步电路和异步电路结合,通过两个时钟周期完成有符号加法。列变换模块中通过计算缓存模块,缓存一行中间计算结果,用于处理前边界。行变换和列变换均采用镜像方式处理边界。计算模块和缓存模块所使用的位宽可以调节,各个接口处设有位宽转换机制。列缓存模块内由10个FIFO模块组成,用来缓存5行行变换结果。
设计3:该套系统可与Linux系统结合,形成一套可实现网络传输和实时变换处理的图像处理平台。该系统封装为IP核,通过AXI4-Stream协议与Zynq芯片上的ARM处理器运行的Linux系统相连,可任意时刻零延时暂停与继续工作。系统输出配有各级变换结果标志,连同所有变换结果通过两路信号输出。
上述设计1中,小波变换系统的结构特点是:对每一级变换,均配上两行长度的行缓存,行的长度为当前级数的小波变换所对应的行宽。两行缓存中存储同一行的输入数据,但一行缓存输出奇数位的数据,另一行缓存输出偶数位 的数据,每个时钟送出两个数据给行变换模块。行变换模块通过高频通道和低频通道,输出两路数据流。对每一级列变换,均配上一个列缓存模块。每个列缓存模块缓存5行行变换结果,其中每行的高频部分和低频部分是分开缓存的。列变换模块通过高频通道和低频通道,输出两路数据流。其低频通道中各级的LL子带部分数据将被送入行缓存模块中,作为下一级变换的输入。
上述设计2中,各个子模块的特点是:行变换模块和列变换模块通过多个模块组合而成,采用流水线结构。对于不同种类的小波变换,调整乘法模块的参数,乘法模块、加法模块以及缓存的个数,并配合相应的控制信号便可实现,而系统整体时分复用结构不需要变动。加法模块将输入的有符号定点数由原码先转换为补码,进行补码加法后,再将结果转换为原码。其中原码与补码的转换通过同步电路来实现,而加法过程通过异步电路来实现。加法模块通过2个时钟周期完成一次有符号加法运算。乘法模块采用移位加法实现,使用9位小数精度的97提升变换系数。对每一级变换,均配上一个计算缓存模块,用于处理列变换前边界。行变换和列变换都通过镜像的方式处理边界。系统的输入、中间计算以及输出的数据均采用定点数,分为小数位宽和整数位宽,默认为16位小数+16位整数,经测试此精度下逆变换后的还原图像的PSNR可达108dB。计算模块和缓存模块所采用的位宽可分开调整,提升计算模块的精度可减少误差,降低缓存模块的精度,可在尽量降低误差影响的前提下,节省系统资源。列缓存模块内的10个FIFO模块,5个用来存储行变换高频结果,5个用来存储行变换低频结果。每5个FIFO首尾相连,上一个FIFO输出数据的同时,输出数据也被下一个FIFO存储,通过这种方式来更新FIFO内存储的数据。
上述设计3中,小波变换系统与外部系统结合的特点是:该套系统整体设计稳定,可随意暂停,输出数据没有延迟。系统使用AXI4-Stream协议,通过两个通道与Zynq芯片上的ARM处理器运行的Linux系统相连。一个通道从Linux传输图像数据到系统,其中Linux方为Master,系统方为Slave;另一个通道从系统回传计算结果到Linux,其中系统方为Master,Linux方为Slave。整个处理过程分为两个阶段:数据传输与计算阶段、后处理阶段。在数据传输与 计算阶段中,Linux主导图像数据传输,数据一边输入系统一边计算并将结果回送到Linux。Linux可随时暂停图像数据传输(例如因为网络I/O、文件I/O等原因),系统同时暂停计算与结果的回传,直到Linux恢复数据传输。当Linux传输完一副图像的数据后,进入后处理阶段。此时系统继续完成剩余计算并将结果回传Linux。
本发明优点在于:
通过行缓存模块和列缓存模块的高效调度与利用,实现了小波变换计算模块的时分复用。该套小波变换系统,仅通过一套计算系统,即一个行变换模块和一个列变换模块,便可实现多级二维小波变换。
系统整体采用模块化的设计思想,对于不同的需求,可更换相应的模块,但并不影响时分复用的结构。例如将系统从97提升式小波变换转化为53提升式小波变换时,仅需要调整计算模块和缓存模块,而只需要一套计算系统的结构不会改变。系统仍可以通过时分复用的方式,仅通过一套计算系统,完成多级小波变换。
该套系统每做一级小波变换,按照当前级数的行宽,仅需要两行大小的行缓存模块和五行大小的列缓存模块,以及一个一行大小的计算缓存模块。共八行大小的缓存空间,节省了FPGA上宝贵的存储资源。以1280×800的图像为例,做第一级变换需要8×1280×32bit的缓存空间,做第二级变换需要8×640×32bit的缓存空间,做第三级需要8×320×32bit的缓存空间,依此类推。需要做多少级变换,则只需要添加相应的缓存模块,并配合一定的控制即可,不需要添加其他计算模块。
由于系统采用时分复用设计,小波变换的多级变换结果是一起输出的,而不是要等待上一级变换结束后,才开始进行下一级变换。每当上一级变换完成2行的列变换后,便进行一次当前级的变换。在图像数据完全输入后,经过几行数据个数的延迟,便可输出所有的变换结果。
该系统支持AXI4-Stream协议,可在Zynq系列FPGA上,与Linux系统完 成协同运行。Linux系统可连续、高速的将图像数据传送给FPGA上的小波变换系统,小波变换系统随着图像的传输,边接收边处理,将变换结果回传到Linux系统,实现软硬件的无缝衔接。
本发明中的基于Zynq系列FPGA的时分复用小波变换系统,已在Zedboard开发板上实现处理图像的四级二维小波变换系统。板上Zynq芯片的FPGA部分时钟频率是100MHz,硬件资源消耗不超过总资源的40%;ARM部分运行Linux系统,通过网络接收图像并送入小波变换系统内,变换结果回传Linux系统并通过网络传回用户端,形成一套联网的多级小波变换处理平台。
具体实施方式
用户通过网络,将图像的二进制文件传入Zedboard上的Linux系统中,Linux系统将图像数据,通过AXI4-Stream协议,传入FPGA上的小波变换系统。小波变换系统作为Slave端口,接收图像数据,并开始进行变换。变换与图像的输入同时进行。
在第一行图像数据传入小波变换系统后,两个第一级行缓存模块同时存储该行数据。在第二行数据传入的同时,两个行缓存模块一边输出第一行数据,一遍缓存第二行数据。一个行缓存模块输出奇数位数据,另一个输出偶数位数据。行变换结束后,结果存储在列缓存模块。在每行数据的开端和末尾,均通过镜像的方式处理边界问题。
第一行行变换结果的高频数据,存储在第一级列缓存模块的第一个高频FIFO中,低频数据存储在第一级列缓存模块的第一个低频FIFO中。待第二行行变换结果输出时,其高频数据存储在第一级列缓存模块的第一个高频FIFO中,而第一行行变换结果的高频数据被推送到第二个高频FIFO中,低频数据相同, 依此类推。
在列缓存模块存满第一级变换的5行行变换结果后,开始列变换。前5行的列变换结束后,列缓存模块每刷新两行数据,便进行一行的列变换。在处理前5行行变换结果时,通过镜像的方式处理前边界问题,并通过计算缓存模块缓存计算结果。在处理每一级变换的最后4行行变换结果时,通过镜像整行数据,完成后边界的处理。
在列变换模块输出前两行列变换结果时,其中分为LL,HL,LH,HH四个子带。系统将LL子带数据,存入第二级行缓存模块。由于每一级的两个行缓存模块每个时钟提供两个数据给行变换模块,行变换模块计算该级的数据只需要半行个数的时间。在两个第一级行缓存模块输出完第六行图像数据,还没有输出第七行图像数据的这段时间里,第二级行缓存模块输出第一级变换结果的第一行数据给行变换模块,进行第二级行变换。
第二级行变换结果送入第二级列缓存模块。由于列缓存模块每刷新两行数据才进行一行的列变换,列变换模块在处理第一级列缓存模块的输出数据时,中间会有一行个数的空闲时间。在列变换模块处理完第一级列缓存模块输出的9到13行行变换结果后,尚未处理11到15行行变换结果的这段时间里,第二级列缓存模块输出数据给列变换模块,完成第二级变换。
在输出的前两行第二级小波变换结果中,LL子带数据将会被送入到第三级行缓存模块中,在第二级行变换的空闲时间里完成第三级行变换。第三级行变换结果再送入第三级列缓存模块中,在第二级列变换的空闲时间里完成第三级列变换,结果中LL子带再送入第四级行缓存模块中,依次类推。
各级变换结果通过高频和低频两路通道输出。由小波变换系统作为Master,将结果按照AXI4-Stream协议,回传Linux系统。在图像数据完全送入后,系统再经过几行短暂的延迟完成剩余计算,便可完成一幅图像的完整变换。结果文件再经由网络,传回用户电脑上,完成整个多级小波变换过程。
Claims (2)
1.一种基于Zynq系列FPGA的时分复用二维小波变换系统,其特征在于,使用一个行变换模块和一个列变换模块,高速稳定的实现多级97提升式小波变换,并通过将FPGA与Linux系统结合,实现图像数据通过网络传入,变换结束后通过网络传出的系统架构;其中,
所述时分复用二维小波变换系统通过行缓存模块、行变换模块、列缓存模块、列变换模块实现多级小波变换;多级小波变换结果相互交错输出,在图像数据完全送入后经过几行延迟,输出全部变换结果;
系统使用一个行变换模块和一个列变换模块,实现多级97提升式小波变换系统;系统每做一级小波变换,按照当前级数的行宽,需要两行大小的行缓存模块和五行大小的列缓存模块,以及一个一行大小的计算缓存模块;
行缓存模块对每一级变换,均配上两行长度的行缓存,行的长度为当前级数的小波变换所对应的行宽;两行缓存中存储同一行的输入数据,但一行缓存输出奇数位的数据,另一行缓存输出偶数位的数据,每个时钟送出两个数据给行变换模块;
行变换模块每个时钟接收两个数据,通过半行时间完成一级一行的行变换,并在剩下半行的时间内进行下一级的行变换;每一级行变换时间为上一级的一半;行变换模块在第一级一行的时间内,可完成任意级数一行的行变换;
列缓存模块内缓存5行行变换结果,每行的高频部分和低频部分是分开缓存的,有10个FIFO模块,5个用来存储行变换高频结果,5个用来存储行变换低频结果;5个高频FIFO首尾相连,5个低频FIFO首尾相连,上一个FIFO输出数据的同时,输出数据也被下一个FIFO存储,通过这种方式来更新FIFO内存储的数据;
列变换模块在列缓存模块每刷新两行数据后进行一行的列变换,列变换模块在处理每一级列缓存模块的输出数据时,会产生当前级数一行个数的空闲时间,在每一级列缓存模块输出的9到13行行变换结果后,尚未处理11到15行行变换结果的这段时间里,列变换模块开始进行下一级的列变换,后每级列变换模块刷新两行便进行该级列变换;
系统输出数据没有延迟,使用AXI4-Stream协议,通过两个通道与Zynq芯片上的ARM处理器运行的Linux系统相连;一个通道从Linux传输图像数据到系统,其中Linux方为Master,系统方为Slave;另一个通道从系统回传计算结果到Linux,其中系统方为Master,Linux方为Slave;整个处理过程分为两个阶段:数据传输与计算阶段、后处理阶段;在数据传输与计算阶段中,Linux主导图像数据传输,数据一边输入系统一边计算并将结果回送到Linux;Linux可随时暂停图像数据传输,变换系统同时暂停计算与结果的回传,直到Linux恢复数据传输;当Linux传输完一副图像的数据后,进入后处理阶段;此时系统继续完成剩余计算并将结果回传至Linux。
2.根据权利要求1所述的基于Zynq系列FPGA的时分复用二维小波变换系统,其特征是,系统中加法模块特点具体包括;
本系统中所使用的加法模块,将输入的有符号定点数由原码先转换为补码,进行补码加法后,再将结果转换为原码,其中原码与补码的转换通过同步电路来实现,而加法过程通过异步电路来实现;加法模块通过2个时钟周期完成一次有符号加法运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510922444.5A CN105611115B (zh) | 2015-12-15 | 2015-12-15 | 一种基于Zynq系列FPGA的时分复用二维小波变换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510922444.5A CN105611115B (zh) | 2015-12-15 | 2015-12-15 | 一种基于Zynq系列FPGA的时分复用二维小波变换系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105611115A CN105611115A (zh) | 2016-05-25 |
CN105611115B true CN105611115B (zh) | 2019-03-05 |
Family
ID=55990634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510922444.5A Active CN105611115B (zh) | 2015-12-15 | 2015-12-15 | 一种基于Zynq系列FPGA的时分复用二维小波变换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105611115B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448871A (zh) * | 2003-04-07 | 2003-10-15 | 西安交通大学 | 内在并行的二维离散小波变换的vlsi结构设计方法 |
CN1450803A (zh) * | 2003-03-28 | 2003-10-22 | 清华大学 | 基于“空间组合推举体制”的小波变换ip核及其变换方法 |
CN102751963A (zh) * | 2012-07-18 | 2012-10-24 | 上海交通大学 | 基于乘累加器环的可配置离散小波变换电路及其实现方法 |
-
2015
- 2015-12-15 CN CN201510922444.5A patent/CN105611115B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1450803A (zh) * | 2003-03-28 | 2003-10-22 | 清华大学 | 基于“空间组合推举体制”的小波变换ip核及其变换方法 |
CN1448871A (zh) * | 2003-04-07 | 2003-10-15 | 西安交通大学 | 内在并行的二维离散小波变换的vlsi结构设计方法 |
CN102751963A (zh) * | 2012-07-18 | 2012-10-24 | 上海交通大学 | 基于乘累加器环的可配置离散小波变换电路及其实现方法 |
Non-Patent Citations (2)
Title |
---|
《9_7提升小波变换图像处理算法的高速FPGA实现》;王巍等;《微电子学》;20091231;第39卷(第6期);正文第852-855页 |
《基于FPGA的9_7小波变换算法实现》;王雨等;《光学仪器》;20141031;第36卷(第5期);全文 |
Also Published As
Publication number | Publication date |
---|---|
CN105611115A (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104899182B (zh) | 一种支持可变分块的矩阵乘加速方法 | |
CN1103951C (zh) | 用于自定时算法执行的装置和方法 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN108733348A (zh) | 融合向量乘法器和使用其进行运算的方法 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
CN103677739A (zh) | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 | |
CN110276447A (zh) | 一种计算装置及方法 | |
CN103369326A (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
CN105183425A (zh) | 一种具有高精度低复杂度特性的固定位宽乘法器 | |
CN107092462B (zh) | 一种基于fpga的64位异步乘法器 | |
CN105045566A (zh) | 一种嵌入式并行计算系统及采用其的并行计算方法 | |
CN105611115B (zh) | 一种基于Zynq系列FPGA的时分复用二维小波变换系统 | |
CN108108812A (zh) | 用于卷积神经网络的高效可配置卷积计算加速器 | |
WO2022205197A1 (zh) | 一种矩阵乘法器、矩阵计算方法及相关设备 | |
Guo et al. | Truncated MCM using pattern modification for FIR filter implementation | |
CN104901651A (zh) | 一种数字滤波器的实现电路及方法 | |
CN103914277B (zh) | 一种基于改进的Montgomery模乘算法的可扩展模乘器电路 | |
Wang et al. | A DSP48-based reconfigurable 2-D convolver on FPGA | |
Mohanty et al. | Parallel and pipeline architectures for high-throughput computation of multilevel 3-D DWT | |
Makryniotis et al. | Implementation of a motion estimation hardware accelerator on Zynq SoC | |
Chakraborty et al. | A memory efficient, high throughput and fastest 1D/3D VLSI architecture for reconfigurable 9/7 & 5/3 DWT filters | |
Mohanty et al. | Efficient multiplierless designs for 1-D DWT using 9/7 filters based on distributed arithmetic | |
Ikegaki et al. | 3D-DCT Processor and its FPGA Implementation | |
CN108153709A (zh) | 一种任意点数fft的可重构计算结构的调度方法 | |
WO2021189710A1 (zh) | 一种反馈装置及fft/ifft处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |