debug modulation
This commit is contained in:
@@ -1,12 +1,11 @@
|
|||||||
|
|
||||||
#include "PHY/defs_gNB.h"
|
#include "PHY/defs_gNB.h"
|
||||||
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
|
#include "PHY/NR_TRANSPORT/nr_transport_proto.h"
|
||||||
#include "PHY/LTE_REFSIG/lte_refsig.h"
|
#include "PHY/LTE_REFSIG/lte_refsig.h"
|
||||||
#include "PHY/NR_REFSIG/nr_refsig.h"
|
#include "PHY/NR_REFSIG/nr_refsig.h"
|
||||||
#include "PHY/sse_intrin.h"
|
#include "PHY/sse_intrin.h"
|
||||||
|
|
||||||
//#define DEBUG_PRS
|
#define DEBUG_PRS_MOD
|
||||||
#define DEBUG_PRS_MAP
|
//#define DEBUG_PRS_MAP
|
||||||
|
|
||||||
extern short nr_qpsk_mod_table[8];
|
extern short nr_qpsk_mod_table[8];
|
||||||
|
|
||||||
@@ -30,7 +29,6 @@ int nr_generate_prs(uint32_t **nr_gold_prs,
|
|||||||
int16_t mod_prs[NR_MAX_PRS_LENGTH<<1];
|
int16_t mod_prs[NR_MAX_PRS_LENGTH<<1];
|
||||||
uint8_t idx=prs_data->NPRSID;
|
uint8_t idx=prs_data->NPRSID;
|
||||||
|
|
||||||
// QPSK modulation
|
|
||||||
|
|
||||||
// PRS resource mapping with combsize=k which means PRS symbols exist in every k-th subcarrier in frequency domain
|
// PRS resource mapping with combsize=k which means PRS symbols exist in every k-th subcarrier in frequency domain
|
||||||
// According to ts138.211 sec.7.4.1.7.2
|
// According to ts138.211 sec.7.4.1.7.2
|
||||||
@@ -52,20 +50,21 @@ int nr_generate_prs(uint32_t **nr_gold_prs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
k = (prs_data->REOffset+k_prime) % prs_data->CombSize + frame_parms->ssb_start_subcarrier;
|
k = (prs_data->REOffset+k_prime) % prs_data->CombSize + frame_parms->ssb_start_subcarrier;
|
||||||
for (int m = 0; m < 12/prs_data->CombSize * prs_data->NumRB; m++) {
|
|
||||||
|
|
||||||
#ifdef DEBUG_PRS_MAP
|
// QPSK modulation
|
||||||
printf("m %d at k %d of l %d\n", m, k, l);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
for (int m = 0; m < (12/prs_data->CombSize) * prs_data->NumRB; m++) {
|
||||||
idx = nr_gold_prs[l][m];
|
idx = nr_gold_prs[l][m];
|
||||||
mod_prs[m<<1] = nr_qpsk_mod_table[idx<<1];
|
mod_prs[m<<1] = nr_qpsk_mod_table[idx<<1];
|
||||||
mod_prs[(m<<1)+1] = nr_qpsk_mod_table[(idx<<1) + 1];
|
mod_prs[(m<<1)+1] = nr_qpsk_mod_table[(idx<<1) + 1];
|
||||||
|
|
||||||
#ifdef DEBUG_PRS
|
#ifdef DEBUG_PRS_MOD
|
||||||
printf("m %d idx %d gold seq %d mod_prs %d %d\n", m, idx, nr_gold_prs[l][m], mod_prs[(idx<<1)], mod_prs[(idx<<1)+1]);
|
printf("m %d idx %d gold seq %d mod_prs %d %d\n", m, idx, nr_gold_prs[l][m], mod_prs[(idx<<1)], mod_prs[(idx<<1)+1]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef DEBUG_PRS_MAP
|
||||||
|
printf("m %d at k %d of l %d\n", m, k, l);
|
||||||
|
#endif
|
||||||
|
|
||||||
((int16_t *)txdataF)[(l*frame_parms->ofdm_symbol_size + k)<<1] = (amp * mod_prs[m<<1]) >> 15;
|
((int16_t *)txdataF)[(l*frame_parms->ofdm_symbol_size + k)<<1] = (amp * mod_prs[m<<1]) >> 15;
|
||||||
((int16_t *)txdataF)[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1] = (amp * mod_prs[(m<<1) + 1]) >> 15;
|
((int16_t *)txdataF)[((l*frame_parms->ofdm_symbol_size + k)<<1) + 1] = (amp * mod_prs[(m<<1) + 1]) >> 15;
|
||||||
@@ -80,13 +79,8 @@ int nr_generate_prs(uint32_t **nr_gold_prs,
|
|||||||
|
|
||||||
if (k >= frame_parms->ofdm_symbol_size)
|
if (k >= frame_parms->ofdm_symbol_size)
|
||||||
k-=frame_parms->ofdm_symbol_size;
|
k-=frame_parms->ofdm_symbol_size;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -104,8 +104,19 @@ void nr_common_signal_procedures (PHY_VARS_gNB *gNB,int frame,int slot,nfapi_nr_
|
|||||||
nr_generate_pbch_dmrs(gNB->nr_gold_pbch_dmrs[0][ssb_index&7],&txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
|
nr_generate_pbch_dmrs(gNB->nr_gold_pbch_dmrs[0][ssb_index&7],&txdataF[0][txdataF_offset], AMP, ssb_start_symbol, cfg, fp);
|
||||||
|
|
||||||
prs_data_t prs_data;
|
prs_data_t prs_data;
|
||||||
prs_data.PRSResourceSetPeriod[0]=0;
|
prs_data.PRSResourceSetPeriod[0]=40; // PRS resource slot period
|
||||||
prs_data.PRSResourceSetPeriod[1]=0;
|
prs_data.PRSResourceSetPeriod[1]=0; // resource slot offset
|
||||||
|
prs_data.SymbolStart=5;
|
||||||
|
prs_data.NumPRSSymbols=6;
|
||||||
|
prs_data.NumRB=106;
|
||||||
|
prs_data.RBOffset=0;
|
||||||
|
prs_data.CombSize=6;
|
||||||
|
prs_data.REOffset=0;
|
||||||
|
prs_data.PRSResourceOffset=0;
|
||||||
|
prs_data.PRSResourceRepetition=1;
|
||||||
|
prs_data.PRSResourceTimeGap=1;
|
||||||
|
prs_data.NPRSID=0;
|
||||||
|
printf(" before Combsize %d \n", prs_data.CombSize);
|
||||||
// tbc
|
// tbc
|
||||||
|
|
||||||
nr_generate_prs(gNB->nr_gold_prs[slot],&txdataF[0][txdataF_offset], AMP, &prs_data, cfg, fp);
|
nr_generate_prs(gNB->nr_gold_prs[slot],&txdataF[0][txdataF_offset], AMP, &prs_data, cfg, fp);
|
||||||
@@ -238,11 +249,13 @@ void phy_procedures_gNB_TX(PHY_VARS_gNB *gNB,
|
|||||||
prs_data.PRSResourceRepetition=1;
|
prs_data.PRSResourceRepetition=1;
|
||||||
prs_data.PRSResourceTimeGap=1;
|
prs_data.PRSResourceTimeGap=1;
|
||||||
prs_data.NPRSID=0;
|
prs_data.NPRSID=0;
|
||||||
|
printf(" before %p \n",&prs_data);
|
||||||
|
|
||||||
// tbc
|
// tbc
|
||||||
|
|
||||||
nr_generate_prs(gNB->nr_gold_prs[slot],&txdataF[0][txdataF_offset], AMP, &prs_data, cfg, fp);
|
nr_generate_prs(gNB->nr_gold_prs[slot],&txdataF[0][txdataF_offset], AMP, &prs_data, cfg, fp);
|
||||||
|
|
||||||
|
|
||||||
if (do_meas==1) stop_meas(&gNB->phy_proc_tx);
|
if (do_meas==1) stop_meas(&gNB->phy_proc_tx);
|
||||||
|
|
||||||
if ((frame&127) == 0) dump_pdsch_stats(gNB);
|
if ((frame&127) == 0) dump_pdsch_stats(gNB);
|
||||||
|
|||||||
Reference in New Issue
Block a user