1、 1 赤峰学院 草鱼 草鱼 毕业论文 (设计 )草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼题 草鱼 草鱼 草鱼目 草鱼 草鱼基于 FPGA的 IIR 数字低通滤波器设计 草鱼 草鱼 草鱼 草鱼 学生姓名 草鱼 草鱼 草鱼 草鱼 学 草鱼 草鱼 草鱼 草鱼号 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼草鱼 草鱼 院 草鱼 草鱼 草鱼 草鱼系 草鱼 草鱼 草鱼 草鱼 草鱼物理与电子信息工程系 草鱼 草鱼 专 草鱼 草鱼 草鱼 草鱼业 草鱼 草鱼 草 鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼电子信息工程 草鱼 草鱼
2、指导教师 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼二 O 一一 草鱼 草鱼年 草鱼 草鱼六 草鱼月 草鱼一 草鱼日 草鱼 基于 FPGA 的 IIR 数字低通滤波器的设计与实现 草鱼 草鱼 XXX 草鱼 赤峰学院物理与电子信息工程系 , 鲤鱼 赤峰 024000草鱼 草鱼 摘要 : pork本文介绍了基于 FPGA 的 IIR 数字低通滤波器的设计与实现 , 鲤鱼 首先介绍了 IIR 数字低通滤波器的原理和分类 。
3、草鱼 接着介绍了 IIR 数字低通滤波器的设计方法 , 鲤鱼 有用脉冲响应不变法和双线性变换法 。 草鱼 又介绍了用 VHDL 语言在 QuartusII 软件上 生成 IIR 数字滤波器的各模块(时序控制模块 、 pork延时模块 、 pork顶层模块 、 pork乘法累加模块) , 鲤鱼 并用各个模块构建一个 IIR的二阶节 。 草鱼 最后通过实例阐明了基于 FPGA 的四阶 IIR数字低通滤波器的设计 , 鲤鱼 在 QuartusII 软件上仿真 , 鲤鱼 并得到仿真图 。 草鱼 草鱼 2 关键词 : por kFPGA;pork 草鱼 MATLAB;pork 草鱼 QuartusII;
4、 porkIIR 数字低通滤波器 ; pork设计 ; pork实现 草鱼 1 引言 草鱼 在当今数字技术发展的时代 , 鲤鱼 数字滤波器被广泛应用于频谱分析 , 鲤鱼 模式识别 , 鲤鱼 语言与图像处理等领域 , 鲤鱼 数字滤波器有着精度高 、 pork实时性高 、 pork处理速度快等特点 。 草鱼 数字滤波器根据单位脉冲响应的不同 , 鲤鱼 可以分为有限长脉冲响应( FIR)滤波器和无限长脉冲响应( IIR)滤波器 。草鱼 FIR 具有良好的相位特性 , 鲤鱼 而 IIR 滤波器具有很好的 幅频特性 。 草鱼 IIR 滤波器所要求的阶数不仅比 FIR滤波器低 ,而且可以利用模拟滤波器的设
5、计成果 ,设计工作量相对较小 ,采用 FPGA实现的 IIR 滤波器同样具有多种优越性 。 草鱼 再者按信号通过数字滤波器的特性(主要是幅频特性)来分类 : pork有低通数字滤波器 、 pork高通数字滤波器 、 pork带通数字滤波器和带阻数字滤波器 。 草鱼 为了更好的了解数字滤波器 , 鲤鱼 我们用 Field 草鱼 Programmable 草鱼 Gate 草鱼 Array(现场可编程门阵列)即 FPGA来实现 。 草鱼 FPGA以其优越的实时性和设计的灵活性 , 鲤鱼 成 了控制系统中重要的一部分 , 鲤鱼 并直接采用 VHDL 编程简化设计步骤 。 草鱼 可以在 QuartusI
6、I、 por kMAX+plusII 等软件上作仿真 。 草鱼 从而使得FPGA在当今通信 、 pork自动控制以及信号处理等方面得到很广泛的应用 。 草鱼 在本文设计中提出了基于现场可编程门阵列器件( FPGA)实现 IIR 数字低通滤波器 。 草鱼 并在 QuartusII 上做仿真 。草鱼草鱼 2 草鱼 IIR 数字滤波器的基本结构及类型 .草鱼 2.1 直接型 草鱼 IIR 数字滤波器的结构 草鱼 IIR 数字滤波器传输函数的标准表达式 : pork草鱼 01()1M rrrN kkkbzHzaz草鱼 其对应的差分方程为 : por k10( ) ( ) ( )NMkkkky n a
7、y n k a x n k 草鱼 草鱼 图 2-1 草鱼 直接 I 型 草鱼 3 草鱼 图 2-2 草鱼 直接 II 型 草鱼 2.2 级联型 IIR 数字滤波器的结构 草鱼 将系统函数 H( Z) 因式分解为较低的二阶型的乘积 , 鲤鱼 每个 双二阶用一个直接型实现 , 鲤鱼 整个系统用双二阶的级联实现 , 鲤鱼 每一个二阶型传递函数为 : pork草鱼 12,1 , 2,1 , 21( ) ; k= 1 ,1 kkkB z B zHZ A z A z k草鱼 草鱼 图 2-3 草鱼 级联型 草鱼 2.3 并联型 IIR 数字滤波器的结构 草鱼 将系统函数 H( Z)因式分解为双二阶之和 ,
8、 鲤鱼 每个双二阶用一个直接型实现 , 鲤鱼 整个系统函数作为二阶节的并联网络实现 2。 草鱼 每一个二阶型传递函数为 : pork草鱼 1, 0 ,112,1 , 2( ) ; k= 1,1 kkkB B zHz A z A z k草鱼 4 草鱼 图 2-4 草鱼 并联型 草鱼 2.4 草鱼 IIR 数字滤波器的类型 草鱼 IIR 滤波器主要有巴特沃斯滤波器 、 pork切比雪夫滤波器和椭圆滤波器几种 。 草鱼 给出了以上三种滤波器实现同样性能指标所需的阶数和阻带衰减的比较 ,如表 1 所示 草鱼草鱼 表 1 三种滤波器性能比较 原 型 阶数 阻带衰减 /dB 巴特沃斯 6 15 切比雪夫
9、I 型 4 25 椭圆函数 3 27 3 草鱼 IIR 数字低通滤波器的设计 草鱼 低通滤波器 让某一频率以下的信号分量通过 , 鲤鱼 而对该频率以上的信号分量大大抑制的电容 、pork电感与电阻等器件的组合装置 。 草鱼 所以低通滤波是一种可以通过低频信号而且衰减和抑制高频信号的方式 , 鲤鱼 所以其频率响应函数 草鱼 ()()0j cjcHeHe 草鱼 由此可以看出低通滤波器的同频带位于 2 的整数倍 。 草鱼 用 FPGA实现滤波器的基本思想就是基于10( ) ( ) ( )NMkkkky n a y n k a x n k 来实现的 草鱼 3.1 用脉冲响应不变法设计 IIR 数字低通
10、滤波器 草鱼 设模拟滤波器的系统函数为 ()aHs, 鲤鱼 相应的单位冲激响应是 ()aht, 鲤鱼 ()aHs= ( )aLTh t .草鱼 LT 代表拉氏变换 , 鲤鱼 对 ()aht进行等间隔采样 , 鲤鱼 采样间隔为 T, 鲤鱼 得到 ()ah nT , 鲤鱼 将()hn = ()ah nT 作为数字滤波器的单位脉冲响应 , 鲤鱼 那么数字滤波器的系统函数 ()Hz 便是()hn 的 Z 变换 。 草鱼 因此脉冲响应不变法是一种时域逼近法 , 鲤鱼 它使 ()hn 在采样点上等于 ()aht。草鱼 但是 , 鲤鱼 模拟滤波器的设计结果是 ()aHs, 鲤鱼 所以下面基于脉冲响应不变法的
11、思路 , 鲤鱼 退出直接从()aHs到 ()Hz的转换公式 。 草鱼草鱼 5 设模拟滤波器 ()aHs只有单阶极点 , 鲤鱼 且分母多项式的阶次高于分子多项式的阶次 , 鲤鱼 将 ()aHs用部分分式表示 草鱼 1()N ia i iAHs ss 草鱼 草鱼 草鱼 式 1 草鱼 式 1 中 , 鲤鱼 is 为 ()aHs的单阶极点 。 草鱼 将 ()aHs进行逆拉氏变换 , 鲤鱼 得到 草鱼 1( ) ( )iN staiih t A e u t 草鱼 草鱼 式 2 草鱼 式 2 中 , 鲤鱼 ()ut 是单位阶跃函数 。 草鱼 对 ()aht进行等间隔采样 , 鲤鱼 采样间隔为 T, 鲤鱼
12、得到 草鱼 1( ) ( ) ( )iN s n Taiih n h n T A e u n t 草鱼 草鱼 式 3 草鱼 对式 3 进行 Z 变换 , 鲤鱼 得到数字滤波器的系统函数 ()Hz, 鲤鱼 即 草鱼 11() 1 iN isTiAHz ez 草鱼 草鱼 式 4 草鱼 对比式 1 和式 4, 鲤鱼 ()aHs的极点 is 映射到 Z 平面的极点 isTe ,系数 iA 不变 。 草鱼草鱼 如果原 ()aht的频谱不是限于 2 T 之间 , 鲤鱼 则会在奇数 T 附近产生频谱混叠 , 鲤鱼 对应数字频率在 附近产生频 谱混叠 。 草鱼草鱼 为了避免这一现象 , 鲤鱼 令 ( ) (
13、)ah n Th nT 那么 草鱼 11() 1 iN isTi TAHz ez 草鱼 草鱼 式 5 草鱼 式 5 称为实用公式 , 鲤鱼 此时 草鱼 ( ) ( )j aH e H j T 草鱼 草鱼 草鱼 草鱼 草鱼 3.2 用双线性变换法设计 IIR 数字低通滤波器 草鱼 脉冲不变法的主要缺点是会产生频谱混叠现象 , 鲤鱼 使数字滤波器的频响偏离模拟滤波器的频响特向 。 草鱼 产生 的原因是模拟低通滤波器不是带限于折叠频率 T , 鲤鱼 在离散化(采样)后产生了频谱混叠 , 鲤鱼 在通过映射关系 sTze ,使数字滤波器在 附近形成频谱混叠 。 草鱼 为了使这一缺点消除 , 鲤鱼 我们使
14、用非线性频率压缩方法 , 鲤鱼 将整个模拟频率轴压缩到 T 之间 , 鲤鱼 再用sTze 转换到 Z 平面上 。 草鱼 设 ()aHs, 鲤鱼 sj, 鲤鱼 经过非线性频率压缩后用 ()aHs, 鲤鱼 sj表6 示 , 鲤鱼 这里用正切变换频率压缩 : pork草鱼 121tan( )2 TT 式 6 草鱼 式 6 中 , 鲤鱼 T 为采样间隔 。 草鱼 当 1 从 T 经过 0 变化到 T 时 , 鲤鱼 则由 经过 0 变化到 ,鲤鱼 实现了 s 平面上整个虚轴完全压缩到 1s 平面上虚轴的 T 之间的转换 。 草鱼 由式 6 得 草鱼 1 1 11 1 1222 2 11j T j T j
15、 Tj T j T j Te e ej T e e T e 草鱼 代入 sj, 鲤鱼 11sj, 鲤鱼 得到 : pork草鱼 11211 sTsTes Te 草鱼 在通过 1sTze 从 1s 平面转换 z 平面上 , 鲤鱼 得到 : pork草鱼 11211 zs Tz 式 7 草鱼 22sTzsT式 8 草鱼 式 7 和式 8 成为双线性变换 。 草鱼 从 s 平面到 1s 平面的非线性频率压缩 , 鲤鱼 使 1()aHs带限于radsT , 鲤鱼 因此再用脉冲不变法从 1s 平面转换到 z 平面不可能产生频谱混叠现象 。 草鱼 这就是双线性变换法的优点 , 鲤鱼 另外 , 鲤鱼 从 1
16、s 平面转换到 z 平面仍然采用转换关系 1sTze , 鲤鱼 草鱼 1s 平面的 T 之间水平带的左半部分映射到 z 平面单位圆内部 , 鲤鱼 虚轴映射为单位圆 , 鲤鱼 这样 ()aHs因果稳定 , 鲤鱼 转换的 ()Hz也是因果稳定的 。 草鱼 双线性变换法设计的 IIR 数字低通滤波器的缺点是 和 之间成非线性关系 , 鲤鱼 使得数字滤波器频响曲线不能保真地模仿模拟滤波器的频响曲线形状 。 草鱼草鱼 草鱼 草鱼 4 草鱼 草鱼 IIR 数字低通滤波器各模块的设计 草鱼 IIR 数字滤波器包括以下几个模块 : pork时序控制模块 、 pork延时模块 、 pork顶层模块 、 pork
17、乘法累加模块 。草鱼 时序控制模块主要产生两个信号 , 鲤鱼 一个是时延信号加到延时模块 , 鲤鱼 实现时延功能 ; pork另一个是计算处理信号 , 鲤鱼 加到乘法累加模块 , 鲤鱼 实现先加后乘的功能 。 草鱼 延时模块主要作用是对数据进行时延 , 鲤鱼 使前一个数据赋给后一个数据 , 鲤鱼 然后将数据输入到乘法累加模块 。 草鱼 乘法累加模块主要在时钟的作用下实现加法和乘法的功能 , 鲤鱼 最后输出滤波器数据 。 草鱼草鱼 草鱼 7 4.1 草鱼 时序控制模块的设计 草鱼 草鱼 时序控制模块主要用来产生对其它模块的时序控制信号 。 草鱼 首先对系统进行初始化处理 , 鲤鱼 当RES 信号
18、为 ”1”时 , 鲤鱼 对整个系统进行清零 11。 草鱼 当 RES 信号为“ 0”时 , 鲤鱼 时序控制模块在时钟CLK 上升沿的作用下产生两个信号 CLK_REG 及 CLK_ 草鱼 REGBT。 草鱼 其中 , 鲤鱼 CLK_REG 信号用来作为延时模块 、 pork乘法累加模块的输入时钟 , 鲤鱼 CLK_REGBT 每隔 6 个时钟产生一个高电平作为这三个模块的复位信号 。 草鱼草鱼 草鱼 草鱼 草鱼 图 4-1 草鱼 时序控制模块图 草鱼 草鱼 图 4-2 草鱼 时序控制模块时序仿真图 草鱼 8 草鱼 图 4-3 草鱼 时序控制模块功能仿真图 草鱼 时序控制模块仿真如图 4-2 和
19、图 4-3 所示 , 鲤鱼 在 clk 的上升延到来时 , 鲤鱼 counter 以 6 个时钟为周期开始进行计数 , 鲤鱼 clk_regbt 每隔 6 个时钟输出一个低电平 , 鲤鱼 clk_reg 则每隔 6 个 时钟后输出一个高电平 。 草鱼 输出的两个时钟信号正好控制延时模块 、 pork乘法累加模块的运行 ,符合设计要求 。草鱼草鱼 程序编写说明 : pork首先在实体中定义输入信号 res,clk,输出信号 reg, 鲤鱼 regbt,在结构体中定义信号参量 counter,clk_en,en;pork然后确定输出信号与输入信号的关系 , 鲤鱼 编写算法 clk_regbt=no
20、t 草鱼 clk 草鱼and 草鱼 clk_en 草鱼 and 草鱼 en 和 clk_reg=not 草鱼 clk 草鱼 and 草鱼 not 草鱼 clk_en 草鱼 and 草鱼 en产生输出信号 ; pork最后以 counter为 0 到 5 为一个周期循环计算以上输出信号 。 草鱼 程序见附图 。 草鱼草鱼 4.2 草鱼 延时模块的设计 草鱼 其主要作用是在时钟作用下将差分方程的各 x、 porky 值依次逐位延迟一个时钟 , 鲤鱼 实现延时运算 ,鲤鱼 即当输入为 x(n)和 y(n)时 , 鲤鱼 经过一次延时后其输出分别为 x(n-1)和 y(n-1)。 草鱼草鱼 草鱼 图 4
21、-4 草鱼 延时模块图 草鱼 9 草鱼 图 4-5 草鱼 延时 模块时序仿真图 草鱼 草鱼 图 4-6 草鱼 延时 模块时序功能仿真图 草鱼 延时模块仿真图如上图 4-5 和图 4-6 所 示 , 鲤鱼 由图可以看出当输入的 xn、 porkyout 都为 5,4,3,2,1,0时 , 鲤鱼 在时钟信号上升沿的作用下产生延时 , 鲤鱼 经第一个时钟后 x0、 porkx1、 porkx2、 porky0、 porky1 的值分别为 1, 鲤鱼 0, 鲤鱼 0, 鲤鱼 1, 鲤鱼 0。 草鱼 经第二个时钟后 x0、 porkx1、 porkx2、 porky0、 porky1 的值分别为 1,
22、鲤鱼 1, 鲤鱼 0, 鲤鱼 1, 鲤鱼 1。 草鱼 经第三个时钟后 x0、 porkx1、 porkx2、 porky0、 porky1 的值分别为 2, 鲤鱼 1, 鲤鱼 1, 鲤鱼 2, 鲤鱼 1。 草鱼 经第四个时钟后由此可见该模块仿真值正确 。 草鱼草鱼 程序编写说明 : pork首先在实体中定义输入信号 res,clk,xn,yout,输出信号 x0、 porkx1、 porkx2、 porky1、 porky2,鲤鱼 在实体中定义延迟信号 reg_x0,reg_x1,reg_x2,reg_y1,reg_y2;pork然后把依次定义好的延迟信号送给 x0、 porkx1、 pork
23、x2、 porky1、 porky2; pork最后在时钟 CLK 上升沿到来时 , 鲤鱼 用算法 reg_x2=reg_x1;pork 草鱼reg_x1=reg_x0;pork 草鱼 reg_x0=xn;pork eg_y2=reg_y1;pork 草鱼 reg_y1=yout 实现延时 。 草鱼 程序见附录 。 草鱼草鱼 4.3 草鱼 乘法累加模块的设计 草鱼 乘法累加模块用来实现输入数据与系数 ai、 porkbi 分别相乘后再相加的运算 。 草鱼 即实现10 0 1 1 2 2 1 1 2 2n n n n n ny b x b x b x a y a y 的算法 。 草鱼 乘法累加模块输出的信号送入累加器后 , 鲤鱼 与寄存于累加器中的中问结果相加 。 草鱼草鱼 草鱼 草鱼 草鱼 图 4-7 草鱼 乘法累加模块图 草鱼 草鱼 草鱼 草鱼 草鱼 图 4-8 草鱼 第一级乘法累加模块时序仿真图 草鱼