⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 am.c

📁 利用CCS2.0开发的AM调制解调,该程序已经经过TMS320C54X开发平台调试
💻 C
字号:
#include <std.h>
#define N 320
#define L 101     /*the step of digital filter*/
#include "am.h"          /*Qu=12*/                    /*Qrx=10*/
int chans[N];
int sigout[N];
int indata[1061];
int buff[L];
void getdata(int *p);
void outputdata(int *p);
void setzero(int *p,int n);
void modulate(int *insig,int *incw,int *chansig);
void demodulate(int *inp,int *cwp);
void main()
{
 int i,dt,j=0;
 int *coff,*noise,*s,*cw;
 setzero(buff,L);
 setzero(sigout,N);
 TARGET_INITIALIZE(); 
 getdata(indata);
 s=indata;
 noise=indata+N;
 cw=indata+2*N;
 coff=indata+3*N;
 modulate(s,cw,chans);
 for (i=0;i<N;i++)
     chans[i]+=noise[i];   /*add channel noise*/
 demodulate(chans,cw);
 for (i=0;i<N;i++,j++)
     {dt=chans[i] ;
     shtbuf(buff,dt);
     mad(coff,buff,sigout,j);
      }
 outputdata(sigout);
}
void getdata(int *p)
{ Int status;
  RTDX_enableInput(&ichan);
  status=RTDX_read(&ichan, p,1061*sizeof(int));
  while (status==0)  ;
  RTDX_disableInput(&ichan);
}
void modulate(int *insig,int *incw,int *chansig)
{ int i;
  int Q=11;
  long temp;
  for (i=0;i<N;i++)
   {  temp=(long)(*insig++)*(long)(*incw++);
      *chansig++=(int)(temp>>Q);/*Qotsig=7*/
      }
 }
void demodulate(int *inp,int *cwp)
{  int i;
   int Q=15;
   long temp,temp1,temp2;
   for (i=0;i<N;i++)
       temp1=(long)(*cwp++);
       temp2=(long)(*inp);
       temp=temp1*temp2;
       *inp++=(int)(temp>>Q);  /*Qinp=8*/
 }  
void outputdata(int *p)
{
  int status;
  RTDX_enableOutput(&ochan);
  status=RTDX_write(&ochan, p, N*sizeof(int));
  while (status==0)  ;
  RTDX_disableOutput(&ochan);
}
void setzero(int *p,int n)
{
  int i;
  for (i=0;i<n;i++)
    *p++=0;
 }









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -