DSP实习报告模板1(2)

2019-03-16 15:49

七、源程序

Fir低通滤波器: 主函数:

//***************************************************************************** // Filename: fir2_t.c // 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

6

// compute

fir2(x, h, r, dbptr, NX, NH);//双MAC运算,速度快

// fir(x, h, r, dbptr, NX, NH);//单MAC运算,速度相对双MAC要慢一些 while(1); }

cmd文件: MEMORY {

PAGE 0:

MMR : origin = 0000000h, length = 00000c0h SPRAM : origin = 00000c0h, length = 0000040 DARAM0 : origin = 0000100h, length = 0003F00h DARAM1 : origin = 0004000h, length = 0004000h DARAM2 : origin = 0008000h, length = 0004000h DARAM3 : origin = 000c000h, length = 0004000h SARAM0 : origin = 0010000h, length = 0004000h SARAM1 : origin = 0014000h, length = 0004000h SARAM2 : origin = 0018000h, length = 0004000h SARAM3 : origin = 001c000h, length = 0004000h SARAM4 : origin = 0020000h, length = 0004000h SARAM5 : origin = 0024000h, length = 0004000h SARAM6 : origin = 0028000h, length = 0004000h SARAM7 : origin = 002c000h, length = 0004000h SARAM8 : origin = 0030000h, length = 0004000h SARAM9 : origin = 0034000h, length = 0004000h SARAM10 : origin = 0038000h, length = 0004000h SARAM11 : origin = 003c000h, length = 0004000h SARAM12 : origin = 0040000h, length = 0004000h SARAM13 : origin = 0044000h, length = 0004000h SARAM14 : origin = 0048000h, length = 0004000h SARAM15 : origin = 004c000h, length = 0004000h CE0 : origin = 0050000h, length = 03b0000h CE1 : origin = 0400000h, length = 0400000h CE2 : origin = 0800000h, length = 0400000h CE3 : origin = 0c00000h, length = 03f8000h PDROM : origin = 0ff8000h, length = 07f00h

VECS : origin = 0ffff00h, length = 00100h /* reset vector */ }

SECTIONS {

vectors : {} > VECS PAGE 0 /* interrupt vector table */ .cinit : {} > SARAM0 PAGE 0 .text : {} > SARAM1 PAGE 0

7

isrs : {} > SARAM2 PAGE 0 .stack : {} > DARAM0 PAGE 0 .sysstack: {} > DARAM0 PAGE 0 .sysmem : {} > DARAM1 PAGE 0 .data : {} > DARAM1 PAGE 0 .bss : {} > DARAM1 PAGE 0 .const : {} > DARAM1 PAGE 0

.coeffs : {} > DARAM2 PAGE 0 .dbuffer : {} > DARAM3 PAGE 0

files : {} > DARAM2 PAGE 0 /* User-defined sections */ statvar : {} > DARAM2 PAGE 0 statarry : {} > DARAM2 PAGE 0 tempvar : {} > DARAM2 PAGE 0 temparry : {} > DARAM2 PAGE 0 }

Include: Dsplib.h:

/***********************************************************/ /* Version 2.20.02 */ /***********************************************************/ #ifndef _DSPLIB #define _DSPLIB #include \/* 32-bit fft */

void cfft32_SCALE(LDATA *x, ushort nx); void cfft32_NOSCALE(LDATA *x, ushort nx); void cifft32_SCALE (LDATA *x, ushort nx); void cifft32_NOSCALE (LDATA *x, ushort nx); /* 16-bit fft */

void cfft_SCALE(DATA *x, ushort nx); void cfft_NOSCALE(DATA *x, ushort nx); void cifft_SCALE (DATA *x, ushort nx); void cifft_NOSCALE (DATA *x, ushort nx);

short* cfft_offplace_SCALE(DATA *x, DATA *y, ushort nx); short* cfft_offplace_NOSCALE(DATA *x, DATA *y, ushort nx); short* cifft_offplace_SCALE (DATA *x, DATA *y, ushort nx); short* cifft_offplace_NOSCALE (DATA *x, DATA *y, ushort nx); void unpack(DATA *x, ushort nx); void unpacki(DATA *x, ushort nx);

/* void rfft(DATA *x, ushort nx, ushort scale); */ /* void rifft(DATA *x, ushort nx, ushort scale); */ /* 16-bit bit reversal */

void cbrev (DATA *x, DATA *y, ushort n);

8

/* correlations */

ushort acorr_raw(DATA *x, DATA *r, ushort nx, ushort nr); ushort acorr_bias(DATA *x, DATA *r, ushort nx, ushort nr); ushort acorr_unbias(DATA *x, DATA *r, ushort nx, ushort nr);

ushort corr_raw (DATA *x, DATA *y, DATA *r, ushort nx, ushort ny); ushort corr_bias (DATA *x, DATA *y, DATA *r, ushort nx, ushort ny); ushort corr_unbias (DATA *x, DATA *y, DATA *r, ushort nx, ushort ny); /* filtering and convolution */

ushort convol(DATA *x, DATA *h, DATA *r, ushort nr, ushort nh); ushort convol1(DATA *x, DATA *h, DATA *r, ushort nr, ushort nh); ushort convol2(DATA *x, DATA *h, DATA *r, ushort nr, ushort nh);

ushort fir(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx, ushort nh); ushort fir2(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx, ushort nh); ushort firs(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx, ushort nh2); ushort cfir(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx, ushort nh);

ushort iircas4(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nbiq, ushort nx); ushort iircas5(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nbiq, ushort nx); ushort iircas51(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nbiq, ushort nx); ushort firlat (DATA *x, DATA *h, DATA *r, DATA *pbuffer, int nx, int nh); ushort iirlat (DATA *x, DATA *h, DATA *r, DATA *pbuffer, int nx, int nh);

ushort hilb16(DATA *x, DATA *h, DATA*r, DATA *dbuffer, ushort nx, ushort nh);

ushort firdec(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nh, ushort nx, ushort D); ushort firinterp(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nh, ushort nx, ushort I); ushort iir32(DATA *x,LDATA *h,DATA *r,LDATA *d, ushort nbiq, ushort nx); /* adaptive filtering */

ushort dlms(DATA *x, DATA *h, DATA *r, DATA *des, DATA *dbuffer, DATA step, ushort nh, ushort nx);

ushort dlmsfast(DATA *x, DATA *h, DATA *r, DATA *des, DATA *dbuffer, DATA step, ushort nh, ushort nx); /* math */

ushort add(DATA *x, DATA *y, DATA *r, ushort nx, ushort scale); ushort sub(DATA *x, DATA *y, DATA *r, ushort nx, ushort scale); ushort neg (DATA *x, DATA *r, ushort nx);

ushort neg32 (LDATA *x, LDATA *r, ushort nx); ushort power (DATA *x, LDATA *r, ushort nx); ushort sqrt_16(DATA *x, DATA *r, short nx);

void ldiv16(LDATA *x, DATA *y,DATA *r, DATA *rexp, ushort nx); void recip16(DATA *x, DATA *r, DATA *rexp, ushort nx); ushort mul32(LDATA *x, LDATA *y, LDATA *r, ushort nx); ushort expn(DATA *x, DATA *r, ushort nx); ushort logn(DATA *x, LDATA *r, ushort nx); ushort log_2(DATA *x, LDATA *r, ushort nx); ushort log_10(DATA *x, LDATA *r, ushort nx); short bexp (DATA *x, ushort nx);

9

short maxidx (DATA *x, ushort ng, ushort ng_size); short maxidx34 (DATA *x, ushort nx); short maxval (DATA *x, ushort nx);

short minidx (DATA *x, ushort ng, ushort ng_size); short minval (DATA *x, ushort nx);

void maxvec (DATA *x, ushort nx, DATA *val, DATA *idx); void minvec (DATA *x, ushort nx, DATA *val, DATA *idx); /* matrix */

ushort mmul(DATA *x1,short row1,short col1,DATA *x2,short row2,short col2,DATA *r); ushort mtrans(DATA *x, short row, short col, DATA *r); /* trigonometric */

ushort atan16(DATA *x, DATA *r, ushort nx);

ushort atan2_16(DATA *i, DATA *q, DATA *r, ushort nx); ushort sine(DATA *x, DATA *r, ushort nx); /* miscellaneous */

ushort fltoq15(float *x, DATA *r, ushort nx); ushort q15tofl(DATA *x, float *r, ushort nx);

ushort rand16(DATA *r, ushort nr); void rand16init(void); /* macro definition */ #define SCALE 1 #define NOSCALE 0

#define cfft(x,nx, type) cfft_##type(x,nx) #define cifft(x,nx, type) cifft_##type(x,nx)

#define cfft_offplace(x,nx,ny, type) cfft_offplace_##type(x,nx, ny) #define cifft_offplace(x,nx,ny, type) cifft_offplace_##type(x,nx, ny) #define acorr(n1, n2, n3, n4, type) acorr_##type(n1, n2, n3, n4)

#define corr(n1, n2, n3, n4, n5, type) corr_##type(n1, n2, n3, n4, n5) #define rfft(x,nx,type)\\ (\\

cfft_##type(x,nx/2),\\ cbrev(x,x,nx/2),\\ unpack(x,nx)\\ )

#define rifft(x,nx,type)\\ (\\

unpacki(x, nx),\\

cifft_##type(x,nx/2),\\ cbrev(x,x,nx/2)\\ ) #endif

10


DSP实习报告模板1(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017年教师招聘考试(小学语文)真题及答案解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: