您的当前位置:首页正文

(完整版)基于DSP的FIR数字低通滤波器设计

2022-12-17 来源:汇智旅游网


电气控制技术应用设计

题目 基于DSP的FIR数 字低通滤波器设计

二级学院 电子信息与自动化学院 专 业 电气工程及其自动化 班 级 113070404 学生姓名 黄鸿资 学号 11307991032 学生姓名 姜天宇 学号 11307991015 指导教师 蒋东荣 时间:2016年8月29日至2016年9月9日

考核项目 得分 总分

平时成绩20分 设计35分 报告15分 答辩30分 考核等级 教师签名 一 绪论............................................................................................................................................. 3

(一) 课题设计的目的 ......................................................................................................... 3 (二)课题内容 ....................................................................................................................... 3 (三) 设计方法 ..................................................................................................................... 3 (四)课程设计的意义 ............................................................................................................. 4 二 FIR滤波器基本理论 ................................................................................................................. 4

(一)FIR滤波器的特点 ........................................................................................................ 4 (二)FIR滤波器的基本结构 ................................................................................................ 4 (三)Chebyshev逼近法 ........................................................................................................ 5 三 用MATLAB辅助DSP设计FIR滤波器 ..................................................................................... 5

(一)利用fir函数设计FIR滤波器并在在MATLAB环境仿真 ......................................... 6 (二) Matlab中自带工具箱FDATool快速的实现滤波器的设计 .................................. 10

1.确定一个低通滤波器指标 ......................................................................................... 10 2.打开MATLAB的FDATool ............................................................................................ 10 3.选择Design Filter ................................................................................................ 11 4.滤波器分析 ................................................................................................................. 11 5.导出滤波器系数 ......................................................................................................... 13 (三)滤波器设计总结 ......................................................................................................... 13 (四)DSP所需文件配置 ...................................................................................................... 14 四 基于DSP的FIR滤波器实现 ................................................................................................... 14

(一)DSP中滤波器的算法实现 ........................................................................................ 15

1.线性缓冲区法 ............................................................................................................. 15 2.循环缓冲区法 ............................................................................................................. 15 (二)C语言实现FIR ........................................................................................................... 15 (三)CSS仿真调试 .............................................................................................................. 17 (四) 滤波器的仿真测试 ................................................................................................... 18 五 DSP数字滤波器与硬件低通滤波器对比 ................................................................................ 21

(一)二阶有源低通滤波电路的构建 ................................................................................. 21 (二)二阶低通滤波器 参数计算 ..................................................................................... 22 (三)在protues环境下的仿真测试 ................................................................................. 22 (四) 实物硬件连接以及测试结果 ................................................................................... 22 (五)利用FilterPro的低通滤波器设计 ......................................................................... 23

1 选择filter类型 ....................................................................................................... 24 2 滤波器参数设定 ......................................................................................................... 24 3 滤波器的算法选择 ..................................................................................................... 25 4 滤波器的拓扑结构选择 ............................................................................................. 25 (六) DSP数字滤波器与硬件电路滤波器对比总结 ................................................ 26

六 课程设计总结 ........................................................................................................................... 26 参考文献......................................................................................................................................... 28

摘 要

DSP芯片是一种特别适合数字信号处理运算的微处理器,主要用来实时、快速实现各种数字信号处理算法。FIR数字滤波器具有严格的线性相位、总是稳定等特点而广泛应用于数字信号处理的各个领域,是一个重要的研究课题。

本文主要研究了低通数字滤波器的基本理论,在MATLAB坏境下设计FIR低通数字滤波器,主要用窗函数法及利用MATLAB的滤波器设计工具的设计方法,编写相应的MATLAB语言,进行具体的仿真分析。用TMS320C5402的DSP芯片软件,编写了DSP的FIR低通数字滤波算法,用MATLAB中生成的滤波器系数导入DSP中设计的滤波器函数中。在ccs环境中,首先根据算法编写C语言文件,在编写完成后再编写cmd文件和在库中添加lib文件保证C语言程序文件可以正确编译链接。

