slot_fep for ssb done once before sss and pbch channel estimation moved out of slot_fep
This commit is contained in:
@@ -363,7 +363,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB,int N_RB_DL,int N_RB_UL,int mu,
|
|||||||
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
|
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
|
||||||
nfapi_nr_config_request_t *gNB_config = &gNB->gNB_config;
|
nfapi_nr_config_request_t *gNB_config = &gNB->gNB_config;
|
||||||
//overwrite for new NR parameters
|
//overwrite for new NR parameters
|
||||||
gNB_config->nfapi_config.rf_bands.rf_band[0] = 78;
|
gNB_config->nfapi_config.rf_bands.rf_band[0] = 5;
|
||||||
gNB_config->nfapi_config.nrarfcn.value = 620000;
|
gNB_config->nfapi_config.nrarfcn.value = 620000;
|
||||||
gNB_config->subframe_config.numerology_index_mu.value = mu;
|
gNB_config->subframe_config.numerology_index_mu.value = mu;
|
||||||
gNB_config->subframe_config.duplex_mode.value = TDD;
|
gNB_config->subframe_config.duplex_mode.value = TDD;
|
||||||
|
|||||||
@@ -53,8 +53,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *phy_vars_ue,
|
|||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
int sample_offset,
|
int sample_offset,
|
||||||
int no_prefix,
|
int no_prefix,
|
||||||
int reset_freq_est,
|
NR_CHANNEL_EST_t channel);
|
||||||
NR_CHANNEL_EST_t channel);
|
|
||||||
|
|
||||||
int slot_fep_mbsfn(PHY_VARS_UE *phy_vars_ue,
|
int slot_fep_mbsfn(PHY_VARS_UE *phy_vars_ue,
|
||||||
unsigned char l,
|
unsigned char l,
|
||||||
|
|||||||
@@ -39,12 +39,10 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
int sample_offset,
|
int sample_offset,
|
||||||
int no_prefix,
|
int no_prefix,
|
||||||
int reset_freq_est,
|
|
||||||
NR_CHANNEL_EST_t channel)
|
NR_CHANNEL_EST_t channel)
|
||||||
{
|
{
|
||||||
NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
||||||
NR_UE_COMMON *common_vars = &ue->common_vars;
|
NR_UE_COMMON *common_vars = &ue->common_vars;
|
||||||
uint8_t eNB_id = 0;//ue_common_vars->eNb_id;
|
|
||||||
unsigned char aa;
|
unsigned char aa;
|
||||||
unsigned char symbol = l;//+((7-frame_parms->Ncp)*(Ns&1)); ///symbol within sub-frame
|
unsigned char symbol = l;//+((7-frame_parms->Ncp)*(Ns&1)); ///symbol within sub-frame
|
||||||
unsigned int nb_prefix_samples = (no_prefix ? 0 : frame_parms->nb_prefix_samples);
|
unsigned int nb_prefix_samples = (no_prefix ? 0 : frame_parms->nb_prefix_samples);
|
||||||
@@ -204,56 +202,17 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
switch(channel){
|
switch(channel){
|
||||||
case NR_PBCH_EST:
|
case NR_PBCH_EST:
|
||||||
|
|
||||||
#ifdef DEBUG_FEP
|
|
||||||
printf("Channel estimation eNB %d, slot %d, symbol %d\n",eNB_id,Ns,l);
|
|
||||||
#endif
|
|
||||||
#if UE_TIMING_TRACE
|
|
||||||
start_meas(&ue->dlsch_channel_estimation_stats);
|
|
||||||
#endif
|
|
||||||
nr_pbch_channel_estimation(ue,eNB_id,0,
|
|
||||||
Ns,
|
|
||||||
l,
|
|
||||||
symbol);
|
|
||||||
//}
|
|
||||||
#if UE_TIMING_TRACE
|
|
||||||
stop_meas(&ue->dlsch_channel_estimation_stats);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// do frequency offset estimation here!
|
|
||||||
// use channel estimates from current symbol (=ch_t) and last symbol (ch_{t-1})
|
|
||||||
#ifdef DEBUG_FEP
|
|
||||||
printf("Frequency offset estimation\n");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (l==(4-frame_parms->Ncp)) {
|
|
||||||
|
|
||||||
#if UE_TIMING_TRACE
|
|
||||||
start_meas(&ue->dlsch_freq_offset_estimation_stats);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*lte_est_freq_offset(common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[0],
|
|
||||||
frame_parms,
|
|
||||||
l,
|
|
||||||
&common_vars->freq_offset,
|
|
||||||
reset_freq_est);*/
|
|
||||||
#if UE_TIMING_TRACE
|
|
||||||
stop_meas(&ue->dlsch_freq_offset_estimation_stats);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NR_PDCCH_EST:
|
case NR_PDCCH_EST:
|
||||||
|
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
printf("PDCCH Channel estimation eNB %d, aatx %d, slot %d, symbol %d start_sc %d\n",eNB_id,aa,Ns,l,coreset_start_subcarrier);
|
printf("PDCCH Channel estimation aatx %d, slot %d, symbol %d start_sc %d\n",aa,Ns,l,coreset_start_subcarrier);
|
||||||
#endif
|
#endif
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->dlsch_channel_estimation_stats);
|
start_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
#endif
|
#endif
|
||||||
nr_pdcch_channel_estimation(ue,eNB_id,0,
|
nr_pdcch_channel_estimation(ue,0,
|
||||||
Ns,
|
Ns,
|
||||||
l,
|
l,
|
||||||
symbol,
|
symbol,
|
||||||
@@ -267,7 +226,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
case NR_PDSCH_EST:
|
case NR_PDSCH_EST:
|
||||||
#ifdef DEBUG_FEP
|
#ifdef DEBUG_FEP
|
||||||
printf("Channel estimation eNB %d, aatx %d, slot %d, symbol %d\n",eNB_id,aa,Ns,l);
|
printf("Channel estimation aatx %d, slot %d, symbol %d\n",aa,Ns,l);
|
||||||
#endif
|
#endif
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
start_meas(&ue->dlsch_channel_estimation_stats);
|
start_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
@@ -276,7 +235,7 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
ue->frame_parms.nushift = (p>>1)&1;;
|
ue->frame_parms.nushift = (p>>1)&1;;
|
||||||
|
|
||||||
if (symbol ==l0)
|
if (symbol ==l0)
|
||||||
nr_pdsch_channel_estimation(ue,eNB_id,0,
|
nr_pdsch_channel_estimation(ue,0,
|
||||||
Ns,
|
Ns,
|
||||||
p,
|
p,
|
||||||
l,
|
l,
|
||||||
|
|||||||
@@ -33,10 +33,8 @@
|
|||||||
|
|
||||||
|
|
||||||
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
uint8_t eNB_id,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned char l,
|
|
||||||
unsigned char symbol)
|
unsigned char symbol)
|
||||||
{
|
{
|
||||||
int pilot[200] __attribute__((aligned(16)));
|
int pilot[200] __attribute__((aligned(16)));
|
||||||
@@ -78,8 +76,8 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
k = nushift;
|
k = nushift;
|
||||||
|
|
||||||
#ifdef DEBUG_CH
|
#ifdef DEBUG_CH
|
||||||
printf("PBCH Channel Estimation : ThreadId %d, eNB_offset %d ch_offset %d, OFDM size %d, Ncp=%d, l=%d, Ns=%d, k=%d symbol %d\n",ue->current_thread_id[Ns>>1], eNB_offset,ch_offset,ue->frame_parms.ofdm_symbol_size,
|
printf("PBCH Channel Estimation : ThreadId %d, eNB_offset %d ch_offset %d, OFDM size %d, Ncp=%d, Ns=%d, k=%d symbol %d\n",ue->current_thread_id[Ns>>1], eNB_offset,ch_offset,ue->frame_parms.ofdm_symbol_size,
|
||||||
ue->frame_parms.Ncp,l,Ns,k, symbol);
|
ue->frame_parms.Ncp,Ns,k, symbol);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (k) {
|
switch (k) {
|
||||||
@@ -254,7 +252,6 @@ int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
uint8_t eNB_id,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned char l,
|
unsigned char l,
|
||||||
@@ -478,7 +475,6 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
uint8_t eNB_id,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned short p,
|
unsigned short p,
|
||||||
|
|||||||
@@ -43,7 +43,6 @@
|
|||||||
\param symbol symbol within frame
|
\param symbol symbol within frame
|
||||||
*/
|
*/
|
||||||
int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
uint8_t eNB_id,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned char l,
|
unsigned char l,
|
||||||
@@ -52,14 +51,11 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
|
|||||||
unsigned short nb_rb_coreset);
|
unsigned short nb_rb_coreset);
|
||||||
|
|
||||||
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pbch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
uint8_t eNB_id,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned char l,
|
|
||||||
unsigned char symbol);
|
unsigned char symbol);
|
||||||
|
|
||||||
int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
|
||||||
uint8_t eNB_id,
|
|
||||||
uint8_t eNB_offset,
|
uint8_t eNB_offset,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
unsigned short p,
|
unsigned short p,
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "PHY/INIT/phy_init.h"
|
#include "PHY/INIT/phy_init.h"
|
||||||
#include "PHY/MODULATION/modulation_UE.h"
|
#include "PHY/MODULATION/modulation_UE.h"
|
||||||
#include "nr_transport_proto_ue.h"
|
#include "nr_transport_proto_ue.h"
|
||||||
|
#include "PHY/NR_UE_ESTIMATION/nr_estimation.h"
|
||||||
//#include "SCHED/defs.h"
|
//#include "SCHED/defs.h"
|
||||||
//#include "SCHED/extern.h"
|
//#include "SCHED/extern.h"
|
||||||
|
|
||||||
@@ -68,32 +69,18 @@ int nr_pbch_detection(PHY_VARS_NR_UE *ue, runmode_t mode)
|
|||||||
frame_parms->nb_prefix_samples0 = frame_parms->nb_prefix_samples;
|
frame_parms->nb_prefix_samples0 = frame_parms->nb_prefix_samples;
|
||||||
|
|
||||||
|
|
||||||
//symbol 1
|
for(int i=1; i<4;i++) {
|
||||||
nr_slot_fep(ue,
|
|
||||||
1,
|
#if UE_TIMING_TRACE
|
||||||
0,
|
start_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
ue->ssb_offset,
|
#endif
|
||||||
0,
|
nr_pbch_channel_estimation(ue,0,
|
||||||
1,
|
0,
|
||||||
NR_PBCH_EST);
|
i);
|
||||||
|
#if UE_TIMING_TRACE
|
||||||
//symbol 2
|
stop_meas(&ue->dlsch_channel_estimation_stats);
|
||||||
nr_slot_fep(ue,
|
#endif
|
||||||
2,
|
}
|
||||||
0,
|
|
||||||
ue->ssb_offset,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
NR_PBCH_EST);
|
|
||||||
|
|
||||||
//symbol 3
|
|
||||||
nr_slot_fep(ue,
|
|
||||||
3,
|
|
||||||
0,
|
|
||||||
ue->ssb_offset,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
NR_PBCH_EST);
|
|
||||||
|
|
||||||
//put back nb_prefix_samples0
|
//put back nb_prefix_samples0
|
||||||
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
||||||
@@ -224,6 +211,15 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
|
|||||||
/* check that SSS/PBCH block is continuous inside the received buffer */
|
/* check that SSS/PBCH block is continuous inside the received buffer */
|
||||||
if (sync_pos < (NR_NUMBER_OF_SUBFRAMES_PER_FRAME*fp->samples_per_subframe - (NB_SYMBOLS_PBCH * fp->ofdm_symbol_size))) {
|
if (sync_pos < (NR_NUMBER_OF_SUBFRAMES_PER_FRAME*fp->samples_per_subframe - (NB_SYMBOLS_PBCH * fp->ofdm_symbol_size))) {
|
||||||
|
|
||||||
|
|
||||||
|
for(int i=0; i<4;i++)
|
||||||
|
nr_slot_fep(ue,
|
||||||
|
i,
|
||||||
|
0,
|
||||||
|
ue->ssb_offset,
|
||||||
|
0,
|
||||||
|
NR_PBCH_EST);
|
||||||
|
|
||||||
#ifdef DEBUG_INITIAL_SYNCH
|
#ifdef DEBUG_INITIAL_SYNCH
|
||||||
LOG_I(PHY,"Calling sss detection (normal CP)\n");
|
LOG_I(PHY,"Calling sss detection (normal CP)\n");
|
||||||
#endif
|
#endif
|
||||||
@@ -241,8 +237,8 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
|
|||||||
int nb_prefix_samples0 = fp->nb_prefix_samples0;
|
int nb_prefix_samples0 = fp->nb_prefix_samples0;
|
||||||
fp->nb_prefix_samples0 = fp->nb_prefix_samples;
|
fp->nb_prefix_samples0 = fp->nb_prefix_samples;
|
||||||
|
|
||||||
nr_slot_fep(ue,0, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST);
|
nr_slot_fep(ue,0, 0, ue->ssb_offset, 0, NR_PDCCH_EST);
|
||||||
nr_slot_fep(ue,1, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST);
|
nr_slot_fep(ue,1, 0, ue->ssb_offset, 0, NR_PDCCH_EST);
|
||||||
fp->nb_prefix_samples0 = nb_prefix_samples0;
|
fp->nb_prefix_samples0 = nb_prefix_samples0;
|
||||||
|
|
||||||
LOG_I(PHY,"[UE %d] AUTOTEST Cell Sync : frame = %d, rx_offset %d, freq_offset %d \n",
|
LOG_I(PHY,"[UE %d] AUTOTEST Cell Sync : frame = %d, rx_offset %d, freq_offset %d \n",
|
||||||
|
|||||||
@@ -898,6 +898,7 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fo_flag){
|
if (fo_flag){
|
||||||
|
|
||||||
// fractional frequency offser computation according to Cross-correlation Synchronization Algorithm Using PSS
|
// fractional frequency offser computation according to Cross-correlation Synchronization Algorithm Using PSS
|
||||||
// Shoujun Huang, Yongtao Su, Ying He and Shan Tang, "Joint time and frequency offset estimation in LTE downlink," 7th International Conference on Communications and Networking in China, 2012.
|
// Shoujun Huang, Yongtao Su, Ying He and Shan Tang, "Joint time and frequency offset estimation in LTE downlink," 7th International Conference on Communications and Networking in China, 2012.
|
||||||
|
|
||||||
@@ -922,7 +923,7 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
|
|||||||
|
|
||||||
// estimation of fractional frequency offset: angle[(result1)'*(result2)]/pi
|
// estimation of fractional frequency offset: angle[(result1)'*(result2)]/pi
|
||||||
ffo_est=atan2(re1*im2-re2*im1,re1*re2+im1*im2)/M_PI;
|
ffo_est=atan2(re1*im2-re2*im1,re1*re2+im1*im2)/M_PI;
|
||||||
|
|
||||||
#ifdef DBG_PSS_NR
|
#ifdef DBG_PSS_NR
|
||||||
printf("ffo %lf\n",ffo_est);
|
printf("ffo %lf\n",ffo_est);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -443,24 +443,6 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
// For now, symbol 0 = PSS/PBCH and it is never in symbol 0 or 7*2^mu (i.e. always shorter prefix)
|
// For now, symbol 0 = PSS/PBCH and it is never in symbol 0 or 7*2^mu (i.e. always shorter prefix)
|
||||||
frame_parms->nb_prefix_samples0 = frame_parms->nb_prefix_samples;
|
frame_parms->nb_prefix_samples0 = frame_parms->nb_prefix_samples;
|
||||||
|
|
||||||
// Do FFTs for SSS/PSS
|
|
||||||
// SSS
|
|
||||||
nr_slot_fep(ue,
|
|
||||||
SSS_SYMBOL_NB-PSS_SYMBOL_NB, // symbol number w.r.t. PSS
|
|
||||||
0, // Ns slot number
|
|
||||||
ue->ssb_offset, // sample_offset of int16_t
|
|
||||||
0, // no_prefix
|
|
||||||
1, // reset frequency estimation
|
|
||||||
NR_SSS_EST);
|
|
||||||
|
|
||||||
// PSS
|
|
||||||
nr_slot_fep(ue,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
ue->ssb_offset,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
NR_SSS_EST);
|
|
||||||
|
|
||||||
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
||||||
|
|
||||||
|
|||||||
@@ -4991,7 +4991,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
1,
|
|
||||||
NR_PDCCH_EST);
|
NR_PDCCH_EST);
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
|
||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
@@ -5022,7 +5021,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
1,
|
|
||||||
NR_PDSCH_EST);
|
NR_PDSCH_EST);
|
||||||
|
|
||||||
//printf("phy procedure pdsch start measurement\n");
|
//printf("phy procedure pdsch start measurement\n");
|
||||||
@@ -5106,7 +5104,6 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN
|
|||||||
nr_tti_rx,
|
nr_tti_rx,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
1,
|
|
||||||
NR_PBCH_EST);
|
NR_PBCH_EST);
|
||||||
|
|
||||||
nr_ue_pbch_procedures(eNB_id,ue,proc,0);
|
nr_ue_pbch_procedures(eNB_id,ue,proc,0);
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
#include "PHY/INIT/phy_init.h"
|
#include "PHY/INIT/phy_init.h"
|
||||||
#include "PHY/NR_TRANSPORT/nr_transport.h"
|
#include "PHY/NR_TRANSPORT/nr_transport.h"
|
||||||
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
|
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
|
||||||
|
#include "PHY/NR_UE_ESTIMATION/nr_estimation.h"
|
||||||
|
|
||||||
#include "SCHED_NR/sched_nr.h"
|
#include "SCHED_NR/sched_nr.h"
|
||||||
|
|
||||||
@@ -371,6 +372,7 @@ int main(int argc, char **argv)
|
|||||||
frame_parms->N_RB_DL = N_RB_DL;
|
frame_parms->N_RB_DL = N_RB_DL;
|
||||||
frame_parms->N_RB_UL = N_RB_DL;
|
frame_parms->N_RB_UL = N_RB_DL;
|
||||||
frame_parms->Nid_cell = Nid_cell;
|
frame_parms->Nid_cell = Nid_cell;
|
||||||
|
frame_parms->ssb_type = nr_ssb_type_B;
|
||||||
|
|
||||||
nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell,SSB_positions);
|
nr_phy_config_request_sim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell,SSB_positions);
|
||||||
phy_init_nr_gNB(gNB,0,0);
|
phy_init_nr_gNB(gNB,0,0);
|
||||||
@@ -545,7 +547,6 @@ int main(int argc, char **argv)
|
|||||||
n_errors_payload = 0;
|
n_errors_payload = 0;
|
||||||
|
|
||||||
for (trial=0; trial<n_trials; trial++) {
|
for (trial=0; trial<n_trials; trial++) {
|
||||||
|
|
||||||
// multipath channel
|
// multipath channel
|
||||||
//multipath_channel(gNB2UE,s_re,s_im,r_re,r_im,frame_length_complex_samples,0);
|
//multipath_channel(gNB2UE,s_re,s_im,r_re,r_im,frame_length_complex_samples,0);
|
||||||
|
|
||||||
@@ -596,32 +597,17 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
UE->rx_offset=0;
|
UE->rx_offset=0;
|
||||||
//symbol 1
|
|
||||||
nr_slot_fep(UE,
|
for (int i=5; i<8; i++) {
|
||||||
5,
|
nr_slot_fep(UE,
|
||||||
0,
|
i,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
1,
|
0,
|
||||||
NR_PBCH_EST);
|
NR_PBCH_EST);
|
||||||
|
|
||||||
//symbol 2
|
nr_pbch_channel_estimation(UE,0,0,i);
|
||||||
nr_slot_fep(UE,
|
}
|
||||||
6,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
NR_PBCH_EST);
|
|
||||||
|
|
||||||
//symbol 3
|
|
||||||
nr_slot_fep(UE,
|
|
||||||
7,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
NR_PBCH_EST);
|
|
||||||
|
|
||||||
ret = nr_rx_pbch(UE,
|
ret = nr_rx_pbch(UE,
|
||||||
&UE->proc.proc_rxtx[0],
|
&UE->proc.proc_rxtx[0],
|
||||||
|
|||||||
@@ -965,7 +965,7 @@ void *UE_thread(void *arg) {
|
|||||||
UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0,
|
UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0,
|
||||||
UE->frame_parms.nb_antennas_rx),"");
|
UE->frame_parms.nb_antennas_rx),"");
|
||||||
//write_output("txdata_sym.m", "txdata_sym", UE->common_vars.rxdata[0], (UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0), 1, 1);
|
//write_output("txdata_sym.m", "txdata_sym", UE->common_vars.rxdata[0], (UE->frame_parms.ofdm_symbol_size+UE->frame_parms.nb_prefix_samples0), 1, 1);
|
||||||
//nr_slot_fep(UE,0, 0, 0, 1, 1, NR_PDCCH_EST);
|
//nr_slot_fep(UE,0, 0, 0, 1, NR_PDCCH_EST);
|
||||||
} //UE->mode != loop_through_memory
|
} //UE->mode != loop_through_memory
|
||||||
else
|
else
|
||||||
rt_sleep_ns(1000*1000);
|
rt_sleep_ns(1000*1000);
|
||||||
|
|||||||
Reference in New Issue
Block a user