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

📄 systemsim.h

📁 此程序为wcdma系统当中ftp/video业务模型的c++程序仿真 通过此程序 能得到此两种业务在多种条件下的吞吐量和无码率的性能
💻 H
📖 第 1 页 / 共 2 页
字号:
 //////////////////////////////////////////////////////////////////////////////
//
//	TITLE:	The Definations of Fixed Parameters and Types of the Program
//
//	PURPOSE:Give the Definations of Fixed Parameters and Types of the 
//			Program that all the modules may use
//
//	COMMENTS:
//			The definations consist of these two parts:
//
//			1.公共数据结构, 可以分为4类:
//				● 与地理位置有关的公共数据。包括:坐标、小区标号、扇区标号。
//				● 与邻小区干扰和切换有关的公共数据。包括:周围扇区信息、候选
//				扇区信息、激活扇区信息,以及相关的数组、链表和函数。
//				● 与信道变化模型有关的公共数据。包括:信道数据、衰落数据。
//				其中,衰落数据结构体数组构成了信道模型类与移动台类的接口。
//				● 与链路性能预测有关的公共数据。包括:速率估计、BLER估计两个
//				数据表中用到的数据结构。数据业务移动台使用速率估计表,根据当前
//				的C/I确定适合的数据速率,作为系统调度算法的依据。在某个
//				sub-packet传输结束后,数据业务移动台根据encoder packet的大小、
//				数据速率、平均编码速率、C/I的均值和方差,判断当前分组的BLER,
//				然后根据BLER估计该分组是否正确。上述数据表作为链路性能预测类的
//				成员数据,链路性能预测类中需要定义与之配合的成员函数。
//
//			2.宏定义部分:
//				定义了系统中相对固定的参数,可以作为常量在整个系统程序中使用。
//
//			本文件可以作为定义系统公共头文件的依据,在变量与宏的说明过程中,
//			已经给出了大部分的英文说明或定义,可以以此为依据,并结合已有的代码
//			编写规范,定义变量和宏的名称。
//
//	Writer: Chenmeiya Lijing Zhoujianhua
//
//	DATE:	2004.5
//
//////////////////////////////////////////////////////////////////////////////

#if !defined(SYSTEMSIM_H__INCLUDED_)
#define SYSTEMSIM_H__INCLUDED_

#include <math.h>
#include <afxtempl.h>
#include <iostream.h>

#include "sys_random.h"
#include "newran.h"

#define SlotsNumPerFrame 15            //每一帧的时隙数
#define BlockTimeThreshold 7500         //单位为时隙,即为5秒钟
#define MeanCallTime 180	            //平均呼叫时长 120 秒
#define MAXNUMBER 5000                  //每100slots输出一次,仿真时长为125s

#define CarrierFrequency 2e9			//载波频率
#define MM 5							//服务区内横向小区数量
#define NN 5							//服务区内纵向小区数量
#define SectorNumber 3					//一个小区的扇区数
#define NearCoefficient 0.707			//慢衰近场系数
#define FarCoefficient 0.707			//慢衰远场系数
#define FractionOfPilotChannel 0.1	    //导频功率比例
#define FractionOfCommonChannel 0.1	    //其他公共信道功率比例
#define FractionOfHSDSCHChannel 0.8     //为HSDSCH信道预留的功率比例 by zl 20050422
#define BandWidth 5e6				    //系统带宽
#define ChipRate 3.84e6				    //码片速率

#define NoiseFigure 10				
	//移动台接收机噪声系数,叠加于NoiseDensity之上,单位:dB
#define NoiseDensity -174				
    //热噪声功率谱密度
#define NoisePower float((pow(10,(NoiseDensity+NoiseFigure)/double(10))*BandWidth))	
	//热噪声功率.噪声功率谱密度与带宽的乘积,计算C/I时用

#define AntennaGain 15					//天线增益&电缆损耗,单位:dB
	//与天线方向性(Antenna Orientation)叠加,
	//构成天线衰减值(Antenna Attenuation)

#define OtherLosses 10       //其他损耗,单位:dB
#define MsAntennaGain -1     //移动台天线增益,单位:dB

#define MinPathLoss 70					//路径损耗最小值
#define SlotSize 0.0006666667					//时隙长度(以s为单位)
#define PI 3.14159265
#define MinimumValue pow(10,-30)		//无穷小
#define ParameterFile "parameter.txt"	//参数文件路径名


#define SubslotNumber 4			//一个时隙中子时隙的数量
//#define MaxTransmissionNum 1	//最大传输次数
#define INITIALSLOT 900	    //表示程序初始化时长的宏定义,以时隙为单位

#define MAXTRANSRATE 1228.8
#define MINTRANSRATE 19.2

//for compile
#define MAXBLNUM 24
#define MAXTTISLOTNUM 30
#define HSDSCHTTISLOTNUM 3  //HS-DSCH TTI时隙数 by zl
#define MAXTRANSNUM 1

#define MAXRATENUM   10    //速率个数,用于门限调整 by zl 20050427
#define MAXSAWCHANNELNUM 1   //一个用户子信道数目的最大值 by zl
//功率的单位都是dBm
#define POWERCONTROLSTEP 1