DSP的输入信号可以又MATLAB软件进行编写,在程序测试的时候可以导入进行观察。

在这次课程设计末尾,为了验证DSP设计的低通滤波器相对于运算放大器所设计的硬件电路的优势,利用protues软件和FilterPro软件进行硬件电路的设计仿真。采用信号发生器产生所需信号,利用示波器显示。将DSP设计的滤波器与硬件设计的滤波器进行比较分析其优劣。

最后根据得到的结果对滤波后的结果进行分析,找出设计过程中存在的

问题,并想办法从电路元件或者软件算法方面对其进行一定改良。通过这次课程设计可以掌握CCS,MATLAB,protues等软件的基本使用和焊接简单电路的动手能力。

关键词:数字低通滤波器 FIR MATLAB TMS320C54XX DSP

1

引 言

现代生活中,越来越多的电子产品把数字信号处理(DSP)作为技术核心,DSP已经作为推动数字化进程的动力。作为数字化最重要的技术之一,DSP无论是在其应用领域的深度还是广度,正在以前所未有的速度发展。

数字信号处理器,也称DSP芯片,是针对数字信号处理需要而设计的一种具有特殊结构的微处理器。随着数字化技术的飞速发展,DSP在电子信息、通信、无线电、自动控制、仪表技术等方面应用广泛。

在数字信号处理中,数字滤波器占有极其重要的位置。是象处理、指纹识别、模式识别、谱分析等应用中一个基本的处理算法。在许多信号处理应用中运用数字信号滤波器代替模拟信号滤波器有很大的优势,数字信号滤波器容易实现不同幅度和相位频率特性指标,克服了与模拟信号处理器性能相关的电压漂移、温度漂移和噪声问题。用DSP实现数字滤波具有稳定性好、精确度高和不受环境影响。

数字滤波器又分为无限冲激响应滤波器(IIR)和有限冲激响应滤波器(FIR)。FIR滤波器具有不含反馈环路、结构简单以及可以实现的严格线性相位等优点,因而在对相位要求比较严格的条件下,采用F1R数字滤波器。同时,由于在许多场合下,需要对信号进行实时处理,因而对于单片机的性能要求也越来越高。采用 DSP控制器就可以提高数字信号处理运算的能力,可以对数字信号做到实时处理。而普通的单片机例如MCS-51难以满足这一要求。用可编程DSP芯片实现数字滤波的又一优势是:通过修改滤波器的参数十分方便的改变滤波器的特性。有限长单位冲激响应((FIR)数字滤波器,与传统的通过硬件电路实现的模拟滤波器相比有以下优点:

(1)简化了硬件电路的设计,提高了硬件电路的集成度和可靠性。 (2)对干扰信号的抑制能力有了明显提高,这对系统的控制精度和稳定性的提高起到了促进作用。

(3)数字滤波器的参数调节比起模拟滤波器来更加方便、灵活。 (4)数字滤波器可以实现数据的并行处理,提高了系统运行速度。

2

一 绪论

(一)课题设计的目的

设计的目的首先是为了熟练使用DSP,利用所学的数字信号处理知识设计一FIR滤波器,并在基于DSP平台的仿真软件CCS下通过软件模拟仿真实现基本的滤波功能,其中输入信号和滤波器的各个参数根据设计要求自行确定。首先可以借助Matlab来产生输入数据,并根据输入信号确定滤波器参数,然后根据产生滤波器参数在CCS下编写程序实现滤波器功能,最后进行滤波器性能的测试,完成本次课程设计。为了对于设计有帮助首先了解什么是滤波器以及功能和滤波器的基本结构以及工作方式,可以研究滤波器的硬件原理图和数字滤波器的各种算法来加深理解。 (二)课题内容

我们小组将课题研究分为两个部分:一部分为简单的滤波器硬件电路的设计仿真与实物焊接测试。另一部分着重研究DSP中的滤波器程序的编写与使用matlab软件辅助编写输入文件与滤波器系数。在完成数据的编写之后,首先在ccs环境中根据选择的滤波器的滤波算法用c语言编写相应程序,随后编写asm,smd文件和添加ti库中的lib文件使得编写的c语言程序可以编译链接并且下载到DSP开发板中进行验证。 (三) 设计方法

数字滤波器的实现方法一般有几种: (1)在通用计算机上软件编程实现。

(2)用加法器、乘法器、延时器设计实现专用的滤波电路。 (3)用单片机实现。

(4)用通用的可编程DSP芯片实现。 (5)用专用的DSP芯片实现。

在这几种方法中,第一种方法的速度比较慢,主要用来进行算法的模拟仿真,只能用于非实时系统;第二种和第五种方法是专用的,应用范围不广;第三种方法比较容易实现人机接口,但系统比较复杂,对乘法运算的速度很慢;第四种方法因DSP芯片的哈佛结构、并行结构、指令系统等结构特点,使得数字滤波器比较

3

好的容易实现。在这里我们小组采用方法4编写数字滤波器程序框架,使用matlab软件设计滤波器导出系数,最后完成一个完整低通滤波器的设计。 (四)课程设计的意义

21世纪是数字化的时代,随着越来越多的电子产品将数字信号处理(PSP)作为技术核心,DSP已经成为推动数字化进程的动力。DSP的数字处理能力可以解决许多问题,例如电机控制,图像处理等等。我们的课程设计是研究滤波器,一方面要了解滤波器的原理和不同的实现方式,另一方面学习滤波器如何通过编写程序实现。最终目的是可以在实际环境之中运用滤波器对于采集的信号进行处理完成滤波要求。

二 FIR滤波器基本理论

(一)FIR滤波器的特点

第一了解数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。它的实现方法有很多,其中比较常用到的是无限长脉冲响应滤波器 IIR和有限长脉冲响应滤波器FIR两种。

在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频率选择性也好。但是,它有着致命的缺点,其相位特性不好控制。它的相 位特性)是使频率产生严重的非线性的原因。但是在图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 FIR滤波器具有它独特的优点,设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)是H(N-1)次多项式,它在z平面上有(N-1)个零点,原点z=0是(N-1)阶重极点。因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位。

(二)FIR滤波器的基本结构

数字滤波就是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,H(z)是1

z的N-1次多项式,它在z平面内有N-1个零点,同时

在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器。另外,若对 h(n)提出一些约束条件,那么可以很容易地使 H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是

4

要决定一个转移函数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率p

、阻带频率及两个带上的最大和最小衰减p

和s外,很重要

的一条是保证H(z)具有线性相位。 (三)Chebyshev逼近法

窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性的逼近。由数值逼近理论可知,对某个函数f(x)的逼近一般有以下三种方法:插值法(Interpolating Way) 最小平方逼近法(Least Square Approaching Way) 一致逼近法(Consistent Approaching Way) 切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数xf,在所有n次多项式的集合n中,寻找一个多项式 p(x),使它在[a,b]上对xf的偏差和其它一切属于n的多项式 p(x)对f(x)的偏差相比是最小的,即切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。

三 用MATLAB辅助DSP设计FIR滤波器

在进行设计过程中首先利用matlab进行滤波器的设计,在这里运用了两种方法进行滤波器的设计,一种为利用matlab自带的fir函数进行设计,并利用matlab自带的命令进行输入信号的编写并且输出输出信号的幅频曲线与相频曲线图。第二种使用matlab的FDATool工具进行滤波器的设计得到的滤波器参数,同时使用matlab软件编写“input.dat”文件,具体内容为三个正弦函数叠加生成的含有高次谐波的正弦信号。

总流程图

5

(一)利用fir函数设计FIR滤波器并在在MATLAB环境仿真

MATLAB辅助DSP 实现FIR ,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,再把滤波器系数以头文件形式导入CCS 中,头文件中MATLAB 辅助DSP 实现FIR 数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便程序调试、仿真。

