DSP大作业FIR.docx
- 文档编号:8493145
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:87.12KB
DSP大作业FIR.docx
《DSP大作业FIR.docx》由会员分享,可在线阅读,更多相关《DSP大作业FIR.docx(14页珍藏版)》请在冰豆网上搜索。
DSP大作业FIR
要求:
1)1人1题,按本人学号的最末位选题。
学号的最末位为0、3、6的同学选做第一题,学号的最末位为1、4、7、9的同学选做第二题,学号的最末位为2、5、8的同学选做第三题。
2)单独提交综合实验报告电子版。
报告内容为DSP程序、软件仿真结果(输入信号及图形、滤波器类型及系数、滤波后的输出信号图形或频谱图)、结果分析及总结。
题目:
设输入信号为x(t)=cos(2πft)+cos(8πft)+cos(12πft),x(n)利用MATLAB仿真分析得到,采样频率fs根据题目要求自己选择。
这里的频率f为自己学号的最末两位×20Hz。
FIR滤波器的DSP实现(低通、高通、带通、带阻)
要求:
低通功能为输入x(t)=cos(3πft)+cos(7πft)+cos(10πft),输出y(t)=cos(3πft);高通功能为输入x(t)=cos(3πft)+cos(7πft)+cos(10πft),输出y(t)=cos(10πft);带通功能为输入x(t)=cos(3πft)+cos(7πft)+cos(10πft),输出y(t)=cos(7πft);带阻功能为输入x(t)=cos(3πft)+cos(7πft)+cos(10πft),输出y(t)=cos(3πft)+cos(10πft)。
答:
首先利用MATLAB程序设计出滤波器的系数。
程序说明:
1.A/D采样率fs定义为20KHZ;
2.滤波器的阶数定为79;
3.采用窗函数设计法,利用MATLAB计算出滤波器的系数,然后将该系数应用到DSP的滤波程序中去。
以下是MATLAB程序代码:
b1=fir1(79,0.16);%80pointhammingwindowFIRfilter,Wn=0.16π=2π*1550/20000
b2=fir1(79,0.26,'high');%80pointhighpassFIRfilter,Wn=0.26π=2π*2635/20000
b3=fir1(79,[0.160.26]);%bandpass0.1-0.3
b4=fir1(79,[0.160.26],'stop');%bandstop0.16-0.26
fvtool(b1,1)%FlterVisualizationTool可心以查看幅度响应、冲激响应等
fvtool(b2,1)
fvtool(b3,1)
fvtool(b4,1)
h=buffer(round(b1*32768),8)'%参数*2^15,把小数点移最高位后面后取整,然后排成8个一行便于输出。
csvwrite('table1.txt',h)%参数表输出到文件中
h=buffer(round(b2*32768),8)'%参数*2^15,把小数点移最高位后面后取整,然后排成8个一行便于输出。
csvwrite('table2.txt',h)%参数表输出到文件中
h=buffer(round(b3*32768),8)'%参数*2^15,把小数点移最高位后面后取整,然后排成8个一行便于输出。
csvwrite('table3.txt',h)%参数表输出到文件中
h=buffer(round(b4*32768),8)'%参数*2^15,把小数点移最高位后面后取整,然后排成8个一行便于输出。
csvwrite('table4.txt',h)%参数表输出到文件中
%然后只要把参数表从table.txt中拷到代码中,每行前面加上'.word'
t=0:
1/20000:
1/20;%采样率为20KHz,一共采集1000个点
x=cos(2*pi*930*t)+cos(2*pi*2170*t)+cos(2*pi*3100*t);%930Hz、2170Hz、3100Hz的信号相叠加
xx=buffer(round(x/3.3*32768),1)'%参数*2^15,把小数点移最高位后面后取整,然后排成1个一行便于输出。
csvwrite('table5.txt',h)%参数表输出到文件中,输入信号x的离散值保存在文件table5.txt中
y1=filter(b1,1,x);%低通滤波结果
y2=filter(b2,1,x);%高通滤波结果
y3=filter(b3,1,x);%带通滤波结果
y4=filter(b4,1,x);%带阻滤波结果
%画出输入输出波形
figure
(1);subplot(5,1,1);plot(0:
511,x(1:
512));%在子图区域511中画输入信号x波形
subplot(5,1,2);plot(0:
511,y1(1:
512));%在子图区域512中画低通滤波结果波形
subplot(5,1,3);plot(0:
511,y2(1:
512));%在子图区域513中画高通滤波结果波形
subplot(5,1,4);plot(0:
511,y3(1:
512));%在子图区域514中画带通滤波结果波形
subplot(5,1,5);plot(0:
511,y4(1:
512));%在子图区域515中画带阻滤波结果波形
matlab仿真后的波形:
matlab仿真低通滤波的系数:
18,11,-0,-13,-26,-35,-37,-28
-7,24,59,88,99,82,34,-39
-123,-194,-227,-201,-108,41,218,376
465,442,283,-0,-359,-712,-959,-999
-753,-189,668,1735,2877,3935,4748,5189
5189,4748,3935,2877,1735,668,-189,-753
-999,-959,-712,-359,-0,283,442,465
376,218,41,-108,-201,-227,-194,-123
-39,34,82,99,88,59,24,-7
-28,-37,-35,-26,-13,-0,11,18
matlab仿真高通滤波的系数:
-20,-9,9,24,27,11,-19,-45
-46,-12,44,86,77,7,-91,-152
-118,12,171,248,166,-59,-300,-385
-214,154,505,583,259,-339,-859,-904
-296,745,1623,1630,320,-2190,-5179,-7598
24265,-7598,-5179,-2190,320,1630,1623,745
-296,-904,-859,-339,259,583,505,154
-214,-385,-300,-59,166,248,171,12
-118,-152,-91,7,77,86,44,-12
-46,-45,-19,11,27,24,9,-9
-20,0,0,0,0,0,0,0
matlab仿真带通滤波的系数:
-2,-10,-17,-14,6,38,69,75
39,-39,-125,-174,-146,-41,92,183
183,101,5,-23,44,144,148,-47
-420,-784,-866,-465,381,1339,1908,1668
550,-1054,-2429,-2869,-2051,-247,1770,3084
3084,1770,-247,-2051,-2869,-2429,-1054,550
1668,1908,1339,381,-465,-866,-784,-420
-47,148,144,44,-23,5,101,183
183,92,-41,-146,-174,-125,-39,39
75,69,38,6,-14,-17,-10,-2
matlab仿真带阻滤波的系数:
-0,6,15,18,7,-22,-58,-81
-66,-4,88,165,178,105,-27,-152
-202,-153,-50,22,-0,-99,-169,-79
223,628,887,738,84,-883,-1717,-1917
-1212,233,1829,2813,2626,1238,-797,-2576
29499,-2576,-797,1238,2626,2813,1829,233
-1212,-1917,-1717,-883,84,738,887,628
223,-79,-169,-99,-0,22,-50,-153
-202,-152,-27,105,178,165,88,-4
-66,-81,-58,-22,7,18,15,6
-0,0,0,0,0,0,0,0
低通DSP程序:
.title"fir_1.asm"
.mmregs
.defstart
.bssy,1;保存滤波结果
.bssindata,1;输入信号缓冲区(变量)
.bssoutdata,1;输出信号缓冲区(变量)
xn.usect"xn",80;xn
h.usect"h",80;h
;PA0.set0002H;D/A端口地址
;PA1.set0008H;A/D端口地址
.data
table:
.word18,11,-0,-13,-26,-35,-37,-28
.word-7,24,59,88,99,82,34,-39
.word-123,-194,-227,-201,-108,41,218,376
.word465,442,283,-0,-359,-712,-959,-999
.word-753,-189,668,1735,2877,3935,4748,5189
.word5189,4748,3935,2877,1735,668,-189,-753
.word-999,-959,-712,-359,-0,283,442,465
.word376,218,41,-108,-201,-227,-194,-123
.word-39,34,82,99,88,59,24,-7
.word-28,-37,-35,-26,-13,-0,11,18
.text
start:
SSBXFRCT;小数乘法
STM#xn,AR1
RPT#79
ST#0,*AR1+;把x(n)-x(n-79)赋始值0
STM#h,AR1
RPT#79
MVPD#table,*AR1+;把参数表复制到数据存储区
STM#xn+79,AR3;AR3-->x(n-79)
STM#h+79,AR4;AR4-->h(n-79)
STM#80,BK;循环缓冲区大小80
STM#-1,AR0;指针调整值-1
LD#xn,DP;DP指向xn所在页
PORTRPA1,@xn;输入数据
LD#y,DP;DP指向y所在页
FIR:
NOP
MVKDindata,*AR3+0%;在这一行设置探针与断点用于从indata.dat文件中读输入数据
RPTZA,#79
MAC*AR3+0%,*AR4+0%,A
STHA,@outdata;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中
NOP
;STHA,@y;保存计算结果
;PORTW@y,PA0;硬件仿真时写D/A
BFIR;跳转
;BFIR;延迟跳转
;PORTRPA1,*AR3+0%;硬件仿真时读A/D,新数据覆盖最老的数据
.end
低通后的波形:
高通DSP程序:
.title"fir_1.asm"
.mmregs
.defstart
.bssy,1;保存滤波结果
.bssindata,1;输入信号缓冲区(变量)
.bssoutdata,1;输出信号缓冲区(变量)
xn.usect"xn",80;xn
h.usect"h",80;h
;PA0.set0002H;D/A端口地址
;PA1.set0008H;A/D端口地址
.data
table:
.word-20,-9,9,24,27,11,-19,-45
.word-46,-12,44,86,77,7,-91,-152
.word-118,12,171,248,166,-59,-300,-385
.word-214,154,505,583,259,-339,-859,-904
.word-296,745,1623,1630,320,-2190,-5179,-7598
.word24265,-7598,-5179,-2190,320,1630,1623,745
.word-296,-904,-859,-339,259,583,505,154
.word-214,-385,-300,-59,166,248,171,12
.word-118,-152,-91,7,77,86,44,-12
.word-46,-45,-19,11,27,24,9,-9
.word-20,0,0,0,0,0,0,0
.text
start:
SSBXFRCT;小数乘法
STM#xn,AR1
RPT#79
ST#0,*AR1+;把x(n)-x(n-79)赋始值0
STM#h,AR1
RPT#79
MVPD#table,*AR1+;把参数表复制到数据存储区
STM#xn+79,AR3;AR3-->x(n-79)
STM#h+79,AR4;AR4-->h(n-79)
STM#80,BK;循环缓冲区大小80
STM#-1,AR0;指针调整值-1
LD#xn,DP;DP指向xn所在页
;PORTRPA1,@xn;输入数据
LD#y,DP;DP指向y所在页
FIR:
NOP
MVKDindata,*AR3+0%;在这一行设置探针与断点用于从indata.dat文件中读输入数据
RPTZA,#79
MAC*AR3+0%,*AR4+0%,A
STHA,@outdata;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中
NOP
;STHA,@y;保存计算结果
;PORTW@y,PA0;硬件仿真时写D/A
BFIR;跳转
;BFIR;延迟跳转
;PORTRPA1,*AR3+0%;硬件仿真时读A/D,新数据覆盖最老的数据
.end
高通后的波形:
带通DSP程序:
.title"fir_1.asm"
.mmregs
.defstart
.bssy,1;保存滤波结果
.bssindata,1;输入信号缓冲区(变量)
.bssoutdata,1;输出信号缓冲区(变量)
xn.usect"xn",80;xn
h.usect"h",80;h
;PA0.set0002H;D/A端口地址
;PA1.set0008H;A/D端口地址
.data
table:
.word-2,-10,-17,-14,6,38,69,75
.word39,-39,-125,-174,-146,-41,92,183
.word183,101,5,-23,44,144,148,-47
.word-420,-784,-866,-465,381,1339,1908,1668
.word550,-1054,-2429,-2869,-2051,-247,1770,3084
.word3084,1770,-247,-2051,-2869,-2429,-1054,550
.word1668,1908,1339,381,-465,-866,-784,-420
.word-47,148,144,44,-23,5,101,183
.word183,92,-41,-146,-174,-125,-39,39
.word75,69,38,6,-14,-17,-10,-2
.text
start:
SSBXFRCT;小数乘法
STM#xn,AR1
RPT#79
ST#0,*AR1+;把x(n)-x(n-79)赋始值0
STM#h,AR1
RPT#79
MVPD#table,*AR1+;把参数表复制到数据存储区
STM#xn+79,AR3;AR3-->x(n-79)
STM#h+79,AR4;AR4-->h(n-79)
STM#80,BK;循环缓冲区大小80
STM#-1,AR0;指针调整值-1
LD#xn,DP;DP指向xn所在页
;PORTRPA1,@xn;输入数据
LD#y,DP;DP指向y所在页
FIR:
NOP
MVKDindata,*AR3+0%;在这一行设置探针与断点用于从indata.dat文件中读输入数据
RPTZA,#79
MAC*AR3+0%,*AR4+0%,A
STHA,@outdata;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中
NOP
;STHA,@y;保存计算结果
;PORTW@y,PA0;硬件仿真时写D/A
BFIR;跳转
;BFIR;延迟跳转
;PORTRPA1,*AR3+0%;硬件仿真时读A/D,新数据覆盖最老的数据
.end
带通后的输出波形:
带阻DSP程序:
.title"fir_1.asm"
.mmregs
.defstart
.bssy,1;保存滤波结果
.bssindata,1;输入信号缓冲区(变量)
.bssoutdata,1;输出信号缓冲区(变量)
xn.usect"xn",80;xn
h.usect"h",80;h
;PA0.set0002H;D/A端口地址
;PA1.set0008H;A/D端口地址
.data
table:
.word-0,6,15,18,7,-22,-58,-81
.word-66,-4,88,165,178,105,-27,-152
.word-202,-153,-50,22,-0,-99,-169,-79
.word223,628,887,738,84,-883,-1717,-1917
.word-1212,233,1829,2813,2626,1238,-797,-2576
.word29499,-2576,-797,1238,2626,2813,1829,233
.word-1212,-1917,-1717,-883,84,738,887,628
.word223,-79,-169,-99,-0,22,-50,-153
.word-202,-152,-27,105,178,165,88,-4
.word-66,-81,-58,-22,7,18,15,6
.word-0,0,0,0,0,0,0,0
.text
start:
SSBXFRCT;小数乘法
STM#xn,AR1
RPT#79
ST#0,*AR1+;把x(n)-x(n-79)赋始值0
STM#h,AR1
RPT#79
MVPD#table,*AR1+;把参数表复制到数据存储区
STM#xn+79,AR3;AR3-->x(n-79)
STM#h+79,AR4;AR4-->h(n-79)
STM#80,BK;循环缓冲区大小80
STM#-1,AR0;指针调整值-1
LD#xn,DP;DP指向xn所在页
;PORTRPA1,@xn;输入数据
LD#y,DP;DP指向y所在页
FIR:
NOP
MVKDindata,*AR3+0%;在这一行设置探针与断点用于从indata.dat文件中读输入数据
RPTZA,#79
MAC*AR3+0%,*AR4+0%,A
STHA,@outdata;在这一行设置探针与断点用于将滤波结果写到文件outdata.dat中
NOP
;STHA,@y;保存计算结果
;PORTW@y,PA0;硬件仿真时写D/A
BFIR;跳转
;BFIR;延迟跳转
;PORTRPA1,*AR3+0%;硬件仿真时读A/D,新数据覆盖最老的数据
.end
带阻后的波形:
低通,高通,带通,带阻滤波后的波形对照图形:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 作业 FIR