📄 wib_phy_def.h
字号:
}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 + -