在matlab环境下进行设计与仿真

f1=10;%第一个点频信号分量频率

f2=30;%第二个点频信号分量频率 fs=100;%采样率 T=2;%时宽 B=20;%带宽

n=round(T*fs);%采样点个数 t=linspace(0,T,n);

y=cos(2*pi*f1*t)+cos(2*pi*f2*t);

figure; plot(t,y);

6

title('原始信号时域'); xlabel('t/s'); ylabel('幅度'); figure;

fft_y=fftshift(fft(y)); f=linspace(-fs/2,fs/2,n); plot(f,abs(fft_y)); title('原始信号频谱');

xlabel('f/Hz');

ylabel('幅度'); axis([ 0 50 0 100]);

b=fir1(40, B/(fs/2)); %滤波产生指定带宽的噪声信号 figure;

freqz(b);%画滤波器频响

y_after_fir=filter(b,1,y);

figure;

plot(t,y_after_fir); title('滤波后信号时域'); xlabel('t/s'); ylabel('幅度');

fft_y1=fftshift(fft(y_after_fir)); f=linspace(-fs/2,fs/2,n); figure;

plot(f,abs(fft_y1)); title('滤波后信号频谱'); xlabel('f/Hz'); ylabel('幅度'); axis([ 0 50 0 100]);

7

所设计的低通滤波器的幅频特性曲线与相频特性曲线

输入信号的幅频曲线

8

输入信号的相频曲线

经过滤波后的信号幅频曲线

9

经过滤波后的信号幅频曲线

(二) Matlab中自带工具箱FDATool快速的实现滤波器的设计 1.确定一个低通滤波器指标

若需要设计一个16阶的FIR滤波器(h(0)=0),给定的参数如下: (1) 低通滤波器

(2) 采样频率Fs为48kHz,滤波器Fc为10.8kHz (3) 输入序列位宽为9位(最高位为符号位) 在此利用MATLAB来完成FIR滤波器系数的确定。 2.打开MATLAB的FDATool

MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design &

Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。

单击MATLAB主窗口下方的“Start”按钮,选择菜单“ToolBox” →“Filter Design” →“Filter Design & Analysis Tool(FDATool)”命令

10

3.选择Design Filter

FDATool界面左下侧排列了一组工具按钮,其功能分别如下所述: ● 创建多速率滤波器(Create a Multirate Filter) ● 滤波器转换(TransForm Filter)

● 设置量化参数(Set Quantization Parameters) ● 实现模型(Realize Model) ● 零极点编辑器(Pole-zero Editor) ● 导入滤波器(Import Filter) ● 设计滤波器(Design Filter) 选择其中的按钮,进入设计滤波器界面

滤波器类型(Filer Type)为低通(Low Pass)

● 设计方法(Design Method)为FIR,采用窗函数法(Window) ● 滤波器阶数(Filter order)定制为15 ● 窗口类型为Kaiser,Beta为0.5 ● Fs为48kHz,Fc为10.8kHz

最后单击Design Filter图标,让MATLAB计算FIR滤波器系数并作相关分析。

因为FIR滤波器的输出结果经过了一个单位延时单元,所以在FDATool中,把它看成15阶FIR滤波器来计算参数。因此,设置滤波器阶数时,要比要求的小1。 4.滤波器分析

计算完FIR滤波器系数以后,往往需要对设计好的FIR滤波器进行相关的性能分析,以便了解该滤波器是否满足设计要求。分析操作步骤如下:

选择FDATool的菜单“Analysis”→“Magnitude Response”,启动幅频响应分析如图B.4所示,x轴为频率,y轴为幅度值(单位为dB)

11

选择菜单“Analysis”→“Phase Response”,启动相频响应分析。由该图可以看到设计的FIR滤波器在通带内其相位响应为线性的,即该滤波器是一个线性相位的滤波器。

求出的FIR滤波器的系数可以通过选择菜单“Analysis”→

