基于DSP的FIR数字滤波器(设计实验)(汇编语言)
更新时间:2023-12-07 07:24:01 阅读量: 教育文库 文档下载
基于DSP的FIR数字滤波器 (设计实验)
一、实验目的
1.了解FIR(Finite Impulse Response有限冲激响应)滤波器的原理及使用方法; 2.了解使用MATLAT语言设计FIR滤波器的方法; 3.了解DSP对FIR滤波器的设计及编程方法; 4.熟悉在CCS环境下对FIR滤波器的调试方法; 二、实验原理
数字滤波是DSP的最基本应用,利用MAC(乘、累加)指令和循环寻址可以方便地完成滤波运算。两种常用的数字滤波器:FIR(有限冲激响应)滤波器和IIR(无限冲激响应)滤波器的DSP实现。
设FIR滤波器的系数为h(0),h(1), ...,h(N-1),X(n)表示滤波器在n时刻的输入,
则n时刻的输出为: N?1 y(n)?h(i)x(n?i)?i?0 h(0)x(n)?h(1)x(n?1)??h(N?1)x[n?(N?1)]FIR数字滤波器的结构如图3.1所示。
Z-1Z-1Z-1x(n)
h(N-1)h(0)h(1)h(2)h(N-2)
图3.1 FIR数字滤波器的结构图 y(n)1、线性缓冲区法
又称延迟线法。其方法是:对于n=N的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区,存放最新的N个样本;滤波时从最老的样本开始,每读一个样本后,将此样本向下移位;读完最后一个样本后,输入最新样本至缓冲区的顶部。以上过程,可以用N=6的线性缓冲区示意图来说明,如图3-2所示
图3-2 N=6的线性缓冲区示意图
2、循环缓冲区法
图3-3说明了使用循环寻址实现FIR滤波器的方法。对于N级FIR滤波器,在数据存储区开辟一个称为滑窗的具有N个单元的缓冲区,滑窗中存放最新的N个输入样本值。每次输入新的样本时,新的样本将改写滑窗中最老的数据,其他数据则不需要移动。
? 1
图3-3 FIR滤波器循环缓冲区存储器图
三、实验内容与步骤
设计一个FIR低通滤波器,通带边界频率为1500Hz,通带波纹小于1dB;阻带边界频率为2000Hz,阻带衰减大于40dB;采样频率为8000Hz。FIR滤波器的设计可以用MATLAB窗函数法进行。
本实验设计一个采样频率Fs为8000Hz,输入信号频率为1000Hz和2500Hz的合成信号,通过设计的低通滤波器将2500Hz信号滤掉,余下1000Hz信号。 1、MATLAB设计FIR滤波器
FIR滤波器的设计可以用MATLAB窗函数法进行,选择Hamming窗,其程序为: b=fir1(16,1500/8000*2); 得到FIR数字滤波器系数b为: b0=0.00000000 b9=0.28342322 b1=0.00482584 b10=0.09725365 b2=0.00804504 b11=-0.02903702 b3=-0.00885584 b12=-0.04291741 b4=-0.0429174 b13=-0.00885584 b5=-0.02903702 b14=0.00804504 b6=0.09725365 b15=0.00482584 b7=0.28342322 b16=0.00000000 B8=0.37452503
在DSP汇编语言中,不能直接输入十进制小数,在MATLAB中进行如下转换: h=round(b*2^15)
将系数转换为Q15的定点小数形式,为: h(0)=0 h(9)=9287 h(1)=158 h(10)=3187 h(2)=264 h(11)=-951 h(3)=-290 h(12)=-1406 h(4)=-1406 h(13)=-290 h(5)=-951 h(14)=264 h(6)=3187 h(15)=158 h(7)=9287 h(16)=0 h(8)=12272
2、编写FIR数字滤波器的汇编程序 ;一个FIR滤波器源程序 fir.asm
.mmregs .global start
2
.def start,_c_int00 INDEX
.set 1
;模拟输入数据缓冲区大小
;FIR滤波器系数
.set 256
KS
N .set 17 COFF_FIR
.word 0 .word 158 .word 264 .word -290 .word -1406 .word -951 .word 3187 .word 9287 .word 12272 .word 9287 .word 3187 .word -951 .word -1406 .word -290 .word 260 .word 158 .word 0
.sect \
.data
INPUT .copy \模拟输入在数据存储区0x2400 OUTPUT .space 1024 ;输出数据在数据区0x2500 COFFTAB .usect \DATABUF .usect \BOS TOS
.usect \.usect \
.text .asg .asg .asg
AR0,INDEX_P
AR4,DATA_P ;输入数据x(n)循环缓冲区指针 AR5,COFF_P ;FIR系数表指针
AR7,OUTBUF_P;FIR滤波器输出数据指针
.asg AR6,INBUF_P ;模拟输入数据指针
.asg
_c_int00
b start nop nop STM RPT MVPD
#COFFTAB,COFF_P #N-1
;将FIR系数从程序存储器移动
#COFF_FIR,*COFF_P+ ;到数据存储器
3
start: SSBX FRCT
STM STM RPTZ STL
#INDEX,INDEX_P #DATABUF,DATA_P A,#N-1 A,*DATA_P+
;将数据循环缓冲区清零
STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向x[n-(N-1)] STM #COFFTAB,COFF_P STM STM STM STM LD STL RPTZ MAC STH
;
FIR_TASK: FIR_FILTER: LOOP:
END B EEND
.end
3、编写FIR滤波器链接命令文件
对应以上汇编程序的链接命令文件fir.cmd如下: fir.obj -m fir.map -o fir.out MEMORY {
PAGE 0: ROM1(RIX) :ORIGIN=0080H,LENGTH=100H
PAGE 1: INTRAM1(RW) :ORIGIN=2400H,LENGTH=0200H INTRAM2(RW) :ORIGIN=2600H,LENGTH=0100H } SECTIONS {
.text : {}>ROM1
PAGE 0
.data : {}>INTRAM1 PAGE 1 FIR_COFF: {}>INTRAM2 PAGE 1 FIR_BFR : {}>INTRAM3 PAGE 1 }
4
#INPUT,INBUF_P #KS-1,BRC #N,BK
#OUTPUT,OUTBUF_P
RPTBD LOOP-1
;FIR循环缓冲区大小 ;装载输入数据
*INBUF_P+,A A,*DATA_P+% A,N-1
*DATA_P+0%,*COFF_P+0%,A A,*OUTBUF_P+
INTRAM3(RW) :ORIGIN=2700H,LENGTH=0100H B2B(RW) :ORIGIN=0070H,LENGTH=10H
.stack : {}>B2B PAGE 1
4、实验步骤及结果
(1) 在CCS上建立fir工程并运行fir.out程序。建立fir工程,将fir.asm和fir.cmd添加到工程中,对汇编程序进行汇编、链接;如果有错误则进行修改、调试,当汇编、链接成功后,加载并运行fir.out程序。注意,将fir.asm、fir.cmd、firin.inc文件和fir.pjt工程文件放在同一文件夹下。
(2) 观察输入信号的波形及频谱。单击View→Graph→Time/Frequency命令,按 照如图3-4所示改变各选项。其中,由.cmd可知输入信号的数据放在数据区 0x2400开始的256个单元中。
图3-4 Graph属性设置窗口
单击OK按钮,则显示输入信号的时域波形如图3-5所示。其波形是频率为1000Hz和2500Hz正弦信号的合成信号。
图3-5 输入信号的时域波形
将图3-4中的Dsiplay Type项改为FFT Magnitude,则显示输入信号的频谱图,如图3-6所示。
5
正在阅读:
基于DSP的FIR数字滤波器(设计实验)(汇编语言)12-07
高考政治复习解答02-22
简评陈独秀充满争议的革命人生04-06
电话手表的自述作文450字06-21
2019年SaaS-HCM行业Workday分析报告05-08
大连理工大学2015秋《工程力学(二)》在线作业3满分答案03-12
2018年广东省考《行测》试题及解析02-22
电大机械制造基础形成性考核册作业4答案08-28
苏教版四年级下课文解析04-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 滤波器
- 汇编语言
- 基于
- 实验
- 数字
- 设计
- DSP
- FIR
- 张家口火车站调研报告
- CAD/CAM/CAE国内软件动态综述
- 中国资源现状及解决方案
- 图书馆数据库设计
- 外研版三起英语四下M3测试题及答案试题
- 上海交通大学2013届直升校内学生
- 微观经济学习题及答案-第1 2 章
- 2019年中国青年公寓行业发展现状分析与发展趋势预测报告目录
- 青铜葵花阅读测试题 - 整理 - 答案 - 2
- 七年级上册《论语八则》复习
- 继电保护培训教材
- 2016年8月 - 最新最全CPU性能排名和价格
- 2010第二届全国优秀建造师名单 - 图文
- 社区组织行政化表现原因及对策分析
- 暑期三下乡活动新闻稿1 - 图文
- 最新化工邮箱1
- 高三百天誓师大会教师代表发言稿
- 2017-2018高考解析几何试题及答案
- 广东省经济和信息化委员会印发广东省经济和信息化委员会工业产
- 北京市丰台区2018届高三一模化学部分