dsp大作业 6713系列fir带通滤波Word格式文档下载.docx

上传人:b****5 文档编号:20589165 上传时间:2023-01-24 格式:DOCX 页数:17 大小:350.11KB
下载 相关 举报
dsp大作业 6713系列fir带通滤波Word格式文档下载.docx_第1页
第1页 / 共17页
dsp大作业 6713系列fir带通滤波Word格式文档下载.docx_第2页
第2页 / 共17页
dsp大作业 6713系列fir带通滤波Word格式文档下载.docx_第3页
第3页 / 共17页
dsp大作业 6713系列fir带通滤波Word格式文档下载.docx_第4页
第4页 / 共17页
dsp大作业 6713系列fir带通滤波Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

dsp大作业 6713系列fir带通滤波Word格式文档下载.docx

《dsp大作业 6713系列fir带通滤波Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《dsp大作业 6713系列fir带通滤波Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

dsp大作业 6713系列fir带通滤波Word格式文档下载.docx

  图7.11FIR滤波器的横截型结构

级联型

  将H(z)分解成实系数二阶因子的乘积形式  (7.12)  其中[N/2]表示取N/2的整数部分。

若N为偶数,则N—1为奇数,故系数B2K中有一个为零,这是因为,这时有奇数个根,其中复数根成共轭对必为偶数,必然有奇数个实根。

图7-13画出N为奇数时,FIR滤波器的级联结构,其中每一个二阶因子用图4-11的横型结构。

  这种结构的每一节控制一对零点,因而再需要控制传输零点时,可以采用它。

但是这种结构所需要的系数B2k(I=0,1,2,k,=1,2,...,[N/2])比卷积型的系数h(n)要多,因而所需的乘法次数也比卷积型的要多。

  图9.13FIR滤波器的级联型结构

快速卷积结构

前一章谈到,只要将两个有限长序列补上一定的零值点,就可以用圆周卷积来代替两序列的线性卷积。

由于时域的圆周卷积,等效到频域则为离散傅立叶变换的乘积。

因而,如果  即将输入x(n)补上L—N1个零值点,将有限长单位冲激响应h(n)补上L—N2个零值点,只要满足L>

=N1+N2—1,则L点的圆周卷积就能代表线性卷积,即  用DFT表示,则有  Y(k)=X(k)H(k)  因而有  其中  Y(k)=DFT[y(n)],L点  X(k)=DFT[x(n)],L点  H(k)=DFT[h(n)],L点  这样,我们就可得到图7.16的快速卷积结构,当N1,N2足够长时,它比直接计算线性卷积要快得多。

这里计算DFY和IDFT都采用快速傅立叶变换计算方法。

FIR滤波器设计过程

FIR滤波器设计总框图

FIR滤波器设计总框图如图3.1所示

图3.1FIR滤波器设计总框图

FIR滤波器设计的原理

设ai(i=0,1,2,…,N-1)为滤波器的冲激响应,输入信号为x(n),则FIR滤波器的输入输出关系为:

 

FIR滤波器的结构如图3.2所示:

图3.2FIR滤波器的结构

FIR滤波器的设计方法

循环缓冲算法:

对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。

每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。

利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。

下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。

5级循环缓冲区的结构如图3.3所示,顶部为低地址。

图3.3循环缓冲区的结构

当第一次执行完

之后,间接寻址的辅助寄存器

指向x(n-4)。

然后,从I/O口输入数据x(n+1),将原来存放x(n-4)的数据存储单元改写为x(n+1)。

接着,进行第二次乘法累加运算,

,最后

指向x(n-3)。

然后从I/O口输入数据x(n+2),将原来存放x(n-4)的数据存储器单元改写为x(n+2)。

FIR滤波器的MATLAB实现

MATLAB是一种功能强、效率高、便于进行科学和工程计算的交互式软件包,它集数值分析、矩阵运算、信号处理和图形显示于一体,为用户提供了方便、友好的界面环境。

MATLAB中的工具箱(Toolbox)包含了许多实用程序。

它提供了多种FIR滤波器设计方法。

4.1用fir1函数设计FIR滤波器

