Introducing different shifts for channel compensation log2_maxh0 and log2_maxh1 as well as mcs-dependent offset coefficients interf_unaw_shift_mcs
for I-UA receiver and interference-free case TM4. Coeeficients for 64 QAM must be revised.
This commit is contained in:
@@ -61,7 +61,12 @@ int avg[4];
|
|||||||
|
|
||||||
// [MCS][i_mod (0,1,2) = (2,4,6)]
|
// [MCS][i_mod (0,1,2) = (2,4,6)]
|
||||||
unsigned char offset_mumimo_llr_drange_fix=0;
|
unsigned char offset_mumimo_llr_drange_fix=0;
|
||||||
uint8_t intefr_unaw_shift;
|
uint8_t intefr_unaw_shift0;
|
||||||
|
uint8_t intefr_unaw_shift1;
|
||||||
|
//inferference-free case
|
||||||
|
unsigned char interf_unaw_shift_mcs[29]={5, 3, 4, 3, 3, 2, 1, 1, 2, 0, 1, 1, 1, 1, 0, 0,
|
||||||
|
1, 1, 1, 1, 0, 2, 1, 0, 1, 0, 1, 0, 0} ;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//original values from sebastion + same hand tuning
|
//original values from sebastion + same hand tuning
|
||||||
unsigned char offset_mumimo_llr_drange[29][3]={{8,8,8},{7,7,7},{7,7,7},{7,7,7},{6,6,6},{6,6,6},{6,6,6},{5,5,5},{4,4,4},{1,2,4}, // QPSK
|
unsigned char offset_mumimo_llr_drange[29][3]={{8,8,8},{7,7,7},{7,7,7},{7,7,7},{6,6,6},{6,6,6},{6,6,6},{5,5,5},{4,4,4},{1,2,4}, // QPSK
|
||||||
@@ -434,7 +439,11 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
|
|||||||
lte_ue_pdsch_vars[eNB_id]->log2_maxh = log2_approx(avg[0]) - 13 + offset_mumimo_llr_drange[dlsch0_harq->mcs][(get_Qm(dlsch1_harq->mcs)>>1)-1];
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh = log2_approx(avg[0]) - 13 + offset_mumimo_llr_drange[dlsch0_harq->mcs][(get_Qm(dlsch1_harq->mcs)>>1)-1];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
lte_ue_pdsch_vars[eNB_id]->log2_maxh = (log2_approx(avg[0])/2)+intefr_unaw_shift;
|
// to avoid tails in SNR/BLER curves
|
||||||
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh0 = (log2_approx(avg[0])/2)+interf_unaw_shift_mcs[dlsch0_harq->mcs];
|
||||||
|
//printf("I-UA shift layer1 = %d\n",interf_unaw_shift_mcs[dlsch0_harq->mcs]);
|
||||||
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh1 = (log2_approx(avg[0])/2)+interf_unaw_shift_mcs[dlsch1_harq->mcs];
|
||||||
|
//printf("I-UA shift layer2 = %d\n",interf_unaw_shift_mcs[dlsch1_harq->mcs] );
|
||||||
}
|
}
|
||||||
|
|
||||||
dlsch_channel_compensation_TM34(frame_parms,
|
dlsch_channel_compensation_TM34(frame_parms,
|
||||||
@@ -448,7 +457,8 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
|
|||||||
dlsch0_harq->round,
|
dlsch0_harq->round,
|
||||||
dlsch0_harq->mimo_mode,
|
dlsch0_harq->mimo_mode,
|
||||||
nb_rb,
|
nb_rb,
|
||||||
lte_ue_pdsch_vars[eNB_id]->log2_maxh);
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh0,
|
||||||
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh1);
|
||||||
/*
|
/*
|
||||||
if (symbol == 5) {
|
if (symbol == 5) {
|
||||||
|
|
||||||
@@ -467,7 +477,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
|
|||||||
lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext,
|
lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext,
|
||||||
&(lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext[2]),
|
&(lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext[2]),
|
||||||
lte_ue_pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round],
|
lte_ue_pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round],
|
||||||
lte_ue_pdsch_vars[eNB_id]->log2_maxh);
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh0);
|
||||||
|
|
||||||
//to be optimized (just take complex conjugate)
|
//to be optimized (just take complex conjugate)
|
||||||
|
|
||||||
@@ -477,7 +487,7 @@ int rx_pdsch(PHY_VARS_UE *phy_vars_ue,
|
|||||||
&(lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext[2]),
|
&(lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext[2]),
|
||||||
lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext,
|
lte_ue_pdsch_vars[eNB_id]->dl_ch_estimates_ext,
|
||||||
lte_ue_pdsch_vars[eNB_id]->dl_ch_rho2_ext,
|
lte_ue_pdsch_vars[eNB_id]->dl_ch_rho2_ext,
|
||||||
lte_ue_pdsch_vars[eNB_id]->log2_maxh);
|
lte_ue_pdsch_vars[eNB_id]->log2_maxh1);
|
||||||
//printf("TM3 log2_maxh : %d\n",lte_ue_pdsch_vars[eNB_id]->log2_maxh);
|
//printf("TM3 log2_maxh : %d\n",lte_ue_pdsch_vars[eNB_id]->log2_maxh);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1814,7 +1824,8 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
int round,
|
int round,
|
||||||
MIMO_mode_t mimo_mode,
|
MIMO_mode_t mimo_mode,
|
||||||
unsigned short nb_rb,
|
unsigned short nb_rb,
|
||||||
unsigned char output_shift) {
|
unsigned char output_shift0,
|
||||||
|
unsigned char output_shift1) {
|
||||||
|
|
||||||
#if defined(__x86_64__) || defined(__i386__)
|
#if defined(__x86_64__) || defined(__i386__)
|
||||||
|
|
||||||
@@ -1924,10 +1935,10 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
// get channel amplitude if not QPSK
|
// get channel amplitude if not QPSK
|
||||||
|
|
||||||
mmtmpD0 = _mm_madd_epi16(dl_ch0_128[0],dl_ch0_128[0]);
|
mmtmpD0 = _mm_madd_epi16(dl_ch0_128[0],dl_ch0_128[0]);
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift0);
|
||||||
|
|
||||||
mmtmpD1 = _mm_madd_epi16(dl_ch0_128[1],dl_ch0_128[1]);
|
mmtmpD1 = _mm_madd_epi16(dl_ch0_128[1],dl_ch0_128[1]);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift0);
|
||||||
|
|
||||||
mmtmpD0 = _mm_packs_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD0 = _mm_packs_epi32(mmtmpD0,mmtmpD1);
|
||||||
|
|
||||||
@@ -1946,7 +1957,7 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
if (pilots==0) {
|
if (pilots==0) {
|
||||||
mmtmpD0 = _mm_madd_epi16(dl_ch0_128[2],dl_ch0_128[2]);
|
mmtmpD0 = _mm_madd_epi16(dl_ch0_128[2],dl_ch0_128[2]);
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift0);
|
||||||
|
|
||||||
mmtmpD1 = _mm_packs_epi32(mmtmpD0,mmtmpD0);
|
mmtmpD1 = _mm_packs_epi32(mmtmpD0,mmtmpD0);
|
||||||
|
|
||||||
@@ -1975,10 +1986,10 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
// get channel amplitude if not QPSK
|
// get channel amplitude if not QPSK
|
||||||
|
|
||||||
mmtmpD0 = _mm_madd_epi16(dl_ch1_128[0],dl_ch1_128[0]);
|
mmtmpD0 = _mm_madd_epi16(dl_ch1_128[0],dl_ch1_128[0]);
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift1);
|
||||||
|
|
||||||
mmtmpD1 = _mm_madd_epi16(dl_ch1_128[1],dl_ch1_128[1]);
|
mmtmpD1 = _mm_madd_epi16(dl_ch1_128[1],dl_ch1_128[1]);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift1);
|
||||||
|
|
||||||
mmtmpD0 = _mm_packs_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD0 = _mm_packs_epi32(mmtmpD0,mmtmpD1);
|
||||||
|
|
||||||
@@ -1996,7 +2007,7 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
|
|
||||||
if (pilots==0) {
|
if (pilots==0) {
|
||||||
mmtmpD0 = _mm_madd_epi16(dl_ch1_128[2],dl_ch1_128[2]);
|
mmtmpD0 = _mm_madd_epi16(dl_ch1_128[2],dl_ch1_128[2]);
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift1);
|
||||||
|
|
||||||
mmtmpD1 = _mm_packs_epi32(mmtmpD0,mmtmpD0);
|
mmtmpD1 = _mm_packs_epi32(mmtmpD0,mmtmpD0);
|
||||||
|
|
||||||
@@ -2033,10 +2044,10 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[0]);
|
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[0]);
|
||||||
// print_ints("im",&mmtmpD1);
|
// print_ints("im",&mmtmpD1);
|
||||||
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift0);
|
||||||
// printf("Shift: %d\n",output_shift);
|
// printf("Shift: %d\n",output_shift);
|
||||||
// print_ints("re(shift)",&mmtmpD0);
|
// print_ints("re(shift)",&mmtmpD0);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift0);
|
||||||
// print_ints("im(shift)",&mmtmpD1);
|
// print_ints("im(shift)",&mmtmpD1);
|
||||||
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
||||||
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
||||||
@@ -2056,8 +2067,8 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
||||||
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[1]);
|
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[1]);
|
||||||
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift0);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift0);
|
||||||
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
||||||
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
||||||
|
|
||||||
@@ -2075,8 +2086,8 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
||||||
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[2]);
|
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[2]);
|
||||||
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift0);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift0);
|
||||||
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
||||||
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
||||||
|
|
||||||
@@ -2100,9 +2111,9 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
// print_ints("im",&mmtmpD1);
|
// print_ints("im",&mmtmpD1);
|
||||||
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[0]);
|
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[0]);
|
||||||
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift1);
|
||||||
// print_ints("re(shift)",&mmtmpD0);
|
// print_ints("re(shift)",&mmtmpD0);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift1);
|
||||||
// print_ints("im(shift)",&mmtmpD1);
|
// print_ints("im(shift)",&mmtmpD1);
|
||||||
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
||||||
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
||||||
@@ -2121,8 +2132,8 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
||||||
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[1]);
|
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[1]);
|
||||||
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift1);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift1);
|
||||||
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
||||||
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
||||||
|
|
||||||
@@ -2140,8 +2151,8 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
mmtmpD1 = _mm_sign_epi16(mmtmpD1,*(__m128i*)conjugate);
|
||||||
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[2]);
|
mmtmpD1 = _mm_madd_epi16(mmtmpD1,rxdataF128[2]);
|
||||||
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
// mmtmpD1 contains imag part of 4 consecutive outputs (32-bit)
|
||||||
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift);
|
mmtmpD0 = _mm_srai_epi32(mmtmpD0,output_shift1);
|
||||||
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift);
|
mmtmpD1 = _mm_srai_epi32(mmtmpD1,output_shift1);
|
||||||
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD2 = _mm_unpacklo_epi32(mmtmpD0,mmtmpD1);
|
||||||
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
mmtmpD3 = _mm_unpackhi_epi32(mmtmpD0,mmtmpD1);
|
||||||
|
|
||||||
|
|||||||
@@ -979,7 +979,8 @@ void dlsch_channel_compensation_TM34(LTE_DL_FRAME_PARMS *frame_parms,
|
|||||||
int round,
|
int round,
|
||||||
MIMO_mode_t mimo_mode,
|
MIMO_mode_t mimo_mode,
|
||||||
unsigned short nb_rb,
|
unsigned short nb_rb,
|
||||||
unsigned char output_shift);
|
unsigned char output_shift0,
|
||||||
|
unsigned char output_shift1);
|
||||||
|
|
||||||
|
|
||||||
/** \brief This function computes the average channel level over all allocated RBs and antennas (TX/RX) in order to compute output shift for compensated signal
|
/** \brief This function computes the average channel level over all allocated RBs and antennas (TX/RX) in order to compute output shift for compensated signal
|
||||||
|
|||||||
@@ -841,6 +841,10 @@ typedef struct {
|
|||||||
int16_t *llr[2];
|
int16_t *llr[2];
|
||||||
/// \f$\log_2(\max|H_i|^2)\f$
|
/// \f$\log_2(\max|H_i|^2)\f$
|
||||||
int16_t log2_maxh;
|
int16_t log2_maxh;
|
||||||
|
/// \f$\log_2(\max|H_i|^2)\f$ //this is for TM3-4 layer1 channel compensation
|
||||||
|
int16_t log2_maxh0;
|
||||||
|
/// \f$\log_2(\max|H_i|^2)\f$ //this is for TM3-4 layer2 channel commpensation
|
||||||
|
int16_t log2_maxh1;
|
||||||
/// \brief LLR shifts for subband scaling.
|
/// \brief LLR shifts for subband scaling.
|
||||||
/// - first index: ? [0..168*N_RB_DL[
|
/// - first index: ? [0..168*N_RB_DL[
|
||||||
uint8_t *llr_shifts;
|
uint8_t *llr_shifts;
|
||||||
|
|||||||
@@ -59,7 +59,8 @@
|
|||||||
|
|
||||||
extern unsigned int dlsch_tbs25[27][25],TBStable[27][110];
|
extern unsigned int dlsch_tbs25[27][25],TBStable[27][110];
|
||||||
extern unsigned char offset_mumimo_llr_drange_fix;
|
extern unsigned char offset_mumimo_llr_drange_fix;
|
||||||
extern uint8_t intefr_unaw_shift;
|
extern uint8_t interf_unaw_shift0=0;
|
||||||
|
extern uint8_t interf_unaw_shift1=0;
|
||||||
#ifdef XFORMS
|
#ifdef XFORMS
|
||||||
#include "PHY/TOOLS/lte_phy_scope.h"
|
#include "PHY/TOOLS/lte_phy_scope.h"
|
||||||
#endif
|
#endif
|
||||||
@@ -384,7 +385,7 @@ int main(int argc, char **argv)
|
|||||||
num_layers = 1;
|
num_layers = 1;
|
||||||
perfect_ce = 0;
|
perfect_ce = 0;
|
||||||
|
|
||||||
while ((c = getopt (argc, argv, "ahdpZDe:m:n:o:s:f:t:c:g:r:F:x:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:PLl:YXJ:")) != -1) {
|
while ((c = getopt (argc, argv, "ahdpZDe:m:n:o:s:f:t:c:g:r:F:x:y:z:AM:N:I:i:O:R:S:C:T:b:u:v:w:B:PLl:YXV:W:")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'a':
|
case 'a':
|
||||||
awgn_flag = 1;
|
awgn_flag = 1;
|
||||||
@@ -631,9 +632,12 @@ int main(int argc, char **argv)
|
|||||||
case 'Y':
|
case 'Y':
|
||||||
perfect_ce=1;
|
perfect_ce=1;
|
||||||
break;
|
break;
|
||||||
case 'J':
|
case 'V':
|
||||||
intefr_unaw_shift=atoi(optarg);
|
interf_unaw_shift0=atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
case 'W':
|
||||||
|
interf_unaw_shift1=atoi(optarg);
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
default:
|
default:
|
||||||
printf("%s -h(elp) -a(wgn on) -d(ci decoding on) -p(extended prefix on) -m mcs1 -M mcs2 -n n_frames -s snr0 -x transmission mode (1,2,3,5,6) -y TXant -z RXant -I trch_file\n",argv[0]);
|
printf("%s -h(elp) -a(wgn on) -d(ci decoding on) -p(extended prefix on) -m mcs1 -M mcs2 -n n_frames -s snr0 -x transmission mode (1,2,3,5,6) -y TXant -z RXant -I trch_file\n",argv[0]);
|
||||||
@@ -748,8 +752,8 @@ int main(int argc, char **argv)
|
|||||||
printf("n_frames = %d\n",n_frames);
|
printf("n_frames = %d\n",n_frames);
|
||||||
printf("Transmission mode %d with %dx%d antenna configuration, Extended Prefix %d\n",transmission_mode,n_tx,n_rx,extended_prefix_flag);
|
printf("Transmission mode %d with %dx%d antenna configuration, Extended Prefix %d\n",transmission_mode,n_tx,n_rx,extended_prefix_flag);
|
||||||
printf("Using receiver type %d\n", rx_type);
|
printf("Using receiver type %d\n", rx_type);
|
||||||
printf("Using I_UA rec shift %d\n", intefr_unaw_shift);
|
printf("Using I_UA rec shift layer 1 %d\n", interf_unaw_shift0);
|
||||||
|
printf("Using I_UA rec shift layer 2 %d\n", interf_unaw_shift1);
|
||||||
snr1 = snr0+snr_int;
|
snr1 = snr0+snr_int;
|
||||||
printf("SNR0 %f, SNR1 %f\n",snr0,snr1);
|
printf("SNR0 %f, SNR1 %f\n",snr0,snr1);
|
||||||
|
|
||||||
@@ -781,14 +785,14 @@ int main(int argc, char **argv)
|
|||||||
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_u%d_imod%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1,mcs_i,rx_type,i_mod);
|
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_u%d_imod%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1,mcs_i,rx_type,i_mod);
|
||||||
else if (abstx == 1)
|
else if (abstx == 1)
|
||||||
if (perfect_ce==1)
|
if (perfect_ce==1)
|
||||||
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_ab_perf_ce_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2, intefr_unaw_shift );
|
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_ab_perf_ce_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2, interf_unaw_shift0 );
|
||||||
else
|
else
|
||||||
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_ab_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2, intefr_unaw_shift);
|
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_ab_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2, interf_unaw_shift0);
|
||||||
else //abstx=0
|
else //abstx=0
|
||||||
if (perfect_ce==1)
|
if (perfect_ce==1)
|
||||||
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_perf_ce_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2, intefr_unaw_shift);
|
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_perf_ce_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2, interf_unaw_shift0);
|
||||||
else
|
else
|
||||||
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2,intefr_unaw_shift);
|
sprintf(bler_fname,"bler_tx%d_rec%d_chan%d_nrx%d_mcs%d_mcsi%d_sh%d.csv",transmission_mode,rx_type,channel_model,n_rx,mcs1, mcs2,interf_unaw_shift0);
|
||||||
|
|
||||||
bler_fd = fopen(bler_fname,"w");
|
bler_fd = fopen(bler_fname,"w");
|
||||||
if (bler_fd==NULL) {
|
if (bler_fd==NULL) {
|
||||||
@@ -824,9 +828,9 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
else
|
else
|
||||||
if (perfect_ce==1)
|
if (perfect_ce==1)
|
||||||
sprintf(csv_fname,"dataout_tx%d_rec%d_mcs%d_mcsi%d_chan%d_ns%d_R%d_ab_perf_ce_sh%d.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, intefr_unaw_shift);
|
sprintf(csv_fname,"dataout_tx%d_rec%d_mcs%d_mcsi%d_chan%d_ns%d_R%d_ab_perf_ce_sh%d.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, interf_unaw_shift0);
|
||||||
else
|
else
|
||||||
sprintf(csv_fname,"dataout_tx%d_rec%d_mcs%d_mcsi%d_chan%d_ns%d_R%d_ab_sh%d.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, intefr_unaw_shift);
|
sprintf(csv_fname,"dataout_tx%d_rec%d_mcs%d_mcsi%d_chan%d_ns%d_R%d_ab_sh%d.m",transmission_mode,rx_type,mcs1,mcs2,channel_model,n_frames,num_rounds, interf_unaw_shift0);
|
||||||
|
|
||||||
// sprintf(csv_fname,"dataout_tx%d_mcs%d_mcs_interf%d_chan%d_nsimus%d_R%d_abstr_old.m",transmission_mode,mcs1,mcs2,channel_model,n_frames,num_rounds);
|
// sprintf(csv_fname,"dataout_tx%d_mcs%d_mcs_interf%d_chan%d_nsimus%d_R%d_abstr_old.m",transmission_mode,mcs1,mcs2,channel_model,n_frames,num_rounds);
|
||||||
csv_fd = fopen(csv_fname,"w");
|
csv_fd = fopen(csv_fname,"w");
|
||||||
|
|||||||
Reference in New Issue
Block a user