📄 am.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 + -