📄 systemsim.h
字号:
//////////////////////////////////////////////////////////////////////////////
//
// 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 + -