FIR 数字滤波器的设计与验证
南阳理工学院
课 程 设 计 报 告
课程设计名称:硬件描述语言及 FPGA 设计
课程设计题目:FIR 数字滤波器的设计与验证
院(系):计算机与信息工程学院
专
班
学
姓
业:通信工程
级:15中兴通信工程2班
号:1506735008
名:程之星
指导教师:张传宗 徐国清
时
间:2018.5.28-2018.6.1
I
FIR 数字滤波器的设计与验证
基于 FPGA 的 FIR 滤波器的程序设计
摘
要
在现代通信领域中,FIR 数字滤波器以其良好的线性特性被广泛使用,属
于数字信号处理的基本模块之一。在实践中,往往要求对信号处理有实时性
和灵活性,而已有的一些软件和硬件的实现方式则难以同时到达这两方面的
要求。随着可编程逻辑器件和 EDA 技术的发展,使用 FPGA 来实现 FIR 滤波器,
既具有实时性,又兼顾了一定的灵活性,越来越多的电子工程师采用 FPGA 器
件来实现 FIR 滤波器。
本设计利用 MATLAB 软件中 Matlab FDA tool 设计一个 FIR 低通滤波器,导出
所设计滤波器的系数,再利用 Modulsim 软件,Verilog 语言编写程序。程序
设计完成后在 Modulsim 中实现功能仿真。
关键词 Matlab FPGA FIR 低通滤波器
II
FIR 数字滤波器的设计与验证
目 录
第一章 概论.........................................................................................2
1.1 课题的目的和意义..................................................................2
1.2 FPGA 技术的发展及应用.........................................................2
第二章 FIR 数字滤波器的设计方法理论部分..................................... 4
2.1 引言..........................................................................................4
2.2 FIR 数字滤波器的原理.............................................................4
2.3 Matlab 直接 FDAtool 设计方式解析........................................6
2.4 FDAtool 设计模板及设计结果图........................................... 7
第三章 FIR 数字滤波器的设计方法程序分析部分 ..............10
3.1 Verilog HDL 介绍.................................................................10
3.2 实际滤波器程序设计(8 阶 FIR 数字低通滤波器).......... 10
3.2.1 VerilogHDL 的实现.......................................................10
3.2.2 Modulsim 中功能仿真...................................................14
第四章 总结.........................................................................................15
参考文献 ................................................ 16
附录 .................................................... 17
1
FIR 数字滤波器的设计与验证
第一章 概论
1.1 课题的目的和意义
课程设计是理论学习的延仲,是掌握所学知识的一种重要手段,对于贯理论
联系实际、提高学习质量、塑造自身能力等于有特殊作用。本次课程设计一方面
通过 MATCAB 仿真设计内容,使我们加深对理论知识的理解,同时增强其逻
辑思维能力,另一方面对课堂所学理论知识作一个总结和补充。
数字滤波器是一个离散时间系统(按预定的算法,将输入离散时间信号要求
的输出离散时间信号的转换为所特定功能装置)。应用数字滤波器处理模拟信号
时,首先须对输入模拟信号进行限带、抽样和模数转换。数字滤波器输入信号的
抽样率应大于被处理信号带宽的两倍,其频率响应具有以抽样频率为间隔的周期
重复特性,且以折叠频率即 1/2 抽样频率点呈镜像对称。为得到模拟信号,数字
滤波器处理的输出数字信号须经数模转换、平滑。数字滤波器具有高精度、高可
靠性、可程控改变特性或复用、便于集成等优点。数字滤波器在语言信号处理、
图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。它涉及
到的领域很广,如通信系统,系统控制,生物医学工程,机械振动,遥感遥测,
地质勘探,故障检测,电力系统,航空航天,自动化仪器等。
数字滤波器的好坏对相关的众多工程技术领域影响很大,一个好的数字滤波
器会有效的推动众多的工程技术领域改造和学科发展。所以对数字滤波器的工作
原理,硬件结构和实现方法进行研究具有一定的意义。
1.2 FPGA 技术的发展及应用
FPGA 正处于高速发展时期,新型芯片的规模越大,成本也越来越低,低端
的 FPGA 已逐步取代了传统的数字元件,高端的 FPGA 将会成为今后竞争的主流。
自 1985 年问世以来,FPGA 从集成电路与系统家族一个不起眼的小角色逐渐
成为电子设计领域的重要器件。它极大地提高了设计灵活性并缩短了产品上市时
间,在通信、工业控制、航空领域中广泛应用。
FPGA 行业集中度很高,几家美国公司掌握着行业的“制空权”。特别是在航
空航天及军工等特殊领域,美国等少数国家对先进的技术保持封锁。因此,发展
2
FIR 数字滤波器的设计与验证
国内 FPGA 产业不是要不要的问题,而是怎么发展的问题。国内 IC 企业介入 FPGA
的时间并不长,多数公司还处于学习阶段。
Altera 公司和 Xilinx 公司为代表的 FPGA 厂商,除了在 FPGA 产品线上不断推
陈出新之外,也在不懈地提高开发软件的设计能力,他们的软件产品在很多方面
一点也不逊色于专业的 EDA 厂商,所以从这个角度来说,FPGA 厂商也是 EDA 公
司。这里的代表性产品就是 Altera 公司的 Quartus II 开发软件和 Xilinx 公司的 ISE
开发软件。
Altera 的 FPGA 开发工具已经经历了四代。从最初的基于 DOS 的 A+Plus,发
展到 Max+Plus,1991 年推出基于 Windows 的开发工具 Max+Plus II。Max+Plus II
在 FPGA 设计工具里是一个划时代的产品,它提供了一种与结构无关的图形化设
计环境,功能强大,使用方便。设计者无须精通器件内部的复杂结构,而只需要
使用自己熟悉的设计输入工具(如原理图或者 HDL 语言)把自己的设计输入到
计算机中,Max+Plus II 就会自动把这些设计转换成最终结构所需的格式,用户只
要把最后生成的配置数据通过下载电缆下载到芯片中,即完成了所有的工作。
3
FIR 数字滤波器的设计与验证
第二章 FIR 数字滤波器的设计方法理论部分
2.1 引言
数字滤波器的功能一般是用来变换时域或者频域中某些要求信号的属性,
滤除信号中某一部分频率分量。经过数字滤波器的信号是让其频谱与数字滤波器
的频率响应相乘从而得出新的结果。经过一个线性卷积过程,从时域上输入信号
与滤波器的单位冲击响应作一个卷积和。下面是卷积定义式:
][
ny
][
nx
][
nf
[][
knfnx
]
k
[
][]
kfknx
k
(1)
LTI 数字滤波器在一般情况下分为有限脉冲响应(Finite impulse response)和无限
脉冲响应(Infinite impulse response),FIR 数字滤波器的设计方法和 IIR 滤波器的设
计方法有很大的差别。因为其设计方向是选择有限长度的 h(n),使频率响应函数
H(e j
)满足指标。数字滤波器正在用直接的电子计算机规范和算法进行分析的方
式来逐渐代替传统的模拟滤波器的 RLC 元器件和放大电路。
2.2 FIR 数字滤波器的原理
首先介绍 FIR 数字滤波器基本原理,通常情况下一般数字滤波器的 N 阶 FIR
数字滤波器基于输入信号 x(n)的表达式为:
)(
ny
1
n
i
0
()(
inxih
)
(2)
这个公式给我们了一个非常明了的直接型网络结构,该结构表现出 N 个乘
法器,每次采样 y(n)的内容是 n 次乘法和 n-1 次加法,然后做乘累加之和。如图
2-1 所示:
图 2-1 FIR 滤波器直接型网络结构
从 DSP 的介绍中,第一类线性相位对 h(n)的约束条件:
4
FIR 数字滤波器的设计与验证
(
eH
j
)
N
1
n
0
)(
enh
nj
H
g
j
(
e
)
(3)
1
N
n
0
(
nh
)(cos
n
j
sin
n
)
H
(
)(cos
j
sin
)
(4)
g
由公式(3),(4)我们可以推出:
N
1
n
0
)(
nh
cos
n
sin
N
1
n
0
sin)(
nh
n
cos
(5)
移相并利用三角公式化简得到:
1
N
n
0
)(
nh
sin[
)]
n
(
0
(6)
从数 字信 号处理 学科中 知道 函数
sin)(
nh
)
n
(
关于 求和 区间的 中心
(N-1)/2 奇对称,于是我们要求和 h(n)满足如下条件:
)
(
)(
nh
(
Nh
1
n
)
其中对应的有
1
N
2
0
Nn
(7)
1
图 2-2 线性相位 FIR 滤波器结构
若 h(n)呈现对称特性,即此具有线性相位的滤波器是 FIR 数字滤波器。滤波
器的基础网络结构可以相互进行转换。
在前面本文已经讨论过, FPGA的实现中将对各种方法进行比较,找出最优
设计方式。从而达到减少资源占有和提高系统作业速度的目的,更好的体现实时
性的数字滤波器优势。
5
FIR 数字滤波器的设计与验证
2.3 Matlab 直接 FDAtool 设计方式解析
FDATool(Filter Design & Analysis Tool)是 MATLAB 信号处理工具箱里专用的滤
波器设计分析工具,MATLAB6.0 以上的版本还专门增加了滤波器设计工具箱
(Filter Design Toolbox)。FDATool 可以设计几乎所有的基本的常规滤波器,包括 FIR
和 IIR 的各种设计方法。它操作简单,方便灵活。
FDATool 界面总共分两大部分,一部分是 Design Filter,在界面的下半部,用
来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示
滤波器的各种特性。Design Filter 部分主要分为:
Filter Type(滤波器类型)选项,包括 Lowpass(低通)、Highpass(高通)、
Bandpass(带通)、Bandstop(带阻)和特殊的 FIR 滤波器。
Design Method(设计方法)选项,包括 IIR 滤波器的 Butterworth(巴特沃思)法、
Chebyshev Type I(切比雪夫 I 型)法、 Chebyshev Type II(切比雪夫 II 型) 法、
Elliptic(椭圆滤波器)法和 FIR 滤波器的 Equiripple 法、Least-Squares(最小乘方)法、
Window(窗函数)法。
Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括 Specify Order(指定
阶数)和 Minimum Order(最小阶数)。在 Specify Order 中填入所要设计的滤波器的
阶数(N 阶滤波器,Specify Order=N-1),如果选择 Minimum Order 则 MATLAB 根
据所选择的滤波器类型自动使用最小阶数。
Frenquency Specifications 选项,可以详细定义频带的各参数,包括采样频率
Fs 和频带的截止频率。它的具体选项由 Filter Type 选项和 Design Method 选项决
定,例如 Bandpass(带通)滤波器需要定义 Fstop1(下阻带截止频率)、Fpass1(通带
下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而
Lowpass(低通)滤波器只需要定义 Fstop1、Fpass1。采用窗函数设计滤波器时,由
于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而
不必定义阻带参数。
6