📄 deinterleaving_wy.c
字号:
/*********************************************************************
* 文件名称: Deinterleaving.c
* 主要内容: 说明文件的内容,完成的功能,文件中包括哪些主要模块、函数等
*=====================================================================
* 版权所有 (C)2004, 东南大学移动通信国家重点实验室。
*
* 当前版本: 0.1.0
* 作 者: 王艳
* 完成日期: 2004年5月19日
*=====================================================================
* 其它说明: 其它需要内容的说明(如没有则不写)
*=====================================================================
* 修改概述
*
* 修改记录1:// 修改历史记录,包括修改日期、修改者及修改内容
* 修改日期:
* 版 本 号:
* 修 改 人:
* 修改内容:
*
* 修改记录2:…
**********************************************************************/
#include "deinterleaving_WY.h"
//int detable[4][114]; //定义表
//int e[(Iinterleave+1)*Ninterleave]; //输入已交织的数据流
//int d[Iinterleave*Ninterleave]; //输出解交织的数据流
/*******************************************************************
函数说明:
函数名:create_detable
函数功能:产生解交织表
输入:无
输出:利用参数,生成交织地址表,以B,j为地址,其对应的k为表中的内容
********************************************************************/
void create_detable (int detable[8][114])
{
int B;
int j;
for (B=0;B<4;B++)
{
detable[B][0]=B*57;
detable[B][1]=(B+4)*57;
for (j=2;j<=112;j=j+2)
{
detable[B][j]=(detable[B][0]+32*j) % 456;
detable[B][j+1]=(detable[B][1]+32*j) % 456;
}
}
}
/***********************************
函数说明:
函数名:deinterleaving
函数功能:交织
输入:Ninterleave*(Iinterleave+1)
输出:Ninterleave*(Iinterleave+1)
************************************/
void deinterleaving(int e[], int d[],int detable[8][114])
{
int num;
int n;
int B;
int j;
for (num=0;num<(Iinterleave+1)*Ninterleave;num++)
{
n=(num / Ninterleave);
B=(num / 114) % 4;
j=num % 114;
d[(n-(j % 2))*Ninterleave+detable[B][j]]=e[num];
}
}
/***********************************
函数说明:
函数名:mapping_3
函数功能:由帧结构,输出给解交织模块
输入:148*(Iinterleave+1)*4
输出:Ninterleave*(Iinterleave+1)
************************************/
void mapping_3(int e[],int i[])
{
int B=0;
int j=0;
for (B=0;B<4*(Iinterleave+1);B++)
{
for (j=0;j<57;j++) //Message bits
{
i[B*114+j]=e[B*148+j+3];
i[B*114+57+j]=e[B*148+88+j];
}
}
}
/*
main()
{
//int B;
//nt j;
int num;
create_detable(detable);
/*
for (j=0;j<114;j++)
{
for (B=0;B<4;B++)
{
printf("%5d",detable[B][j]);
}
printf("\n");
}
*/ //测试解交织表是否正确
/* for (num=0;num<(Iinterleave+1)*Ninterleave;num++)
{
e[num]=num % Ninterleave;
}
//输入测试数据
deinterleaving(e,d);
for (num=0;num<(Iinterleave+1)*Ninterleave;num++)
{
printf("%5d",d[num]);
if ((num % 10)==9)
printf("\n");
}
}*/
int splitblock1to3(int blockafterinter[Iinterleave*Ninterleave],
int block4[Ninterleave],int block5[Ninterleave],int block6[Ninterleave])
{
int i;
for (i = 0;i<Ninterleave;i++)
{
block4[i] = blockafterinter[0*Ninterleave+i];
block5[i] = blockafterinter[1*Ninterleave+i];
block6[i] = blockafterinter[2*Ninterleave+i];
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -