基于FPGA小波变换核的设计与实现
0 引言
小波变换具有良好的时频局部特性和多分辨率分析特性,因而在现代信号处理,特别是在图像数据压缩和处理中得到了广泛的应用。传统的小波变换处理方法是将外部输入的图像数据以帧为单位先被存在RAM里,然后调用存储空间里的二维数组地址进行数据读写和运算,计算结果写入一块新的存储空间以备进行列变换。这里小波的行变换和列变换采用的都是卷积算法。这种方法消耗的资源多、速度慢,而且设计的复杂性高,因此已被淘汰[1]。鉴于此,Daubechies等人用提升算法来实现小波变换[2]。提升算法计算量小,实现容易,这是其最大的优势。新一代静止图像压缩标准JPEG2000也将小波变换纳入标准之中,并采用二维离散小波变换(2D-DWT)作为系统编码算法的核心[3-5]。
1 二维小波变换
二维小波变换可以通过一次行变换和一次列变换来实现[6],对输入图像先进行行变换,将行变换的结果存入寄存器中,然后再对寄存器中的数据进行列变换,如图1所示.
小波变换中需要即时完成大量的乘法和加法运算,数据读写操作等,只有实现行列变换并行的处理方式,才能从根本上解决限制系统速度的瓶颈。所以本文提出的设计思想是待外部数据输入后马上进行行变换,得到的中间结果进行片内缓存,无需等到一帧图像的行变换完成即可启动列变换,从而达到行列并行的目的,而且多级小波变换之间也是并行的关系,从而大大提高了系统运行速度,降低了存储空间的要求,系统总体框图如图2所示。
目前二维小波变换多采用逐行处理方式,本文采用了双行并行处理方式。两种方案均采用时分复用和流水结构,实现了行列变换的并行执行,但是其各自又有不同的特点。逐行处理方式采用的是单行的串行输入方法,在输入端图像数据可以直接输入,数据流较为清晰,但是时序控制较为繁琐,特别是在系数运算时由于采用了一个时钟来处理“加-移位-加”的操作,使得程序的主频得不到提高。适合主频不高时(20M以下)采用,片外只需要2片SRAM即可。双行并行处理方式采用了两行并行的高速设计,分时复用行处理器,使行处理器和行列处理器之间实现了并行处理。算法上比较巧妙,而且双行并行的频率可以达到50M以上,转化为单行传输相当于在100M。因为整个电路结构非常规整,并且“加-移位-加”使用了3级流水来实现,在高速图像处理时有非常明显的优势。但是片外需要较多的SRAM缓存,时序的处理也要相当小心。
2 双行并行小波变换核的设计
双行并行的提升小波变换核的设计在边界数据处理,乘法器的优化方面与逐行处理方式采用完全相同的办法,主要的区别表现在数据处理的方式上。为了减少行缓存以及加快硬件电路的处理速度,采用一次输入两行数据,也就是说一个时钟输入两个像素。双行并行的处理方式极大地提高了数据处理的速度。下面分别给出行变换和列变换的组织结构。
相关文章
- 2023-04-21非金属热电偶在高温探测中的应用研究
- 2023-06-02浅述经纬仪检定中望远镜常见故障及解决方法
- 2023-07-20用功率谱密度函数评价光学面形中频误差特性
- 2023-03-26应用SolidWorks进行焊接结构设计
- 2023-05-17指纹识别技术门禁应用的解决方案
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。