开开开开PMST 1开开开开开开开开开 2开开开开开开开开开开开开开开开开开开开FIR开开开开开开开开开开FIR开开
开开
四 、实验步骤
1、根据实验要求,利用Matlab的fdatools设计FIR低通滤波器和带通滤波 器,导出有FIR系数数组的头文件。
2、根据实验要求编FIR滤波器的C语言代码,中断向量表和CMD文件; 3、编译成功无误后下载到C5402开发板中,然后运行程序;
4、程序运行完成后,通过CCS中的View->Graph选项查看输入和输出波形, 分析实验结果是否符合要求。
五、程序原代码
1、主函数:
#include
#include \ //滤波文件
#define NX 1024 //输入数组的长度,即波形取得点数 #define NH 87 //系数向量的长度 #define pi 3.1415926 //定义π的值
//#define PMST(unsigned int*)0x1D int i,j;
DATA x[NX],h[NH],r[NX],db[NH]; //分别用于存放导入数据、滤波数据(低通滤波数据)、输出数据、缓冲数组
DATA *dbptr=&db[0]; //延时缓冲区,用于保存计算r所必须的输入值
#pragma DATA_SECTION(h,\
15
#pragma DATA_SECTION(db,\void dataIO(void); //预定义函数
void main(void) {
PMST=0x00A0; //将片内数据RAM映射到程序空间和数据空间
dataIO(); //调用函数,用于导入模拟使用的数据且存放到x数组中 for (i=0;i for(i=0;i } void dataIO() //定义函数 { /*do data I/O*/ return; } 2、中断函数: .sect \ .ref _c_int00 .ref _timer .ref _change_frequency rs: BD _c_int00 ;Rest NOP NOP nmi: .space 4*16 ;NMI, SINT16 sint17:.space 4*16 ;SINT17 sint18: .space 4*16 ;SINT18 sint19: .space 4*16 ;SINT19 sint20: .space 4*16 ;SINT20 sint21: .space 4*16 ;SINT21 sint22: .space 4*16 ;SINT22 sint23: .space 4*16 ;SINT23 sint24: .space 4*16 ;SINT24 sint25: .space 4*16 ;SINT25 sint26: .space 4*16 ;SINT26 sint27: .space 4*16 ;SINT27 sint28: .space 4*16 ;SINT28 sint29: .space 4*16 ;SINT29 sint30: .space 4*16 ;SINT30 int0: .space 4*16 ;INT0, SINT0 int1: .space 4*16 ;INT1, SINT1 16 int2: .space 4*16 ;INT2, SINT2 tint0: .space 4*16;BD _timer ;TINT0, SINT3 brint0: .space 4*16 ;BRINT0, SINT4 bxint0: .space 4*16 ;BXINT0, SINT5 dmac0: .space 4*16 ;DMAC0, brint2, SINT6 dmac1: .space 4*16 ;DMAC1, bxint2, SINT7 int3: .space 4*16;BD _change_frequency ;INT3, SINT8 hpint: .space 4*16 ;HPINT, SINT9 brint1: .space 4*16 ;BRINT1 or DMAC2, SINT10 bxint1: .space 4*16 ;BXINT1 or DMAC3, SINT11 dmac4: .space 4*16 ;DMAC4, SINT12 dmac5: .space 4*16 ;DMAC5, SINT13 rsvd1: .space 4*16 ;reserved rsvd2: .space 4*16 ;reserved .end 3、链接文件: MEMORY { PAGE 0:RESERVE: origin=00h, length=80h PAGE 0: FFT_VECT: origin=0080h,length=80h PAGE 0: PROG: origin=100h,length=1000h PAGE 1: DATA_1: origin=1100h,length=0E00h PAGE 1: DATA_2:origin=2000h,length=2000h } SECTIONS { .vectors:>FFT_VECT PAGE 0 .text:>PROG PAGE 0 .data:> PROG PAGE 0 .bss:> DATA_2 PAGE 1 .cinit:>PROG PAGE 0 .stack:>DATA_2 PAGE 1 .coeffs:>PROG PAGE 0,align(128) .dbuffer:>DATA_2 PAGE 1,align(128) .const:>PROG PAGE 0 } 17 六、实验结果及体会 实验结果: 实验结果图 实验体会: 在实验之前,尝试了一下使用matlab按照老师的要求生成了一个数字滤波器文件,并进行实验,但是并不太成功,最后还是请教了一些同学之后,发现自己的不足,才把实验完成了。在学习的过程中,和同学的交流时必不可少的。 经过此次实验,对实时FIR数字滤波器的设计的知识有了进一步的了解和认识,体会到了数字滤波器的方便,数字滤波器是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。所以数字滤波器对工程设计非常的方便,掌握数字滤波器的设计具有举足轻重的作用。也对CCS软件的使用更加的熟悉,在matlab软件的运用方面也有了一定的了解。 18