📄 convinterlv.h
字号:
#define Nrs 228
#define Nb 12
#define Nm 19
#define CVDelay Nb*(Nb-1)*Nm/2
int CIntlvStart[Nb];
int CIntlvEnd[Nb];
int CIntlvRead[Nb];
int CIntlvWrite[Nb];
int DeCIntlvStart[Nb];
int DeCIntlvEnd[Nb];
int DeCIntlvRead[Nb];
int DeCIntlvWrite[Nb];
int memcnt[Nb];
int dememcnt[Nb];
int CIntlvReg[1266];
int DeCIntlvReg[1266];
int CInterlvInit(void);
int CInterlv(int * pindata, int *pMemreg, int * poutdata, int B, int M, int Frames);
int DeCInterlvInit(void);
int DeCInterlv(int * pindata, int *pMemreg, int * poutdata, int B, int M, int Frames);
//卷积交织初始化函数
int CInterlvInit(void)
{
int i;
int tmp=0;
for ( i=0; i<Nb; i++ )
{
memcnt[i] = i*Nm+1;
}
CIntlvStart[0] = 0;
CIntlvEnd[0] = CIntlvStart[0]+memcnt[0]-1;
for ( i=1; i<Nb; i++ )
{
tmp=tmp+memcnt[i-1];
CIntlvStart[i] = tmp;
CIntlvEnd[i] = CIntlvStart[i]+memcnt[i]-1;
}
for ( i=0; i<Nb; i++ )
{
CIntlvRead[i] = CIntlvEnd[i];
CIntlvWrite[i] = CIntlvStart[i];
}
for (i=0;i<1266;i++)
{
CIntlvReg[i]=0;
}
return 0;
}
//解卷积交织初始化函数
int DeCInterlvInit(void)
{
int i;
int tmp=0;
for ( i=0; i<Nb; i++ )
{
dememcnt[i] = (Nb-1-i)*Nm+1;
}
DeCIntlvStart[0] = 0;
DeCIntlvEnd[0] = DeCIntlvStart[0] + dememcnt[0] - 1;
for ( i=1; i<Nb; i++ )
{
tmp = tmp + dememcnt[i-1];
DeCIntlvStart[i] = tmp;
DeCIntlvEnd[i] = DeCIntlvStart[i] + dememcnt[i]-1;
}
for ( i=0; i<Nb; i++ )
{
DeCIntlvRead[i] = DeCIntlvEnd[i];
DeCIntlvWrite[i] = DeCIntlvStart[i];
}
for (i=0;i<1266;i++)
{
DeCIntlvReg[i]=0;
}
return 0;
}
//卷积交织函数
int CInterlv(int * pindata, int *pMemreg, int * poutdata, int B, int M, int Frames)
{
int i,k;
int *in,*out;
in = pindata;
out = poutdata;
for (k=0;k<M*Frames;k++)
{
//Write data to the register array
for (i=0;i<B;i++)
{
*(pMemreg+CIntlvWrite[i])=*(in+k*B+i);
}
//Shift the Write index
for (i=1;i<B;i++)
{
CIntlvWrite[i] = CIntlvWrite[i] -1 ;
if (CIntlvWrite[i]<CIntlvStart[i])
{
CIntlvWrite[i] = CIntlvWrite[i] + memcnt[i];
}
}
//Read data from register array
for (i=0;i<B;i++)
{
*(out+k*B+i)=*(pMemreg+CIntlvRead[i]);
}
//Shift the Read index
for (i=1;i<B;i++)
{
CIntlvRead[i] = CIntlvRead[i] -1 ;
if (CIntlvRead[i]<CIntlvStart[i])
{
CIntlvRead[i] = CIntlvRead[i] + memcnt[i];
}
}
}
return 0;
}
//解卷积交织函数
int DeCInterlv(int * pindata, int *pMemreg, int * poutdata, int B, int M, int Frames)
{
int i,k;
int *in,*out;
in = pindata;
out = poutdata;
for (k=0;k<M*Frames;k++)
{
//Write data to the register array
for (i=0;i<B;i++)
{
*(pMemreg+DeCIntlvWrite[i])=*(in+k*B+i);
}
//Shift the Write index
for (i=0;i<B-1;i++)
{
DeCIntlvWrite[i] = DeCIntlvWrite[i] -1 ;
if(DeCIntlvWrite[i]<DeCIntlvStart[i])
{
DeCIntlvWrite[i] = DeCIntlvWrite[i] + dememcnt[i];
}
}
//Read data from register array
for (i=0;i<B;i++)
{
*(out+k*B+i)=*(pMemreg+DeCIntlvRead[i]);
}
//Shift the Read index
for (i=0;i<B-1;i++)
{
DeCIntlvRead[i] = DeCIntlvRead[i] -1 ;
if(DeCIntlvRead[i]<DeCIntlvStart[i])
{
DeCIntlvRead[i] = DeCIntlvRead[i] + dememcnt[i];
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -