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

📄 wib_phy_def.h

📁 802.16e物理层下行子载波分配。严格按照802.16e实现。
💻 H
📖 第 1 页 / 共 2 页
字号:
}UL_SUBFRAME_STRUCT;


/* simulation control parameter definition */



enum CP_SIZE {
	CP_1_4,
	CP_1_8,
	CP_1_16,
	CP_1_32,
	CP_NUM
};


/* simulation control parameter */
typedef struct{
	enum     CHAN_TYPE	chan_type;					/*current channel type*/
	float    snr[MAX_SNR_NUM];						/*SNR of current channel*/
	UINT32   sim_num;								/*simulation repetition number*/
}SIM_CTRL_STRUCT;

/* define the global data type of downlink frame */
typedef struct{

	/****************************** downlink tx data **************************/
	UINT8       		dlmap[MAX_DLMAP_LEN];														//2048	bytes
	UINT8       		fch[MAX_FCH_LEN];															//3		bytes
	UINT8       		source_data[MAX_SOURCE_LEN];												//7680	bytes
//	UINT8       		source_data[2000];												//7680	bytes
	UINT8				crc16_enc_data[MAX_SOURCE_LEN];												//7680  bytes
	UINT8       		rand_data[MAX_SOURCE_LEN_BLOCK];											//60	bytes
	UINT8       		ctc_data[MAX_ENCODE_LEN_BLOCK];												//180	bytes
	UINT8       		cc_data[MAX_ENCODE_LEN_BLOCK];												//180	bytes
	UINT8       		interleave_data[MAX_ENCODE_LEN_BLOCK];										//180	bytes
	UINT8       		repetititon_data[MAX_ENCODE_LEN_BLOCK * MAX_REPET_CODE];
	COMPLEX16           map_data[MAX_SYM_NUM*MAX_DATASC_NUM];										//76800	bytes
	COMPLEX16           log_frame[MAX_SYM_NUM][MAX_DATASC_NUM];										//76800	bytes
	UINT16      		alloc_datasc_subchn_even[MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];	//11520	bytes
	UINT16      		alloc_datasc_subchn_odd[MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];	//11520	bytes
	UINT16      		alloc_pilotsc_even[MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];						//656	bytes
	UINT16      		alloc_pilotsc_odd[MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];							//656	bytes
	UINT16      		alloc_data_physc_even[MAX_ZONE_NUM][MAX_SC_NUM_SYMB];						//11520	bytes
	UINT16      		alloc_data_physc_odd[MAX_ZONE_NUM][MAX_SC_NUM_SYMB];							//11520	bytes
	COMPLEX16           phy_preamble[FFT_SIZE];														//1024	bytes
	COMPLEX16           phy_pilot[MAX_SYM_NUM][MAX_PILOT_NUM_SYM];								
	COMPLEX16           phy_frame[MAX_SYM_NUM][FFT_SIZE];
	COMPLEX16           ifft_data[MAX_SYM_NUM][FFT_SIZE];
	INT16				ifft_exponent[MAX_SYM_NUM];
	COMPLEX16           addcp_data[MAX_SYM_NUM * (FFT_SIZE + MAX_CP_SIZE)];
	INT16        		duc_data[UP_SMAPLE_RATIO * MAX_SYM_NUM * (FFT_SIZE + MAX_CP_SIZE)];
	COMPLEX16        	channel_data[MAX_NUM_OF_SAMP_FRM];

	/****************************** downlink rx data **************************/
	COMPLEX16           ddc_data[MAX_SYM_NUM * (FFT_SIZE + MAX_CP_SIZE)];
	COMPLEX16           detected_preamble[FFT_SIZE + MAX_CP_SIZE];
	COMPLEX16           compen_preamble[FFT_SIZE + MAX_CP_SIZE];
	COMPLEX16			syn_compen_data[MAX_SYM_NUM][FFT_SIZE + MAX_CP_SIZE];
	COMPLEX16           fft_preamble_data[FFT_SIZE];
	COMPLEX16           fft_data[MAX_SYM_NUM][FFT_SIZE];
	COMPLEX16           fft_shift_data[MAX_SYM_NUM][FFT_SIZE];
	INT16				fft_exponent[MAX_SYM_NUM];
	COMPLEX32           chest_data[MAX_SYM_NUM] [ MAX_SC_NUM_SYMB];
	INT32				chest_hk[MAX_SYM_NUM] [ MAX_SC_NUM_SYMB];
//	INT16        		demap_data[MAX_ENCODE_LEN_BLOCK * 8];
//	UINT8       		ctc_dec_data[MAX_SOURCE_LEN_BLOCK];
//	INT16        		deinterleave_data[MAX_MAP_LEN_BLOCK*8];
//	UINT8       		viterbi_dec_data[MAX_SOURCE_LEN_BLOCK];
	UINT8       		derand_data[MAX_SOURCE_LEN];
	UINT8	    		dl_derand_burst[MAX_BURST_NUM][MAX_BITS_BURST / 8];
//	UINT8       		derand_data[2000];
	UINT8       		crc16_dec_data[MAX_SOURCE_LEN];
	UINT16      		dealloc_datasc_subchn_even[MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];
	UINT16      		dealloc_datasc_subchn_odd[MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];
	UINT16      		dealloc_pilotsc_even[MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];
	UINT16      		dealloc_pilotsc_odd[MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];
	UINT16      		dealloc_physc_even[MAX_ZONE_NUM][MAX_SC_NUM_SYMB];		//11520	bytes
	UINT16      		dealloc_physc_odd[MAX_ZONE_NUM][MAX_SC_NUM_SYMB];		//11520	bytes

} FRM_DATA_DL_STRUCT;


/* define the global data type of uplink frame */
typedef struct{

	/****************************** uplink tx data **************************/
	UINT8       		source_data[MAX_SOURCE_LEN];												//7680	bytes
	UINT8				ranging_code[256][RANGING_CODE_LEN];
	UINT8				crc16_enc_data[MAX_SOURCE_LEN];												//7680   bytes
	UINT8       		rand_data[MAX_SOURCE_LEN_BLOCK];											//60		bytes
	UINT8       		ctc_data[MAX_ENCODE_LEN_BLOCK];												//180	bytes
	UINT8       		cc_data[MAX_ENCODE_LEN_BLOCK];												//180	bytes
	UINT8       		interleave_data[MAX_ENCODE_LEN_BLOCK];										//180	bytes
	UINT8       		repetititon_data[MAX_ENCODE_LEN_BLOCK * MAX_REPET_CODE];
	COMPLEX16           map_data[MAX_SYM_NUM*UL_MAX_SC_NUM];										//76800	bytes
	COMPLEX16           log_frame[MAX_SYM_NUM][UL_MAX_SC_NUM];										//76800	bytes
	INT16 				wk[32][FFT_SIZE];
	UINT16				frame_blkbst_flag[UL_MAX_ZONE_NUM][MAX_SYM_NUM][UL_MAXSUBCHN_NUM];
	COMPLEX16			frame_burst_location[UL_MAX_ZONE_NUM][MAX_BURST_NUM][UL_MAXSUBCHN_NUM*MAX_SYM_NUM];
	UINT16      		alloc_sc_subchn[UL_MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];	//11520	bytes
//	UINT16      		alloc_pilotsc[UL_MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];		
//	UINT16      		alloc_datasc_subchn_middle[UL_MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];	//11520	bytes
//	UINT16      		alloc_pilotsc_edge[UL_MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];						//656	bytes
//	UINT16      		alloc_pilotsc_middle[UL_MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];						//656	bytes
//	UINT16      		alloc_data_physc_edge[UL_MAX_ZONE_NUM][MAX_SC_NUM_SYMB];						//11520	bytes
//	UINT16      		alloc_data_physc_middle[UL_MAX_ZONE_NUM][MAX_SC_NUM_SYMB];						//11520	bytes
	COMPLEX16           phy_preamble[FFT_SIZE];														//1024	bytes
	COMPLEX16           phy_pilot[MAX_SYM_NUM][MAX_PILOT_NUM_SYM];								
	COMPLEX16           phy_frame[MAX_SYM_NUM][FFT_SIZE];
	COMPLEX16           ifft_data[MAX_SYM_NUM][FFT_SIZE];
	INT16				ifft_exponent[MAX_SYM_NUM];
	COMPLEX16           addcp_data[MAX_SYM_NUM * (FFT_SIZE + MAX_CP_SIZE)];
	INT16        		duc_data[UP_SMAPLE_RATIO * MAX_SYM_NUM * (FFT_SIZE + MAX_CP_SIZE)];
	COMPLEX16        	channel_data[MAX_NUM_OF_SAMP_FRM];

	/****************************** uplink rx data *************************
	COMPLEX16           ddc_data[MAX_SYM_NUM * (FFT_SIZE + MAX_CP_SIZE)];
	COMPLEX16           detected_preamble[FFT_SIZE + MAX_CP_SIZE];
	COMPLEX16           compen_preamble[FFT_SIZE + MAX_CP_SIZE];
	COMPLEX16			syn_compen_data[MAX_SYM_NUM][FFT_SIZE + MAX_CP_SIZE];
	COMPLEX16           fft_preamble_data[FFT_SIZE];
	COMPLEX16           fft_data[MAX_SYM_NUM][FFT_SIZE];
	COMPLEX16           fft_shift_data[MAX_SYM_NUM][FFT_SIZE];
	INT16				fft_exponent[MAX_SYM_NUM];
	COMPLEX32           chest_data[MAX_SYM_NUM] [ MAX_SC_NUM_SYMB];
	INT32				chest_hk[MAX_SYM_NUM] [ MAX_SC_NUM_SYMB];
//	INT16        		demap_data[MAX_ENCODE_LEN_BLOCK * 8];
//	UINT8       		ctc_dec_data[MAX_SOURCE_LEN_BLOCK];
//	INT16        		deinterleave_data[MAX_MAP_LEN_BLOCK*8];
//	UINT8       		viterbi_dec_data[MAX_SOURCE_LEN_BLOCK];
	UINT8       		derand_data[MAX_SOURCE_LEN];
//	UINT8       		derand_data[2000];
	UINT8       		crc16_dec_data[MAX_SOURCE_LEN];
	UINT16      		dealloc_datasc_subchn_even[MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];
	UINT16      		dealloc_datasc_subchn_odd[MAX_ZONE_NUM][MAXSUBCHN_NUM][MAX_SC_NUM_SUBCHN];
	UINT16      		dealloc_pilotsc_even[MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];
	UINT16      		dealloc_pilotsc_odd[MAX_ZONE_NUM][MAX_PILOT_NUM_SYM];
	UINT16      		dealloc_physc_even[MAX_ZONE_NUM][MAX_SC_NUM_SYMB];		//11520	bytes
	UINT16      		dealloc_physc_odd[MAX_ZONE_NUM][MAX_SC_NUM_SYMB];		//11520	bytes
*/
} FRM_DATA_UL_STRUCT;