fir1函数用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR数字滤波器的设计。

具体语法如下:

b=fir1(n,Wn)

b=fir1(n,Wn,‘ftype’)

b=fir1(n,Wn,Window)

b=fir1(n,Wn,‘ftype’,Window)

其中n为滤波器的阶数;

Wn为滤波器的截止频率;

ftype为用来决定滤波器的类型,当ftype=high时,可设计高通滤波器;

当ftype=stop时,可设计带阻滤波器。

Window为用来指定滤波器采用的窗函数类型,Window参数可采用的窗口函数有:

Boxcar,Hanning,Bartlett,Blackman,Kasier和chebwin等,其默认时为Hamming窗,从而得到滤波器的系数。

4.2用fir2函数设计FIR滤波器

fir2函数用来设计有任意频率响应的各种加窗FIR滤波器。

b=fir2(n,f,m)

b=fir2(n,f,m,Window)

b=fir2(n,f,m,npt)

b=fir2(n,f,m,npt,Window)

b=fir2(n,f,m,npt,lap)

b=fir2(n,f,m,nptt,lap,Window)

f为频率点矢量;

m为幅度点矢量;

Window用来指定所使用的窗函数类型,默认值为汉明(Hamming)窗;

npt用来指定fir2函数对频率响应进行内插的点数;

lap用来指定fir2函数在重复频率点附近插入的区域大小,从而得到滤波器的系数。

4、实验步骤

1、Matlan语言编程可以使用Matlab语言下的FDA工具箱设计FIR滤波器。

clc;

clear;

closeall;

t=-8:

0.1:

8;

y=square(t);

figure

(1);

plot(t,y);

grid

ylim([-33]);

wn=Hamming(50);

fc1=2200;

fc2=2279;

%阻带频率

ft=46500;

%抽样频率

wc1=2*fc1/ft;

wc2=2*fc2/ft;

B=fir1(49,[wc1,wc2],wn);

figure

(2);

Freqz(B,1);

X=fftfilt(B,y);

figure(3);

subplot(2,1,1);

plot(t,y,'

g'

);