“Filter Coefficients”来观察。图中列出了FDATool计算的15阶直接I型FIR滤波器的部分系数。

12

5.导出滤波器系数

为导出设计好的滤波器系数,选择FDATool菜单的“File”→“Export”命令,打开Export(导出)对话框

(三)滤波器设计总结

FIR滤波器实现一般采用窗函数法和等纹波设计法。窗函数法还包含两个分支,一种是用公式先手动算出N值和其他对应得窗函数参数值,再代入窗函数和fir1实现,一种是用函数*rord估算出N和相应参数再用fir1实现。不过要注意*rord会低估或高估阶次n,可能会使滤波器达不到指定的性能,这时应稍微增加或降低阶次。如果截止频率在0或Nyquist频率附近,或者设定的dev值较大,则得不到正确结果。滤波器实现形式及特点:由于一般的滤波器在利用窗函数是其通带波纹和阻带波纹不同(一般为第一个阻带波纹最大)因此,在满足第一个阻带衰减旁瓣时,比其频率高的旁瓣,它们的衰减都大大超出要求。而根据

13

阻带衰减与项数的近似关系N = P(δ2)*fs/TW,可得当阻带衰减越大,所需项数越多。

(四)DSP所需文件配置

Fdacoefs.h中存放着所设计的滤波器的系数。

Input.dat中为设计好的一个带有杂波的正弦波,用于dsp仿真时的数据输入。

所生成的两个文件,系数文件内的数据到时候直接添加到c语言编写的dsp程序中,input文件用于dsp仿真进行时作为输入信号输入。

四 基于DSP的FIR滤波器实现

在完成matlab的FIR滤波器的参数提取与输入文件“input.dat”的编写以后就可以开始dsp的滤波器的实现。具体思路为:首先寻找一种滤波器的算法,在这种算法的基础上运用C语言进行程序编写,再编写link.cmd文件将程序进行编译,之后导入输入信号,利用ccs自带的工具对于前后的波形进行分析。

Dsp中程序运行流程图

14

(一)DSP中滤波器的算法实现

FIR滤波器的输出表达式中x(n)表示滤波器在n时刻的输入;y(n)为n时刻的输出。 它的基本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后,再进行乘法-累加,最后输出滤波结果y(n)。 1.线性缓冲区法

线性缓冲区法又称延迟线法,其特点:

(a)对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;

b)从最老样本开始取数,每取一个样本后,将此样本向下移位; (c)读完最后一个样本后,输入最新样本存入缓冲区的顶部。 2.循环缓冲区法

循环缓冲区法的特点如下:

(a)对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区(滑窗),用来存放最新的N个输入样本;

(b)从最新样本开始取数;

(c)读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;

(d)用片内BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。本次设计的FIR滤波器所采用的就是循环缓冲区法。 (二)C语言实现FIR

采用C语言算法在DSP平台上实现了FIR低通数字滤波器,C语言算法相比于汇编算法可移植性很强。这里是在TMS320VC5510DSP为平台编写的C语言算法, 此算法可以稍加改动用在其他DSP芯片上, 而汇编算法则不然。这种方法具有以下优点:

(a) 程序的入口和出口由C语言自动管理,不必手工编写汇编程序实现。 (b) 程序结构清晰,可读性强。

(c) 程序调试方便。由于C程序中的变量全部由C语言来定义,因此采用C源码调试器可以方便地观察C语言变量。

(d) 可移植性较强,通用性较好。 具体代码如下:

15

#include \"stdio.h\"

#include \"D:\\extern\\include\mwtypes.h\" //fdacoefs.h为Matlab生成的系数表头文件 //如运行不通过,请修改fdacoefs.h中的代码,将

#include

//#include

\"d:\\MATLAB7\\extern\\include\mwtypes.h\" //也就是自己机器上的Matlab安装的绝对路径

#define N 33 //FIR滤波器的级数+1,本例中滤波器级数为32 #define LEN 200 //待滤波的数据长度

long yn; int input[LEN]; //输入缓冲,在仿真时将从内存载入 int output[LEN]; //输出缓冲,直接存放在内存中 void main() { int i,j;

int *x;

const int16_T B[33] = {

82, 22, -127, -268, -240, 42, 463, 702, 434,

-382, -1321, -1620, -595, 1865, 5078, 7808, 8879, 7808,

5078, 1865, -595, -1620, -1321, -382, 434, 702, 463,

42, -240, -268, -127, 22, 82 };

for(j=0;jfor(i=0; iyn += B[i]*(*x++);

output[j]=yn>>15; }

16

while(1);

}

(三)CSS仿真调试

CCS 是TI 推出的用于开发其DSP 芯片的继承开发调试工具, 集编辑、编译、链接、软件仿真、硬件调试及实时跟踪等功能于一体, 极大地方便了

DSP 程序的设计与开发, 此外还提供图形显示功能, 方便用户观察特定地址的波形。此外, 还需向工程中添加Link. cmd文件

MEMORY {

PAGE 0: EPROG: origin = 0x1400, len = 0x7c00 VECT: origin = 0xff80, len = 0x80

PAGE 1: USERREGS: origin = 0x60, len = 0x1c BIOSREGS: origin = 0x7c, len = 0x4

IDATA: origin = 0x80, len = 0x1380

EDATA: origin = 0x1400, len = 0x8000 EDATA1: origin = 0x9400, len = 0x4c00 }

SECTIONS {

.vectors: {} > VECT PAGE 0 .sysregs: {} > BIOSREGS PAGE 1 .trcinit: {} > EPROG PAGE 0 .gblinit: {} > EPROG PAGE 0 frt: {} > EPROG PAGE 0 .text: {} > EPROG PAGE 0 .cinit: {} > EPROG PAGE 0 .pinit: {} > EPROG PAGE 0 .sysinit: {} > EPROG PAGE 0 .bss: {} > IDATA PAGE 1 .far: {} > IDATA PAGE 1 .const: {} > IDATA PAGE 1 .switch: {} > IDATA PAGE 1

17

}

.sysmem: {} > IDATA PAGE 1 .cio: {} > IDATA PAGE 1 .MEM$obj: {} > IDATA PAGE 1 .sysheap: {} > IDATA PAGE 1 .stack: {} > IDATA PAGE 1

另外还要导入rts.lib文件,在D:\\DSP\\cgtools\\lib文件夹下。

在CCSV5中建立工程,把c源代码和.cmd文件导入后,外加rts. lib文件,它是TI提供的运行时支持库。如果是C代码写的源程序, 必须要包含该库该库。 (四) 滤波器的仿真测试

编译成功后会在”<工程所以目录>/debug”文件夹下产生*.out文件,在CCS软件的

File->Load Program

里打开这个.out

文件。

选择File->Data->Load…打开之前Matlab生成的input.dat文件。

18

将Address设置为input,Length设置为200,Page设置为Data。

运行程序,点击

按钮,程序即开始运行。

打开View->Graph->Time/Frequency 在上一步出现的对话框中,按如下图设置

19

如果出现的波形图太大,在图形上点右键,将”Allow Docking”、”Float in main window”之前的勾去掉,即会变成如下图的波形:

重复前三个步骤,只改变图形选项中的Display Type、Graph Title、Start Address,使之最后出现如下的图形:

20

左上角:输入数据时域图(Start Address : input) 右上角:输入数据频谱(Display Type : FFT Magnitude) 左下角:输出数据时域图(Start Address : output) 右下角:输出数据频谱(Display Type : FFT Magnitude)

五 DSP数字滤波器与硬件低通滤波器对比

(一)二阶有源低通滤波电路的构建

低通滤波器是用低频信号衰减或抑制高频信号。

如图为典型的二阶低通滤波器。它由两级RC滤波环节与同相比例运算电路组成,其中第一级电容C接至输出端,引入适量的正反馈,以改善幅频特性。

21

(二)二阶低通滤波器 参数计算

二阶低通滤波器性能参数表达式为 ωC2=1/(CC1RR1) Q=0.707 ωC/Q=1/R1C+1/R2C+(1+AV)/R2C1 AV=1+R4/R3 参数计算

设定低通滤波器的截止频率为2KHz、品质因数Q=0.707,设定R1=R2=R,C1=C2=C;又根据截至频率,初步确定电容值C1=C2=C=0.1U,

由 R1=R2=0.796K,R3=R4=4*R=3,184K

(三)在protues环境下的仿真测试

打开protues软件,在元件库寻找到电阻,电容,运算放大器元件。根据电路图连接线路,再根据计算结果设定元件的参数。

二阶有源低通滤波器电路图与在protues中仿真的结果

(四)实物硬件连接以及测试结果

首先在面包板上完成电路的连接与测试。

22

完成测试后在电路板上完成焊接工作。

由测试的波形的对比,有信号可以通过随着输入频率增加,电容电抗减小,由于电阻不变,而电容电抗减小 ,根据分压定理,电容两端的电压(输出电压)将随之减小。当输入频率增加到某一值时,电抗远小于电阻,输出电压与输入电压 相比可忽略不计。这时,电路基本上完全阻止了输入信号的输出。

同理对比一个噪声信号的波形的前后对比可以得出相同的结论。 (五)利用FilterPro的低通滤波器设计

本设计是由TI公司的FilterPro滤波器设计软件直接设计生成的滤波器电路,FilterPro是一款强大的滤波器设计软件,研发时间断、成本比较低、产品开发投放市场快。与其它的类型的滤波器不同的是,它支持三种最常见的全极点滤波器类型:巴特沃兹(最大幅度平坦度)、切比雪夫(等纹波幅度)及贝塞尔

23

(最大延迟时间平坦度)。此软件是经过了一系列精确细致的运算,得到更为理想的低通滤波器,误差范围更小,产生效果更明显,更易于大家认可和接受。利用施密特触发器状态转换过程中的正反馈作用,可以将边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。具有科学性和正确性。 1 选择filter类型

2 滤波器参数设定

根据需求依据要求改写相应参数

24

3 滤波器的算法选择

这里因为butterworth算法所产生的曲线最为平滑所以选择此算法。

4 滤波器的拓扑结构选择

Sallen-Key滤波器是1955年R.P.Sallen与E.L.Key提出的一种由单个运算放大器和电阻、电容组成的低通滤波器。另外两个上方的为单反馈的下方的为双反馈的。

二阶低通滤波器电路图与幅频曲线图

25

(六)DSP数字滤波器与硬件电路滤波器对比总结

首先简单的滤波器的硬件电路设计比较简单,利用设计工具可以轻易获得电路原理图。硬件设计的滤波器的滤波方式主要是利用了运算放大器在输入端的两个电容。当有信号通过的时候,高频信号经过电容,电容的电抗减小,根据分压原理输入端的两端电压减小。当信号频率高于设定时,这时高频信号加在输入端的电压信号很小其输出信号可以忽略掉。

而使用DSP设计的数字滤波器直观上的优势就是操作简单快捷,得到的波形图清晰准确。其次数字滤波器的精度高,仿真度好,而且可靠性好相对于硬件电路受到外界环境例如温度湿度的影响比较小。硬件电路如果提高其精确度所需元件会增加许多导致体积增大成本增加不利于产品的生产使用。

六 课程设计总结

课程设计的开始,我们组的课题是基于dsp的门禁系统设计,但是因为指纹的输入器已经是完成品并且只能与相应软件进行配合使用,并不适合用于开发板。所以将小组的课题更改为基于DSP的FIR低通滤波器的设计。在开始的两天我们小组两人进行分工合作,一人进行资料文献的收集,另一人进行相应软件的安装。

材料与软件准备完成后,我们两人开始第一步在matlab的环境下进行滤波器的仿真与设计。通过对材料的阅读分析,matlab的设计可以分为两种,自带的fir函数与FDATool工具进行滤波器的设计。通过指令编写将三个信号叠加起来,形成一个输入信号。调用函数信号将输入信号进行处理,分别将滤波器的幅频特性与相频特性曲线和输入输出信号的幅频曲线与相频曲线输出。

在完成matlab的设计之后我们组获得六张图片可以分析滤波器的性能,外加滤波器的参数与输入信号文件。然后进行dsp的c语言程序编写。在进行设计的过程中遇到的第一个问题就是文件编译过程之中出现了错误。程序在连接过程中寻找不到相应的头文件。之后通过将滤波器参数直接写入c语言程序中解决了问题。第二个问题是需要一个lib文件的支持才能使得c语言程序能过进行仿真,通过在ti官网上进行下载,并将文件添加在library的库中解决。

26

在完成软件仿真之后,开始对滤波器的硬件电路进行学习。在这个过程中我们找到了一个名为FilterPro的专门设计的软件。在软件的帮助之下,我们得到了一个简单的二阶低通滤波器电路。通过protues软件我们绘制了一个简单二阶低通滤波器电路图,在输入端输入一个正弦信号,在输出端利用幅频曲线显示结果,通过对比与之前所设计的滤波器的仿真结果基本一致。

在实验过程中,我们小组利用了matlab,ccs5.5,protues,FDATool,protel等软件完成对于滤波器的设计与仿真。其中我们额外学习了滤波器的硬件电路,dsp的最小系统的设计,dsp的外围电路的设计和利用protel绘制元件图并转化为PCB图。

在完成这些过后,我们对于运算放大器的硬件电路原理也进行了了解,在这个过程之中我们复习了以前的有关于模电的知识,并且知道了运算放大器可以完成滤波的原理是当有一定频率的信号进入时,随着输入的频率的升高电容的电抗减小,根据分压定理,电容两端的电压大小降低,输入的信号减小于是输出信号随之减小,这样高频信号就被过滤出去了,留下的就是低频信号。

这次课程设计的不足在于只能设计简单的硬件电路,其滤波器的滤波效果不好失真比较严重,DSP设计的数字滤波器在开发板上进行仿真时高频信号没有能完全处理掉。不过在这其间我们通过这次课程设计收获了更多的东西。第一我们学会了如何在零基础的情况下进行资料的收集与整理。第二我们学会了在元件缺乏的或者元件原理不清楚时通过向厂家询问寻求帮助。第三设计过程中将几个重要的实用软件例如MATLAB,CCS与protues等软件的使用有了基本的了解。第四我们学会了如何在MATLAB和CCS中编写滤波器程序。第五学会了如何将不同的软件配合起来使用。第六在程序的编译和链接过程中遇到了编译问题,通过下载缺少的库文件解决。第七为了可以验证DSP的数字滤波器的功能我们学习protues软件的使用和仿真,锻炼了焊接的技巧,同时加深了对运算放大器的功能的理解。

这次课程设计虽然很短暂,但是在这短短的两周我们小组不仅学习了大量软件的使用并且对于硬件电路有了一定的了解。在指导老师的帮助下学会了设计过程中要注意的原则第一是要注意效益降低成本,第二是可以满足设计的需求,第三是要对于产品工作的环境要在设计过程中进行考虑。还有教导我们如何快速高

27

效的完成设计。并且对于设计过程中出现的问题和设备发生故障时懂得了如何利用有效的方式解决。

参考文献

[1]曹阳.DSP原理及实践应用[M].北京:机械工业出版社,2015. [2]张志美.MATLAB完全自学手册[M].北京:电子工业出版社,2013. [3]周润景.PROTEUS入门实用教程[M].北京:机械工业出版社,2007.

[4]党瑞荣.TMS320系列DSP原理、结构及应用[M].北京:机械工业出版社,2012. [5]张伟.Protel99SE实用教程[M].北京:人民邮电出版社,2010.

28

因篇幅问题不能全部显示,请点此查看更多更全内容