#define DROPTIME 0.1
#define SLOTTIME 0.00066667
//#define DEBUG_FTP
//#define DEBUG_FTP_BIT
//end of for compile


//位置坐标结构体
typedef struct stLocation
{
	float x;	//横坐标
	float y;	//纵坐标
} LOCATION_TYPE;

//小区标号结构体
typedef struct stCellID
{
	int m;		//横坐标:小区在服务区内的横向位置
	int n;		//纵坐标:小区在服务区内的纵向位置
} CELLID_TYPE;

//扇区标号结构体
typedef struct stSectorID
{
	CELLID_TYPE stCellID;	//小区标号:小区在服务区内的位置
	int s;						//扇区序号:该扇区在小区内的序号
}SECTORID_TYPE;

//监测扇区信息结构体(Li Jing定义)
typedef struct stMonitorSector//W中监测集为本小区加上周围一圈小区,共7个小区21个扇区
        {
	      SECTORID_TYPE stSectorID;	//扇区标号
	      float fPathLoss;				//路径损耗
		//该扇区到达移动台的路径损耗
	      float fAntennaGain;				//天线增益
		//该扇区到达移动台方向上的天线增益
	      float fFastFading[SubslotNumber];//快衰落值
		//该扇区到达移动台的快衰落
	      float fSlowFading;				//慢衰落值
		//该扇区到达移动台的慢衰落,根据近场值和远场值得到
	      float fPropagationLoss;			//总的损耗值:上述三项之和(不包括快衰)
	      float fPowerFromTheSector;	        //此监测扇区到达移动台的总功率(干扰)
          float fInterferenceFromOtherSector;			//相邻的监测扇区来的对移动台的总干扰
			//fInterferenceFromOtherSector值就是移动台所有监测扇区(除了移动台所在扇区本身之外的20个扇区)fPowerFromTheSector值的累加和
	      float fPilotPower;							//本扇区导频接收功率
		//根据该扇区的导频功率和各类损耗与衰落计算
	      float fPilotSNR;							//Ms处本扇区导频信噪比
		//导频接收功率/(本扇区其他信道接收功率*正交因子+
		//相邻扇区干扰功率总和+热噪声)
	      bool  bIsInActive;							//是否在激活集内
	      int   iStatusTimer;							//状态改变计时器
		//记录导频信噪比超过或低于门限的时间,若计时器达到设定值,
		//则改变上面布尔型变量的状态
	      bool  bIsBestSector;							//是否为最佳基站
		//标志监测集内导频信噪比最高的扇区
         }MONITORSECTOR_TYPE;

//激活扇区结构体
typedef struct stActiveSector                           //只有给移动台分配了功率的扇区才是激活扇区!
{
	SECTORID_TYPE stSectorID;		        //扇区标号
	int iIndexInMonitor;				//本扇区在监测集中的位置(即该激活扇区在这个移动台的监测集数组中的下标)
	float fTrafficPower;		    //前向业务信道(或分组信道)发射功率(仅为激活扇区对此移动台的发射功率)
	float fTrafficC2I;				//单位是dB  
									//前向业务信道(或分组信道)信噪比(在移动台处)
		                            //业务信道(或分组信道)接收功率/(本扇区其他信道接收功率*正交因子+相邻扇区干扰功率总和+热噪声)
}ACTIVESECTOR_TYPE;

//传输格式指示结构体(cmy定义)
typedef struct stTFI                   //应该是一个扩频速率(或者是一个传输速率)对应一个TFI
{
        int iTransBLSize;              //传输块大小
        int iTransBLNum;               //TTI中传输块的个数
        int iTTISlotNum;               //一个TTI所含的时隙数(对于话音用户,此为固定的30个时隙--20ms)
}TFI_TYPE;



//用户类型-枚举型 by zl
enum Usertype {voice,DCHData,HSDSCHData};

enum TotalUserType {T_voice,T_data};


//信道数据结构体
typedef struct stChannelModel
{
	int iID;				//ID
	float fMobileSpeed;		//移动台速度
	int iCoSlotNum;			//相关时隙长度
}CHANNELMODEL_TYPE;

//衰落数据结构体
typedef struct stFadingValue
{
	CELLID_TYPE stCellID;		//小区序号
	float fSlowFarFading;		//慢衰远场值
	float fSlowFading;			//慢衰值:在链路级模块中根据近场和
								//远场算出
	float fFastFadingSet[SectorNumber][SubslotNumber];	
	//快衰数组:对应一个小区中的三个扇区
}FADINGVALUE_TYPE;

/*速率估计数据表*/

//Modified by LiJing,20040713
//速率预测结构体
typedef struct stRate
{
	int   iChannelType; //信道类型
	float fDataRate;	//预测的数据速率
	float fTargetC2I;	//功率控制的目标值,也是用作速率预测的参考值
	TFI_TYPE *pTFI;		//当前速率下的TFI结构
}RATE2CI_TYPE;

typedef struct RateC2IBLER
{
	float fDataRate;	//数据传输速率
	float fTTIAverageC2I;	//TTI内平均C2I值
	float fBLER;			//TTI内误块率
}RATEC2IBLER_TYPE;
 
/* BLER 估计数据表(1)*/

//SNR的均值、方差到 BLER 的映射结构体
typedef struct stSNR2BLER1
{

⌨️ 快捷键说明

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