typedef enum{
	QPSK_1_2_CC,		/* FEC CODE TYPE = 0 */
	QPSK_3_4_CC,		/* FEC CODE TYPE = 1 */
	QAM16_1_2_CC,		/* FEC CODE TYPE = 2 */
	QAM16_3_4_CC,		/* FEC CODE TYPE = 3 */
	QAM64_1_2_CC,		/* FEC CODE TYPE = 4 */
	QAM64_2_3_CC,		/* FEC CODE TYPE = 5 */
	QAM64_3_4_CC,		/* FEC CODE TYPE = 6 */
	QPSK_1_2_BTC,		/* FEC CODE TYPE = 7 */
	QPSK_3_4_BTC,		/* FEC CODE TYPE = 8 */
	QAM16_3_5_BTC,		/* FEC CODE TYPE = 9 */
	QAM16_4_5_BTC,		/* FEC CODE TYPE = 10 */
	QAM64_2_3_BTC,		/* FEC CODE TYPE = 11 */
	QAM64_5_6_BTC,		/* FEC CODE TYPE = 12 */
	QPSK_1_2_CTC,		/* FEC CODE TYPE = 13 */
	RESERVED1,			/* FEC CODE TYPE = 14 */
	QPSK_3_4_CTC,		/* FEC CODE TYPE = 15 */
	QAM16_1_2_CTC,		/* FEC CODE TYPE = 16 */
	QAM16_3_4_CTC,		/* FEC CODE TYPE = 17 */
	QAM64_1_2_CTC,		/* FEC CODE TYPE = 18 */
	QAM64_2_3_CTC,		/* FEC CODE TYPE = 19 */
	QAM64_3_4_CTC,		/* FEC CODE TYPE = 20 */
	QAM64_5_6_CTC,		/* FEC CODE TYPE = 21 */
	QPSK_1_2_ZTCC,		/* FEC CODE TYPE = 22 */
	QPSK_3_4_ZTCC,		/* FEC CODE TYPE = 23 */
	QAM16_1_2_ZTCC,		/* FEC CODE TYPE = 24 */
	QAM16_3_4_ZTCC,		/* FEC CODE TYPE = 25 */
	QAM64_1_2_ZTCC,		/* FEC CODE TYPE = 26 */
	QAM64_2_3_ZTCC,		/* FEC CODE TYPE = 27 */
	QAM64_3_4_ZTCC,		/* FEC CODE TYPE = 28 */
	RESERVED2,			/* FEC CODE TYPE = 29 */
	RESERVED3,			/* FEC CODE TYPE = 30 */
	RESERVED4,			/* FEC CODE TYPE = 31 */
	RESERVED5,			/* FEC CODE TYPE = 32 */
	RESERVED6,			/* FEC CODE TYPE = 33 */
	RESERVED7,			/* FEC CODE TYPE = 34 */
	RESERVED8,			/* FEC CODE TYPE = 35 */
	RESERVED9,			/* FEC CODE TYPE = 36 */
	RESERVED10,			/* FEC CODE TYPE = 37 */
	RESERVED11,			/* FEC CODE TYPE = 38 */
	RESERVED12,			/* FEC CODE TYPE = 39 */
	RESERVED13,			/* FEC CODE TYPE = 40 */
	RESERVED14,			/* FEC CODE TYPE = 41 */
	RESERVED15,			/* FEC CODE TYPE = 42 */
	RESERVED16,			/* FEC CODE TYPE = 43 */
	QPSK_1_2_OPCC,		/* FEC CODE TYPE = 44 */
	QPSK_3_4_OPCC,		/* FEC CODE TYPE = 45 */
	QAM16_1_2_OPCC,		/* FEC CODE TYPE = 46 */
	QAM16_3_4_OPCC,		/* FEC CODE TYPE = 47 */
	QAM64_2_3_OPCC,		/* FEC CODE TYPE = 48 */
	QAM64_3_4_OPCC		/* FEC CODE TYPE = 49 */
}FEC_CODE_TYPE;
	