title('

滤波前的频谱'

subplot(2,1,2);

plot(t,X,'

r'

程序实现一个最接近矩形的带通FIR滤波器;

程序中使用的Matlab内部函数有linspace、gremez、freqz、freqzplot等,关于这些函数的说明请参考Matlab的帮助文件。

从图中可以看出,带通宽度基本上接近矩形,滤波器的最大纹波系数小于0.1,阻带很大。

原始信号为方波

由此可以得到滤波器参数:

0.0034,0.0050,0.0068,0.0088,0.0105,0.0115,0.0110,0.0083,0.0031,-0.0048

-0.0147,-0.0258,-0.0365,-0.0451,-0.0501,-0.0501,-0.0443,-0.0253,-0.0327,-0.0161,-0.0040

0.0253,0.0455,0.0620,0.0728,0.0766,0.0728,0.0620,0.0455,0.0253,-0.0040-0.0161,-0.0327,-0.0443,-.0.0501,-.0.0501,-0.0451,-0.0365,-0.0258,-0.0147,-0.0048

0.031,0.0083,0.0110,0.0115,0.0105,0.0088,.0068,0.0050,0.0034

滤波后的波形

DSP系统的构成

一个典型的DSP系统如图2.1示。

图2.1典型的DSP系统

图2.1是一个用DSP做信号处理的典型框图。

由于DSP是用来对数字信号进行处理的,所以首先必须将输入的模拟信号变换为数字信号。

于是先对输入模拟信号进行调整,输出的模拟信号经过A/D变换后变成DSP可以处理的数字信号,DSP根据实际需要对其进行相应的处理,如FFT、卷积等;

处理得到的结果仍然是数字信号,可以直接通过相应通信接口将它传输出去,或者对它进行D/A变换将其转换为模拟采样值,最后再经过内插和平滑滤波就得到了连续的模拟波形模拟信号。

当然,图中的有些环节并不是必需的。

如A/D转换,如果输入的是数字信号,就可以直接交给DSP进行运算

DSP系统的特点及设计过程 

由于数字信号处理系统是以数字信号处理理论为基础,所以具有数字信号处理的全部优点:

(1)接口方便

DSP系统与其它以数字技术为基础的系统或设备都是相互兼容的,比模拟系统与这些系统接口要容易的多。

(2)编程方便

DSP系统中的可编程DSP芯片可以使设计人员在开发过程中灵活方便的进行修改和升级,可以将C语言与汇编语言结合使用。

(3)具有高速性

DSP系统的运行较高,最新的DSP芯片运行速度高达10GMIPS以上。

(4)稳定性好

DSP系统以数字处理为基础,受周围环境,如噪声、温度等的影响小、可靠性高;

(5)精度高

例如16位数字系统可以达到10-5的精度;

(6)可重复性好

模拟系统的性能受元件参数性能变化影响大,而数字系统基本不受影响,更便于测试、调试和大规模生产。

(7)集成方便

DSP系统中的数字部件有高度的规范性,便于大规模生产。

当然DSP也存在一定的缺点。

例如,对于一些简单的信号处理任务,如与模拟交换线的电话接口,若采用DSP则使成本增加。

另外,DSP系统中的高速时钟通常在几十兆赫,可能带来高频干扰和电磁泄漏等问题,而且DSP的功率消耗在系统中也是较大的。

此外,DSP技术发展得很快,数学知识要求多,开发和调试工具还很不完善。

虽然DSP系统还存在一些缺点,但是随着近两年来DSP技术突飞猛进的发展,成本的下降,很多问题都得到了缓解。

其突出的优点已经使其在通信、语音、图像、雷达、生物医学、工业控制、仪器仪表等许多领域得到越来越广泛的应用。

一般来说DSP的设计过程应遵循一定的设计流程,如图2.2示。

图2.2DSP基本设计流程

CCS开发环境

本节将介绍CCSCodeComposerStudio的基本开发环境、软件开发过程、CCS组件。

CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,能够加速开发进程,提高工作效率。

2.3.1CCS概述 

CCS全称是CodeComposerStudio它提供了基本的代码生成工具,具有一定的调试、分析能力,在CCS下的程序开发过程如图2.4示

图2.4程序开发过程

CCS包括:

1、CCS代码生成工具

2、CCS集成开发环境IDE

3、DSP/BIOS插件程序和APIRTDX插件,主机接口和API等。

下面将着重介绍前两项。

2.3.1CCS集成开发环境 

调试DSP目标程序,它主要由几个主要的窗口组成:

工程组显示窗口、程序内容显示窗口、编辑信息提示窗口和主要工具栏。

另外,在编辑过程中还可以显示诸如存储器观察窗口、变量监视框、图形显示框等调试界面,他们为程序编写调试提供多种手段为软件开发提供了极大的方便。

图2.5就是基本编辑界面。

图2.5CCS基本编辑界面

在利用CCS编程的过程中,不可避免的要遇到如何将程序变量分配到内存中去的问题。

因为,即使DSP的存储空间比较大,速度也十分快,但是如果内存空间分配不当的话,还是会出现空间不够行速度下降,甚至程序跑飞的情况,这样会时程序调试起来十分麻烦。

所以,一定要分配好内存空间CCS提供了两种分配空间的方法:

利用cmd文件或rcp文件分配空间,其中cmd文件是纯文本格式的描述性的空间分配方式,它的优点是程序员对空间的可控制性较高,可以将不同的块分配到指定的地址,并规定长度。

但它对于初学者来说,要求对C5410的内存空间的分配有较清楚的认识,否则容易将数据分配到不该分配的地方,引起程序运行的冲突,甚至程序跑飞。

所以,一般在编程过程中,使用rcp文件对程序进行内存分rcp文件全称是recipe文件,这是一种图形化界面的内存分配文件。

对于一个新生成的工程组rcp文件的生成方法是:

选择CCS菜单

上的Tools项,选择linkerconfiguration项,将分配方式改为usethevisuallinker之后直接编译,编译信息提示窗口中会显示出错信息,提示找不到rcp文件,双击提示CCS会自动弹出rcp生成向导,按照要求选择rcp模板,就会生成这个工程对应的rcp文件,双击生成的rcp文件,通过visuallinker连接器可以打开这个文件。

当程序中新增加了变量后,在rcp文件中会出现Notyetplaced项,只要将其下的文件夹,根据类型拖动到run_view下的相应的数据存储器或程序存储器即可。

还可以选择用何种类型的存储器空间装载,通过观察存储空间以使用的状况自行分配空间,所以十分灵活,并且不会出现空间重叠的现象,避免了程序跑飞。

FIR滤波器的DSP实现

所选取的N=37,滤波器的算法为

y(n)=

x(n)+

x(n-1)+

x(n-2)+·

·

+

x(n-36)

根据我们所选择使用的循环缓冲区法可以编写得到FIR滤波器的源程序如下:

.globalinput,output,loop_end,fir_start,_c_int00

.bssinput,1024

.bssoutput,1024

.sect"

coff_fir"

fir_start:

.word34,50,68,88,105,115,110,83,31,-48

.word-147,-258,-365,-451,-501,-501,-443,-253,-327,-161,-40

.word253,455,620,728,766,728,620,455,253,-40

.word-161,-327,-443,-501,-501,-451,-365,-258,-147,-48

.word31,83,110,115,105,88,68,50,34

fir_table.usect"

fir_coff"

512

data_buffer.usect"

fir_bfr"

512

.text

_c_int00

MVK.S1input,A0

;

MVKH.L1input,A0

MVK.S11,A1

MVK.S1-1,A2

MVK.S28,B0

MVKL.S20x00000000,B1

MVKH.S20x00000000,B1

MVC.S2B1,AMR

loop:

MVK.S216,B1

loop1:

STW.D1A1,*A0++

SUB.L2B1,1,B1

NOP

[B1]Bloop1

NOP5

MVK.S216,B1

loop2:

STW.D1A2,*A0++

[B1]Bloop2

SUB.L2B0,1,B0

[B0]Bloop

MVK.S1fir_start,A3

MVK.S1fir_table,A4

MVK.S1data_buffer,A5

MVK.S264,B0

ZEROA2

loop5:

STW.D1A2,*A5++

SUB.L2B0,1,B0

[B0]Bloop5

NOP5

MVK.S249,B0

loop3:

LDW.D1*A3++,A7

STW.D1A7,*A4++

SUB.L2B0,1,B0

[B0]Bloop3

NOP5

MVK.S215,B0

loopa:

STW.D1A2,*A4++

[B0]Bloopa

MVK.S1output,A1

MVK.S1fir_table,A4

MVK.S1data_buffer+4,A5

MVKL.S20x00070005,B1

MVKH.S20x00070005,B1

MVC.S2B1,AMR

MVK.S2256,B0

loop6:

ZEROA3

LDW.D1*A0++,A2

STW.D1A2,*--A5

MVK.S264,B1

loop7:

LDW.D1*A4++,A9

LDW.D1*A5++,A10

MPY.M1A9,A10,A6

NOP

ADD.L1A3,A6,A3

NOP

SUB.L2B1,1,B1

[B1]Bloop7

STW.D1A3,*A1++

SUB.L2B0,1,B0

[B0]Bloop6

.end

DSP连接命令文件

MEMORY

{

PAGE0:

PROG:

origin=0x00002000,length=0x0800

BUFF:

origin=0x00004000,length=0x0800

PAGE1:

DATA:

origin=0x00003000,length=0x2000

}

SECTIONS

.text:

{}>

PROGPAGE0

.bss:

DATAPAGE1

coff_fir:

BUFFPAGE0

fir_coff:

fir_bfr:

实验小结:

通过本次实验使我对dsp的工作原理有了更新的理解,重新又熟悉了matlab软件的操作,以及用matlab对信号进行仿真处理。

对fir滤波的软件和硬件的有机组合有了新的见解和体会,同时对汇编语言也有了更进一步的提高,特别是dsp的寻址指令有了更全新的理解,对以后从事相关任务奠定了基础。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1