You are on page 1of 73

高 性能离 散小波 变换的 VLSI设

设计

High Performance VLSI Design for


Discrete Wavelat Transform

学科专业:微电子学与固体电子学
作者姓名:高家明
指导教师:梁 煜 副教授

天津大学微电子学院
二零一七年十月
独创 性声 明

本 人声 明 所 呈 交 的 学 位 论 文 是 本 人 在 导 师 指 导 下 进 行 的 研 宄 工 作 和 取 得 的


研 宄成 果 ,
除 了 文 中 特 别 加 以 标 注 和 致 谢之 处 外 , 论 文 中 不包 含其 他 人 已经 发


表 或撰 写 过 的 研 究 成 果 , 也 不 包 含 为 获得 天 津 大 学 或 其 他教 育 机 构 的 学 位或 证


书 而 使用 过 的 材料 与我 同 工 作 的 同 志 对 本 研 宄 所 做 的 任 何 贡献 均 己 在 论 文


中 作 了 明 确 的说 明 并 表 示 了 谢 意 

学 位 论 文 作 者 签 名 签 字 日 期 >:

7 年 /
v 月 y 

学 位 论 文 版 权使 用 授 权 书


本 学 位 论文 作 者 完 全 了 解 天 津 大 学 有 关 保 留 、 使 用 学 位论 文 的 规 定 。
特授


权 天 津 大 学 可 以 将 学 位 论 文 的 全 部 或 部 分 内 容 编 入 有 关数 据 库 进 行 检 索 , 


采用影 印 、 缩 印 或 扫 描 等复 制 手段 保 存 、 汇编 以供查 阅和 借 阅 。 同 意学校 向 国


家有 关 部 门 或 机构 送 交 论文 的 复 印 件和 磁 盘 

( 保 密 的 学 位 论 文 在 解 密 后 适 用 本授权 说 明 

学 位 论文 作 者 签 名 导 师签 名 

签字 日 期 > :

7 年 /
〇 ■ 月 孓 日 签字 日 期 年 p 月 S 


摘 要

随着科学技术日新月异的发展,我们已经身处信息化数字化的全新时代。
在数字化的信息时代,信号处理技术已经成为了越来越热门的研究方向,其中
广泛应用于信号分析、图像压缩、视频编码等领域的离散小波变换便是其中重
要的研究课题。由于离散小波变换具有计算复杂度高、存储需求大等特性,通
过硬件实现更加有利于系统性能提升,因此进行离散小波变换的VLSI结构设计
具有重要意义。
本文将结合整体应用环境,基于离散小波变换的提升算法进行VLSI的硬件
优化设计。本文首先比较详细的介绍了小波变换的基本理论和发展研究现状,
分析已有结构的优劣与当前研究的瓶颈。之后分别提出优化设计的单级架构和
多级二维离散小波变换架构,单级架构引入了CSD结构以降低系统的关键路径
延时,同时降低了资源消耗。多级结构通过数据错位扫描和内部运算折叠结构,
改善了展开结构下时钟信号不匹配的问题,降低了系统的资源消耗和系统复杂
度。
在完成离散小波变换的VLSI设计后,本文基于JPEG2000图像压缩系统对设
计进行仿真与功能验证,并于FPGA平台进行压缩测试。仿真与测试结果表明,
本文设计的VLSI 架构能够高效实现离散小波变换,满足应用需求。

关键词: 离散小波变换,VLSI设计,JPEG2000,FPGA

I
ABSTRACT

With the rapid development of science and technology, we have been in a new
era of information and digitalization. In the digital information age, signal process-
ing has become a more and more popular research direction. In this direction, the
discrete wavelet transform(DWT), which is widely used in signal analysis, image com-
pression and video coding, is one of the most hot research topics. Because of its high
computational complexity and large storage requirement, hardware realization of dis-
crete wavelet transform is more conducive for the improvement of system performance.
Therefore, VLSI structure design for the discrete wavelet transform is of great signifi-
cance.
Taking the overall application environment into account, this paper will optimize
the hardware design of VLSI of the discrete wavelet transform based on the lifting algo-
rithm. Firstly, the basic theory and the development of wavelet transform are introduced
in this thesis. Simultaneously, we find the bottleneck of the current study through the
analysis of the merits of the existing structure. Then, the optimal design of single-level
architecture and multi-level two-dimensional discrete wavelet transform were raised.
The single-level architecture introduces the CSD multiplier to reduce the critical path
delay and system resource consumption. The multi-level architecture adjusts the or-
der of input data and uses the internal folded structure to decrease the consumption of
resources and the complexity of the system.
Finally, this paper simulates and implements the VLSI design of DWT on the basis
JPEG2000 image compression system and tests the code on the FPGA platform. The
simulation and test results indicate that the VLSI architecture design in this paper can
realize the discrete wavelet transform efficiently and meet the application requirements.

: Discret Wavelat Transform, VLSI design, JPEG2000, FPGA


KEY WORDS:

II
目 录

第 1 章 绪 论 ················································································································· 1
1.1 研究背景 ········································································································ 1
1.2 离散小波变换应用 ······················································································· 1
1.3 JPEG2000静态图像编码 ············································································· 3
1.4 论文主要工作及结构安排 ·········································································· 4
第 2 章 二 维 离 散小 波 变 换 ······················································································· 7
2.1 离散小波变换算法 ······················································································· 7
2.2 研究现状分析 ······························································································· 9
2.2.1 算法结构优化 ···················································································· 10
2.2.2 数据扫描优化 ···················································································· 11
2.2.3 关键路径优化 ···················································································· 12
第 3 章 单 级 离 散 小波 变 换 优 化 ·············································································· 13
3.1 CSD乘法器 ···································································································· 13
3.2 乘法系数设计 ······························································································· 14
3.2.1 选用公式 ···························································································· 14
3.2.2 待变换乘法系数 ··············································································· 16
3.2.3 常数乘法器设计 ··············································································· 16
3.3 二维变换结构设计 ······················································································· 20
3.3.1 数据扫描方式 ···················································································· 20
3.3.2 模块设计 ···························································································· 22
3.3.3 整体设计 ···························································································· 24
3.4 系统资源估计与对比 ··················································································· 25
3.4.1 资源估计 ···························································································· 25
3.4.2 资源对比 ···························································································· 27
第 4 章 多级 离 散 小 波变 换 优 化 ·············································································· 29
4.1 多级变换结构 ······························································································· 29
4.1.1 折叠结构与展开结构 ······································································· 29
4.1.2 并行结构与非并行结构 ·································································· 31
III
4.2 算法与数据扫描 ··························································································· 31
4.2.1 算法选择 ···························································································· 31
4.2.2 数据扫描方式 ···················································································· 33
4.3 多级结构设计 ······························································································· 34
4.3.1 首级结构设计 ···················································································· 34
4.3.2 次级结构设计 ···················································································· 37
4.3.3 第三级结构设计 ··············································································· 42
4.3.4 多级结构设计 ···················································································· 45
4.4 系统资源估计与对比 ··················································································· 46
4.4.1 系统资源估计 ···················································································· 46
4.4.2 系统资源对比 ···················································································· 47
第 5 章 基 于 JPEG2000的
的结 构 测 试 ······································································· 49
5.1 JPEG2000算法简介 ······················································································ 49
5.2 功能仿真验证 ······························································································· 50
5.2.1 CSD结构功能验证 ··········································································· 50
5.2.2 内部折叠结构功能验证 ·································································· 52
5.3 图传系统结构 ······························································································· 54
5.3.1 采集模块 ···························································································· 54
5.3.2 压缩模块 ···························································································· 56
5.3.3 传输模块 ···························································································· 56
5.4 板级模块测试 ······························································································· 57
第 6 章 总 结 与 展 望 ···································································································· 59
6.1 总结 ················································································································· 59
6.2 展望 ················································································································· 60
参 考 文 献 ·························································································································· 61
发 表 论 文 和参 加 科 研 情 况说 明 ·················································································· 65
致 谢 ······························································································································ 67

IV
第 1 章 绪论

第 1 章 绪论

1.1 研究背景

随着科学技术的发展与进步,信息时代的到来,数字智能产品的兴起以及
互联网覆盖的普及,人们获得信息的途径形式越发的多种多样。在数字化信息
如图像和视频加速融入我们当代人生活的同时,人们对于这些信息的质量要求
也在不断提高。因此高清图像视频大信息量的存储与传输成为了一个不容忽视
的问题。各种图像或视频压缩标准如JPEG、JPEG2000和MPEG4等对大量信息下
的高效数据压缩为这一问题的解决提供了越来越多的解决方案,也得到了越来
越广泛的关注与研究。数字信号变换如傅里叶变换、余弦变换以及小波变换等
便是这一领域中较为核心与热点的研究方向。
经过多年的研究发展,小波变换已经由理论研究阶段全面进入了实际应
用阶段,在众多领域得到广泛应用。这其中,离散小波变换(Discrete Wavelet
Transform,DWT)广泛应用于音频信号处理、图像压缩、视频编码、数字水印以
及模式识别等众多技术领域,是JEPG2000 图像压缩标准和MPEG4 视频压缩标
准的推荐核心算法。但是离散小波变换数据处理密集,运算复杂度交高,运算
过程消耗时间和资源均较大。这些特性对软件实现小波变换进行数据处理造成
了一定的难度,难以实时性处理的要求。而硬件电路实现具有处理速度快、并
行度高、资源更加节约等众多优势,因此对离散小波变换进行基于超大规模集
成电路(Very Large Scale Integrated circuits,VLSI)的硬件结构设计与优化,以满
足当前应用背景下对资源消耗和处理时间的要求具有非常重要的意义。
专用集成电路(Application Specification Integrated Circuits,ASIC)的开发与
设计有着成本高、风险大、开发周期长的问题,而基于FPGA(Field Programmable
Gate Array,FPGA)的硬件设计则可以使得VLSI设计得到充分的验证,极大的增
加了ASIC 设计的成功率。同时由于FPGA 具有高速高可靠性等优势使其在众多
领域有直接应用,因此基于FPGA 对离散小波变换进行VLSI设计不仅具有科研
价值同样具有商业价值。

1.2 离散小波变换应用

连续小波变换具有很高的信号分析与处理能力,但是其计算量极大且包含
大量冗余信息因此不利于图像压缩等实际应用和硬件数字结构设计。为便于硬
件设计实现,将连续小波变换进行离散化处理后得到离散小波变换,并进一步

1
天津大学硕士学位论文

发展为多维度多分辨率级的小波变换算法。在现阶段实际工程应用中,离散小
波变换根据维度与分辨率级数通常可以作出如图1-1所示的划分,其中二维变换
被广泛应用在图像、视频编解码等二维信号处理领域。

(a) 单级一维变换 (b) 多级一维变换

(c) 单级二维变换 (d) 多级二维变换

图 1-1 离散小波变换分类

小波变换的主要优势在于,其继承并发展了局部化变换的思想,在时域和
频域均具备较好的局部化特性,因此基于小波变换进行的数据压缩能够进行感
兴趣区域(Region of Interest,ROI)编码。此外,实际应用中的离散小波变换具有
多分辨率分析的能力,即将原始数据分为不同分辨率上的一系列信号,然后根
据实际应用需求对适合的分辨率子带信号进行选择或者在多级分辨率上同时处
理数据。多分辨率分析会对信号进行多级分离,多级分离时只对每一级的低频
部分进行进一步的分解,而不会对存储细节信息的高频部分进行处理 [1] ,如应
用于JPEG2000的多级二维离散变换结构,下一级变换处理只针对上一级的低频
分量LL进行进一步的小波变换。多分辨率分析的能力对于研究信号的局部特性
也有较大的推进,尤其对于非平稳信号区域的分析。同时,多分辨率变换使得
信号能量向低频子带集中的能力更优,对能量的集中性更强,这对于信号处理
和信息压缩等具有重要意义。
小波变换主要应用环境包括以下方面。
图像压缩变换。由于小波变换所具有的多分辨率处理和能量集中等特性,
JPEG2000图像压缩标准采用多级离散小波变换作为图像信息分离变换标准,其
中5/3离散小波变换被采纳为为无损压缩变换标准,9/7小波变换被采纳为有损压
缩变换标准。多级离散小波变换将原始图像信息多级分离后,为进一步的数据
压缩提供了多分辨率的待处理数据。
数字水印技术。基于离散小波变换数字水印把水印信息经过变换后嵌入多
媒体产品中可在一定程度上保护水印在进一步处理中的完整性,同时基于最小
可视差等原理在经多级分离的不同分辨率子带上嵌入强度大小互不相同的水印
2
第 1 章 绪论

信息也可以避免图像视觉质量被破坏 [2] 。基于离散小波变换的数字水印嵌入与


分离检测技术在与人类视觉系统相匹配同时也可以与JPEG2000、MPEG4等图像
或视频压缩标准相匹配兼容。此外基于小波变换的数字水印技术还能将水印信
息分散图像的多个尺度上,使得水印具有鲁棒性更强 [3] ,保真性更高。
医学图像处理。离散小波变换由于其特点及良好的压缩与图像分析效果,
正在逐步成为医学图像分析与图像压缩的主流变换手段之一 [4] 。在医学医疗图
像应用环境中,二维离散小波变换会将经扫描或超声得到的图像的主要信息和
能量集中于低频子带中,这一部分也被称为原始医学图像的逼近子图 [5] ,其他
三个子图分别被称为水平边缘细节子图、垂直边缘细节子图和对角边缘细节子
图。通过离散小波变换的数据分离可以使医学图像的主要信息更为集中,更加
便于图像的远程调用传输和针对不同信息的进一步分析。
此外,离散小波变换还在音频信号处理、视频压缩、数字信号去噪、特征
信息提取 [6] 等众多领域有着广泛的应用。

1.3 JPEG2000静态图像编码

JPEG2000(Joint Photographic Experts Group 2000, JPEG2000)静 态 图 像 压


缩 标 准 继 承 自JPEG(Joint Photographic Experts Group,JPEG)图 像 压 缩 标 准 [7] 。
JPEG本身作为优秀的图像压缩标准基于离散余弦变换(Discrete Cosine Transfor-
m,DCT)对图像进行有损压缩,在一般使用条件下效果良好。但是在码率较低
时会产生比较明显的方块效应 [8] ,且存在对高效无损压缩等要求的支持不足等
问题。因此,JPEG2000的提出在继承了JEPG 诸多优秀特性的前提下,通过引
入具有良好局部化分析特征的离散小波变换以及引入位平面熵编码等结构,相
较JPEG 获得了更高的压缩性能 [9] 。
与JPEG图像压缩标准相比,JPEG2000具有以下几方面的优势:在低比特率
情况下具有更为优越的压缩效果,同时能够有效消除JPEG压缩图像的“方块效
应”,使得观察者的主观感受更优;对无损压缩支持度更高,在无损压缩模式下
滤波重塑的图像在重构过程中无信号失真问题;由于离散小波变换具有多分辨
率分解特性,可支持进行图像渐进传输等。
此外,因为离散小波变换的能量高度集中于低频子带其余子带能量系数较
低,因此相较于离散余弦变换其能量集中性更优,再结合小波变换的多级分解,
使得JPEG2000的压缩性能高于JPEG。
JPEG2000标准推出之后,各类软硬件产品的研发也接踵而至如图1-2所
示。首先面市的是一系列的软件压缩产品如OpenJPEG、Jasper 和Kakadu等。不
过由于JPEG2000算法特点,在高速实时压缩领域软件的处理速度难以达到需
求,因此JPEG2000图像压缩标准的硬件编解码设计实现方案的研究得到了快

3
а㔤
⿫ᮓሿ⌒ਈᦒ

ཊ㓗а㔤
⿫ᮓሿ⌒ਈᦒ
天津大学硕士学位论文
⿫ᮓሿ⌒ਈᦒ

速发展,大量的企业和高校均投身其中。首款基于JPEG2000压缩与解压缩方案
অ㓗Ҽ㔤
⿫ᮓሿ⌒ਈᦒ
的ASIC芯片ADV202由ADI公司推出,支持无损5/3小波变换和有损9/7小波变换,
Ҽ㔤
之后在ADV202基础上又推出了ADV212芯片,相较ADV202的功耗降低了30%。
⿫ᮓሿ⌒ਈᦒ

ཊ㓗Ҽ㔤
而Ti、DSPWorx 等公司也均推出了自己的DSP商品。高校方面清华大学在863计
⿫ᮓሿ⌒ਈᦒ

划支持下自主研究开发了THJ2K 芯片,西安交通大学、华中科技大学、西安电
子科技大学等也在研制基于JPEG2000的图像压缩芯片方面取得了一定成果。

OpenJPEG

䖟Ԧ㕆⸱ Kakadu

Jasper

㕆⸱ᇎ⧠

୶ъ㣟⡷ ADV212

⺜Ԧ㕆⸱ 儈ṑ⹄ウ ThJ2K

ަԆӗ૱

图 1-2 JPEG2000图像压缩产品

1.4 论文主要工作及结构安排

本文对JPEG2000标准中推荐核心变换算法——离散小波变换的算法与结构进
行了深入的研究,通过分析国内外的研究现状寻找结构瓶颈,进而进行VLSI结
构优化创新设计,并对设计架构进行功能验证与资源评估对比。
本文完成了离散小波变换的单级与多级设计工作,在JPEG2000 硬件压缩系
统中对模块功能进行了功能验证,并通过FPGA平台进行图像压缩测试,结果表
明压缩图像还原效果良好。
本文研究的内容主要包括:
(1)对小波变换的基本理论、发展与最新进展进行了学习,在此基础上深入
研究了离散小波变换的卷积算法与提升算法。
(2)认真研读并分析了近年众多学者对离散小波变换的结构设计与创新优化,
并对其优劣进行了细致分析。
(3)综合考虑硬件设计与实现的要求与特点,结合流水线、模块复用以及加
速运算的技术改进了传统的离散小波变换硬件架构,并与已有结构进行了对比

4
第 1 章 绪论

与分析。
(4)对JPEG2000静态图像压缩标准进行了研究与分析,基于JPEG2000硬件结
构对所设计离散小波变换进行验证。
全文共分为六章,组织安排如下:
第一章为绪论,主要对离散小波变换的研究背景进行了简单介绍,着重说
明了其应用环境与硬件实现的重要意义。同时简述了本文的主要内容与工作安
排。
第二章对小波变换的基本理论、发展及离散小波变换的算法与优化进行了
较为详细的介绍。
第三章通过对现有的单级二维离散小波变换结构的研究与分析,提出了
基于CSD结构的新型单级变换结构,并与已有单级结构在硬件效率方面进行对
比。
第四章对多级二维离散小波变换进行了全新的VLSI架构设计。
第五章对所设计结构进行了功能验证以及FPGA测试工作。
第六章对全文工作进行总结,同时提出设计的不足之处并阐述进一步研究
和改进的方向。

5
天津大学硕士学位论文

6
第 2 章 二维离散小波变换

第2章 二维离散小波变换

2.1 离散小波变换算法

自小波变换这一领域诞生以来,大量科研工作者对其产生浓厚兴趣并且进
行了大量的学术研究。同其他变换如傅里叶变换和余弦变换相似,小波变换的
发展由连续小波变换算法逐渐过渡为离散小波变换算法。这其中,Mallat算法对
离散小波变换算法进行了拓展,将小波分解与重构相统一并在二维领域进行应
用,使得小波变换的领域得以拓宽。
不过包括Mallat算法在内的一系列传统离散小波算法一般是基于卷积思想,
由于其庞大的计算量导致其在工程上应用较为低效。以9/7小波变换卷积算法为
例,式2-1 和2-2 为9/7 小波变换卷积公式,表2-1为运算系数表。通过对公式的
观察可以发现,卷积算法的运算复杂度很高,且难以进行数据的并行处理;在
二维运算(如处理图像)时,需要的存储空间极大。这些均不利于卷积算法的
工程实现与优化。

4
X
L(n) = l(k)x(n − k) (2-1)
k=−4

3
X
H(n) = h(k)x(n − k) (2-2)
k=−3

表 2-1 9/7卷积算法变换系数表

k l(k) h(k)

0 0.602949018 1.115087052

1 0.266864118 −0.591271763

2 −0.078223266 −0.057543526

3 −0.016864118 0.091271763

4 0.026748757

1996年W.Sweldens和Daubechies提出了离散小波运算的提升算法。提升算法
不进入频域空间而是依托简单的基础运算来完成变换,依靠较少的逻辑资源和
存储资源实现了与传统离散小波运算相同的计算结构。由于其算法的低运算复
杂度、高效存储和灵活的自由度调节等优势,使得离散小波变换的工程化应用
程度大为提升,因而对提升算法的优化与硬件实现也成为了小波变换领域的热
点。

7
天津大学硕士学位论文

工程上,一般采用基于因式分解法的提升算法对双正交小波基进行提升离
散小波变换,其过程可分为三步:分裂、提升和缩放。原始信号x(n)经过正向小
波变换后可以分解为信号s(n) (尺度系数)和d(n)(细节系数),前者为信号变换后
的低频部分而后者为高频部分。分裂步骤将信号拆分为不相关序列,通常分裂
为偶数序列x(2n) 和奇数序列x(2n + 1)。提升步骤内一般包含多级提升过程,每
一级提升过程可划分为预测和更新两个过程。预测过程可用公式2-4来表示:
di (n) = di−1 (n) − Pi (si−1 (n)) (2-3)
其中Pi ()为预测算子。di (n)反映了预测值与真实值的相近程度,若信号相关性较
大则di (n)值会很小。更新过程如公式所示:
si (n) = si−1 (n) − Ui (di (n)) (2-4)
其中Ui ()为更新算子。更新通过对si−1 (n)加权的加权使更新结构能够保留变换前
的全局信息。对于第一级提升运算可令d0 (n) = x(2n + 1),s0 (n) = x(2n)。
缩放步骤是对输出的高低频序列进行归一化处理,之后输出的结果即为一
维离散小波变换提升算法的小波系数。m级提升算法分解流程示意如图2-1所
示。

࠶㻲 m㓗ᨀॷ 㕙᭮
K
x(2n)

 d(n)

x(n) ࠶㻲 亴⍻ ᴤᯠ 亴⍻ ᴤᯠ

s(n)
x(2n+1)
1/K

图 2-1 提升算法分解流程

实 际 应 用 中 提 升 算 法 常 用 双 正 交 小 波 基 包 括Daubechies提 出 的5/3小 波
和Conhen、Daubenchies与Feauveau提出的9/7小波变换。前者为整数型变换,操
作系数均可通过一定操作转换为为整数,因此变幻后的数据保留了初始数据的
全部信息,过程中不会有信号失真与数据丢失,因此一般用于无损滤波处理,
其提升过程为1级提升;后者为实数型变换,由于操作数为无穷小数,因此在
硬件处理时必然存在小数部分的截断并会由此产生信号运算过程中的失真,故
而一般用于有损滤波过程,其提升过程为2级。本文主要针对应用于有损变换
的CDF9/7离散小波变换(后文简称离散小波变换)的硬件实现与优化进行探究
与设计。
对提升算法中的预测算子、更新算子和缩放系数进行相关代入后,可以
得到9/7小波变换公式如下所示。输入信号首先分裂为奇分量x(2n + 1)和偶分
量x(2n),之后进行两级提升得到系数H (2n + 1)、L (2n),最终通过缩放得到最终
8
第 2 章 二维离散小波变换

的离散小波系数H ◦ 和L◦ 。

y (2n + 1) = x (2n + 1) + α × [x(2n) + x(2n + 2)] (2-5)

y (2n) = x (2n) + β × y(2n − 1) + y(2n + 1)


 
(2-6)

H (2n + 1) = y (2n + 1) + γ × y(2n) + y(2n + 2)


 
(2-7)

L (2n) = y (2n) + δ × [H(2n − 1) + H(2n + 1)] (2-8)

H ◦ = K × H (2n + 1) (2-9)

1
L◦ = × L (2n) (2-10)
K

公式中系数取值如表2-2所示。

表 2-2 提升算法系数表

系数 数值

α −1.586134342

β −0.052980118

γ 0.882911075

δ 0.443506852

K 1.230174105

通过对提升算法与卷积算法的对比可以发现,提升算法具有以下优势: 提
升算法的实现更为快速迅捷,其计算量仅为卷积算法的1/2左右;提升算法的计
算相比于卷积算法而言不需要太多的存储资源,因此大大节省了存储空间消耗;
对数据的并行性要求更低,使得数据处理可以有更加灵活的并行度,易于硬件
优化;逆变换的实现更为简单,降低了逆变换的复杂度。

2.2 研究现状分析

离散小波变换作为数字信号处理领域的热点,如何进行大规模集成电路设
计(VLSI)和硬件优化吸引了众多研究者提出了大量解决方案。对于硬件实现优

9
天津大学硕士学位论文

化,研究方向与成果主要集中于三个方面即算法优化、数据扫描优化和关键路
径优化。

2.2.1 算法结构优化

结构优化一般伴随着对算法的改进与优化。相较于卷积算法的结构 [10,11] 而
言,由Daubechies和Sweldens [12,13] 提 出 的 提 升 算 法 由 于 其 在 运 算 复 杂 度、存
储 空 间 方 面 的 巨 大 优 化 被 更 多 结 构 所 采 用 [14–24] 。 然 而 提 升 算 法 仍 然 存 在
一 定 缺 陷, 如 数 据 需 要 进 行 多 个 乘 法 与 加 法 运 算 会 产 生 较 大 的 关 键 路 径
等。因此,Huang [25] 等人在提升算法的基础上提出了flipping 算法,对原有提
升算法公式进行了调整,重组公式结构有效的降低了关键路径,该算法也
被Darji [26] 和Todkar [27] 所设计结构加以采用,flipping公式结构如下所示。

1 1
y (2n + 1) = × x (2n + 1) + x (2n) + x (2n + 2) (2-11)
α α

1 1
y (2n) = × x (2n) + y (2n − 1) + y (2n + 1) (2-12)
β β

1 1
H (2n + 1) = × y (2n + 1) + y (2n) + y (2n + 2) (2-13)
γ γ

1 1
L (2n) = × y (2n) + H (2n − 1) + H (2n + 1) (2-14)
δ δ

通 过 对 公 式 的 观 察 可 以 发 现, flipping算 法 使 乘 法 系 数 作 用 于 单 一 输
入 项 上, 避 免 了 对 累 加 项 进 行 乘 法 运 算 所 带 来 的 关 键 路 径 过 长 的 问 题。
Lai [28] 和Zhang [29] 等在flipping算法的基础上进一步优化,通过运算项合并的方式
降低运算复杂度。Zhang等人 [29] 在算法中引入了4 个中间值D1、D2、D3与D4,
其计算公式如2-15∼2-18所示。通过4个中间量的引入,合理的将预测步骤与更新
步骤相结合,更加适用于并行结构的设计。

1
Dk1 (n) = × x (2n + 1) + x (2n) (2-15)
α
!
1
Dk2 (n) = + 1 × x (2n) + Dk−1
1 (n) (2-16)
αβ

1
Dk3 (n) = × y (2n + 1) + y (2n) (2-17)
βγ

10
第 2 章 二维离散小波变换

!
1
Dk4 (n) = + 1 × y (2n) + Dk−1
3 (n) (2-18)
δγ

2.2.2 数据扫描优化

对于二维信号处理,信号的数据扫描次序对硬件结构设计和资源消耗影响
巨大。对于二维小波变换而言,较为通用的扫描方式为行(列)扫描、数据并
行扫描(条带)和块扫描。行(列)扫描即以数据点为单位逐行(列)扫描,数
据以串行的方式进入模块进行变换。并行扫描(条带)即一次扫描多个数据,
多数据同时进入模块进行处理,并行扫描又可以划分为横向并行扫描和纵向并
行扫描。块扫描则是基于块划分的思想,将原始数据划分为若干小块进行分别
扫描处理以减小存储面积。
行扫描方式在一维变换架构中较为常见,而对于二维变换基于行扫描的结
构 [30–32] 单级变换结构内部至少需要5.5N 数据深度的暂存才能完成变换。相较而
言,更多结构选用了并行扫描方式 [14,17–22,26–29] 的数据输入方式。Zhang等 [29] 采
用横向并行双输入的数据扫描方式,同时根据优化的算法提出了新型的双输入
双输出结构,引入了四级流水线结构完成一维变换并在此基础上设计了二维变
换架构,降低关键路径(Critical Path Delay,CPD)为一个乘法器延时(Tm),变换
内部数据存储资源消耗减少为4N(N为二维信号宽度)。对于二维信号处理,块扫
描 [14,15,17,20] 方式可以降低处理数据总量从而简化内部结构。块扫描的方式也经常
会应用于特定环境中,如Lai和Chung [33] 提出了一种应用于JPEG2000图像压缩编
码中的基于码块优化扫描方式的多级二维离散变换架构,生成的多级小波系数
可由并行熵编码模块处理,极大的降低了模块间的存储。Ye等 [34] 也设计了优化
块扫描的多级架构来降低JEPG2000内部模块间的巨大存储空间。
在以上传统扫描方式的基础上,Hu和Jong [18] 引入了重复扫描的方法,通过
重复扫描1行信号数据以达到减小单级二维变换模块内部1N的存储资源消耗的效
果。重复扫描的方式也在诸多结构设计时被采纳 [18,19,21,22] ,根据Wu等 [35] 运算可
以得知,对于二维变换在并行扫描基础上重复扫描1、3、5、7 行时可分别在模
块内部降低1N、2N、3N和4N的存储空间。
通过提高数据扫描的并行度可以降低总体处理时间,这种高并行度的扫描
思想也在多个结构 [17,19] 中得以体现。一般而言,数据并行度提高一倍则整体处
理时间会降低为原来的1/2。在资源消耗允许的前提下,提高数据扫描并行度是
提高整体处理速度的有效手段。

11
天津大学硕士学位论文

2.2.3 关键路径优化

关键路径的长短决定了一个信号处理模块的数据处理速度。采用提升算
法直接进行计算的架构 [16,17] ,由于对累加项进行乘法操作一般会使得关键路
径达到一个乘法器和两个加法器延时(T m + 2T a)。随着算法的进一步优化,采
用flipping算法的结构关键路径多为一个乘法器和一个加法器(T m + T a)延时,引
入流水线结构后能够降低至一个乘法器延时。以运算得到y(2n + 1)的提升算
法2-5和flipping算法的公式2-15实现为例,不同结构下关键路径如图2-2所示。一
些无乘法器结构的引入进一步降低了关键路径延时。Meher [36] 和Darji [37] 分别根
据卷积算法与提升算法设计了无乘法器的变换结构,降低关键路径为一个加法
器延时,提升了系统速度。

x(2n)
x(2n)

x(2n+2) y(2n+1)
x(2n+2) y(2n+1)

x(2n+1) x(2n+1)

(a) 提升算法 (b) flipping算法

x(2n)

x(2n+2) D y(2n+1)

x(2n+1) D

(c) 流水线型flipping算法

图 2-2 基本结构关键路径

通过对以上优化方式方法的总结与分析可以看出,硬件优化的核心目的是
对系统的资源消耗与处理速度和处理时间进行全面优化。而目前已有的算法结
构仍然存在着关键路径过长、资源消耗较高和多级处理中复杂度较高、延时较
大等问题,仍然存在着较大的优化空间。

12
第 3 章 单级离散小波变换优化

第3章 单级离散小波变换优化

本章将对单级离散小波变换提升算法进行运算优化,缩短运算的关键路径,
降低运算资源面积。首先介绍CSD乘法器的原理与优势,之后针对离散小波变
换提升算法进行运算单元再设计,最终形成完整的二维离散小波变换结构。

3.1 CSD乘法器

离散小波变换提升flipping算法中涉及了若干加法和乘法运算,其中基本的
运算模块是一个乘法器与两个加法器,对这一基本运算单元的处理决定了模块的
关键路径与处理速度。进行结构设计时若将两种运算同时处理,其关键路径会
至少为一个乘法器和一个加法器延时 Tm+Ta ,一些结构会通过流水线处理和算
法调整可将关键路径缩短至一个乘法器延时 Tm 。
在数字电路中,一切逻辑运算都是由简单的与或非门等基本逻辑组合而成。
对于乘法运算,EDA工具一般会综合出阵列乘法器以实现多位乘法功能,而阵
列乘法器的资源消耗和路径延时均会对系统性能产生较大的影响,尤其关键路
径延时会达到加法器的两倍以上。因此很多研究通过替换常数乘法器的方式来
优化DWT 结构,Darji A [37] 通过以加法和移位替代乘法器的方式降低关键路径为
一个加法器延时 Ta ,然而其乘法系数设计位宽只有 8 位,这使得信号的滤波质
量严重下降。
本设计中为保证数据变换精度,同时降低资源消耗,采用了 13 位小数
的CSD常数乘法器以提升数据滤波质量。
CSD全称为Canonic signed digit,即正则有符号数,其对二进制数的表达方
式中包含了 1 、 0 和 -1 三种方式。从十进制的角度理解的话,即将 15 表达为
16-1 的方式。因此由二进制转化为CSD的方式可表述为: 由二进制低位开始,
大于 11 的连续n个 1 序列转换为 100..(-1) 的连续 (n+1) 个序列,首位的 1 进至前
位。以十进制数 -303710 为例进行CSD数变换,示意如下。
首先得到 -303710 的绝对值 303710 的二进制表达 1011 1101 11012 ,之后开
始转化为CSD表达方式。

303710 = 1011 1101 11012


= 1011 1110 0(−1)01
(3-1)
= 1100 00(−1)0 0(−1)01
= 1 0(−1)00 00(−1)0 0(−1)01CS D

13
天津大学硕士学位论文

最后得到 -303710 的CSD码表达方式为 (-1) 0100 0010 010(-1)CS D 。通过对


二进制码和CSD码的观察可以发现,对于同一个数值的表示,CSD码中的 0 值
占比明显更高。在移位加减取代乘法的处理中,更多的 0 值意味着更少的运算
过程。因此CSD码乘法器相比传统的移位相加乘法器有着更为简单的结构和更
小的资源消耗。

3.2 乘法系数设计

3.2.1 选用公式

为便于硬件实现离散小波变换算法,首先对 9/7 变换提升算法的公式进行调


整。在本设计中,列变换采用三输入结构,行变换采用两输入结构,原因在后
文会详加叙述。对于二输入结构,算法采用了Zhang等 [38] 根据已有算法进行修正
的公式,通过引入中间量D1 、D2 、D3 和D4 来简化运算过程。采用这套算法的
优势在于,其将每一级运算中的乘法运算归纳到同一周期处理,而本结构意在
对乘法器进行优化,将其转换为多级流水结构,在同一周期有多个乘法运算会
使得多个乘法器的流水结构同时进行,从而降低整体运算所需的周期数。为了
更加利于硬件实现,在其公式的基础上进行进一步的系数调整。

1
Dk1 (n) = × x (2n + 1) + x (2n) (3-2)
α
!
1
Dk2 (n) = + 1 × x (2n) + Dk−1
1 (n) (3-3)
αβ

1
y (2n + 1) = Dk1 (n) + x (2n + 2) (3-4)
α

1
y (2n) = Dk2 (n) + Dk1 (n) + x (2n + 2) (3-5)
αβ

1 k 1 1 1
D3 (n) = × y (2n + 1) + y (2n) (3-6)
αβ βγ α αβ
!
1 k 1 1 1 k−1
D4 (n) = +1 × y (2n) + D (n) (3-7)
αβ δγ αβ αβ 3

1 1 k 1
H (2n + 1) = D3 (n) + y (2n + 2) (3-8)
αβγ αβ αβ

14
第 3 章 单级离散小波变换优化

1 1 k 1 k 1
L (2n) = D4 (n) + D3 (n) + y (2n + 2) (3-9)
αβδγ αβ αβ αβ

对于三输入结构而言,Wu [35] 在其算法基础上进行修正,去除了公式3-2并


且恢复公式3-4和3-5为

1 1
y (2n + 1) = × x (2n + 1) + x (2n) + x (2n + 2) (3-10)
α α

1 1 1 1
y (2n) = × x (2n) + y (2n − 1) + y (2n + 1) (3-11)
αβ αβ α α

以上所述即为本次设计所依据的算法。需要指出的是以上算法均为一维算
法且未包含缩放处理。对于二维处理来说,缩放运算需要进行单独设计。一般
而言常见的缩放处理分为级内缩放和单次缩放两种。级内缩放即每当一维处理
完成后即对变换产生的数据进行缩放,这样从模块内产生的数据即为缩放后小
波系数。而单次缩放是在全部多维变换完成后才进行一步到位的缩放处理。
在本设计中,信号完成行列二维变换之后才会进行单次缩放处理,也就是
说数据经列变换(或行变换)模块的提升算法处理后,并不会立即进行缩放运
算,而是进入行变换(或列变换)模块继续处理。直到二维处理都结束后再进
行单次缩放运算。对于二次缩放(块内缩放),一维模块产生的数据即为缩放后
的小波系数;而对于单次缩放,一维模块产生的数据是待缩放数据,在二维处
理后的缩放模块内进行单次的缩放处理,因此缩放模块的乘法系数需要进行调
整。
因此对于数据经历了二维处理的单次缩放,缩放模块待处理的小波系数
2 2
为 αβγδ
1 1
LL、 (αβγ)2 δ LH、 (αβγ)2 δ HL 和 αβγ HH。据此对缩放模块进行修正后的公式
1 1

表述如下:

1 2
HH ◦ = (Kαβγ)2 × ( HH) (3-12)
αβγ

1
HL◦ = (αβγ)2 δ × ( HL) (3-13)
(αβγ)2 δ

1
LH ◦ = (αβγ)2 δ × ( LH) (3-14)
(αβγ)2 δ

αβγδ 2 1 2
LL◦ = ( ) ×( LL) (3-15)
K αβγδ
15
天津大学硕士学位论文

3.2.2 待变换乘法系数

综合以上所述,本次设计中需要进行独立乘法器设计的系数众多,主要包
括列变换所需的 α1 、 αβ
1
、 γδ1 + 1和 βγ
1
;行变换所需的 α1 、 αβ
1
+ 1、 γδ1 + 1 和 βγ
1
;以及
缩放模块所需的(Kαβγ)2 、( αβγδ
K
)2 和(αβγ)2 δ。
根据系数数值大小,同时考虑到整体结构处理的统一性,对数值相对较大
的变换系数在处理时保留 13 位小数,而对于数值较小的缩放系数则保留 26 位
小数。根据前一节所述,我们可以得到待设计的CSD乘法系数如表3-1 所示。

表 3-1 乘法系数转换

乘法系数 数值 取值 二进制码 CSD码


1
α −0.630464 −5164 × 2−13 −1010000101100 (−1)0(−1)000(−1)010100
1
αβ 11.900004 97484 × 2−13 10111110011001100 110000(-1)0011001100
1
γδ +1 3.553775 29113 × 2−13 111000110111001 100(-1)00100(-1)00(-1)001
1
βγ −21.378150 175129 × 2−13 -101010110000011001 (-1)010101010000(-1)01000
1
αβ +1 12.900004 105676 × 2−13 11001110011001100 10(-1)0100(-1)010(-1)010(-1)00

(Kαβγ)2 0.00208431 139875 × 2−26 100010001001100100 100010001001100100

( αβγδ
K )
2 0.00071467 47960 × 2−26 101110110101100 1100(-1)0110101100

(αβγ)2 δ 0.00122049 81906 × 2−26 10011111111110010 101000000000(-1)0010

3.2.3 常数乘法器设计

接下来以 αβ
1
为例来进行CSD常数乘法器的设计。首先我们需要得到 αβ
1

进 制 下 数 值 大 小。通 过 相 关 协 议 与 资 料 查 询,可 以 得 到α和β 的 值 分 别 为 -
1.586134342 和 -0.052980118 ,因此对 αβ
1
取值为 11.9000040844 。之后为保留 13
位小数将其乘213 得到 97484 ,并转为二进制 10111110011001100 。最后将二进
制码转换为CSD码为 110000(-1)0011001100 。
对CSD码 110000(-1)0011001100 进行电路设计,首先对CSD码进行门级展
开得到如图3-1所示电路图结构。通过对电路图的观察我们可以发现,尽管图中
只有一个加法器,但在实际实现中需要多个加法器进行累计,这显然会对系统
的面积和关键路径延时造成极大的增加。因此还需对此结构进行进一步优化以
达到最优效果。
对CSD码进行优化设计,可以采用树型结构来减少加法器数量,降低关键
路径延时。如公式3-16所示,对运算进行同类项合并之后,乘法即为串行处理,
加法即为并行处理,这样可以使得运算大幅减少;同时引入流水线结构来降低

16
第 3 章 单级离散小波变换优化

<<2

<<3

<<6

<<7 X
<<10 -

<<15

<<16

图 3-1 CSD码展开

关键路径延时,对其进行结构重新设计如图3-2 所示。

X × 110000(−1)0011001100
= X × (22 + 23 + 26 + 27 − 210 + 215 + 216 ) (3-16)
= X × ((22 + 23 ) × (20 + 24 + 213 ) − 210 )

X <<2 D <<4 D D X

<<3 <<13

<<10 - D D

1
图 3-2 CSD树型结构: αβ

通过如上所示方法完成了对常数乘法系数的三级流水线结构的设计。与以
上过程类似,对其他乘法系数进行结构设计。
1
α
的公式优化3-17及树型结构3-3如下所示:

X × (−1)0(−1)000(−1)010100
= X × (22 + 24 − 26 − 210 − 212 ) (3-17)
= X × ((22 + 24 ) × (20 − 28 ) − 210 )

17
天津大学硕士学位论文

X <<2 D <<8 - D D X

<<4

<<10 D - D

图 3-3 CSD树型结构: α1

1
γδ
+ 1的公式优化3-18及树型结构3-4如下所示:

X × 100(−1)00100(−1)00(−1)001
= X × (20 − 23 − 26 + 29 − 212 + 215 ) (3-18)
= X × ((23 − 20 ) × (−20 + 26 + 212 ))

<<12 D

X <<3 D <<6 D D ( )X

- -

图 3-4 1
CSD树型结构: γδ +1

1
βγ
的公式优化3-19及树型结构3-5如下所示:

X × (−1)010101010000(−1)01000
= X × (23 − 25 + 210 + 212 + 214 + 216 − 218 ) (3-19)
= X × ((23 − 25 ) × (20 + 213 ) + 210 × (20 + 22 + 24 ))

1
αβ
+ 1的公式优化3-20 及树型结构3-6如下所示:

X × 10(−1)0100(−1)010(−1)010(−1)00
= X × (−22 + 24 − 26 + 28 − 210 + 213 − 215 + 217 ) (3-20)
= X × ((−22 + 24 ) × (20 + 24 + 213 ) − 210 + 213 )

18
第 3 章 单级离散小波变换优化

X <<3 D <<13 D D X

<<5 -

<<2 D <<10 D

<<4

<<10 D

1
图 3-5 CSD树型结构: βγ

X <<4 D <<13 D D ( )X

<<2 - <<4

<<13 D D

<<10 -

图 3-6 1
CSD树型结构: αβ +1

(Kαβγ)2 的公式优化3-21及树型结构3-7如下所示:

X × 100010001001100100
= X × (22 + 25 + 26 + 29 + 213 + 217 ) (3-21)
= X × ((22 + 25 ) × (20 + 24 ) + 213 + 217 )

X <<2 D <<4 D D (Kαβγ) ² X

<<5

<<13 D D

<<17

图 3-7 CSD树型结构:(Kαβγ)2

19
天津大学硕士学位论文

( αβγδ
K
)2 的公式优化3-22及树型结构3-8如下所示:

X × 1100(−1)0110101100
= X × (22 + 23 + 25 + 27 + 28 − 210 + 213 + 214 ) (3-22)
= X × ((22 + 23 ) × (20 + 25 + 211 ) + 25 − 210 )

X <<2 D <<5 D D
X

<<3 <<11

<<5 D D

<<10 -

图 3-8 CSD树型结构:( αβγδ


K )
2

(αβγ)2 δ的公式优化3-23及树型结构3-9如下所示:

X × 101000000000(−1)0010
(3-23)
= X × (21 − 24 + 214 + 216 )

X <<1 D D D (αβγ)²δ X

<<4 - <<16

D <<14 D

图 3-9 CSD树型结构:(αβγ)2 δ

需要指明的是,由于乘法常数本身包含 13 位或 26 位小数,因此在进行乘
法操作之后,需要对得到的数值根据算法和内部处理结构进行取位操作。

3.3 二维变换结构设计

3.3.1 数据扫描方式

对于待变换的二维信号如图像而言,可选用的扫描方式有很多如行扫描、
列扫描、条带扫描和块扫描等。综合评估来看,以行扫描为基础,进行横向并
20
第 3 章 单级离散小波变换优化

行扫描的方式会大大减小变换模块内转置模块的资源消耗,整体而言效果最
优。
根据 9/7 变换提升算法,变换模块每次处理的数据至少为 2 个信号。而通
过信号重复读取的方式加以模块并行处理可以使处理单元内部的存储面积大
ĊĊĊĊ

为下降,当然这是以输入信号存储面积的增加为代价换得的。通过对算法以及
ĊĊĊĊ
相关结构的分析可以得知,以输入N × N的图像信号为例,并行两输入结构内
部RAM消耗至少为 4N ,重复扫描 1 行即并行三输入时内部RAM存储为
ĊĊĊĊ
3N ,重
复扫描 3 行即并行五输入时内部RAM 存储为 2N ,重复扫描 5 行即并行七输入时
内部RAM 存储为 N ,重复扫描 7 行即并行九输入时内部RAM 存储为 0 ,当然在
并行九输入的结构下提升算法与卷积算法已无差别。图3-10即为无重复并行输
入与重复扫描一行输入的情况,其中灰色像素点为重复扫描行。

ĊĊĊĊ

ĊĊĊĊ

(a) 并行无重复扫描

ĊĊĊĊ

ĊĊĊĊ

ĊĊĊĊ

(b) 重复扫描一行

图 3-10 并行扫描方式

由于内外存储资源可以在一定程度上相互转换,因此可以根据实际应用环
境来选择重复扫描数据量。对于图像处理而言,一般其像素点输入为
ĊĊĊĊ
8 位,根
据算法在进行离散小波变换前需要拓展为 16 位位宽的数据,因此其内部存储均
ĊĊĊĊ
要使用 16 位宽。因此其存储空间总资源消耗如表3-2所示,表中S 代表数据并行
度,N代表图像长宽。
通过表3-2我们可以发现,重复扫描相比于无重复扫描的方式在整体存储资
源消耗上有所下降。而重复扫描不同行数的存储资源则整体没有区别,只在存
在系统内外存储资源多少的差别。因此可以根据实际情况予以选择取舍。本设
计采用的信号扫描方式为横向并行三输入扫描方式(或称为三并行条带扫描),

21
天津大学硕士学位论文

表 3-2 存储资源消耗对比

重复扫描行数 输入存储(8bit) 内部存储(16bit) 总存储(16bit)

0 2S × N 4N (S + 4) × N

1 2S × N + N 3N (S + 3.5) × N

3 2S × N + N 2N (S + 3.5) × N

5 2S × N + N N (S + 3.5) × N

7 2S × N + N 0 (S + 3.5) × N

其中一行为重复扫描。因此离散小波变换单元的结构也设计为三输入结构。
在此我们假定信号以行为基准依次到来,由于输入输出吞吐量比为 1:2 (输
出时一行为重复扫描),因此写入读取时钟之比应为 2:1 。本设计中使用三个
输入RAM,每个大小为N共计 3N 字节。以完成前 5 行数据的读取为例进行说
明,具体的实现如图所示3-11。在前两行已经到达的情况下,第三行到达时开
始读取像素点 x(1) 、 x(2) 、 x(3) 行。由于写入时钟是读出时钟的两倍,因此当
第三行完全写入时读取进行至 N/2 处。此时第四行开始写入至 RAM2 中,读取
逻辑继续读取剩余的 x(1) 、 x(2) 、 x(3) 行,在读取完成后, x(4) 行恰好完全
写入RAM2中。与此同时第五行开始写入至 RAM1 中,读取逻辑开始读取x(3)、
x(4)、x(5)行,依此类推完成读取。

1 1 1 1 1 1 1 1 RAM1 1 1 1 1 1 1 1 1 RAM1

2 2 2 2 2 2 2 2 RAM2 2 2 2 2 2 2 2 2 RAM2

3 3 3 RAM3 3 3 3 3 3 3 3 3 RAM3

(a) 开始读取1-3行 (b) 完成读取1-3行

1 1 1 1 1 1 1 1 RAM1 5 5 5 1 1 1 1 1 1 1 RAM1

4 4 4 4 4 4 4 2 RAM2 4 4 4 4 4 4 4 4 RAM2

3 3 3 3 3 3 3 3 RAM3 3 3 3 3 3 3 3 3 RAM3

(c) 开始读取3-5行 (d) 完成读取3-5行

图 3-11 三输入读取方式

3.3.2 模块设计

数据进入后首先进入列变换模块进行列变换处理。列变换为三输入两输出
的流水线结构设计,整体而言为四级运算处理结构。如图3-12所示即为三输入

22
第 3 章 单级离散小波变换优化

两级运算结构,输入数据为 x(2n)、x(2n+1) 和 x(2n+2) ,数据输入后首先暂存到


寄存器(如果数据从寄存器输入则也可以直接进行运算),之后进行运算处理。
图3-12 中的乘法器均为单独设计的乘法器模块,且内部均为三级流水线结构,
且取位操作同样在乘法器中完成。因此在第一级运算中的加法器后面预留了三
级缓存以匹配乘法器的三级流水线结构。
通过对公式3-10的分析可以发现,当数据为三输入时在当前数据的运算周
期内就可以得到 y(2n+1) ,而要得到 y(2n) 则需要 y(2n+1) 和上一条带计算而得
的 y(2n-1) 同时来进行计算,因此图中的RAM用以存储中间系数 y(2n+1) 。在当
前条带计算时从中读取 y(2n-1) ,同时将计算所得 y(2n+1) 存入其中以备下一条
带使用,因此RAM 深度为 N 。通过这一结构可以完成三输入两级运算算法。

x(2n) D D y(2n)

x(2n+1) D RAM

x(2n+2) D D D D y(2n+1)

图 3-12 三输入两级运算结构

在得到 y(2n) 与 y(2n+1) 之后继续进行之后的两级运算,此时为两输入结构


如图3-13。输入数据为 y(2n) 和 y(2n+1) ,首先运算得到 D3 和 D4 。之后通过对
中间量 D3 和 D4 的存储来实现条带间的传递,进而计算得到 L(2n) 和 H(2n+1) 。
与传递 y(2n+1) 原理类似,RAM的深度同样为 N 。

y(2n) D RAM D L(2n)

D D D

y(2n+1) D RAM D H(2n+1)

图 3-13 两输入两级运算结构

综合三输入两级提升结构和两输入两级提升结构可以得到列变换整体结
构如图3-14所示。图中 RAM1 用于存储系数 y(2n+1) , RAM2 用于存储 D3 ,
RAM3 用于存储 D4 ,深度均为 N 。
数据 H 与 L 由列变换模块输出后需要进行行变换,但是在进行行变换之前
需要对数据转置处理。通过横向并行的数据扫描方式可以将转置结构的寄存器
数量降低至 3 个寄存器和 2 个选择器。图3-15即为两输入两输出的转置单元。若

23
天津大学硕士学位论文

x(2n) D D y(2n) D RAM3 D L(2n)

x(2n+1) D RAM1 D D D

x(2n+2) D D D D y(2n+1) D RAM2 D H(2n+1)

图 3-14 列变换模块结构

采用两输入三输出的转置结构虽然在行变换模块中可以节省 2 个寄存器但是需
要在转置模块中加入 2 个寄存器和 1 个选择器,综合而言并不具有优势。因此
行变换模块的结构为两输入两输出结构,与列变换模块结构有所差异。

L L L D M
U L H L
X

H H H D D
M
U L H L
X

图 3-15 转置模块结构

数据经过转置后以并行两输入的方式进入行变换模块。由于数据为两输入,
因此对行变换模块的设计如图3-16所示。在行变换模块中,数据连续到来(如
第一周期进入 L0 L1 ,则在第三个周期进入同一行的 L2 L3 ),因此不需要使
用RAM对中间量进行大量数据缓存,只需要使用两个数据深度的Buffer 来缓存
中间量即可。图中 Buffer1 用于暂存 D1 , Buffer2 用于暂存 D2 , Buffer3 用于
暂存 D3 , Buffer4 用于暂存 D4 。经过行变换处理,得到未缩放的二维离散小
波系数。
x(2n) D Buffer2 D y(2n) D Buffer4 D L(2n)

D D D D D D

x(2n+1) D Buffer1 D y(2n+1) D Buffer3 D H(2n+1)

图 3-16 列变换模块结构

一次缩放模块设计如图3-17所示。由于 LH 与 HL 所用缩放系数一致,因此
通过两个选择器将待缩放的小波系数进行了调整,使得 LH 与 HL 共享一条路径
与乘法器, LL 与 HH 通过另外一条路径分别进行缩放,再对其缩放结果进行选
择得到正确的缩放后的小波系数。

3.3.3 整体设计

二维信号(如图像)通过横向并行条带式扫描,以并行三输入的方式进入
24
第 3 章 单级离散小波变换优化

M
U D HHo LLo HHo LLo
X
M
HL LL HL LL U HH LL HH LL
X

M
HH LH HH LH U HL LH HL LH D HLo LHo HLo LHo
X

图 3-17 缩放模块结构

二维离散小波变换模块。在离散小波变换模块内依次进行列变换、转置、行
变换和最终的缩放处理,得到最终的小波系数 LL◦ 、 LH ◦ 、 HL◦ 和 HH ◦ 如
图3-18所示。

㭅㧌 㾂⤉
㭞㈾
㑱⢅⿜㚄㌊ 䓋䐤㚄㌊ 㾱⢅⿜㚄㌊ 㰖⳦㚄㌊ 㻖㭞

图 3-18 整体结构设计

3.4 系统资源估计与对比

3.4.1 资源估计

本节对设计电路的资源消耗进行计算。首先统计所设计乘法器模块单元的
资源消耗,需要指出在结构图中标记取“负”的地方在实际编码中采用减法处
理。在三级流水线结构下,各个乘法器的资源使用情况如表3-3所示。

表 3-3 乘法系数转换

系数模块 加法器 减法器 寄存器


1
α 1 2 5
1
αβ 3 1 5
1
γδ +1 1 2 4
1
βγ 4 1 6
1
αβ +1 3 2 5

(Kαβγ)2 4 0 5

( αβγδ
K )
2 4 1 5

(αβγ)2 δ 2 1 5

综合考虑整体结构设计后,可以得到整体资源消耗如表3-4所示。表中暂未
将输入数据暂存计入其中,根据扫描方式,输入暂存共需 3N(8bit) 深度的空间。
25
天津大学硕士学位论文

表 3-4 整体资源消耗

模块 加法器 减法器 寄存器 RAM (16bit)

列变换模块 17 6 37 3N

转置模块 0 0 3 0

行变换模块 17 7 44 0

缩放模块 10 2 15 0

共计 44 15 99 3N

为 了 量 化 设 计 结 构 的 硬 件 效 率,Mohanty和Meher [10] 提 出 了 一 种 衡 量 标
准,即面积-延时-吞吐率(Area-delay-product, ADP)。其公式如3-24 所示。公式
中Area指的是设计所综合出的面积大小,单位是 µm2 ;CPD(critical path delay)
是关键路径延时,单位为 ns ,不过由于乘法器的典型延时约为加法器的 2 倍,
在相关论文的处理中会将CPD 量化为若干加法器延时以便于计算;ACT(active
cycle time) 为活跃周期数即计算一幅图像所需要的周期,可用图像尺寸/吞吐量
加以表示。
ADP = Area count × ACT × CPD (transistor · s) (3-24)

不过设计综合出的面积会受到综合工具、约束条件、代码优化以及不同工
艺库等众多因素的影响,难以得到同一的标准。因此Wu [35] 对这一公式进行了
修正,使用晶体管数替代面积提出晶体管-延时-吞吐率(Transistor-delay-product,
TDP)的硬件效率判定公式3-25。由于不同结构如乘法器、加法器和寄存器的晶
体管数是可以查询达到且更为统一的,因此可以更加合理评估不同结构的优劣。
公式中TC(transistor count) 表示设计结构的晶体管总数即所有器件的晶体管门数
之和。ACT(Active computation time, ACT)表示活跃周期数即系统运转的总周期
量,对于二维数据处理而言该值可通过总数据量除每周期实际处理数据量加以
表示。CPD 表示关键路径延时,关键路径延时与活跃周期数组合即为模块的总
处理时间。通过分析可以得知,TDP值是在综合考虑晶体管数量与工作速度后
对结构的硬件效率做出的评定,其值越低代表了结构的硬件效率约高。

T DP = TC × ACT × CPD (transistor · s) (3-25)

为了衡量估算晶体管数量,Mohanty和Meher [19] 以及Wu [35] 就基于阵列加法


器和阵列乘法器等器件的晶体管数量提供了计算和估值方式。一个8bit 的乘法
器晶体管数量为1085 个,一个8bit 加法器的晶体管数量为248个。由此可以得到
由4 个8bit 乘法器和3 个8bit 加法器构成的16bit 乘法器的晶体管门数为5852 个。
同时,8bit 的寄存器和RAM晶体管数量分别为128和48。16bit 的加法器、寄存
26
第 3 章 单级离散小波变换优化

器和RAM 的晶体管数分别为504、256和96。一个16bit 的加法器和16个反相器构


成的16bit 减法器的晶体管数量为544。以上器件晶体管门数汇总如表3-5 所示。
此外,16bit的乘法器典型延时 Tm 为 6.79ns ,而16bit加法器的典型延时 Ta 为
3.01ns ,可以发现T m ≈ 2T a。

表 3-5 晶体管门数

结构 位宽 晶体管门数 位宽 晶体管门数

加法器 8bit 248 16bit 504

减法器 - - 16bit 544

乘法器 8bit 1085 16bit 5852

寄存器 8bit 128 16bit 256

RAM 8bit 48 16bit 96

3.4.2 资源对比

同近年来发表的二维离散小波变换架构资源估计对比如表3-6所示。通过对
表3-6的分析可以看出,本结构通过CSD常数乘法器的引入消除了结构中的乘法
器结构因此加法器、加法器和寄存器的数量有所上升,而系统的关键路径大幅
下降。存储资源方面,由于采用了横向三输入的数据输入方式,综合来看存储
资源消耗较低。

表 3-6 资源对比

架构 乘法器 加法器 减法器 寄存器 暂存RAM 输入RAM CPD

Zhang [29] 10 16 0 37 4N 2N Tm

Darji [24] 10 16 0 40 4N 2N Tm

Yusong [18] 10 16 0 24 3N 3N Tm + Ta

Todkar [27] 16 24 0 65 2N 5N Tm

Darji [21] 16 24 0 102 2N 5N Tm

Mohanty [17] 9S 16S 0 16S 4N (2S + 1)N T m + 2T a

本结构 0 44 15 99 3N 3N Ta

为了更加直观的进行对比,以TDP为衡量基准,表3-7与表3-8中分别列举了
在输入数据量为512 × 512 和1024 × 1024情况下已有单级离散小波变换架构与本
架构的TDP硬件效率对比。除Mohanty [17] 结构外,其余结构的并行度皆为1即并
未将多个处理模块并行处理。综合两表分析可以观察到,从资源消耗方面来看,
无论是在输入数据量为512 × 512还是在1024 × 1024条件下,本结构的晶体管门
数均少于其他并行度同样为1的结构。综合考虑门数、延时与处理后,在输入数
据量为512 × 512时同已有最优架构相比本结构的硬件效率优化至少达到49% 以

27
天津大学硕士学位论文

上;数据量为1024 × 1024时同已有最优架构相比本结构的硬件效率优化至少达
到38% 以上。因此可以认为,对于单级二维离散小波处理而言,本结构在硬件
效率上优于现有结构。

表 3-7 N = 512时硬件效率对比

架构 并行度 TC CPD ACT TDP 本结构相对优化度

Zhang [29] 1 322584 6.79 131072 28.640 61.861%

Darji [24] 1 322584 6.79 131072 28.709 61.953%

Yusong [18] 1 293912 9.80 131072 37.753 71.067%

Todkar [27] 1 343552 6.79 131072 30.575 64.274%

Darji [21] 1 2044864 6.79 131072 31.418 65.233%

Mohanty [17] 8 1133024 12.81 16384 23.780 54.066%

Mohanty [17] 16 3052480 12.81 8192 21.459 49.098%

本结构 1 276864 3.01 131072 10.923 -

表 3-8 N = 1024时硬件效率对比

架构 并行度 TC CPD ACT TDP 本结构相对优化度

Zhang [29] 1 568344 6.79 524288 202.052 60.896%

Darji [24] 1 568344 6.79 524288 202.326 60.950%

Yusong [18] 1 564248 9.80 524288 289.912 72.747%

Todkar [27] 1 564736 6.79 524288 201.041 60.700%

Darji [21] 1 574208 6.79 524288 204.413 61.348%

Mohanty [17] 8 1747424 12.81 65536 146.699 46.141%

Mohanty [17] 16 3052480 12.81 32768 128.130 38.336%

本结构 1 5006616 3.01 524288 79.010 -

28
第 4 章 多级离散小波变换优化

第4章 多级离散小波变换优化

图像等二维数字信号经过二维离散小波变换后,高频信息与低频信息会发
生分离。其中低频信息中存储着主要信息,而高频分量中存储着细节等次要信
息。在很多应用场景下,单级二维变换无法满足信息分离的要求,例如在一些
图像压缩环境下滤波得到的低频分量需要进行再次或多次离散小波变换以得到
多级小波系数,这样在压缩码率达到要求时可以对小波系数进行截断操作以去
除冗余细节信息。本章将针对多级离散小波变换提升算法进行优化,降低资源
消耗与系统功耗。首先会对多级处理的相关结构进行介绍,之后从级内和级间
对多级结构进行优化,最终形成完整的多级二维离散小波变换结构。

4.1 多级变换结构

4.1.1 折叠结构与展开结构

多级离散小波变换顾名思义就是当数据完成一级小波变换之后,其小波系
数(一般为 LL 分量),需要进行进一步的离散小波变换以便更加彻底的分离。
如图4-1所示为进行两级小波变换,图像像素点在完成一级小波变换之后,得
到的小波系数LL1 继续进行第二级小波变换得到二级离散小波系数LL2 、LH2 、
HL2 和HH2 。

LL2 HL2
LL1 HL1 HL1

㵝㼒
LH2 HH2

LH1 HH1 LH1 HH1

图 4-1 两级离散小波变换

多级小波变换有两种典型的处理:折叠结构与展开结构。折叠结构如图4-2
(a)所示,数据在进行一级离散小波变换之后将小波系数LHn 、HLn 和HHn 输出,
而将LLn 分量进行暂存。在第一级变换处理全部完成后,读取变换而得的LLn 分
量并重新进入变换处理模块进行下一级的处理。处理之后得到小波系数LHn+1 、
HLn+1 、LHn+1 和HLn+1 重复进行上述过程直到满足多级小波变换的处理要求。折
叠结构对二维变换处理模块进行多次调用,因此其运算面积较小。然而对于原

29
天津大学硕士学位论文

始数据量为N 2 的数据量如图像来说,系统至少需要一个深度为N 2 /4的RAM来对


级间小波系数进行存储,这无疑极大的增加了存储资源开支。
对于展开结构4-2 (b)而言,多级离散变换模块展开相连,上一级离散小波变
换产生的小波系数中需要进行进一步变换的LLn 分量经过简单的调整后直接可以
进入下一级进行处理而无需进行中间存储。由于运算模块为全展开结构因此其
运算资源较多而存储资源显著降低。

অ㓗':7 ሿ⌒㌫ᮠ
M
䗃‫ޕ‬ᮠᦞ U ':7 㓗䰤㔃ᶴ㕃ᆈ
X
//

㓗޵ਈᦒ㕃ᆈ

(a) 折叠结构

অ㓗':7 অ㓗':7

':7 ':7
// //
䗃‫ޕ‬ᮠᦞ

㓗޵ਈᦒ㕃ᆈ 㓗޵ਈᦒ㕃ᆈ

ሿ⌒㌫ᮠ ሿ⌒㌫ᮠ

(b) 展开结构

图 4-2 多级结构

通过对多级折叠结构与展开结构的对比可以发现,在运算资源消耗方面,
折叠结构由于对滤波运算模块进行复用从而使得运算资源大为降低,因此相对
展开结构较为占优;在存储资源消耗方面,展开结构由于不需要对级间小波系
数LLn 进行大量存储而优势巨大;在控制复杂度方面,折叠结构整体只需要单时
钟控制,只需要对数据输入来源进行选择因此较为简单,而展开结构一般需要
多时钟域以及级间数据的复杂调整,因而复杂度较高;在处理时间方面,折叠
结构由于每一级是时间上依次进行而导致整体处理时间较长,因此展开结构多
级同时处理数据耗时较短。二者的对比如表4-1所示。
在大多数应用环境中,存储资源消耗占比会远高于运算资源消耗(尤其在
输入数据量较大的情况下),且由于展开结构的处理速度更快,因此得到了更为
30
第 4 章 多级离散小波变换优化

表 4-1 结构优劣对比

结构 运算资源 存储资源 复杂度 处理时间

折叠结构 低 高 低 高

展开结构 高 低 高 低

广泛的应用。本次设计即基于展开结构对多级小波变换的硬件实现进行实现优
化。

4.1.2 并行结构与非并行结构

对于离散变换滤波处理以及很多数字信号处理结构来说,通过实例化多个
䗃‫ޕ‬ 䗃ࠪ
处理单元对数据进行并行处理是一种常见的优化手段。
ᮠᦞ ᮠᦞ

如图4-3 (a)所示为非并行结构,结构只实例化了一个处理模块使得每周期
ਈᦒ㕃ᆈ
进行处理的数据量较少,因此整体处理时间相对较长,模块的资源消耗相对较
小。并行结构实例化多个处理模块通过资源消耗的增加来换取处理时间的降低,
图4-3 (b)所示为并行度S的并行模块。

ਈᦒ㕃ᆈ

䗃‫ޕ‬ 䗃ࠪ
DWT
ᮠᦞ ᮠᦞ

䗃‫ޕ‬ 䗃ࠪ S=2
DWT
ᮠᦞ ᮠᦞ 䗃‫ޕ‬ 䗃ࠪ
DWT
ᮠᦞ ᮠᦞ

ਈᦒ㕃ᆈ ਈᦒ㕃ᆈ

(a) 非并行结构 (b) 并行结构

图 4-3 并行与非并行结构

并行结构与非并行结构各有优劣,一般来讲在资源充足的情况下使用并行
ਈᦒ㕃ᆈ
结构可以极大的加快处理速度对整体提升较大;而在数据处理速度已经达到要
求的情况下降低并行度乃至使用非并行结构可以极大的降低资源消耗与系统功
䗃‫ޕ‬ 䗃ࠪ
耗,可根据实际应用环境进行灵活设计。
ᮠᦞ ᮠᦞ

䗃‫ޕ‬
4.2 算法与数据扫描 䗃ࠪ
ᮠᦞ ᮠᦞ

4.2.1 算法选择 ਈᦒ㕃ᆈ

多级离散小波变换算法选择flipping算法如式4-1∼4-4 所示。该算法为典型的

31
天津大学硕士学位论文

四级运算,每一级处理均为一个乘法器和两个加法器处理。式中虽然有众多乘
法系数但是只有“×”处为需要在结构中进行乘法运算操作,其余均为本身携带
的系数。如式4-2中只有 αβ
1
× x (2n)是乘法操作,而 α1 y (2n − 1) 和 α1 y (2n + 1)均是通
过公式4-1运算时已经得到。

1 1
y (2n + 1) = × x (2n + 1) + x (2n) + x (2n + 2) (4-1)
α α

1 1 1 1
y (2n) = × x (2n) + y (2n − 1) + y (2n + 1) (4-2)
αβ αβ α α

1 1 1 1
H (2n + 1) = × y (2n + 1) + y (2n) + y (2n + 2) (4-3)
αβγ αβγ αβ αβ

1 1 1 1
L (2n) = × y (2n) + H (2n − 1) + H (2n + 1) (4-4)
αβδγ αβδγ αβγ αβγ

选择flipping公式的优势在于其公式形式高度一致且运算量相对较低,可以
对运算模块进行复用以降低模块的运算资源面积,对于多级结构处理有更大的
优势。
通过对公式4-1∼4-4 的观察可以发现,每一个公式中都包含一个乘法运算和
两个加法运算,且除了乘法系数外,运算方式完全相同,因而在此称一个乘法
与两个加法操作为一次基本运算。对于基本运算的常见流水线优化处理方式如
图4-4所示,该结构关键路径为一个乘法器延时T m。

x(2n)

x(2n+2) ' ' y(2n+1)

x(2n+1) '

图 4-4 基本运算的流水线结构

对 公 式 的 进 一 步 分 析 可 知,在 完 成 每 一 运 算 公 式 的 过 程 中,倘 若 采 用
流水线结构,那么每一次运算中的待相乘加数项与非待乘加数项相比至少
会提前1或2个周期到达,如公式4-2 中的待乘加数x(2n)在第 n 周期已经到达,
则y(2n + 1)与y(2n − 1) 至少需要在第 n + 1 周期到达。又因为16位加法器与乘法
器的典型延时分别为3.01ns 和6.79ns,因此对于每一项基本运算中的乘法运算
与加两个加法运算,将他们在同一周期进行处理可以认为对关键路径延时不

32
第 4 章 多级离散小波变换优化

会产生较大影响。考虑到公式4-2∼4-4 中的乘法项至少先于另外两个加法项1个
周期到达,在后续结构设计中只需对公式4-1的输入进行调整,使x(2n + 1)先
于x(2n)和x(2n + 2)一个周期到达,则可公式4-1∼4-4 进行完全相同的基本运算模
块设计。以公式4-1和公式4-2设计为例。

x(2n) y(2n-1)

' y(2n+1) y(2n) ' y(2n+1)


x(2n+2)

x(2n+1)* ' x(2n)* '

(a) 公式4-1结构 (b) 公式4-2结构

图 4-5 基本结构优化

图4-5中带有项即为提前到达的乘法项。由于每个基本运算模块均为一周期
完成,使得下一个公式中的加法项刚好落后于乘法项一周期到达。因此在加法
项到达时,在当前周期即可与已经完成乘法运算的乘法项相加,这又保证了每
个基本运算在一周期内完成。这样的处理方式,既使得寄存器的数量最优,又
保证了关键路径延时为一个乘法器延时,提高了硬件的综合效率。同时,由于
四个基本运算只有乘法项系数不同,因此可以在乘法系数进行多路选择后对基
本运算模块进行复用。在多级展开二维离散小波变换中可以用于解决在时钟与
数据不匹配的情况。

4.2.2 数据扫描方式

由于选用公式为三输入公式,因此数据扫描的基本类型仍为横向三输入条
带式扫描方法。根据上一节的分析可以知道,如果使公式4-1的乘法项x(2n + 1)先
于另外两个加法项x(2n)和x(2n + 2)到达,再结合流水线结构可以保证每一级运
算的乘法和两个加法并行执行从而节省资源。因此传统的三输入扫描方式不
能满足设计的需求需要作出调整。调整的方式为采用数据错位扫描,即将三输
入数据中的中间数据或称乘法项数据提前一周期读取,使其优先进入系统中。
如图4-6所示,每一时钟周期输入的信号均为本列的x(2n) 和x(2n + 2)以及上一
列x(2n + 1),从而x(2n + 1)能够提前一周期进入处理模块。
本次多级离散小波变换设计采用了并行度调整的方式,因此输入数据需
要多条带并行输入。因此在已有数据错位横向扫描的基础上进行多条带并行
扫描如图所示。这样做的优势在于可以满足多级变换结构对于数据并行的需
求,加快处理速度;劣势在于在实时信号处理时需要对输入数据进行大量缓
存((2S + 1)N),一般需要SDRAM 等大量数据存储模块的辅助。
33
天津大学硕士学位论文

CLK1 CLK2 CLK3 CLK4 CLKn CLK(n+1)

ĊĊĊĊ

䗃‫ޕ‬മ‫ۿ‬

图 4-6 数据错位扫描

S1

S2
ĊĊĊĊ

Sn

图 4-7 基本运算的流水线结构

4.3 多级结构设计

4.3.1 首级结构设计

首先对并行度为1时的单级变换模块进行设计,单级结构仍旧由列变换模
块、转置模块、行变换模块和缩放模块构成。
根据公式4-1∼4-4 及前文所述扫描方式,对列变换模块进行如下的设计。由
于公式为两级提升四级运算结构设计采用四级流水线结构,即每一基本运算
ĊĊĊĊ

均在一级流水线中完成。由于x(2n + 1)先于x(2n)与x(2n+2)一个周期输入,因此
当x(2n)与x(2n + 2) 进入模块进行运算时,x(2n + 1)已经在前一周期完成了与对应
系数的有符号数乘法,于是可在本周期对3个已经准备完成的加数进行两次连续
连续加法操作,则通过这种方式解决了公式4-1 基本运算中加法与乘法的并行处
理。
在公式4-1的基本运算通过错位输入的方式完成后,对于公式4-2而言,可以
根据时序信息发现x(2n)比y(2n + 1) 早1周期处于可运算状态,因此可以在此周期
内对x(2n)进行乘法运算即待乘项的乘法操作可相对提前1周期完成;之后在下一

34
第 4 章 多级离散小波变换优化

周期触发时与到达的y(2n + 1) 和由RAM1 读取而来的y(2n − 1) 进行连续加法实现


公式4-2 的运算。公式4-3、4-4 的运算过程与式4-2完全一致,区别只在于乘法系
数不同。
由于数据错位输入后公式4-1∼4-4 的基本运算除了乘法系数外处理方式完全
相同,因此设计乘法路径与加法路径得以分离并行执行。这样优化后的运算结
构使得每一级基本运算都得以并行处理,在四级流水线结构内完成了一维离散
小波变换处理,节省了寄存器数量和运算时间,简化了控制逻辑。
根据以上设计思路,构建的第一级小波变换列变换模块如图4-8所示,模
块中共四级流水结构且结构一致,其中带“∗”号项为提前输入项即下一列
的x(2n + 1)值。列变换模块需要对中间值y(2n + 1)、y(2n)和H(2n + 1)进行存储与
传递,共需3N大小的数据缓存空间。
1/¦§¨
1/¦ y(2n-1) 1/¦§ y(2n-2) H(2n-3)
RAM1 RAM2 RAM3

สᵜ䘀㇇অ‫ݳ‬
x(2n)

1/¦§¨ 1/¦§¨©
x(2n+2) 1/¦ y(2n+1) 1/¦§ y(2n) H(2n-1) L(2n-2)

1/¦§¨ 1/¦§¨©
x(2n+1)* 1/¦ x(2n+1) 1/¦§ x(2n) y(2n-1) y(2n-2)

图 4-8 第一级列变换结构

二维变换的数据需要先后经过类变换与行变换处理,而根据行列变换的数
据处理特点,数据在两个模块之间需要进行转置处理。本次设计基于行并行扫
描,这极大的减小了转置模块的数据存储深度。由于行列变换模块的结构均为
三输入两输出,因此所涉及的转置模块共需要5 个寄存器和3多路选择器来满足
行变换模块数据错位的三输入要求。转置模块的架构如图4-9 所示。
CLK2
M
CLK3 CLK1
U L2 H
H22 L0
L0 H0
H0
X
H3 H2 H1 H0 D1 D2 D3

M
U L3 H3 L1 H1
X
L3 L2 L1 L0 D4 D5

M
U L4 H
H44 L2
L2 H2
H2
X

图 4-9 第一级转置结构

对架构的时序分析如表所示,表中输入1为H分量输入,输入2为L分量输入,
MUX1、MUX2和MUX3依次为由上至下的三个选择器输出。通过时序分析可以
发现该转置模块在调整行变换输入数据为三输入的同时,还完成了数据的错位
处理,保证了行变换与列变换基本结构的一致性。

35
天津大学硕士学位论文

表 4-2 第一级转置模块时序分析

时钟周期 输入1 D1 D2 D3 输入2 D4 D5 MUX1 MUX2 MUX3

CLK1 H1 H0 − − L0 − − − 输入1(H1) −

CLK2 H2 H1 H0 − L1 L0 − D2(H0) 输入2(L1) 输入1(H2)

CLK3 H3 H2 H1 H0 L2 L1 L0 D5(L0) 输入1(H3) 输入2(L2)

CLK4 H4 H3 H2 H1 L3 L2 L1 D2(H2) 输入2(L3) 输入1(H4)

CLK6 H5 H4 H3 H2 L4 L3 L2 D5(L2) 输入1(H5) 输入2(L4)

数据经过转置模块处理后进入行变换模块,其结构如图4-10所示。基于错
位三输入的行变换模块结构与列变换模块结构整体相近,不过由于数据流是连
续的,因此不需要RAM进行大量的数据存储,只需要在每一级使用两个深度的
寄存器(图中以buffer表示)进行两周期的数据缓存即可。通过两个深度的数据
缓存来对中间量y(2n + 1)、y(2n)和H(2n + 1)进行传输以满足行变换模块的变换
需求。通过行变换与列变换模块的结构对比可以发现两个模块的基本构成相同
均为四级基本运算,因此可以通过列变换模块的简单调整来形成行变换模块结
构。
1/¢£¤
1/¢ y(2n-1) 1/¢£ y(2n-2) H(2n-3)
Buffer1 Buffer2 Buffer3

สᵜ䘀㇇অ‫ݳ‬
x(2n)

1/¦§¨ 1/¦§¨©
x(2n+2) 1/¦ y(2n+1) 1/¦§ y(2n) H(2n-1) L(2n-2)

1/¦§¨ 1/¦§¨©
x(2n+1)* 1/¦ x(2n+1) 1/¦§ x(2n) y(2n-1) y(2n-2)

图 4-10 第一级行变换结构

数据经二维变换后进入缩放模块,缩放仍旧采用一次缩放算法。根据带缩
放小波系数的不同,在不同周期对缩放系数进行选择,之后输出缩放后的小波
系数,模块的关键路径为一个乘法器延时T m。

HH LH HH LH D

HL LL HL LL D

图 4-11 第一级缩放结构

将四个模块依次连接即可形成非并行的单级二维离散小波架构。不过为了
加快处理速度,同时便于多级处理,需要在已有架构的基础上设计并行度为S 的
36
第 4 章 多级离散小波变换优化

并行架构。
对于并行架构而言,需要做出调整的部分主要为列变换模块。在非并行
结构中,列变换模块的中间量y(2n + 1)、y(2n)和H(2n + 1)需要向RAM 中进行存
储,并在处理下一条带的列变换时读取。而在并行处理时,由于多条带共同处
理数据,对于处于中间位置条带的列变换而言,其中间值可直接由上一列变换
模块得到,而其运算所得中间值则直接传递至下一条带的列变换模块,无需通
过RAM进行数据存储。处于两边位置的列变换模块仍需要同RAM进行数据交
互。如图4-12所示为并行度为3的列变换模块设计结构图。其输入数据表灰处表
示为重复读取数据,如S 1模块的x(2n + 2)即为S 2模块的x(2n)。因此对于并行度
为S 的并行三输入模块来讲其输入数据为2S + 1。
1/¦§¨
1/¦ y(2n-1) 1/¦§ y(2n-2) H(2n-3)
RAM1 RAM2 RAM3

x(2n)

1/¦§¨ 1/¦§¨©
S1 x(2n+2) 1/¦ y(2n+1) 1/¦§ y(2n) H(2n-1) L(2n-2)

1/¦§¨ 1/¦§¨©
x(2n+1)* 1/¦ x(2n+1) 1/¦§ x(2n) y(2n-1) y(2n-2)

x(2n)

1/¦§¨ 1/¦§¨©
S2 x(2n+2) 1/¦ y(2n+1) 1/¦§ y(2n) H(2n-1) L(2n-2)

1/¦§¨ 1/¦§¨©
x(2n+1)* 1/¦ x(2n+1) 1/¦§ x(2n) y(2n-1) y(2n-2)

x(2n)

1/¦§¨ 1/¦§¨©
S3 x(2n+2) 1/¦ y(2n+1) 1/¦§ y(2n) H(2n-1) L(2n-2)

1/¦§¨ 1/¦§¨©
x(2n+1)* 1/¦ x(2n+1) 1/¦§ x(2n) y(2n-1) y(2n-2)

RAM1 RAM2 RAM3

1/¦ y(2n+1) 1/¦§ y(2n) 1/¦§¨


H(2n-1)

图 4-12 并行列变换结构

由并行列变换模块产生的小波系数之后分别进入转置模块及行变换模块,
其余模块之间无数据交互。如S 1所后续连接的行变换模块只需处理S 1产生的
小波系数,数据的传递仍然通过两个数据深度的Buffer进行。综上,对并行度
为S 的单级二维离散小波变换架构设计如图4-13所示。

4.3.2 次级结构设计

对于展开多级结构,第一级产生的小波系数将会立即进入下一级进行变换
处理。
由于第一级小波变换设计为三输入两输出结构,因此经过调整的小波系数
会以LL、LH和HL、HH的顺序周期性的产出。一般而言,四个分量中其中只有
低频信息LL 分量需要进行下一级的小波变换,而其他分量可以从模块中输出。
37
天津大学硕士学位论文



ࡇਈᦒ⁑ඇ 䖜㖞⁑ඇ 㹼ਈᦒ⁑ඇ 㕙᭮⁑ඇ ㌫



ࡇਈᦒ⁑ඇ 䖜㖞⁑ඇ 㹼ਈᦒ⁑ඇ 㕙᭮⁑ඇ ㌫

S



ࡇਈᦒ⁑ඇ 䖜㖞⁑ඇ 㹼ਈᦒ⁑ඇ 㕙᭮⁑ඇ ㌫



ࡇਈᦒ⁑ඇ 䖜㖞⁑ඇ 㹼ਈᦒ⁑ඇ 㕙᭮⁑ඇ ㌫

图 4-13 并行结构

对于单个离散小波变换模块来讲,这意味着其每两个周期产出的4个小波系数
中,只有1个需要进入下一级处理,前后级之间的吞吐率之比为4 : 1。换而言之,
对于次级小波变换而言,非并行情况下每2个周期可以得到1个有效数据即时钟
数据比为2 : 1。对于并行结构而言如图4-14,如第一级并行度为S ,则每2个周期
可以得到S /2个对下一级而言的有效数据,同样存在着每2个周期中1个周期无法
输入任何有效数据的问题。由于空时钟周期的存在,系统的能耗无疑为大为增
加,降低系统的硬件效率。
对于这一问题一般通过引入多时钟域或是级间数据调整来解决。引入多时
钟域即第二级变换与第一级变换模块使用不同频率的时钟,如第二级时钟为第
一级时钟的1/2来解决时钟数据比为2 : 1的问题。然而多时钟域的引入会导致
异步信号处理的发生,容易产生亚问题等一系列问题,此外多时钟树综合也会
增加系统的面积与功耗。级间数据调整的方式,即在两级之间对数据进行暂存
调整使得下一级处理数据时满足每周期均有数据进入,会增加级间处理的复杂
度且级数约高则复杂度越高,同样会增加系统的资源消耗。因此,本设计在不
对级间数据进行大量调整的情况下通过对次级变换结构的优化,来解决这一问
题。
如图4-14所示为第一二级的级间连接。第二级并行度设计为第一级的1/2,
其中模块同样为三输入两输出结构,且时钟频率与第一级一致。因此级间需要
一个数据深度为N/2的暂存RAM对并行处理的边界小波系数进行传输。
通过结构设计,第二级中的每一个小波变换模块均可以在每隔1个时钟周期
得到1次三输入数据,即时钟数据比为2 : 1。在数据输入时,类比之前设计,同
样对数据进行错位处理即对x(2n)与x(2n + 2)进行延时1周期的操作,则第二级输
入数据时序如表4-3所示,表中 k 代表列数,−代表无关分量输入如LH 等无需进
行处理的分量。
根据数据输入对次级小波变换架构进行设计。
对于列变换模块,其输入数据为错位三输入方式且时钟数据比为2 : 1即

38
第 4 章 多级离散小波变换优化

㓗䰤RAM

LL LH LL
DWT HL HH HL
DWT
LL LH LL
DWT HL HH HL

LL LH LL
DWT HL HH HL
DWT
LL LH LL
DWT HL HH HL

㓗䰤RAM

图 4-14 首次级级间连接

表 4-3 次级数据输入时序

时钟周期 输入1 输入2 输入3

CLK1 - xk (2n + 1) -

CLK2 xk (2n) - xk (2n + 2)

CLK3 - xk+1 (2n + 1) -

CLK4 xk+1 (2n) - xk+1 (2n + 2)

每2个 时 钟 周 期 中 有1个 时 钟 周 期 进 入 的 是 无 效 数 据。因 此 可 以 对 内 部 运 算


结构进行折叠。将公式4-1和4-2进行折叠结构如图4-15所示。当x(2n)、 x(2n +
1)∗ 和x(2n + 2)进入模块后,一个时钟周期后即可得到y(2n + 1)。而此时进入
模块的数据为无效数据,因此可以将本周期产生的y(2n + 1)和从RAM中读取
的y(2n − 1)作 为 输 入 重 新 调 用 基 本 运 算 模 块 进 行 处 理,即 可 在 下 一 周 期 得
到y(2n)。
表4-4中为该运算模块时序。在CLK1周期xk (2n + 1)信号到达,并在当前周
期进行运算得到 α1 xk (2n + 1)暂存入D2寄存器中。CLK2 周期xk (2n)与xk (2n + 2)到
达,与D2寄存器中的 α1 xk (2n + 1)共同运算得到 αβ
1
yk (2n + 1)并存入D1寄存器。在
此周期xk (2n)同时被MUX3选择,运算后得到 αβ
1
xk (2n)存入D2寄存器中。CLK3
周期输入1与输入2均为无关信号进入,此时从D1寄存器中读取 α1 yk (2n + 1)同时
从RAM1中读取 α1 yk (2n − 1)、从D2中读取 αβ
1 1
xk (2n)进行运算得到 αβ yk (2n)。通过2个
周期的基本运算单元重复调用完成了 α1 yk (2n + 1) 和 αβ
1
yk (2n)的计算。
通过对其时序的分析可以发现,输出端口D2为 α1 y(2n + 1)和 αβ
1
y(2n)交替输出
且每一列的 α1 y(2n + 1) 均优先于 αβ
1 1
y(2n)一个时钟周期。将产生的 αβ y(2n)同时存
入RAM2中以供下一条带读取使用。这样对于公式4-3与4-4的实现来说,同样为
每隔1 周期得到1次有效数据。

39
天津大学硕士学位论文

RAM1 RAM2

y(2n-1) M
U
x(2n) X

y(2n+1) M
U ' y(2n+1)/y(2n)
x(2n+2) X

x(2n)* M
U '
x(2n+1)* X

图 4-15 次级列变换基本运算1

表 4-4 次级列变换基本运算1时序

时钟周期 输入1 输入2 输入3 MUX1 MUX2 MUX3 D2 D1

CLK1 - - xk (2n + 1) - - xk (2n + 1) - -

CLK2 xk (2n) xk (2n + 2) - xk (2n) xk (2n + 2) xk (2n) α xk (2n + 1)


1
-

CLK3 - - xk+1 (2n + 1) 1


αβ yk (2n − 1) αβ yk (2n + 1)
1
xk+1 (2n + 1) 1
αβ xk (2n) αβ yk (2n + 1)
1

CLK4 xk+1 (2n) xk+1 (2n + 2) - xk+1 (2n) xk+1 (2n + 2) xk+1 (2n) α xk+1 (2n + 1)
1 1
αβ yk (2n)

CLK5 - - xk+2 (2n + 1) 1


αβ yk+1 (2n − 1) αβ yk+1 (2n + 1)
1
xk+2 (2n + 1) 1
αβ xk+1 (2n) αβ yk+1 (2n + 1)
1

CLK6 xk+2 (2n) xk+2 (2n + 2) - xk+2 (2n) xk+2 (2n + 2) xk+2 (2n) α xk+2 (2n + 1)
1 1
αβ yk+1 (2n)

图4-16所示为实现公式4-3与4-4的折叠结构设计。其中RAM1 存储中间量
为 α1 y(2n + 1)(对于当前条带处理而言实际读取出的数据为 α1 y(2n − 1)),RAM2中
存储中间量为 αβ
1 1
y(2n)(对于当前条带处理而言实际读取出的数据为 αβ y(2n − 2)),
1
RAM3中存储中间量为 αβγ H(2n + 1)(对于当前条带处理而言实际读取出的数据
为 αβγ
1
H(2n − 3))。对其时序说明如下。CLK1周期进入的有效数据为RAM1中读
取的 α1 yk (2n − 1),在当前周期进行乘法操作为 αβγ
1
yk (2n − 1)并存入D4寄存器中。
1 1
CLK2周期进入的有效数据为 αβ yk (2n)和RAM2中读取得到的 αβ yk (2n − 2),同已经
得到的 αβγ
1 1
yk (2n − 1)一起进行运算得到 αβγ 1
Hk (2n − 1)存入D4;同时, αβ yk (2n − 2)
由MUX3 选择进入乘法路径运算得到 αβγδ
1
yk (2n − 2)存入D4寄存器中。CLK3周
期 进 入 的 有 效 数 据 为 α1 yk+1 (2n − 1)即 下 一 列 的y(2n − 1)值,其 进 入 乘 法 路 径
进行乘法操作得到 αβγ
1
yk (2n − 1)存入D4; MUX1和MUX2分别选择上一周期运
算 得 到 αβγ
1
Hk (2n − 1) 以 及RAM3中 存 储 的 αβγ
1
Hk (2n − 3), 与D4寄 存 器 中 存 储
的 αβγδ
1
yk (2n − 2) 一同运算得到 αβγδ
1
Lk (2n − 2)。之后重复此过程继续得到其他
列的 αβγδ
1
L 值。
综 合 以 上 基 本 运 算 单 元 设 计, 对 列 变 换 模 块 设 计 如 图4-17所 示, 其
中RAM1、RAM2和RAM3深 度 均 为N/2。模 块 内 为 两 级 折 叠 结 构,对 每 个 基
本运算单元调用两次,数据进入模块后经过四级运算后得到小波系数。小波系
数H与L依次由模块中输出。
由列变换模块中输出的数据进入转置模块进行数据顺序调整,转置模块设

40
'
' '

'
第 4 章 多级离散小波变换优化

RAM1
RAM2 RAM3

H(2n-3) M
U
y(2n-2) X

H(2n-1) M
U ' H(2n-1)/L(2n-2)
y(2n) X

y(2n-2)* M
U '
y(2n-1)* X

图 4-16 次级列变换基本运算2

RAM1 RAM2 RAM3

y(2n-1) M H(2n-3) M
U U
x(2n) X y(2n-2) X

y(2n+1) M H(2n-1) M
U ' y(2n+1)/ U ' H(2n-1)/L(2n-2)
x(2n+2) X y(2n) y(2n) X

x(2n)* M y(2n-2)* M
U ' U '
x(2n+1)* X y(2n-1)* X

图 4-17 次级列变换模块

计如图4-18所示,其中矩形为寄存器。转置模块对依次到来的H与L分量进行5级
暂存,并由3个选择器进行数据选取使得H分量与L分量分离并行进入行变换模
块。同时数据选取之后再对H(2n)(或L(2n))和H(2n + 2)(或H(2n + 2))延时1周期以
保证H(2n + 1)(或L(2n+1))提前1周期进入,达到行变换错位处理的目的。

L2 H2 L1 H1 L0 H0

0 1 0 1 0 1

D L0 H0

H3 L1 H1

D L2 H2

图 4-18 次级转置模块

通过对表4-3与图4-18的时序分析可以发现,行变换模块的数据流进入方式
与列变换模块几乎一致,区别只在于行变化模块的数据流更为连续,因此可以
不需要借助RAM进行大规模数据存储完成一维变换。由于与列变换模块数据处
理方式一致,因此对行变换模块的设计如图4-19所示,其中Buffer均为两个数据
深度且根据中间量进行有选择的存储。行变换模块输出值为待缩放的小波系数,
41
天津大学硕士学位论文

2 2
小波系数以 αβγ
1 1
HH、 (αβγ) 1 1
2 δ HL、 (αβγ)2 δ LH和 αβγδ LL的顺序输出,每周期输出1个

小波系数。

Buffer1 Buffer2 Buffer3

y(2n-1) M H(2n-3) M
U U
x(2n) X y(2n-2) X

y(2n+1)/
y(2n+1) M H(2n-1) M
y(2n)
U ' U ' H(2n-1)/L(2n-2)
x(2n+2) X y(2n) X

x(2n)* M y(2n-2)* M
U ' U '
x(2n+1)* X y(2n-1)* X

图 4-19 次级行变换模块

根据行变换模块输出特点,一次缩放模块只需要根据输入小波系数的值对
乘法系数进行选择即可,其结构如图4-20所示。

LL LH HL HH D LLo LHo HLo HHo

MUX

图 4-20 次级缩放模块

与第一级结构设计相同,在将列变换模块、转置模块、行变换模块与缩放
模块依次连接形成并行度为1的二维离散小波变换架构后,同样对该结构进行
并行处理。并行处理时,列变换模块需要与上下条带的列变换模块进行中间数
据交互,其余模块则不需进行变动。其结构与图4-13一致,当第一级并行度为S
时,根据前文所述,第二级并行度为S /2,输入数据量为S + 1。

4.3.3 第三级结构设计

在三级小波变换的情况下,经过第二级处理的数据中LL 分量需要进入第三
级进行进一步的滤波处理。如图4-21所示为第二级数据输出与第三级的级联设
计,第三级如采用与前两级同样的时钟周期则每4个时钟周期才可以得到一个有
效数据LL分量。因此可以认为此时的时钟数据比为4:1。根据这一情况需要对第
三级结构进行单独设计以满足时钟数据比为4:1的处理。
数据首先进入第三级的列变换模块,经过错位调整后列变换数据输入时
序如表4-5所示,每个输入均为4周期得到1个有效数据,同时xk (2n + 1)仍旧先
于xk (2n)和xk (2n + 2)1个周期进入模块。
对于时钟数据比为4:1的离散小波变换模块,由于每4个时钟周期有一组有效
数据,因此在列模块变换内部可以对基本运算模块进行全折叠,即对于一组数
42
第 4 章 多级离散小波变换优化

㓗䰤RAM

DWT LL LH HL HH
DWT
DWT LL LH HL HH

DWT LL LH HL HH
DWT
DWT LL LH HL HH

㓗䰤RAM

图 4-21 次级第三级级间连接

表 4-5 第三级数据输入时序

时钟周期 输入1 输入2 输入3

CLK1 - xk (2n + 1) -

CLK2 xk (2n) - xk (2n + 2)

CLK3 - - -

CLK4 - - -

CLK5 - xk+1 (2n + 1) -

CLK6 xk+1 (2n) - xk+1 (2n + 2)

CLK7 - - -

CLK8 - - -

据的4次运算处理,通过4次调用一个基本运算模块并通过乘法系数选择来完成。
其结构设计如图4-22所示,结构中RAM 深度均为N/4。
结合表4-6对该结构时序进行说明。在CLK1周期,三个输入中仅有xk (2n +
1)为 有 效 输 入, 进 入 乘 法 路 径 得 到 α1 xk (2n + 1)并 存 入 寄 存 器D2中。 CLK2周
期, 三 个 输 入 中xk (2n)与xk (2n + 2)为 有 效 输 入, 与D2寄 存 的 α1 xk (2n + 1)共 同
运 算 得 到 α1 yk (2n + 1)存 入 寄 存 器D1中。 同 时MUX3选 择xk (2n)进 入 乘 法 路 径,
得 到 αβ
1
xk (2n)存 入 寄 存 器D2。CLK3周 期 的 输 入 均 为 无 效 输 入,因 此MUX1、
MUX2选取RAM1 中读取的 α1 yk (2n − 1)、D1中读取的 α1 yk (2n + 1)作为模块运算输
入,同D2中读取的 αβ
1 1
xk (2n)一起运算得到 αβ yk (2n);同时MUX3 选取 α1 yk (2n − 1)进
入 乘 法 路 径 得 到 αβγ
1
yk (2n − 1)存 入D2。 CLK4周 期 输 入 同 样 均 为 无 效 输 入,
因 此MUX1、 MUX2选 取RAM2中 的 αβ
1
yk (2n − 2)和D1中 存 储 的 αβ
1
yk (2n), 同D2
中 存 放 的 αβγ
1
yk (2n − 1)一 同 进 行 加 法 运 算 得 到 αβγ
1
Hk (2n − 1) 并 存 入D1; 同
时MUX3选 取 αβ
1
yk (2n − 2)进 入 乘 法 路 径 得 到 αβγδ
1
yk (2n − 2)存 入D2。CLK5周 期
有 效 输 入 为xk+1 (2n + 1),其 由MUX3选 择 进 入 乘 法 路 径 进 行 下 一 列 的 变 换。

43
天津大学硕士学位论文

1
MUX1、MUX2选取RAM3中 αβγ Hk (2n − 3)和D1 中寄存的 αβγ
1
Hk (2n − 1),与D2中
的 αβγδ
1 1
yk (2n − 2)进行加法运算得到 αβγδ Lk (2n − 2)并输出。之后重复此过程继续得
到其他列的 αβγδ
1
L值。

RAM1/RAM2/RAM3
x(2n)/y(2n-1)/
0 y(2n-2)/H(2n-3)
8
;
x(2n+2)/y(2n+1)/
0 y(2n)/H(2n-1) y(2n+1)/y(2n)/
8 D1 H(2n-1)/L(2n-2)
;
x(2n+1)*/x(2n)*/
0 y(2n-1)*/y(2n-2)*
8 D2
;

图 4-22 第三级列变换模块

表 4-6 第三级列变换时序
时钟周期 MUX1 MUX2 MUX3 D2 D1
CLK1 - - xk (2n + 1) - -
CLK2 xk (2n) xk (2n + 2) xk (2n) α xk (2n + 1)
1
-

α yk (2n + 1) α yk (2n + 1)
1 1 1 1 1
CLK3 α yk (2n − 1) α yk (2n − 1) αβ xk (2n)
1 1 1 1 1
CLK4 αβ yk (2n − 2) αβ yk (2n) αβ yk (2n − 2) αβγ yk (2n − 1) αβ yk (2n)
CLK5 1
αβγ Hk (2n − 3)
1
αβγ Hk (2n − 1) xk+1 (2n + 1) 1
αβγδ yk (2n − 2)
1
αβγ Hk (2n − 1)
CLK6 xk+1 (2n) xk+1 (2n + 2) xk+1 (2n) α xk+1 (2n + 1)
1 1
αβγδ Lk (2n − 2)

数据经列变换处理后,每4个周期中有2个周期会依次输出小波系数H和L,
其余两个周期生成的y(2n + 1)和y(2n)并不需要输出进行行变换而是重新作为输入
返回列变换模块。数据需要经转置模块调整后进入行变换模块,根据数据流特
点对第三级的转置模块设计如图4-23所示,共需要12个寄存器和3个选择器,图
中“−”表示无关数据。
L2 H2 - - L1 H1 - - L0 H0 - -

0 1 0 1 0 1

D L0 H0

L1 H1

D L2 H2

图 4-23 第三级转置模块

数据经过转置后同样为每4个时钟时钟周期进入1组有效数据,因此行变换
44
第 4 章 多级离散小波变换优化

模块设计与列变换模块设计基本一致,只是将其中RAM替换为两个数据深度
的Buffer即可,其结构如图4-24所示,在此不对其时序进行赘述。数据经行变换
模块处理后会依次输入待变换的小波系数,通过一次缩放模块对其进行选择缩
放即可,缩放模块结构与第二级中一致,不过需要对乘法系数选择器进行重新
配置以满足数据流的需求。

Buffer1/Buffer2/Buffer3
x(2n)/y(2n-1)/
0 y(2n-2)/H(2n-3)
8
;
x(2n+2)/y(2n+1)/
0 y(2n)/H(2n-1) y(2n+1)/y(2n)/
8 D1 H(2n-1)/L(2n-2)
;
x(2n+1)*/x(2n)*/
0 y(2n-1)*/y(2n-2)*
8 D2
;

图 4-24 第三级行变换模块

同 前 两 级 一 样,第 三 级 同 样 可 以 进 行 搭 建 为 并 行 架 构。根 据 二 三 级 间
数据流分析,当第二级并行度为S /2时第三级并行度为S /4,并行输入数据量
为S /4 + 1。

4.3.4 多级结构设计

在对每一级二维离散小波变换进行单独设计后,可以进行多级小波变换的
结构搭建。需要指出的是,由于提升算法中运算处理共分为4级,而在第三级的
结构设计中已经对基本运算模块进行了四级折叠重复调用,因此在第三级每8个
周期输入1个LL 分量的情况下,不需要再对下一级变换进行单独设计。换而言
之,在该条件下第四级需要采用与真实输入数据相匹配的时钟输入(即为前三
级所用时钟频率的1/8),因此第四级与第三级的并行度相同。与前三级设计类
似,第四至六级同样使用统一时钟并进行内部折叠设计。
对L级二维离散小波变换而言,因为每三级内每一级的并行度为上一级
L−1
的1/2,所以第一级的并行度S 需要满足S ≥ 2L−1−b 3 c (L ≥ 1) 的条件。因此对L级
离散小波变换如图4-25所示,图中Ln 代表级数,S n 代表在当前级并行结构中的
位置。

45
天津大学硕士学位论文

ᰦ䫏ฏ ᰦ䫏ฏ
DWT
L1 S1
DWT
L2 S 1
DWT DWT DWT
L1 S2 L3 S1 L4 S1
䗃 ሿ
‫ޕ‬ ⌒
ᮠ ㌫
ᦞ ᮠ
DWT DWT DWT
L1 Ss-1 L3 Ss/4 L4 Ss/4
DWT
L2 Ss/2
DWT
L1 Ss

图 4-25 多级小波变换架构

4.4 系统资源估计与对比

4.4.1 系统资源估计

为计算整体架构资源消耗,需要首先对每一级中的不同模块的资源消耗进
行统计。为便于与其他结构进行硬件效率对比,对三级二维离散小波变换的资
源消耗进行数据统计,输入数据为大小为N 2 、像素点位宽为8bit的图像信号。
第一级变换中各模块的资源消耗如表4-7所示,其中乘法器、加法器、寄存
器与RAM均为16bit位宽。根据表可以得知在第一级并行度为S 时所需加法器数
量为16S ,所需乘法器数量为10S ,寄存器数量为35S ,而暂存RAM的数据深度
仍为3N。

表 4-7 第一级资源消耗

模块 加法器 乘法器 寄存器 暂存RAM

列变换模块 8 4 11 3N

转置模块 − − 5 −

行变换模块 8 4 17 −

缩放模块 − 2 2 −

总计 16 10 35 3N

对 于 第 二 级 与 第 三 级 而 言,所 处 理 数 据 均 为 上 一 级 的1/4 即 第 二 级 处
理的LL1 分量总量为N 2 /4(总量为N 2 的数据被滤波为四种分量LL、LH、HL、
HH),因此其暂存RAM的数据深度为上一级1/2。第二三级的资源消耗如表4-
8所示,当第一级并行度为S 时,二三级并行度分别为S /2和S /4,因此第二级加

46
第 4 章 多级离散小波变换优化

法器数量为4S ,所需乘法器数量为5S /2,寄存器数量为14S ,暂存RAM的数据


深度仍为3N/2;第三级加法器数量为S ,所需乘法器数量为3S /4,寄存器数量
为29S /4,暂存RAM的数据深度仍为3N/4。

表 4-8 第二三级资源消耗

模块 加法器 乘法器 寄存器 暂存RAM

第二级列变换模块 4 2 7 3N/2

第二级转置模块 − − 7 −

第二级行变换模块 4 2 13 −

第二级缩放模块 − 1 1 −

第二级总计 8 5 28 3N/2

第三级列变换模块 2 1 5 3N/4

第三级转置模块 − − 12 −

第三级行变换模块 2 1 11 −

第三级缩放模块 − 1 1 −

第三级总计 4 3 29 3N/4

除上述资源消耗统计以外,还有两部分存储资源消耗需要计入。第一部
分是级间为满足下一级输入条件而进行级间存储的RAM 空间: 第一二级级
间RAM深度为N/2,第二三级级间RAM深度为N/4。另一部分是输入的输入缓
存:对于本设计而言,由于第一级并行度为S 且每一条带均为重复扫描一行的并
行三输入扫描方式,因此输入数据并行度为2S + 1;输入数据为8bit 位宽的前提
下,输入暂存共需要深度为(2S + 1)N位宽为8bit的RAM。综上,本次设计的三
级离散小波变换架构总资源消耗如表4-9所示。

表 4-9 三级小波变换资源消耗

架构 加法器 乘法器 寄存器 暂存RAM 输入RAM CPD

本设计 21S 53S /4 225S /4 7N (2S + 1)N Tm

4.4.2 系统资源对比

同已有多级二维离散小波变换架构的资源对比如表4-10所示,表中乘法器、
加法器、寄存器和暂存RAM均为16bit位宽,输入RAM 为8bit位宽。需要说明的
是,表4-10 中Wu [35] 结构为无乘法器结构因此其乘法器数量为0。
为了更加直观的进行数据对比以判定不同多级结构的硬件效率,表4-11和4-
12中同样对已有结构进行基于晶体管-延时-吞吐率的TDP值估算。
以TDP为衡量基准,在输入数据量为512 × 512时同已有最优架构相比本结
构的硬件效率优化至少达到17% 以上;数据量为1024 × 1024时同已有最优架构

47
天津大学硕士学位论文

表 4-10 三级小波变换资源对比

架构 乘法器 加法器 寄存器 暂存RAM 输入RAM CPD

Mohanty [15] 189S


16 21S 315S
4
89N
8 (2S + 1)N T m + 2T a
105S +48 105S +48
Hu [19] 8 21S + 12 4 3N (2S + 7)N Tm + Ta
21N
Mohanty [10] 189 294 443 4 23N Tm
15N
Wu [35] 0 123 167 2 3N Ta

本结构 53S
4 21S 225S
4 7N (2S + 1)N Tm

表 4-11 N = 512时三级结构硬件效率

架构 并行度 TC CPD ACT TDP ×1010 本结构相对优化度

Mohanty [15] S = 16 2568684 12.81 8192 26.955 34.706%

Hu [19] S = 16 2655936 9.80 8192 21.322 17.456%

Mohanty [10] S =8 2190908 6.79 16384 24.373 27.789%

Wu [35] S =1 574376 3.01 131072 22.660 22.330%

本结构 S =8 1582040 6.79 16384 17.600 −

表 4-12 N = 1024时三级结构硬件效率

架构 并行度 TC CPD ACT TDP ×1010 本结构相对优化度

Mohanty [15] S = 16 4313508 12.81 32768 181.066 42.396%

Hu [19] S = 16 3761856 9.80 32768 120.803 13.660%

Mohanty [10] S =8 3014204 6.79 65536 134.129 22.238%

Wu [35] S =1 989480 3.01 524288 156.151 33.205%

本结构 S =8 2343896 6.79 65536 104.301 -

相比本结构的硬件效率优化至少达到13% 以上。因此可以认为,对于多级二维
离散小波处理而言,本结构在硬件效率上优于现有结构。

48
第 5 章 基于JPEG2000的结构测试

第5章 基于JPEG2000的结构测试

本章基于JPEG2000图像压缩算法的硬件实现,对离散小波变换模块功能进
行仿真。功能仿真完成后对设计结构进行板级测试,测试系统为基于FPGA 的
数字图传系统,主要包括图像采集、压缩与传输功能,均基于FPGA 完成。首先
对JPEG2000的算法进行接收,之后对模块功能进行测试。测试完成后,对板级
图传系统的模块功能进行简介,并展示板级测试结果。

5.1 JPEG2000算法简介

JPEG2000继承了JPEG的诸多优秀特性是较为先进的图像压缩算法,其结构
如图5-1所示。

⸱⦷᧗ࡦ

(%&27㕆⸱

⿫ᮓ 7LHU 7LHU ⸱
മ 亴༴⨶ 䟿ॆ
ሿ⌒ਈᦒ 㕆⸱ 㕆⸱ ⍱
‫ۿ‬

图 5-1 JPEG2000编码流程图

在原始图像完成采集的情况下,数据首先需要进入经预处理模块。预处理
模块是JPEG2000编码的前期准备部分,主要完成对数据像素的tile 分块、电平
位移和分量变换。tile分块是将原始图像划分为互不重合的编码块以备后续进行
压缩编码,后续的处理以Tile块为基本处理单元。电平位移将像素点根据协议标
准由无符号数转变为有符号数。分量变换是将像素点转化为JPEG2000处理所需
的YUV格式,若原始数据的分量数大于3 则分量变换只针对前3分量进行操作。
原始图像经过预处理后,由多级二维离散小波变换模块对其进行滤波
处 理。 滤 波 的 目 的 是 将 信 息 向 低 频 子 带 聚 拢, 使 高 低 频 分 量 分 离, 为 之
后的EBCOT(Embedded Block Coding with Optimization Truncation, EBCOT)编码
和Tier2的截断编码提供基础。JPEG2000协议中兼备了两种小波处理能力即5/3小
波变换和9/7小波变换,前者用于进行无损压缩而后者进行有损压缩。由于9/7小
波变换压缩效果更佳,因此应用更为广泛。
经过离散小波变换后的小波系数还存在着一般不为人眼所能察觉的冗余量,
需要对这些冗余信息通过量化的方式加以处理,这样可以提高后续编码的效率。
JPEG2000 规定在离散小波变换后对小波系数进行量化处理,依据子带信息得到

49
天津大学硕士学位论文

不同的量化步长,通过量化运算最终得到量化后的小波系数。
量化后的小波系数进行EBCOT编码,EBCOT编码划分为Tier1 和Tier2两部
分,Tier1模块内又包含位平面编码和MQ熵编码两部分。系数在位平面编码模
块中依据相邻像素点相似度越高位平面一致性越高的原理,被转换为上下文信
息CX 和决策比特D两部分。之后在MQ熵编码器中以CXD为依据通过概率估计
模型进行算数熵编码,形成带有后补阶段点的Tier1码流。之后在Tier2编码中,
依据PCRD优化截断算法对Tier1 码流进行截断,并打包封装,形成最终的二进
制码流。

5.2 功能仿真验证

功能验证的总体原则为基于已有工作基础与工程,通过testbench读取待测
图像进入离散小波变换处理模块,小波变换模块对数据进行处理并量化,之后
由EBCOT 模块对小波系数进一步处理形成压缩码流输出至TXT文档,之后通
过WinHex创建JP2文件导入码流并通过视图软件解码打开文件,以观察效果。

5.2.1 CSD结构功能验证

对于第三章所设计单级离散小波变换结构,依据JPEG2000 协议以折叠架构
的形式形成多级结构,其结构如图5-2所示。
ཊ㓗ሿ⌒ਈᦒ
HL
RAM2
অ㓗ሿ⌒ਈᦒ
LH
M RAM3
䗃‫ޕ‬ᮠᦞ U ':7 M
X U 䟿ॆ (%&27
HH
RAM4 X

RAM1
㓗޵ਈᦒ㕃ᆈ
LL LLᲲᆈ

图 5-2 折叠CSD离散小波变换结构

单级并行度为1位二维离散小波变换模块设计结构如第三章中所述。进行第
一级变换处理的过程中,小波系数LL1 、HL1 、LH1 和HH1 输出并存储至RAM1、
RAM2、RAM3和RAM4中; 当第一级小波变换完成后,从RAM1中读取LL1 重
新进入离散小波变换模块,并根据当前小波级数对模块中的用于信号位置判
定的行列参数进行选择,完成第二级的变换处理并将小波系数LL1 、HL1 、LH1
和HH1 继续存入RAM1、RAM2、RAM3和RAM4中,之后三级与之前处理一致。

50
第 5 章 基于JPEG2000的结构测试

设计采用的RAM为异步双口RAM,对于N × N大小的测设图像进行L级的变
换来讲,RAM2、RAM3、RAM4的大小为:

L−1
X N2
RAM size = (5-1)
j=1
4j
因 此 大 小 为128 × 128的 测 试 图 像 进 行5级 小 波 变 换, 所 需RAM2、
RAM3和RAM4数据深度均为5440,数据位宽为16bit。
对于RAM1来讲,由于其存储小波系数LLn 分量,且LLn 分量会进行反复读
写操作,因此N × N大小的测试图像进行L级变换时需要N 2 /4深度的空间。当第
一级存满N 2 /4空间后会被读取,LL2 分量可直接写入被读取的LL1 位置且LL2 分
量的总数据量为N 2 /16,因此N 2 /4深度的空间足以容纳。之后级数越高LLn 分量
数据量越小,因此RAM1数据深度为N 2 /4。对于大小为128 × 128的测试图像进
行5级小波变换,所需RAM1数据深度均为4096,数据位宽为16bit。
数据经多级变换处理后存储于RAM中,之后被量化后由EBCOT模块以编码
块的形式读取并进行压缩编码,最终经tier2模块处理后输出压缩码流。
以128 × 128的lena图像为测试图像进行测试,所读取文件如图所示为128 ×
128 × 3预 处 理 后 文 件,文 件 中 顺 序 存 放 着YUV分 量 有 符 号 像 素 值,数 据 位
宽为8bit。经系统压缩后的JPEG2000码流如图所示,图像以 f f 4 f f f 51为起始,
以 f f d9部分为结束。

(a) 初始像素值 (b) 输出码流

图 5-3 处理文件

测试信号如图5-4 (a) 和5-4 (b) 所示。图5-4 (a)为并行三输入波形,输入信


号even 1 data、odd data和even 2 data 分别对应公式中的x(2n)、x(2n+1)和x(2n+
2)。数据进入后缓存1周期,之后进行CSD乘法以及加法的三级流水线运算,得
到 α1 x(2n + 1)、 αβ+1
1
x(2n) 和x(2n) + x(2n + 2)。图5-4 (b)为缩放模块信号,由列变换
模块输出的待缩放信号row ldata和row ldata进入缩放模块后,经过选择后进入
不同的乘法器进行三级运算,之后经选择输出,为最终的二维离散小波系数。
51
天津大学硕士学位论文

(a) CSD结构测试波形1

(b) CSD结构测试波形2

图 5-4 CSD结构压缩测试

经5级离散小波变换处理的压缩前后图像如图5-8所示。

(a) lena原始图像 (b) lena压缩后图像

图 5-5 CSD结构测试图

5.2.2 内部折叠结构功能验证

对第四章所设计多级内部折叠结构进行功能验证,设计为5 级离散小波变化
结构如图5-6所示。
L−1
根据前文所述,第一级的并行度S 需要满足S ≥ 2L−1−b 3 c (L ≥ 1) 的条件,
因 此5级 结 构 下 第 一 级 并 行 度 为8即 一 次 输 入 数 据 量 为17个 并 行 像 素 点。由
于系统为展开多级结构,每一级的小波系数LLn 、HLn 、HLn 和HHn 同时产生,
因 此 无 法 通 过4个RAM来 解 决 小 波 系 数 的 存 放 问 题。本 设 计 中 通 过RAM12、
52
第 5 章 基于JPEG2000的结构测试


‫ޕ‬ অ㓗 LL1 অ㓗 LL2 অ㓗 LL3 অ㓗 LL4 অ㓗
ᮠ ሿ⌒ਈᦒ ሿ⌒ਈᦒ ሿ⌒ਈᦒ ሿ⌒ਈᦒ ሿ⌒ਈᦒ

RAM㓴 RAM㓴 RAM㓴 RAM㓴 RAM㓴

M
U 䟿ॆ (%&27
X

图 5-6 内部折叠离散小波变换结构

RAM13和RAM14来 存 储HL1 、 LH1 和HH1 ,其 数 据 深 度 分 别 为4096,依 次 类


推RAM与子带对应关系如表5-1所示。数据经RAM存储后被EBCOT模块读取并
处理打包,之后输出至文件。

表 5-1 RAM与小波系数对应关系

RAM 子带 数据深度 RAM 子带 数据深度

RAM12 HL1 4096 RAM34 HH3 256

RAM13 LH1 4096 RAM42 HL4 64

RAM14 HH1 4096 RAM43 LH4 64

RAM22 HL2 1024 RAM44 HL4 64

RAM23 HL2 1024 RAM51 LL5 16

RAM24 HL2 1024 RAM52 HL5 16

RAM32 HL3 256 RAM53 LH5 16

RAM33 HL3 256 RAM54 HH5 16

部分测试波形如图5-7所示。图5-7 (a)为数据输入,从图中可以观察到上下
两个条带存在一行重复扫描即上一条带的even 2 data与下一条带的even 1 data为
同一数值;图5-7 (b)为基本运算模块的内部波形,为保证数据精度在图像压缩实
测中基本运算单元的加法路径输入信号位宽设为21bit,乘法路径输入信号位宽
为16bit,输出信号位宽为21bit,输出信号在模块外部根据当前输出系数含义进
行截位。图5-7 (c)为时钟数据比2:1 时的基本运算模块的内部波形,通过in opt信
号标记当前输入是否为有效输入,选取基本运算模块的真实输入并以该信号
对乘法系数mul coe 进行选择,同时对该信号延时1周期后标记输出信号系数含
义。
图5-8 (a)位 原 始lion图 像 大 小 为1024 × 768, 对 其 进 行 分 块 处 理 后 形
成48个128 × 128的tile块, 之 后 对tile块 进 行 处 理。 图5-8 (a)所 示 为lion图 的
第37个tile块压缩后图像。

53
天津大学硕士学位论文

(a) 内部折叠结构测试波形1

(b) 内部折叠结构测试波形2

(c) 内部折叠结构测试波形3

图 5-7 内部折叠结构测试波形

5.3 图传系统结构

图传系统共划分为图像采集、压缩与传输模块,通过FPGA 实现编码与控
制,其结构如图5-9所示。

5.3.1 采集模块

图 像 采 集 模 块 为 图 像 传 感 器。一 般 而 言 图 像 传 感 器 可 以 划 分 为 两 类:
CMOS图像传感器和CCD图像传感器。其中CMOS具有规模小、体积小和功耗低
等优势,因此本设计采用了CMOS图像传感器作为图像采集模块。
本 系 统 中 采 用 了OmniVision公 司 的OV9650 CMOS图 像 传 感 器, 其 最 大
可 支 持1024 × 1028分 辨 率 的 图 像。 其 电 路 结 构 如 图5-10所 示。 其 工 作 时 需

54
第 5 章 基于JPEG2000的结构测试


‫ޕ‬
ᔿ ԕཚ㖁 ㄟ
മ‫ۿ‬㕆⸱

(a) lion原始图像 (b) tile37压缩图

图 5-8 内部折叠结构测试图

)3*$

മ‫ۿ‬䟷䳶 മ‫঻ۿ‬㕙 മ‫ۿ‬Ր䗃 ԕཚ㖁

图 5-9 图传流程构成

要FPGA提供3.3V高电平、同步信号以及配置信号。像素信号由CAMDAT A0 ∼
CAMDAT A7 管脚给出。输出像素的位宽为8bit,像素组织形式为“YUYV”的
顺序,即像素为YUV分量形式且相邻两个像素点共享UV分量。

图 5-10 摄像头电路原理图

在本测试系统中,通过对摄像头参数的修改使其采集图像大小为640 × 384,
图像采集后以tile块的形式在SRAM中进行存储以备压缩使用。Tile块的大小
55
天津大学硕士学位论文

为128 × 128,每幅图划分为15个tile块进行分别压缩处理与传输。为了防止由于
导线连接引起的信号毛刺和异常跳变等问题,依据OV9650的电路图绘制了如
图5-11所示的连接板来连接采集模块与开发板。

(a) 顶层 (b) 底层

图 5-11 OV9650 PCB 版图

5.3.2 压缩模块

经图像传感器模块采集的数据经存储后,由JPEG2000图像压缩模块读取并
进行压缩编码。
利用JPEG2000,可以在不对整个压缩文件进行解压缩的前提下抽取各种分
辨率、质量、分量或空间区域。同时该算法具有在相同压缩质量下更高的压缩
比;可依据需要进行渐进传输;可自由设置压缩质量更高的感兴趣区域;可以
同时支持复数压缩方式,适用于无损领域和有损领域;可以对错误进行有效恢
复;可以对码流进行随机访问以识别所传输的数据等优秀特性。
JPEG2000编码系统可划分为预处理模块、离散小波变换模块、量化模块、
Tier1模块和Tier2模块。其中Tier1模块内部又可分为位平面编码模块和MQ模块。
JPEG2000 图像压缩在FPGA上通过全硬件编程实现,最终形成封装打包后的图
像二进制码流。

5.3.3 传输模块

经封装与打包后的二进制码流通过网口以网络包的形式进行传输,网
络 模 块 选 用WIZnet公 司 产 品W5500网 络 模 块。 W5500模 块 是 一 款 集 成 全 硬
件TCP/IP协议栈的嵌入式以太网模块,支持高速SPI结构,内含32K Tx/Rx缓
存和8路独立Socket以收发网络包。
W5500与 主 控 的FPGA芯 片 通 过4线SPI结 构 进 行 通 信, 速 率 理 论 上 限 可
达80MHz。SPI4线连接分别为片选线SCSn、时钟线SCLK、主机输出线MOSI以

56
第 5 章 基于JPEG2000的结构测试

及从机输出线MISO。在本设计中采用了SPI1型通信协议即SCSn控制传输长度,
无信号传输时时钟SCLK保持低电平,数据在时钟上升沿采样,在时钟下降沿跳
变。
如图5-12所示,FPGA通过ISE的嵌入式编程系统microblaze对W5500进行控
制。嵌入式从硬件编码端读取接收二进制码流,并在内部调用FIFO解决数据速
率不匹配的问题。之后以SPI 形式进行封装传入W5500模块,采用UDP模式调
用8路socket进行打包并传输至PC端,在PC端进行数据接收解码与显示。

፼ SCLK
‫ޕ‬ SCSn
FPGA
ᔿ W5500 ԕཚ㖁 PCㄟ
മ‫ۿ‬㕆⸱ MOSI

ࡦ MISO

图 5-12 系统传输流程

5.4 板级模块测试

在已有的JPEG2000图像压缩系统验证平台和图像采集传输系统的基础上,
对多级离散小波变换的优化设计进行了综合验证,所验证结构为经运算加速基
于CSD 设计的离散小波变换结构。测试平台开发板型号为ML505,FPGA型号
为xc5vlx110t,工程结构如图5-13所示。

图 5-13 工程结构

系统最高时钟频率为120MHz,如图5-14所示。通过ISE14.7对代码进行综合
编译,形成最终编译码流。
连接开发板后将开发板通电,之后将硬件程序烧入FPGA形成硬件工作平
台。完成硬件平台烧录后通过ISE自带的软件编译烧录工具SDK编译嵌入式部分
代码,而后将软核码流下载入FPGA芯片。码流全部烧写完成后通过开发板上的

57
天津大学硕士学位论文

图 5-14 系统最高频率

按键控制系统开始运行,同时在PC端打开python脚本文件接收并整理数据。摄
像头采集数据后经JPEG2000 压缩编码后,由软核控制的W5500 以UDP 网络包
的形式传输至PC 端,在PC端接收并整理写入jpc文件成图,之后以ADCSee 软件
打开压缩图像以观察压缩结果。压缩图如图5-15所示,图像大小为640 × 384,格
式为JPC格式。

(a) 测试图1 (b) 测试图2

图 5-15 板级测试成像

58
第 6 章 总结与展望

第 6 章 总结与展望

6.1 总结

本文在学习研究小波变换基本理论与算法的基础上,对如何进行离散小波
变换的VLSI硬件架构设计与优化进行了深入研究。由于离散小波变换的运算密
集度较高,在运算过程中会消耗大量的运算资源与延时,因此结合实际的应用
环境与应用要求设计一种资源能耗更低、关键路径更短的高性能离散小波变换
的硬件架构是我们的主要研究目的。
本文所设计离散小波变换结构主要应用与测试环境为实现于FPGA平台的
基于JPEG2000的静态图像压缩与传输系统。继承自JPEG的JPEG2000图像压缩
算法由于其复杂度高、运算密集等特性更适用于硬件实现。随着相关研究的增
加,JPEG2000架构的不断优化,其硬件效率在近年间也得以不断提升。本文认
真研读了JEPG2000图像压缩标准,并基于此硬件工程对所设计结构进行测试与
应用。
本文主要工作内容包括如下几项。
(1)对离散小波变换的基本思想、实现过程和算法演变进行了深入研究和分
析。在此基础上对离散小波变换的卷积算法和提升算法进行了对比研究,选取
了更加利于硬件实现算法。
(2)对于近年来众多学者对离散小波变换的硬件结构实现与优化进行了细致
分析,总结了当前算法结构尤其是二维变换结构影响硬件实现效率的主要因素,
分析了当前已有结构的优化目标与设计优势及缺陷,对进一步的优化方向进行
了探究。
(3)针对硬件结构的瓶颈,选取了合适的离散小波算法对单级二维离散小波
结构进行了VLSI设计,采用了横向并行扫描并引入了CSD结构降低了关键路径
延时同时降低了资源消耗,提升了整体的硬件效率。
(4)仔细分析多级折叠结构与展开结构的特点后,针对展开结构存在的时钟
与数据不匹配问题进行了多级二维离散小波变换的展开结构优化设计,通过内
部运算折叠的方式降低了系统资源消耗与功耗,提升了系统硬件效率。
(5)对JPEG2000静态图像压缩标准与算法进行了深入学习,同时分析了其中
离散小波变换模块与前后模块间的数据交互方式,并且针对JPEG2000 应用环境
对所设计结构进行了相应调整与融合,之后基于JPEG2000硬件结构对所设计离
散小波变换进行验证。
(6)对实现于FPGA的板级图像压缩传输系统进行了简介,并根据图传系统基

59
天津大学硕士学位论文

于JPEG2000图像压缩工程对所设计结构进行了板级测试。

6.2 展望

本设计完成了离散小波变换的VLSI系统设计与优化,并基于JPEG2000系统
进行了验证与测试,但是存在可进一步改进的地方:
(1)所设计单级离散小波变换结构并行度较低且未对高并行结构进行专门设
计,在对数据整体处理时间要求更高的应用环境下会出现力所不及的情况,需
要对该结构进一步设计以满足高并行度情况下的数据变换处理需求。
(2)所设计单级结构在测试工程中采用折叠多级结构的方式进行功能验证与
仿真,这会造成较大的资源消耗与处理延时,下一步的工作需要对该结构进行
多级化的设计与优化。
(3)基于FPGA板级JPEG2000工程的EBCOT模块为非并行结构,只能对处理
后的小波变换进行串行处理,因此展开多级结构中多级小波系数同时产生的优
势无法发挥,因此下一步的工作中可对整体工程尤其是EBCOT模块进行并行优
化,以最大程度的发挥展开多级离散小波变换模块的优势。

60
参考文献

参考文献

[1] 祝鹏, 王成儒. 小波包变换与Teager能量算子结合的说话人识别 [J]. 计算机


工程与应用, 2013 (9): 187–189.
[2] 米小珍, 车宇, 董华军. 基于离散小波变换和人类视觉系统的数字水印算法
[J]. 大连交通大学学报, 2012 (33): 48–52.
[3] 汪太月.基于变换域的数字图像水印算法研究 [D].武汉:中国地质大学,
2013.
[4] 程涛, 厉鲁卫. 基于小波变换的医学图像压缩技术 [J]. 计算机与数字工程,
2009 (37): 136–138.
[5] 韩宝如, 林尔敏. 离散小波变换在医学图像中的应用 [J]. 电子测试, 2016 (15):
39–40.
[6] 马少华, 曹三民. 离散小波变换在指纹特征提取中的应用 [J]. 数字技术与应
用, 2011 (10): 94.
[7] Christopoulos C, Skodras A, Ebrahimi T. The JPEG2000 still image coding sys-
tem: an overview [J]. IEEE Transactions on Consumer Electronics, 2000, 46 (4):
1103–1127.
[8] Singh S, Kumar V, Verma H K. Reduction of blocking artifacts in JPEG com-
pressed images [J]. Digital Signal Processing, 2007, 17 (1): 225–243.
[9] Wen J F, Wang J Z, Wang B, et al. A format-compliant encryption scheme for
JPEG2000 codestream [C]. In 2010 IEEE International Conference on Informa-
tion Theory and Information Securit, Beijing, China, 2010: 1038–1041.
[10] Mohanty B K, Meher P K. Memory-Efficient High-Speed Convolution-Based
Generic Structure for Multilevel 2-D DWT [J]. IEEE Transactions on Circuits
and Systems for Video Technology, 2013, 23 (2): 353–363.
[11] Mohanty B K, Meher P K. Efficient multiplierless designs for 1-D DWT using 9/7
filters based on distributed arithmetic [C]. In Proceedings of the 2009 12th Inter-
national Symposium on Integrated Circuits, Singapore, Singapore, 2009: 364–
367.
[12] Daubechies I, Sweldens W. Factoring wavelet transforms into lifting steps [J].
Journal of Fourier Analysis and Applications, 1998, 4 (3): 247–269.
[13] Darji A D, Limaye A. Lifting scheme: a new philosophy in biorthogonal wavelet
constructions [C]. In Proc.SPIE, San Diego, CA, 1995: 68–79.
[14] Song J, Park I C. Novel pipelined DWT architecture for dual-line scan [C]. In
2009 IEEE International Symposium on Circuits and Systems, Taipei, Taiwan,
2009: 373–376.

61
天津大学硕士学位论文

[15] Mohanty B K, Meher P. Memory Efficient Modular VLSI Architecture for High-
throughput and Low-Latency Implementation of Multilevel Lifting 2-D DWT [J].
Signal Processing, IEEE Transactions on, 2011, 59 (5): 2072–2084.
[16] Tian X. Efficient Multi-Input/Multi-Output VLSI Architecture for Two-
Dimensional Lifting-Based Discrete Wavelet Transform [J]. IEEE Transactions
on Computers, 2011, 60 (8): 1207–1211.
[17] Mohanty B K, Mahajan A, Meher P K. Area- and Power-Efficient Architecture for
High-Throughput Implementation of Lifting 2-D DWT [J]. Circuits and Systems
II: Express Briefs, IEEE Transactions on, 2012, 59 (7): 434–438.
[18] Hu Y, Jong C C. A Memory-Efficient Scalable Architecture for Lifting-Based
Discrete Wavelet Transform [J]. Circuits and Systems II: Express Briefs, IEEE
Transactions on, 2013, 60 (8): 502–506.
[19] Hu Y, Jong C C. A Memory-Efficient High-Throughput Architecture for Lifting-
Based Multi-Level 2-D DWT [J]. Signal Processing, IEEE Transactions on, 2013,
61 (20): 4975–4987.
[20] Bhanu N U, Chilambuchelvan A. High-Speed Systolic VLSI Architecture for 2-D
Forward Lifting-Based DWT [J]. Arabian Journal for Science and Engineering,
2014, 39 (8): 6125–6135.
[21] Darji A D, Limaye A. Memory efficient VLSI architecture for lifting-based DWT
[C]. In 2014 IEEE 57th International Midwest Symposium on Circuits and Sys-
tems (MWSCAS), Texas, USA, 2014: 189–192.
[22] Mohanty B K, Meher P K. Area-delay-power-efficient architecture for folded two-
dimensional discrete wavelet transform by multiple lifting computation [J]. Image
Processing, IET, 2014, 8 (6): 345–353.
[23] Wang J, Zhu E. A high-throughput VLSI design for JPEG2000 9/7 discrete
wavelet transform [J]. Journal of Southeast University, 2015, 31 (1): 19–24.
[24] Darji A, Agrawal S, Oza A, et al. Dual-Scan Parallel Flipping Architecture for a
Lifting-Based 2-D Discrete Wavelet Transform [J]. IEEE Transactions on Circuits
and Systems II: Express Briefs, 2014, 61 (6): 433–437.
[25] Huang C T, Tseng P C, Chen L G. Flipping structure: an efficient VLSI architec-
ture for lifting-based discrete wavelet transform [J]. IEEE Transactions on Signal
Processing, 2004, 52 (4): 1080–1089.
[26] Darji A D, Shashikanth K, Limaye A, et al. Flipping-based high speed VLSI ar-
chitecture for 2-D lifting DWT [C]. In IEEE 57th International Midwest Sympo-
sium on Circuits and Systems, Texas, USA, 2014: 193–196.
[27] Todkar S, Shastry P V S. Flipping based high performance pipelined VLSI archi-
tecture for 2-D discrete wavelet transform [C]. In 2015 International Conference
on Applied and Theoretical Computing and Communication Technology, Kar-
nataka, India, 2015: 832–836.

62
参考文献

[28] Lai Y K, Chen L F, Shih Y C. A high-performance and memory-efficient VLSI


architecture with parallel scanning method for 2-D lifting-based discrete wavelet
transform [J]. IEEE Transactions on Consumer Electronics, 2009, 55 (2): 400–
407.
[29] Zhang W, Jiang Z, Gao Z, et al. An Efficient VLSI Architecture for Lifting-Based
Discrete Wavelet Transform [J]. IEEE Transactions on Circuits and Systems II:
Express Briefs, 2012, 59 (3): 158–162.
[30] Wu B F, Lin C F. A high-performance and memory-efficient pipeline architec-
ture for the 5/3 and 9/7 discrete wavelet transform of JPEG2000 codec [J]. IEEE
Transactions on Circuits and Systems for Video Technology, 2005, 15 (12): 1615–
1628.
[31] Cheng-Yi X, Jin-Wen T, Jian L. Efficient high-speed/low-power line-based archi-
tecture for two-dimensional discrete wavelet transform using lifting scheme [J].
IEEE Transactions on Circuits and Systems for Video Technology, 2006, 16 (2):
309–316.
[32] Xiong C, Tian J, Liu J. Efficient Architectures for Two-Dimensional Discrete
Wavelet Transform Using Lifting Scheme [J]. IEEE Transactions on Image Pro-
cessing, 2007, 16 (3): 607–614.
[33] Bing-Fei W, Chung-Fu L. Memory-efficient architecture for JPEG 2000 copro-
cessor with large tile image [J]. IEEE Transactions on Circuits and Systems II:
Express Briefs, 2006, 53 (4): 304–308.
[34] Ye L, Hou Z. Memory Efficient Multilevel Discrete Wavelet Transform Schemes
for JPEG2000 [J]. IEEE Transactions on Circuits and Systems for Video Tech-
nology, 2015, 23 (11): 1773–1785.
[35] Wu C, Zhang W, Jia Q, et al. Hardware efficient multiplier-less multi-level 2D
DWT architecture without off-chip RAM [J]. IET Image Processing, 2017, 11
(2): 362–369.
[36] Meher P K, Mohanty B K, Swamy M M S. Low-Area and Low-Power Reconfig-
urable Architecture for Convolution-Based 1-D DWT Using 9/7 and 5/3 Filters
[C]. In VLSI Design (VLSID), 2015 28th International Conference on, Banga-
lore, India, 2015: 327–332.
[37] Darji A, R A, Merchant S N, et al. Multiplier-less pipeline architecture for lifting-
based two-dimensional discrete wavelet transform [J]. IEEE Transactions on
Consumer Electronics, 2015, 9 (2): 113–123.
[38] Zhang W, Jiang Z, Gao Z, et al. An Efficient VLSI Architecture for Lifting-Based
Discrete Wavelet Transform [J]. Circuits and Systems II: Express Briefs, IEEE
Transactions on, 2012, 59 (3): 158–162.

63
天津大学硕士学位论文

64
发表论文和参加科研情况说明

发表论文和参加科研情况说明

(一)发表的学术论文
[1] 高家明,梁煜,张为,刘艳艳. 一种新型低存储二维离散小波变换架构.[J].
西安电子科技大学学报, 2018,(02):121-126.
[2] 王鑫,高家明,梁煜,张为. 一种高效存储多级二维9/7离散小波变换结
构.[J]. 西安交通大学学报, 已录用.

(二)参与的科研项目
[1] 参与了“基于JPEG2000的图像压缩采系统设计”项目研发
[2] 参与了“基于ADV212的无线图像压缩采集传输系统”项目研发

65
天津大学硕士学位论文

66
致 谢

致 谢

转眼间研究生两年多的时光就已经匆匆过去了,到了在论文的最后写下致
谢的时候了。
进实验室的时候一直都很迷茫,甚至都不清楚数字电路模拟电路射频电路
都是在做什么。张老师、梁老师都给了我很多专业知识方面的指引和指导,帮
助我确定了研究方向。在学习研究的过程中,在遭遇了瓶颈一直难有突破口的
时候,又是老师及时的指点了最新的发展创新趋势,才使得我能够做出一定成
果发表学术论文。老师是我在研究生阶段最重要的引路人,能够在老师的实验
室学习生活也是最大的幸运之一。
在实验室的两年多过的很快乐,虽然自己能力很菜,但是在小祁师兄娜姐
贾老师大师兄凤姐涛哥等等很多师兄师姐的帮助下,终于还是有了一些长进,
不像刚开始时候那样什么也不懂都要去问人。大家在实验室时候如同家里一样
的氛围,其乐融融。
同届之间大家也慢慢的熟络起来,校长、二姐、洋洋姐、超伟、大王、王
博、阿黄、诚忠、胡老板大家性格不同做的事情也差别万千,不过大家却能够
快乐的玩耍,也能够相互帮助互相学习,一起进步。
师弟师妹们陆陆续续来到实验室,大家都很虚心好学一直在实验室刻苦钻
研,没有被我们这群师兄师姐带跑偏。在科研上给了我很大的帮助,分担了我
很多的压力。
研究生阶段遇到的很多人,在学习科研之余为生活为生活带来了很多色彩。
和鹏杰岳哥罗团打了很多游戏,也交流了很多科技前沿八卦新闻;和小朦党党
成成东东青青小豪吃了很多饭,玩了很多桌游,天南海北的调侃,偶尔也会运
动下。这都是我生活中最快乐的时光。

67

You might also like