typedef enum {
	IDEAL,
	AWGN,
	AWGN_DIF,
	VA,
	VB,
	SUI1,
	SUI2,
	SUI3,
	SUI4,
	SUI5,
	SUI6,
    CHN_NMB
} CHANNEL_TYPE;


/************************************************************************/
/* Add by wkx, 2007/2/13                                                */
/************************************************************************/
//<FrameDuration>
enum FRM_DURATION {
    FD_000, //0
    FD_020, //1, 2ms
    FD_025, //2, 2.5ms
    FD_040,
    FD_050,
    FD_080,
    FD_100,
    FD_125,
    FD_200
};

typedef enum 
{
    PERF_SIM,
    DAT_GEN,
    SIM_TYPE_NMB
} SIM_TYPE;

typedef enum 
{
    PHY,
    PDU,
    SETUP_MODE_NMB
} SETUP_MODE;

typedef enum 
{
    DL,
    UL,
    DUL,
} OUTPUT_MODE;

// Permutation Type: PUSC|FUSC|AMC|OPUSC  
typedef enum 
{
    PUSC,
    FUSC,
    AMC,
    OPUSC,
    PERMU_NMB
} PERMU_TYPE;


typedef enum 
{
    TDD,
    FDD,
} DUPLEX_MODE;


typedef struct  
{
    SIM_TYPE        sim_type;			// Simulation Type: PERF_SIM|DAT_GEN; 
    UINT32          times;              // Running times for PERM_SIM
    SETUP_MODE      setup_mode;         // PHY, PDU
    UINT16          max_pdu_leng;       // unit: byte, default: 1500 bytes
    UINT16          crc_stat;           // 0-No CRC, 1- CRC
    UINT16          chn_type_nmb;
    UINT16          chn_type[CHN_NMB];
    UINT16          chn_type_cur;
    UINT16          snr_nmb;
    float           snr[12];
    float           snr_cur;
    UINT16          data_width_nmb;
    UINT16          data_width[6];
    UINT16          data_width_cur;
    float           frm_duration;
    UINT16          fft_size;
    UINT16          over_samp_ratio;
    float           bw;
    float           dl_ratio;       // mod by wkx, 20070419
    OUTPUT_MODE     output_mode;
    DUPLEX_MODE     duplex_mode;
    float           freq_offset;
    UINT16          dl_dat_type;    //hex when < 15
    UINT16          ul_dat_type;    //hex when < 15
    
    
} SYS_CFG;


/************************************************************************/
/*                    Extern function declaration                       */
/************************************************************************/
int get_cfg_from_file(
                      FILE *fp, 
                      SYS_CFG *sys_cfg, 
                      DL_SUBFRAME_STRUCT *dl_subframe);

int frame_setting_check (DL_SUBFRAME_STRUCT *dl_subframe);

int frame_check(
	DL_SUBFRAME_STRUCT      *p_dl_subframe_tx,
	DL_SUBFRAME_STRUCT      *p_dl_subframe_rx
	);

void exit_phy(INT32 exit_code);

#endif


⌨️ 快捷键说明

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