Test.h:
/*#define NX 300 #define NH 80
#define FNAME \#define MAXERROR 10
DATA x[NX] ;*/ //
#define NX 320 #define NH 70
//#define FNAME \#define MAXERROR 10 #define PI 3.1415926 //
#pragma DATA_SECTION(h,\DATA h[NH]={
22,24,11,-12,-35,-41,-21, 25,71,85,42,-50,-140,-164, -79,91,254,291,138,-158,-434, -495,-234,267,738,849,408,-477,
-1365,-1651,-852,1113,3804,6389,7969, 7969,6389,3804,1113,-852,-1651,-1365, -477,408,849,738,267,-234,-495, -434,-158,138,291,254,91,-79, -164,-140,-50,42,85,71,25, -21,-41,-35,-12,11,24,22 };
#pragma DATA_SECTION(db,\DATA db[NH+2] ;
DATA rtest[NX];
DATA r[NX];
Tms320.h:
/***********************************************************/ /* Version 2.20.02 */ /***********************************************************/ #ifndef _TMS320 #define _TMS320
typedef unsigned int uint; typedef unsigned short ushort;
11
#define PASS -1
typedef short DATA; typedef long LDATA; #define ABSVAL abs #define SHIFT15 >>15 #define SHIFT1 /2 #define ROUND 0x400 #define DIV2 >>1 #endif
12
Fir高通滤波器: 主函数:
//***************************************************************************** // Filename: fir2_t.c
13
// Version: 0.01
// Description: test for fir2 routine
//*****************************************************************************
#include \#include \#include \#include \short i;
short eflag1= PASS; short eflag2= PASS; DATA r[NX];
DATA *dbptr = &db[0]; void main() {
int i;
short x[NX];
for(i=0;i { x[i]=(short)(((1+sin(PI*3000*i/12000))*sin(PI*4000*i/12000)*32768/3)) ; } // clear for (i=0; i fir2(x, h, r, dbptr, NX, NH);//双MAC运算,速度快 // fir(x, h, r, dbptr, NX, NH);//单MAC运算,速度相对双MAC要慢一些 while(1); } Test.h: /*#define NX 300 #define NH 80 #define FNAME \#define MAXERROR 10 DATA x[NX] ;*/ // #define NX 320 #define NH 70 //#define FNAME \#define MAXERROR 10 #define PI 3.1415926 14 // #pragma DATA_SECTION(h,\DATA h[NH]={ -17,-25,-20,0,26,44,37 0,-53,-89,-75,0,103,170 140,0,-186,-301,-243,0,316 508,409,0,-532,-862,-703,0 961,1625,1407,0,-2417,-5175,-7360 24569,-7360,-5175,-2417,0,1407,1625 961,0,-703,-862,-532,0,409 508,316,0,-243,-301,-186,0 140,170,103,0,-75,-89,-53 0,37,44,26,0,-20,-25 -17,0,0,0,0,0,0}; #pragma DATA_SECTION(db,\DATA db[NH+2] ; DATA rtest[NX]; DATA r[NX]; 15