(daizu 《DSP应用系统设计》综合设计
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
题目: 带阻数字滤波器的设计
姓名 XXX 学号 _XXXXXXX
手机 XXXXXXX Email XXXXXXXXX
专 业 _ 自动化 班级 _XXXXXX
开课学期 2011 至 2012 学年 2_学期
提交时间 2012 年 7 月 5 日
一、 引言
数字滤波是现代数字信号处理的重要研究内容,在信号分析、图像处理、模式识别、自动控制等领域得到了广泛应用。按照数字滤波器的特性,它可以被分为线性与非线性、因果与非因果、无限长冲击响应(IIR)与有限长冲击响应(FIR)等等。与IIR滤波器相比,FIR滤波器在保证幅度特性满足技术
要求
对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗
的同时,很容易做到严格的线性相位特性。
基于DSP设计的带阻滤波器实现了对信号的滤波,使其在某一频率带内的信号被滤去而使其他频率的信号通过。Matlab语言是一种用于科学计算的高级语言,随着Matlab信号处理工具箱的不断完善和发展,使数字滤波器的计算机辅助设计得以实现。
二、实验目的
利用DSP的原理和方法设计FIR数字带阻滤波器(采用Hamming窗),具体设计参数如下:
(1)采样频率Fs=8000Hz。
(2)滤波器阶数 L=128。
(3)输入信号为三个正弦波的叠加,其频率分别为f1=500Hz,f2=1500Hz,f3=2800Hz,幅值均为0.333。
(4)带阻滤波器的边界频率fp=[1000 3000],则对应的归一化数字角频率为Wn=fp/(Fs/2)=[0.25,0.75]。
三、实验场地及仪器、设备和材料:
(1) PC兼容机一台,操作系统为Windows2000。
(2)安装Code Composer Studio 4.2软件与Matlab软件。
(3)DSP系统实验箱(硬件连接使用,本实验未使用)。
四、实验内容
1 、系统
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。数字信号处理后的数据可能需还原为模拟信号,这就需要进行D/A转换。一个仅包括A/D和D/A两部分的简化数字信号处理系统功能如图1所示。
图1 简化数字信号处理系统功能框图
DSP系统的输入信号多种多样,但一般都要转换为模拟信号,经过抗混叠滤波后由模数转换芯片将模拟信号变换为数字信号。然后,DSP根据实际需要对其进行相应的处理,如FFT、卷积等;处理后的数字信号再由数模转换芯片将其转换为模拟值,在对其进行平滑滤波后最终输出模拟信号。需要说明的是,对输入模拟信号的采样频率要大于其本身频率的两倍,因为根据奈奎斯特采样定律,只有采样频率至少为输入信号频率的两倍时输入信号的信息才保证不会丢失。
设计带阻滤波器,其中N+1为滤波器阶数,b为返回的长度为N+1的系数向量。Wn为归一化边界频率,0 < Wn < 1.0,Wn 处增益为-6dB。Wn =1.0对应的非归一化频率为Fs/2,其中Fs为采样频率。
本设计中,设Fs=8000Hz,设计带通阻波器,格式为:b = fir1(N,Wn)或b = fir1(N,Wn, 'stop') 其中Wn = [W1 W2], W1、W2为边界频率,当带阻滤波器的边界频率fp=[1000, 3000],则对应的归一化数字角频率为Wn=fp/(Fs/2)=[0.25,0.75]。执行b = fir1(N,Wn, 'stop')与b=round(b*32768) 指令得到的系数为:
b=[0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0]
注意: 上述滤波器系数为浮点格式,当DSP程序中采用整数格式时。滤波器系数需相应地变为整数,方法为乘以32768并取整。
(2)设计低通滤波器,格式为:b=fir1(N,Wn)或b = fir1(N,Wn,'low')。
(3)设计高通滤波器,格式为:b = fir1(N,Wn,'high') 参数意义同上。
(4)设计带通滤波器,格式为:b = fir1(N,Wn)或b = fir1(N,Wn, 'bandpass'),其中Wn = [W1 W2], W1、W2为边界频率。采用函数plot(b)可以绘制滤波器的冲击响应图:
图2 滤波器的冲击响应图
采用函数freqz(b)可以绘制滤波器的频率响应图:
图3 滤波器的频率响应图
2、算法设计
一个滤波器实质上是一个系统或者网络, 它以一种期望的模式有选择地改变信号的波形、幅度??频率/相位??频率特性. 一般滤波的目的是为了改善一个信号的质量(例如消除或者减少噪声), 或者从信号中提取信息, 或者把以前为了有效通信信道而组合在一起的2个或多个信号分离出来。数字滤波器是执行滤波算法的特定硬件或者软件程序. 滤波算法是为了达到滤波的目的而对输入信号进行的运算操作, 最后产生数字输出信号. 数字滤波器处理的对象是数字化的模拟信号, 或者是存储在计算机存储器里代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
某些变量的数.
设h ( i) ( i = 0, 1,2,……,N - 1)为滤波器的冲击响应, 输入信号为x ( n ) , 则FIR 滤波器就是要实现下列差分方程:
FIR滤波器的最主要特点是没有反馈回路, 因此它是无条件的稳定系统, 它的单位脉冲响应h( n ) 是一个有限长序列. 所以, F IR 滤波器的算法实际上就是一种乘法累加运算. 由此差分方程可
画出对应的网络结构, 如图4所示:
图4 FIR滤波器结构图
3、 软件实现
3.1 滤波器系数获取
设计中使用Matlab程序获得滤波器系数向量有两种方法。
方法一, 设Fs=8000Hz,当带阻滤波器的边界频率fp=[1000, 3000],则对应的归一化数字角频率为Wn=fp/(Fs/2)=[0.25,0.75]。执行b = fir1(N,Wn, 'stop')与b=round(b*32768) 指令得到的系数为:
b=[0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0]
方法二,使用MATLAB中FDATOOL工具箱进行设置相关参数从而得到滤波器系数向量,在命令窗口输入语句格式为:fdatool,此时将出现对话框,进行相关设置即可。
3.2 滤波器C语言编程实现
带阻FIR滤波器的C55x汇编语言实现如下:
(1) 主程序 sheji.c
/* sheji.c */
#include "math.h"
#define L 129
#define Fs 8000 /* 采样频率 */
#define T 1/Fs /* 采样时间 */
#define f1 500 /* 正弦信号1频率 */
#define f2 1500 /* 正弦信号2频率 */
#define f3 2800 /* 正弦信号3频率 */
#define PI 3.1415926
#define w1 (2*PI*f1*T) /* 正弦信号1数字频率=2*pi*f1/Fs */
#define w2 (2*PI*f2*T) /* 正弦信号2数字频率=2*pi*f2/Fs */
#define w3 (2*PI*f3*T) /* 正弦信号3数字频率=2*pi*f3/Fs */
#define a1 0.333 /* 正弦信号1幅度 */
#define a2 0.333 /* 正弦信号2幅度 */
#define a3 0.333 /* 正弦信号3幅度 */
extern int fir(int *,int *,unsigned int,int );
/* Low-pass FIR filter coefficients */
int coeff[129]={0,0,-28,0,0,0,36,0,0,0,-52,0,0,0,77,0,0,0,-113,0,0,0,161,0,0,0,-223,0,0,0,304,0,0,0,-407,0,0,0,541,0,0,0,-718,0,0,0,965,0,0,0,-1336,0,0,0,1974,0,0,0,-3411,0,0,0,10415,0,16397,0,10415,0,0,0,-3411,0,0,0,1974,0,0,0,-1336,0,0,0,965,0,0,0,-718,0,0,0,541,0,0,0,-407,0,0,0,304,0,0,0,-223,0,0,0,161,0,0,0,-113,0,0,0,77,0,0,0,-52,0,0,0,36,0,0,0,-28,0,0
};
int in[129]; /* input buffer */
int out[129]; /* Output buffer */
main()
{
unsigned int i;
float signal;
unsigned int n=0;
int index=0;
for(i=0;i
DARAM
.text: {} > DARAM
.stack: {} > DARAM
.sysstack: {} > DARAM
.cinit: {} > DARAM2
.pinit: {} > DARAM2
.bss: {} > DARAM2
.const: {} > DARAM2
}