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

📄 deinterleaving_wy.c

📁 基于MATLAB的GSM仿真系统 并附有直接画出性能曲线的简化程序。
💻 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 + -