minor changes in initial synchronization
This commit is contained in:
@@ -1297,7 +1297,7 @@ set(PHY_SRC_UE
|
|||||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
#${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
|
${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.c
|
${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.c
|
||||||
@@ -1334,7 +1334,7 @@ set(PHY_SRC_UE
|
|||||||
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
|
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
# ${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
|
${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
|
||||||
${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.c
|
${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.c
|
||||||
|
|||||||
@@ -100,6 +100,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
|
|||||||
gNB->check_for_MUMIMO_transmissions=0;
|
gNB->check_for_MUMIMO_transmissions=0;
|
||||||
|
|
||||||
while(gNB->configured == 0) usleep(10000);
|
while(gNB->configured == 0) usleep(10000);
|
||||||
|
|
||||||
|
init_dfts();
|
||||||
/*
|
/*
|
||||||
LOG_I(PHY,"[gNB %"PRIu8"] Initializing DL_FRAME_PARMS : N_RB_DL %"PRIu8", PHICH Resource %d, PHICH Duration %d nb_antennas_tx:%u nb_antennas_rx:%u PRACH[rootSequenceIndex:%u prach_Config_enabled:%u configIndex:%u highSpeed:%u zeroCorrelationZoneConfig:%u freqOffset:%u]\n",
|
LOG_I(PHY,"[gNB %"PRIu8"] Initializing DL_FRAME_PARMS : N_RB_DL %"PRIu8", PHICH Resource %d, PHICH Duration %d nb_antennas_tx:%u nb_antennas_rx:%u PRACH[rootSequenceIndex:%u prach_Config_enabled:%u configIndex:%u highSpeed:%u zeroCorrelationZoneConfig:%u freqOffset:%u]\n",
|
||||||
gNB->Mod_id,
|
gNB->Mod_id,
|
||||||
|
|||||||
@@ -655,6 +655,8 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
|
|||||||
fp->nb_antennas_tx = 1;
|
fp->nb_antennas_tx = 1;
|
||||||
fp->nb_antennas_rx=1;
|
fp->nb_antennas_rx=1;
|
||||||
|
|
||||||
|
init_dfts();
|
||||||
|
|
||||||
printf("Initializing UE vars (abstraction %"PRIu8") for eNB TXant %"PRIu8", UE RXant %"PRIu8"\n",abstraction_flag,fp->nb_antennas_tx,fp->nb_antennas_rx);
|
printf("Initializing UE vars (abstraction %"PRIu8") for eNB TXant %"PRIu8", UE RXant %"PRIu8"\n",abstraction_flag,fp->nb_antennas_tx,fp->nb_antennas_rx);
|
||||||
//LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
|
//LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
|
||||||
|
|
||||||
|
|||||||
@@ -25,17 +25,17 @@
|
|||||||
#include "PHY/LTE_ESTIMATION/lte_estimation.h"
|
#include "PHY/LTE_ESTIMATION/lte_estimation.h"
|
||||||
#include "PHY/NR_UE_ESTIMATION/nr_estimation.h"
|
#include "PHY/NR_UE_ESTIMATION/nr_estimation.h"
|
||||||
|
|
||||||
//#define DEBUG_FEP
|
#define DEBUG_FEP
|
||||||
|
|
||||||
#define SOFFSET 0
|
#define SOFFSET 0
|
||||||
|
|
||||||
int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
||||||
unsigned char l,
|
unsigned char l,
|
||||||
unsigned char Ns,
|
unsigned char Ns,
|
||||||
int sample_offset,
|
int sample_offset,
|
||||||
int no_prefix,
|
int no_prefix,
|
||||||
int reset_freq_est,
|
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;
|
||||||
@@ -143,7 +143,6 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
|
|||||||
#if UE_TIMING_TRACE
|
#if UE_TIMING_TRACE
|
||||||
stop_meas(&ue->rx_dft_stats);
|
stop_meas(&ue->rx_dft_stats);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rx_offset += (frame_parms->ofdm_symbol_size+nb_prefix_samples)*l;// +
|
rx_offset += (frame_parms->ofdm_symbol_size+nb_prefix_samples)*l;// +
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
#define NUMBER_SSS_SEQUENCE (336)
|
#define NUMBER_SSS_SEQUENCE (336)
|
||||||
#define INVALID_SSS_SEQUENCE (NUMBER_SSS_SEQUENCE)
|
#define INVALID_SSS_SEQUENCE (NUMBER_SSS_SEQUENCE)
|
||||||
#define LENGTH_SSS_NR (127)
|
#define LENGTH_SSS_NR (127)
|
||||||
#define SCALING_METRIC_SSS_NR (19)
|
#define SCALING_METRIC_SSS_NR (15)//(19)
|
||||||
|
|
||||||
#define N_ID_2_NUMBER (NUMBER_PSS_SEQUENCE)
|
#define N_ID_2_NUMBER (NUMBER_PSS_SEQUENCE)
|
||||||
#define N_ID_1_NUMBER (NUMBER_SSS_SEQUENCE)
|
#define N_ID_1_NUMBER (NUMBER_SSS_SEQUENCE)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
#include "PHY/NR_TRANSPORT/nr_transport.h"
|
#include "PHY/NR_TRANSPORT/nr_transport.h"
|
||||||
|
|
||||||
//#define NR_SSS_DEBUG
|
#define NR_SSS_DEBUG
|
||||||
|
|
||||||
int nr_generate_sss( int16_t *d_sss,
|
int nr_generate_sss( int16_t *d_sss,
|
||||||
int32_t **txdataF,
|
int32_t **txdataF,
|
||||||
@@ -76,6 +76,7 @@ int nr_generate_sss( int16_t *d_sss,
|
|||||||
|
|
||||||
for (int m = 0; m < NR_SSS_LENGTH; m++) {
|
for (int m = 0; m < NR_SSS_LENGTH; m++) {
|
||||||
((int16_t*)txdataF[aa])[2*(l*frame_parms->ofdm_symbol_size + k)] = (a * d_sss[m]) >> 15;
|
((int16_t*)txdataF[aa])[2*(l*frame_parms->ofdm_symbol_size + k)] = (a * d_sss[m]) >> 15;
|
||||||
|
printf("sss %d: %d\n",m,((int16_t*)txdataF[aa])[2*(l*frame_parms->ofdm_symbol_size + k)]);
|
||||||
k++;
|
k++;
|
||||||
|
|
||||||
if (k >= frame_parms->ofdm_symbol_size)
|
if (k >= frame_parms->ofdm_symbol_size)
|
||||||
@@ -83,7 +84,7 @@ int nr_generate_sss( int16_t *d_sss,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef NR_SSS_DEBUG
|
#ifdef NR_SSS_DEBUG
|
||||||
write_output("sss_0.m", "sss_0", (void*)txdataF[0][2*l*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1);
|
// write_output("sss_0.m", "sss_0", (void*)txdataF[0][l*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -567,7 +567,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
|
|||||||
|
|
||||||
#ifdef DEBUG_PBCH
|
#ifdef DEBUG_PBCH
|
||||||
//printf("address dataf %p",nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF);
|
//printf("address dataf %p",nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF);
|
||||||
write_output("rxdataF0_pbch.m","rxF0pbch",nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF,frame_parms->ofdm_symbol_size*4,2,1);
|
write_output("rxdataF0_pbch.m","rxF0pbch",nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF,frame_parms->ofdm_symbol_size*4,1,1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nr_pbch_extract(nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF,
|
nr_pbch_extract(nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF,
|
||||||
@@ -718,6 +718,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
|
|||||||
printf("[PBCH] decoder payload[%d] = %x\n",i,decoded_output[i]);
|
printf("[PBCH] decoder payload[%d] = %x\n",i,decoded_output[i]);
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
ue->dl_indication.rx_ind = &ue->rx_ind; // hang on rx_ind instance
|
ue->dl_indication.rx_ind = &ue->rx_ind; // hang on rx_ind instance
|
||||||
//ue->rx_ind.sfn_slot = 0; //should be set by higher-1-layer, i.e. clean_and_set_if_instance()
|
//ue->rx_ind.sfn_slot = 0; //should be set by higher-1-layer, i.e. clean_and_set_if_instance()
|
||||||
ue->rx_ind.number_pdus = ue->rx_ind.number_pdus + 1;
|
ue->rx_ind.number_pdus = ue->rx_ind.number_pdus + 1;
|
||||||
@@ -729,7 +730,8 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
|
|||||||
ue->rx_ind.rx_indication_body->mib_pdu.ssb_length = Lmax; // confirm with TCL
|
ue->rx_ind.rx_indication_body->mib_pdu.ssb_length = Lmax; // confirm with TCL
|
||||||
ue->rx_ind.rx_indication_body->mib_pdu.cell_id = frame_parms->Nid_cell; // confirm with TCL
|
ue->rx_ind.rx_indication_body->mib_pdu.cell_id = frame_parms->Nid_cell; // confirm with TCL
|
||||||
|
|
||||||
ue->if_inst->dl_indication(&ue->dl_indication);
|
if (ue->if_inst && ue->if_inst->dl_indication)
|
||||||
|
ue->if_inst->dl_indication(&ue->dl_indication);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,6 +269,8 @@ void generate_pss_nr(int N_ID_2, int ofdm_symbol_size)
|
|||||||
#ifdef DBG_PSS_NR
|
#ifdef DBG_PSS_NR
|
||||||
|
|
||||||
if (N_ID_2 == 0) {
|
if (N_ID_2 == 0) {
|
||||||
|
for (int i=0;i<16;i++) printf("f %d: %d,%d\n",i,synchroF_tmp[i<<1],synchroF_tmp[1+(i<<1)]);
|
||||||
|
for (int i=0;i<16;i++) printf("t %d: %d,%d\n",i,primary_synchro_time[i<<1],primary_synchro_time[1+(i<<1)]);
|
||||||
char output_file[255];
|
char output_file[255];
|
||||||
char sequence_name[255];
|
char sequence_name[255];
|
||||||
sprintf(output_file, "%s%d_%d%s","pss_seq_t_", N_ID_2, length, ".m");
|
sprintf(output_file, "%s%d_%d%s","pss_seq_t_", N_ID_2, length, ".m");
|
||||||
@@ -277,6 +279,9 @@ void generate_pss_nr(int N_ID_2, int ofdm_symbol_size)
|
|||||||
printf("file %s sequence %s\n", output_file, sequence_name);
|
printf("file %s sequence %s\n", output_file, sequence_name);
|
||||||
|
|
||||||
write_output(output_file, sequence_name, primary_synchro_time, length, 1, 1);
|
write_output(output_file, sequence_name, primary_synchro_time, length, 1, 1);
|
||||||
|
sprintf(output_file, "%s%d_%d%s","pss_seq_f_", N_ID_2, length, ".m");
|
||||||
|
sprintf(sequence_name, "%s%d_%d","pss_seq_f_", N_ID_2, length);
|
||||||
|
write_output(output_file, sequence_name, synchroF_tmp, length, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -96,7 +96,8 @@ void init_context_sss_nr(int amp)
|
|||||||
|
|
||||||
/* Modulation of SSS is a BPSK TS 36.211 chapter 5.1.2 BPSK */
|
/* Modulation of SSS is a BPSK TS 36.211 chapter 5.1.2 BPSK */
|
||||||
#if 1
|
#if 1
|
||||||
d_sss[N_ID_2][N_ID_1][n] = dss_current * amp;
|
d_sss[N_ID_2][N_ID_1][n] = dss_current;// * amp;
|
||||||
|
(void) amp;
|
||||||
#else
|
#else
|
||||||
(void) amp;
|
(void) amp;
|
||||||
d_sss[N_ID_2][N_ID_1][n] = (dss_current * SHRT_MAX)>>SCALING_PSS_NR;
|
d_sss[N_ID_2][N_ID_1][n] = (dss_current * SHRT_MAX)>>SCALING_PSS_NR;
|
||||||
@@ -126,6 +127,8 @@ void init_context_sss_nr(int amp)
|
|||||||
*
|
*
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
#define DEBUG_SSS_NR
|
||||||
|
#define DEBUG_PLOT_SSS
|
||||||
void insert_sss_nr(int16_t *sss_time,
|
void insert_sss_nr(int16_t *sss_time,
|
||||||
NR_DL_FRAME_PARMS *frame_parms)
|
NR_DL_FRAME_PARMS *frame_parms)
|
||||||
{
|
{
|
||||||
@@ -425,21 +428,21 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
// Do FFTs for SSS/PSS
|
// Do FFTs for SSS/PSS
|
||||||
// SSS
|
// SSS
|
||||||
nr_slot_fep(ue,
|
nr_slot_fep(ue,
|
||||||
SSS_SYMBOL_NB, // symbol number
|
SSS_SYMBOL_NB, // symbol number
|
||||||
0, // Ns slot number
|
0, // Ns slot number
|
||||||
ue->rx_offset, // sample_offset of int16_t
|
ue->rx_offset, // sample_offset of int16_t
|
||||||
0, // no_prefix
|
0, // no_prefix
|
||||||
1, // reset frequency estimation
|
1, // reset frequency estimation
|
||||||
NR_SSS_EST);
|
NR_SSS_EST);
|
||||||
|
|
||||||
// PSS
|
// PSS
|
||||||
nr_slot_fep(ue,
|
nr_slot_fep(ue,
|
||||||
PSS_SYMBOL_NB,
|
PSS_SYMBOL_NB,
|
||||||
0,
|
0,
|
||||||
ue->rx_offset,
|
ue->rx_offset,
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
NR_SSS_EST);
|
NR_SSS_EST);
|
||||||
|
|
||||||
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
frame_parms->nb_prefix_samples0 = nb_prefix_samples0;
|
||||||
|
|
||||||
@@ -452,17 +455,11 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
#ifdef DEBUG_PLOT_SSS
|
#ifdef DEBUG_PLOT_SSS
|
||||||
|
|
||||||
write_output("rxsig0.m","rxs0",&ue->common_vars.rxdata[0][0],ue->frame_parms.samples_per_tti,1,1);
|
write_output("rxsig0.m","rxs0",&ue->common_vars.rxdata[0][0],ue->frame_parms.samples_per_tti,1,1);
|
||||||
write_output("rxdataF0.m","rxF0",&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[0]].rxdataF[0],frame_parms->ofdm_symbol_size,2,1);
|
write_output("rxdataF0.m","rxF0",&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[0]].rxdataF[0][frame_parms->ofdm_symbol_size*SSS_SYMBOL_NB],frame_parms->ofdm_symbol_size,2,1);
|
||||||
write_output("pss_ext.m","pss_ext",pss_ext,LENGTH_PSS_NR,1,1);
|
write_output("pss_ext.m","pss_ext",pss_ext,LENGTH_PSS_NR,1,1);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
write_output("sss_ext.m","sss_ext",sss_ext,LENGTH_SSS_NR,1,1);
|
|
||||||
write_output("sss_ref.m","sss_ref", d_sss,LENGTH_SSS_NR,1,1);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
int16_t *p = (int16_t *)sss_ext[0];
|
int16_t *p = (int16_t *)sss_ext[0];
|
||||||
@@ -489,6 +486,14 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
|
|
||||||
sss = (int16_t*)&sss_ext[0][0];
|
sss = (int16_t*)&sss_ext[0][0];
|
||||||
|
|
||||||
|
#ifdef DEBUG_PLOT_SSS
|
||||||
|
|
||||||
|
write_output("sss_ext.m","sss_ext",sss_ext[0],LENGTH_SSS_NR,1,1);
|
||||||
|
write_output("sss_ref.m","sss_ref", d_sss,LENGTH_SSS_NR,1,1);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
||||||
/* simulate of a phase shift on the signal */
|
/* simulate of a phase shift on the signal */
|
||||||
@@ -499,11 +504,11 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
int16_t *ps = (int16_t *)pss_ext;
|
int16_t *ps = (int16_t *)pss_ext;
|
||||||
|
|
||||||
for (int i = 0; i < LENGTH_SSS_NR; i++) {
|
for (int i = 0; i < LENGTH_SSS_NR; i++) {
|
||||||
printf("sss ref [%i] : %d %d \n", i, d_sss[0][0][i], d_sss[0][0][i]);
|
printf("sss ref [%i] : %d \n", i, d_sss[0][0][i]);
|
||||||
printf("sss ext [%i] : %d %d \n", i, sss[2*i], sss[2*i+1]);
|
printf("sss ext [%i] : %d %d \n", i, sss[2*i], sss[2*i+1]);
|
||||||
|
|
||||||
printf("pss ref [%i] : %d %d \n", i, primary_synchro_nr[0][2*i], primary_synchro_nr[0][2*i+1]);
|
printf("pss ref [%i] : %d %d \n", i, primary_synchro_nr[0][2*i], primary_synchro_nr[0][2*i+1]);
|
||||||
@@ -528,8 +533,11 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
// This is the inner product using one particular value of each unknown parameter
|
// This is the inner product using one particular value of each unknown parameter
|
||||||
for (i=0; i < LENGTH_SSS_NR; i++) {
|
for (i=0; i < LENGTH_SSS_NR; i++) {
|
||||||
|
|
||||||
|
|
||||||
metric_re += d[i]*(((phase_re_nr[phase]*sss[2*i])>>SCALING_METRIC_SSS_NR) - ((phase_im_nr[phase]*sss[2*i+1])>>SCALING_METRIC_SSS_NR))
|
metric_re += d[i]*(((phase_re_nr[phase]*sss[2*i])>>SCALING_METRIC_SSS_NR) - ((phase_im_nr[phase]*sss[2*i+1])>>SCALING_METRIC_SSS_NR))
|
||||||
+ d[i]*(((phase_im_nr[phase]*sss[2*i])>>SCALING_METRIC_SSS_NR) + ((phase_re_nr[phase]*sss[2*i+1])>>SCALING_METRIC_SSS_NR));
|
+ d[i]*(((phase_im_nr[phase]*sss[2*i])>>SCALING_METRIC_SSS_NR) + ((phase_re_nr[phase]*sss[2*i+1])>>SCALING_METRIC_SSS_NR));
|
||||||
|
if (Nid1 ==0 && phase==3)
|
||||||
|
printf("i %d, phase %d/%d: metric %d, phase (%d,%d) sss (%d,%d) d %d\n",i,phase,PHASE_HYPOTHESIS_NUMBER,metric_re,phase_re_nr[phase],phase_im_nr[phase],sss[2*i],sss[1+(2*i)],d[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
metric = metric_re;
|
metric = metric_re;
|
||||||
@@ -552,12 +560,12 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
|
|||||||
//#ifdef DEBUG_SSS_NR
|
//#ifdef DEBUG_SSS_NR
|
||||||
|
|
||||||
#define SSS_METRIC_FLOOR_NR (30000)
|
#define SSS_METRIC_FLOOR_NR (30000)
|
||||||
if (*tot_metric > SSS_METRIC_FLOOR_NR) {
|
if (*tot_metric > SSS_METRIC_FLOOR_NR) {
|
||||||
Nid2 = GET_NID2(frame_parms->Nid_cell);
|
Nid2 = GET_NID2(frame_parms->Nid_cell);
|
||||||
Nid1 = GET_NID1(frame_parms->Nid_cell);
|
Nid1 = GET_NID1(frame_parms->Nid_cell);
|
||||||
printf("Nid2 %d Nid1 %d tot_metric %d, phase_max %d \n", Nid2, Nid1, *tot_metric, *phase_max);
|
printf("Nid2 %d Nid1 %d tot_metric %d, phase_max %d \n", Nid2, Nid1, *tot_metric, *phase_max);
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4464,6 +4464,7 @@ void dft2048(int16_t *x,int16_t *y,int scale)
|
|||||||
_mm_empty();
|
_mm_empty();
|
||||||
_m_empty();
|
_m_empty();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void idft2048(int16_t *x,int16_t *y,int scale)
|
void idft2048(int16_t *x,int16_t *y,int scale)
|
||||||
@@ -4567,6 +4568,8 @@ void dft2048(int16_t *x,int16_t *y,int scale)
|
|||||||
int i;
|
int i;
|
||||||
simd256_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16_simd256(ONE_OVER_SQRT2_Q15);
|
simd256_q15_t ONE_OVER_SQRT2_Q15_128 = set1_int16_simd256(ONE_OVER_SQRT2_Q15);
|
||||||
|
|
||||||
|
write_output("dftin.m","dftin",x,2048,1,1);
|
||||||
|
|
||||||
xtmpp = xtmp;
|
xtmpp = xtmp;
|
||||||
|
|
||||||
for (i=0; i<4; i++) {
|
for (i=0; i<4; i++) {
|
||||||
@@ -4645,7 +4648,7 @@ void dft2048(int16_t *x,int16_t *y,int scale)
|
|||||||
|
|
||||||
_mm_empty();
|
_mm_empty();
|
||||||
_m_empty();
|
_m_empty();
|
||||||
|
write_output("dftout.m","dftout",y,2048,1,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void idft2048(int16_t *x,int16_t *y,int scale)
|
void idft2048(int16_t *x,int16_t *y,int scale)
|
||||||
|
|||||||
Reference in New Issue
Block a user