《基于FPGA的FIR滤波器设计书》由会员分享,可在线阅读,更多相关《基于FPGA的FIR滤波器设计书(31页珍藏版)》请在金锄头文库上搜索。
1、基于FPGA的FIR滤波器设计书1 概述我们学生通过这次的课设深入理解和消化了基本理论、进一步提高综合 应用能力并且锻炼独立解决问题的能力,我们将数字信号处理、集成电路 原理与应用和FPGA 系统设计与应用几门课程融合在一起综合应用设计一 个实用的数字 FIR 滤波器。本报告中首先讲解了这次设计的具体内容,以及所要求的数字 FIR 滤波 器的技术指标。然后,数字滤波器的一些设计方法,并具体确定我这次设计所 用的设计方案。滤波器在 matlab 中的设计方法应用。通过 matlab 得到所需滤波器的具 体参数 h(n),然后用这些所设计的参数,通过 Quartus ii 工具编程具体实现 滤波器
2、功能。这次滤波器实现过程中,用到以下小模块:延时器,加法器,乘法器,减法器。2 课程设计要求及注意事项1 设计过程以小组为单位,各组设一个组长,负责组织和协调本小组的 讨论、任务分工等;2 设计过程必须在本组内独立完成,不得跨组参考或抄袭,避免方案出 现雷同;3 设计书一律采用专用报告纸,用统一封面装订;4 课程设计原则上在 3 周内做完;5 最后一周周五进行优秀设计方案评选,在各组推选代表进行方案介绍 的基础上,推选出 2-3 个优秀设计方案。6 学有余力的学生在完成必做设计内容的基础上,可对内容进一步展开 设计,以提高综合应用能力,锻炼独立解决问题的能力。3 课程设计内容3.1 课程设计题
3、目及要求3.1.1 设计题目:基于 FPGA 的 FIR 滤波器设计3.1.2 设计要求利用所学知识,采用 MATLAB 和 FPGA 相结合完成 FIR 滤波器的设计仿真。 采用直接法或分布式算法实现 FIR 数字滤波器,了解两种算法的优缺点,选择 其中一种算法,得出用它来实现 FIR 滤波器的硬件结构,对其实现方式进行研 究,分别采用合适的方法来设计,最后利用 FPGA 器件实现 FIR 数字滤波器的硬 件电路,并用 Matlab 对实现的结果进行仿真分析。设计指标:1)类型:FIR 低通2)系统采样频率:Fs=10KHz;3)输入序列位宽为 8 位的有符号数(最高位为符号位);4)输出结
4、果保留 8 位5)窗口类型为 kaiser 窗,=0.5; 6)滤波器长度为 N=16;3.2 数字滤波器简介及结构3.2.1 简介 滤波器是用来进行频率选择或频率分辨操作的线性时不变系统的通称。数字滤波器通常都是应用于修正或改变时域或频域中信号的属性。最为普通的数 字滤波器就是线性时间不变量(1inear timeinvariant,LTI)滤波器。一个简 单的数字滤波系统如图 1-1 所示。图中,x(t)为模拟信号,经过 A/D 转换器后变为一个有着先后顺序的数字序列 x(n)。然后 x(n)通过数字滤波系统 H(z), 即得到数字滤波器的输出 y(n)。H(z)为该数字滤波系统的单位脉冲
5、响应 h(n) 的 Z 变换H (z) =h(n)z -n n=-(3-1)若 h(n)为无限长序列,则得到的数字滤波器为 IIR 数字滤波器,又称递归 滤波器;反之,若 h(n)为有限长序列,则得到的数字滤波器为 FIR 滤波器,也 称非递归滤波器。一个线形时不变因果滤波器可表示为:N -1H (z) = h(n)z -n n=0(3-2)其中 N 为 h(n)的长度,即滤波器的长度。滤波器的阶数为 N-1。IIR 滤波器主要是基于对模拟滤波器如巴特沃斯滤波器、椭圆滤波器等的 幅频响应进行逼近,而其相频响应是非线性的。与 IIR 滤波器不同,FIR 滤波 器可以把相位特性设计成线性。这使得
6、FIR 数字滤波器在信号无失真传输、数 据通信、图像传输与处理、语音信号处理等有线性相位要求的领域应用广泛。 FIR 滤波器的优点是软硬件实现结构简单,不用考虑系统的稳定性问题;缺点 是实现较高性能的频率响应需要较高的滤波器阶数。3.2.2 结构FIR 滤波器的单位抽样响应为有限长度,一般采用非递归形式实现。通常 的 FIR 数字滤波器有横截性和级联型两种。FIR 滤波器实现的基本结构有:(1)FIR 滤波器的横截型结构 表示系统输入输出关系的差分方程可写作:N -1y(n) = h(m)x(n - m)m=0直接由差分方程得出的实现结构如图 2-2 所示:(3-3)图 3-1 横截型(直接型
7、卷积型)若 h(n)呈现对称特性,即此 FIR 滤波器具有线性相位,则可以简化加横截 型结构,下面分情况讨论:图 3-2图 3-3图 3-2 N 为奇数时线性相位结构图图 3-3 N 为偶数时线性相位结构图(2)FIR 滤波器的级联型结构将 H(z)分解成实系数二阶因子的乘积形式:N -1 N 2 0k1k2kH (z) =N =0h(n)z- N =bk =1+ b z-1 + b z-2(3-4)这时 FIR 滤波器可用二阶节的级联结构来实现,每个二阶节用横截型结构 实现。如图所示:图 3-4FIR 滤波器的级联结构这种结构的每一节控制一对零点,因而在需要控制传输零点时可以采用这 种结构。
8、3.3 设计方案的确定3.3.1 滤波器设计实现方法一般有线性相位 FIR 直接型结构和分布式算法的设计。 3.3.2 方案确定经过多种方案的比较,本次设计最终的方案是:直接型。利用 MATLAB 提供的 FDATOOL 滤波器设计工具,编写 VHDL 语言,从而实现 FIR 数字滤波器的设计。3.4 方案实现3.4.1 利用 FDATool 工具设计 FIR 数字滤波器FDATool(Filter Design & Analysis Tool)是 MATLAB 信号处理工具箱里专 用的滤波器设计分析工具,MATLAB6.0 以上的版本还专门增加了滤波器设计工 具箱(Filter Design
9、 Toolbox)。FDATool 可以设计几乎所有的基本的常规滤波 器,包括 FIR 和 IIR 的各种设计方法。它操作简单,方便灵活。FDATool 界面总共分两大部分,一部分是 Design Filter,在界面的下半部, 用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来 显示滤波器的各种特性。Design Filter 部分主要分为:Filter Type(滤波器类型)选项,包括 Lowpass(低通)、Highpass(高通)、 Bandpass(带通)、Bandstop(带阻)和特殊的 FIR 滤波器。Design Method(设计方法)选项,包括 IIR 滤
10、波器的 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 OrderN-1),如果选择 Minim
11、um Order 则 MATLAB 根据所选择的滤波器类型自动使用最小阶数。Frenquency Specifications 选项,可以详细定义频带的各参数,包括采 样频率 Fs 和频带的截止频率。它的具体选项由 Filter Type 选项和 Design Method 选项决定,例如 Bandpass(带通)滤波器需要定义 Fstop1(下阻带截止频 率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻 带截止频率),而 Lowpass(低通)滤波器只需要定义 Fstop1、Fpass1。采用窗函 数设计滤波器时,由于过渡带是由窗函数的类型和阶数所
12、决定的,所以只需要 定义通带截止频率,而不必定义阻带参数。Magnitude Specifications 选项,可以定义幅值衰减的情况。例如设计带 通滤波器时,可以定义 Wstop1(频率 Fstop1 处的幅值衰减)、Wpass(通带范围 内的幅值衰减)、Wstop2(频率 Fstop2 处的幅值衰减)。当采用窗函数设计时, 通带截止频率处的幅值衰减固定为 6db,所以不必定义。本次设计滤波器的系数就是采用 FDATool 工具设计的滤波器。在 MATLAB 命令窗口中,执行“FDATool”命令,就会启动 FDATool 滤波器设计与分析工具, 其图形界面如图 3-8 所示。图 3-5F
13、DATool 界面选择窗函数法设计滤波器:直接使用 FDATool 工具进行滤波器设计。例如 首先滤波器 Response type 选择低通,选中 FIR 类型,首先根据滤波器技术指标, 选择窗函数 w(n) 的类型、长度、采样频率和截止频率。点击 DESIGN FILTER按键,即可得到设计的 FIR 滤波器的频率响应和滤波器的系数。保存并关闭滤 波器设计分析工具回到 matlab 主窗口,在命令编辑区输入 Num 可得到工具的 计算结果。对 FIR 滤波器的系数进行调整,做整数化操作,可得到滤波器整数 化的系数。FIR 滤波器设计系数的确定 窗函数法低通滤波器:阶数:15采样频率:10k
14、截止频率:1k 滤波器类型:分布式fir滤波器滤波器幅频响应滤波器相频响应滤波器的冲击响应滤波器系数导出后的系数lp*(29),round(ans)求整3.4.2 FIR 数字滤波器的 FPGA 实现采用分布式算法设计 FIR 滤波器1)分布式算法基础分布式算法(Distributed Arithmetic,DA)是一项重要的 FPGA 技术,广 泛地应用于计算乘积和:N -1y = c(n) * x(n)n=0(3-1)这种算法可用于滤波器、卷积、相关、DFT 等凡是有乘累加运算的地方。 一个线性时不变网络的输出可用式(3-1)表示。假设 c(n) 为常量,x(n) 为变量。对于有符号 DA 系统, x(n) 可表示为:Bx(n) = -2B x(n) +B-1 xbb=0(n)2b(3-2)将式(3-2)代入式(3-1),得N -1N -1B-1by = -2B c(n)x(n) + c(n) xb(n)2bn=0n=0b-0= -2BN -1c(n)xB n=0B-1(n) + 2bb=0N -1c(n)xb (n)n=0= -2BB-1bf (c(n), xB (n) + 2f (c(n), xb (n)(3-3)b=0N -1其中 x(n) 为( B+1 )位, f (