本站小编为你精心准备了高效低存储DWT的结构设计参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
《西安电子科技大学学报》2016年第二期
1DWT的原理及分析
1.1DWT提升结构原理相比于传统的卷积结构,DWT提升结构在内存利用率和读取次数上都具有优势。提升小波的原理是将多相位小波滤波矩阵分解为两个连续的上三角和下三角矩阵以及一个对角矩阵。CCSDS-IDC采用的基于提升的9/7DWT,其具体实现方式如公式(2)所示。在公式(2)中,x(n)为输入的图像数据,y(n)表示按交织方式存放的小波系数,其中y(2n)为低通系数,y(2n+1)为高通系数,常系数1.586,0.053,0.883,0.444,K1.149。图像的DWT行变换与列变换都需要完成与公式(2)相同的运算过程,行变换之后的结果再经过列变换才能完成一级DWT,一级DWT之后可以得到HH、HL、LH和LL共四个小波子带,选择其中的LL子带进行下一级DWT处理。依此方式,经过三级DWT可以得到10个子带,分别为三级输出的HH,HL,LH等9个子带以及第三级输出的LL3子带。10个子带的小波系数按照分层树的结构形式组织成独立的单元块,每个单元块中包含64个小波系数,包括1个DC系数(LL3子带)和63个AC系数(来自其余9个子带)。
1.2DWT多级变换的原理分析
DWT的第一级变换是对原始图像进行处理,而第二级变换是对第一级变换后得到的LL1子带进行处理,LL1子带的宽度和高度分别是原始图像宽度和高度的1/2,其分辨率大小是原始图像的1/4。对于分辨率为NN的图像来说,若采用行列并行结构,那么完成第一级DWT需要近2N个时钟,而对于第二三级DWT来说,其需要消耗的处理时间分别约为2N/4和2N/16个时钟。显然,第二三级所需要的处理时间之和小于第一级所需的时间,即222N/4+N/16<N。由此可知,从处理时间上看,将第二三级DWT可以分时复用同一个DWT模块,并可以与第一级DWT并行处理。实际上,由等比数列的求和公式可知,第二级及以上级的DWT所消耗的处理时间总和永远不会超过2N个时钟,即永远不会超过第一级DWT消耗的时间,所以第二级及以上级二维DWT都可以时分复用同一个变换模块。基于此分析,本文设计了第二三级DWT时分复用变换模块的VLSI结构,该结构具有良好的扩展性,只需要简单的控制参数修改便可适用于变换等级为二级以上的任意多级小波变换,也可应用于与9/7DWT形式类似的5/3DWT。
2多级复用高速DWT的VLSI结构
2.1乘加器复用的DWT单步提升结构对于DWT的提升结构来说,其各步提升均可采用同一种单步提升结构。这一点从公式(2)所示的四步提升公式也可以看出,即各步提升的计算过程近似相同,均含有两次加法和一次乘法运算。其区别仅是各步输入的乘法系数互不相同。第一步提升过程的计算公式如公式(3)所示:通过简单变形,可以看出该提升过程可以分为公式(4)所示的两次计算,通过采用两次计算方式,可以将乘法器和加法器进行时分复用,通过选择控制的方式由同一电路结构完成两次计算。基于以上分析,我们设计了如图2(a)所示的电路结构,该结构由5个选择器、1个移位器、1个乘法器、1个加法器和1个寄存器构成。当两个数据到来时,该结构开始进行运算,将运算的中间结果k1存入图2(a)所示的寄存器中。在此结构中,对需要进行边界拓展的数据进行左移一位的操作。图2(a)所示的DWT单步提升结构可划分为两个组成部分,即存储和运算部分,其中的运算部分是虚线标注的运算处理单元(ProcessingElement,PE)。对于行变换和列变换来说,它们的PE结构相同,只是所用的存储结构不同。行变换使用D触发器存储数据,而列变换使用双端口随机存取存储器(RandomAccessMemory,RAM)存储数据。在XilinxVirtex4之后的FPGA型号系列中,内嵌有DSP48的IP(IntellectualProperty)硬核可以实现乘加运算,具有更高的速度性能、更低的功耗和更佳的资源开销,用其代替图2(a)中的乘法器和加法器,可以得到速度更快、面积更小的PE硬件结构,如图2(b)所示。
2.2行变换电路结构9/7dwt的4步提升计算均可使用相同的单步提升PE结构来完成,仅仅是输入数据和提升常系数不同。为了提高4步提升的计算速度,我们通过将4个独立的单步提升PE结构级联起来并行计算,便可实时地实现一次行变换,如图3(a)所示。由图2(b)可知,数据输入到数据输出之间存在较长的存组合逻辑路径,如果将两个PE直接级联将形成一块路径更长的组合逻辑,这会导致组合逻辑时延变大,降低系统的最大时钟频率。为了避免该问题,我们在图3(a)所示的行变换结构中加入了流水线(Pipeline)设计,通过插入D触发器来缩短组合逻辑路径,即在PE之间使用D触发器进行连接。图3(a)中的奇偶标识信号将输入数据区分成两部分,分别为偶数位置数据x(2n)和奇数位置数据x(2n+1)。第一步提升输出偶数位置的数据仍为x(2n),而奇数位置的数据是y(2n+1)。当输入第一行第1个数据s时,数据存入第一个PE左端的寄存器中。输入第2个数据d时,读取上次存入寄存器中的数据s,用s与d做运算得到第一步提升的中间结果inv,再将inv重新存回该寄存器中,同时,行变换的第二步提升启动,将s写入第二个PE左端的寄存器中。以此方式按行进行小波变换。
2.3列变换电路结构行变换结果经过两个寄存器进入列变换模块,为了实现行列并行运算,列变换需要对整行数据进行操作,因此,输入数据的缓存和中间结果的缓存不能使用寄存器存储,而需要使用双端口RAM存储整行数据。当输入第二行第一个数据时开始进行列变换,因此,RAM只需要缓存一行数据。列变换结构如图3(b)所示,对于第二级及以上级DWT,RAM需要缓存各级的中间结果,因此需要标记各级DWT的起始地址。
2.4多级复用DWT及小波系数缓存处理电路结构行变换结构与列变换结构级联实现一级DWT。由1.2节分析可知,高级别DWT可时分复用同一个DWT模块来实现,该时分复用方法会增加一些控制模块的逻辑资源,相比于一级DWT来说,所增加的逻辑资源是非常少的。复用控制模块功能主要包括产生奇偶标识信号、级别标识信号和RAM控制信号。因为高级别DWT会共用相同的数据线,所以需要一个级别标识信号来表明当前进行的DWT级别。本文所实现的多级DWT复用结构,通过简单的参数修改,便可应用于变换等级为二级以上的任意多级小波变换。根据分块比特平面熵编码的特点,当LL3数据到来时即可开始进行熵编码。换句话说,缓存少量的小波系数便可将其按特定顺序输出给熵编码器进行处理,而不需要等到所有小波系数都得到之后才开始熵编码。因此,本文将DWT与熵编码之间的缓存使用片内双端口RAM来实现,而不用片外DRAM存储器,这样可以节省大量的片外存储资源。由于使用RAM需要额外的控制逻辑,RAM的个数应该尽量少。本文将各级输出的LH和HH分量合并到一起,从而减少RAM的个数,因此本文共用了3个双端口RAM(如图4所示的RAM5,RAM6,RAM7)来缓存DWT最终得到的小波系数,并在条件满足时及时地将这些小波系数输出给后级熵编码器进行处理。我们将RAM5划分为六块存储区域,分别存储各级输出的HH和LH子带数据,将RAM6划分为三块存储区域,存储各级输出的HL子带数据,而RAM7只存储第三级输出的LL3子带数据。小波系数缓存处理结构如图4所示,通过子带分离器将输出的小波系数分离,并乘以相应的K系数。通过写控制器将数据写入对应的存储器中,并且三个RAM写入数据时的地址变化由同一份逻辑产生,可以进一步节约逻辑资源。读控制器根据LL3同步信号判断读取的起始时间,三个存储器的读取结果进行或运算作为进入熵编码器的输入数据,其同步信号是通过将各个存储器读使能信号相或运算并延迟一个时钟得到的。
3性能与仿真
将本文提出的9/7DWT提升结构与其他文献所提出的结构进行对比,在逻辑规模和计算时间等方面的对比结果如表1所示。其中Tm和Ta分别代表乘法器和加法器时延,图像的分辨率为N*N。由表1可以看出,本文结构所需存储器、加法器和乘法器都相对较少,关键路径也很短。相对于乘法器和加法器使用较少的文献[11]-[13]来说,其输出时延也是最短的。
实验结果本文所提出的VLSI结构在Xilinx型号为XC4VSX55的FPGA中得到了硬件实现,具有95.91MPixels/s的数据处理性能。表2为本文与其它文献slices资源的对比情况,由表2可以看出,本文在分辨率、位宽和级数等指标都较大的情况下,消耗FPGA的slices资源最少,且不需要片外缓存。由此可见,本文结构有明显的资源优势。
4结束语
本文通过DWT提升结构复用和级间复用,在保证数据处理速度的同时减少了逻辑资源的使用。此外,根据分块比特平面熵编码的特点,我们改变了传统的DWT输出数据缓存处理方式,将输出数据所需的片外存储资源用片内少量RAM缓存替换,在不降低处理速度的情况下,节省了片外存储,减少了系统体积和功耗,非常适合空间环境下图像数据高速处理的应用需求。
作者:董明岩 雷杰 王柯俨 李云松 单位:西安电子科技大学综合业务网国家重点实验室