FIR CCS 实验报告

更新时间:2023-12-10 23:11:11 阅读: 评论:0

2023年12月10日发(作者:生态文明校园)

-

FIR CCS 实验报告

《DSP原理及应用》――FIR滤波器的C54X实现

一、 实验目的

用matlab获得FIR滤波器的抽头系数,用汇编语言实现FIR滤波器。产生一混频信号,用所设计的滤波器进行滤波,查看滤波器输出。

二、实验仪器

1.PC一台(win7系统);

2.Code Compor Studio 3.1 软件;

3.MATLAB 2009;

4.Dev C++ 6.0 软件。

三、实验要求

1.设计一个FIR低通滤波器,通带边界频率为2500Hz,通带波纹小于1dB;阻带边界频率为3000Hz,阻带衰减大于40dB;采样频率为10000Hz。

2.设计一个采样频率Fs为10000Hz,输入信号频率为2000Hz和3250Hz的合成信号,通过设计的低通滤波器将3250Hz信号滤掉,余下2000Hz信号。

3.用循环缓冲区和双操作数寻址方法编写实现FIR滤波的程序。

四、实验原理

如果FIR 滤波器的冲激响应为h(0),h(1), ...,h(N-1)。X(n)表示滤波器在n 时刻的输入,则n 时刻的输出为:

y(n) = h(0)x(n) + h(1)x(n-1) + ... + h(N-1)x[n-(N-1)]

使用MAC 或FIRS 指令可以方便地实现上面的计算。

图1 说明了使用循环寻址实现FIR 滤波器的方法。为了能正确使用循环寻址,必须先初始化BK,块长为N。同时,数据缓冲区和冲激响应(FIR 滤波器的系数)的开始地址必须是大于N

的2 的最小幂的倍数。例如,N=11,大于N 的最小2 的幂为16,那么数据缓冲区的第一个地址应是16 的倍数,因此循环缓冲区起始地址的最低4 位必须是0。

在图1 中,滤波系数指针初始化时指向h(N-1),经过一次FIR 滤波计算后,在循环寻址的作用下,仍然指向h(N-1)。而数据缓冲区指针指向的是需要更新的数据,如x(n)。在写入新数据并完成FIR 运算后,该指针指向x(n-(N-1))。所以,使用循环寻址可以方便地完成滤波窗口数据的自动更新。

五、实验内容及步骤

1.FIR滤波器的设计

FIR滤波器的设计可以用MATLAB软件的窗函数法进行,这里选择Hamming窗,程序为:

b=fir1(16,1500/8000*2)

得到FIR数字滤波器系数b为:

b0 = 0 b9 = 0.2834

b1 = 0.0048 b10 = 0.0973

b2 = 0.008 b11 = -0.029

b3 = -0.0089 b12 = -0.0429

b4 = -0.0429 b13 = -0.0089

b5 = -0.029 b14 = 0.008

b6 = 0.0973 b15 = 0.0048

b7 = 0.2834 b16 = 0

b8 = 0.3745

在DSP汇编语言中,不能直接输入十进制小数,在MATLAB中进行如下转换:

h=round(b*2^15)

将系数转换为Q15的定点小数形式,为:

h0 = 0 h9 = 9287

h1 = 158 h10 = 3187

h2 = 264 h11 = -951

h3 = -290 h12 = -1406

h4 = -1406 h13 = -290

h5 = -951 h14 = 264

h6 = 3187 h15 = 158

h7 = 9287 h16 = 0

h8 = 12272

2.产生滤波器输入信号文件

以下是一个产生输入信号的C语言程序,信号是频率为1000Hz和2500Hz的正弦波合成的波形。文件名为firinput.c 。

#include

#include

void main()

{

int i;

double f[256];

FILE *fp;

if((fp=fopen("","wt"))==NULL)

{

printf("can't open file! n");

return;

} for(i=0;i<256;i++)

{

f[i]=sin(2*3.14159*i*1000/8000)+sin(2*3.14159*i*2500/8000);

fprintf(fp," .word %ldn",(long)(f[i]*32768/2));

}

fclo(fp);

}

该程序产生名为 的输入信号程序。文件的部分内容如下:

.word 0

.word 26722

.word 4798

.word 5315

.word 16384

.word -5319

.word -4793

.word -26721

在DSP汇编语言程序中通过.copy汇编命令将生成的数据文件 复制到汇编程序中,作为FIR滤波器的输入数据。

3.编写FIR数字滤波器的汇编源程序

FIR数字滤波器汇编程序如下:

.mmregs

.global start

.def start,_c_int00

INDEX .t 1

KS .t 256 ;模拟输入数据缓冲区大小

N .t 17

COFF_FIR .ct "COFF_FIR" ;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

.data

INPUT .copy "" ;模拟输入在数据存储区0x2400

OUTPUT .space 1024 ;输出数据在数据区0x2500

COFFTAB .uct "FIR_COFF",N

DATABUF .uct "FIR_BFR",N

BOS .uct "STACK",0Fh

TOS .uct "STACK",1

.text

.asg AR0,INDEX_P

.asg AR4,DATA_P ;输入数据x(n)循环缓冲区指针

.asg AR5,COFF_P ;FIR系数表指针

.asg AR6,INBUF_P ;模拟输入数据指针

.asg AR7,OUTBUF_P;FIR滤波器输出数据指针

_c_int00

b start

nop

nop

start: ssbx FRCT

STM #COFFTAB,COFF_P

RPT #N-1 ;将FIR系数从程序存储器移动

MVPD #COFF_FIR,*COFF_P+ ;到数据存储器

STM #INDEX,INDEX_P

STM #DATABUF,DATA_P

RPTZ A,#N-1

STL A,*DATA_P+ ;将数据循环缓冲区清零

STM #(DATABUF+N-1),DATA_P ;数据缓冲区指针指向x[n-(N-1)]

STM #COFFTAB,COFF_P

FIR_TASK:

STM #INPUT,INBUF_P

STM #OUTPUT,OUTBUF_P

STM #KS-1,BRC

RPTBD LOOP-1

STM #N,BK ;FIR循环缓冲区大小

LD *INBUF_P+,A ;装载输入数据

FIR_FILTER:

STL A,*DATA_P+%

RPTZ A,N-1 MAC *DATA_P+0%,*COFF_P+0%,A

STH A,*OUTBUF_P+

LOOP:

EEND B EEND

.end

4.编写FIR滤波器链接命令文件

对应以上汇编程序的链接命令文件如下:

-m

-o

MEMORY

{

PAGE 0: ROM1(RIX) :ORIGIN=0080H,LENGTH=100H

PAGE 1: INTRAM1(RW) :ORIGIN=2400H,LENGTH=0200H

INTRAM2(RW) :ORIGIN=2600H,LENGTH=0100H

INTRAM3(RW) :ORIGIN=2700H,LENGTH=0100H

B2B(RW) :ORIGIN=0070H,LENGTH=10H

}

SECTIONS

{

.text : {}>ROM1 PAGE 0

.data : {}>INTRAM1 PAGE 1

FIR_COFF: {}>INTRAM2 PAGE 1

FIR_BFR : {}>INTRAM3 PAGE 1

STACK : {}>B2B PAGE 1

}

5.在Code Compor Studio 3.1 软件中将有关程序运行并调试。

六、实验结果及分析

1.观察输入信号的波形,如图2所示。

2.观察输入信号的频谱,如图3所示。

3.观察输出信号的波形,如图4所示。

4.观察输出信号的频谱,如图5所示。

七、实验总结

这次实验完成了FIR滤波器在DSP上仿真实现,对FIR滤波器有更深入的了解,进一步掌握对CCS软件的使用方法,巩固了对DSP汇编语言的理解,对以后深入学习有很大帮助。

-

FIR CCS 实验报告

本文发布于:2023-12-10 23:11:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1702221071117651.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:FIR CCS 实验报告.doc

本文 PDF 下载地址:FIR CCS 实验报告.pdf

上一篇:希腊旅行攻略
下一篇:返回列表
标签:输入   信号   数据   实验   缓冲区
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|