avoiding to use tx_lev since it was breaking prachsim (also some formatting)
This commit is contained in:
@@ -413,14 +413,13 @@ void rx_nr_prach_ru(RU_t *ru,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void rx_nr_prach(PHY_VARS_gNB *gNB,
|
void rx_nr_prach(PHY_VARS_gNB *gNB,
|
||||||
nfapi_nr_prach_pdu_t *prach_pdu,
|
nfapi_nr_prach_pdu_t *prach_pdu,
|
||||||
int prachOccasion,
|
int prachOccasion,
|
||||||
int frame,
|
int frame,
|
||||||
int subframe,
|
int slot,
|
||||||
uint16_t *max_preamble,
|
uint16_t *max_preamble,
|
||||||
uint16_t *max_preamble_energy,
|
uint16_t *max_preamble_energy,
|
||||||
uint16_t *max_preamble_delay
|
uint16_t *max_preamble_delay)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
AssertFatal(gNB!=NULL,"Can only be called from gNB\n");
|
AssertFatal(gNB!=NULL,"Can only be called from gNB\n");
|
||||||
|
|
||||||
@@ -481,7 +480,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
prach_ifft = gNB->prach_vars.prach_ifft;
|
prach_ifft = gNB->prach_vars.prach_ifft;
|
||||||
prachF = gNB->prach_vars.prachF;
|
prachF = gNB->prach_vars.prachF;
|
||||||
if (LOG_DEBUGFLAG(PRACH)){
|
if (LOG_DEBUGFLAG(PRACH)){
|
||||||
if ((frame&1023) < 20) LOG_D(PHY,"PRACH (gNB) : running rx_prach for subframe %d, msg1_frequencystart %d, rootSequenceIndex %d\n", subframe,msg1_frequencystart,rootSequenceIndex);
|
if ((frame&1023) < 20) LOG_D(PHY,"PRACH (gNB) : running rx_prach for slot %d, msg1_frequencystart %d, rootSequenceIndex %d\n", slot, msg1_frequencystart, rootSequenceIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
start_meas(&gNB->rx_prach);
|
start_meas(&gNB->rx_prach);
|
||||||
@@ -506,7 +505,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
|
|
||||||
if (LOG_DEBUGFLAG(PRACH)){
|
if (LOG_DEBUGFLAG(PRACH)){
|
||||||
int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],(N_ZC==839) ? 840: 140));
|
int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],(N_ZC==839) ? 840: 140));
|
||||||
if (en>60) LOG_D(PHY,"frame %d, subframe %d : Trying preamble %d \n",frame,subframe,preamble_index);
|
if (en>60) LOG_D(PHY,"frame %d, slot %d : Trying preamble %d \n",frame,slot,preamble_index);
|
||||||
}
|
}
|
||||||
if (restricted_set == 0) {
|
if (restricted_set == 0) {
|
||||||
// This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index
|
// This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index
|
||||||
@@ -585,8 +584,8 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
// Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex
|
// Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex
|
||||||
if (LOG_DEBUGFLAG(PRACH)) {
|
if (LOG_DEBUGFLAG(PRACH)) {
|
||||||
int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
|
int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
|
||||||
if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d, NCS %d, N_ZC/NCS %d: offset %d, preamble shift %d , en %d)\n",
|
if (en>60) LOG_D(PHY,"frame %d, slot %d : preamble index %d, NCS %d, N_ZC/NCS %d: offset %d, preamble shift %d , en %d)\n",
|
||||||
frame,subframe,preamble_index,NCS,N_ZC/NCS,preamble_offset,preamble_shift,en);
|
frame,slot,preamble_index,NCS,N_ZC/NCS,preamble_offset,preamble_shift,en);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_D(PHY,"PRACH RX preamble_index %d, preamble_offset %d\n",preamble_index,preamble_offset);
|
LOG_D(PHY,"PRACH RX preamble_index %d, preamble_offset %d\n",preamble_index,preamble_offset);
|
||||||
@@ -605,8 +604,8 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
|
|
||||||
memset(prachF, 0, sizeof(int16_t)*2*1024 );
|
memset(prachF, 0, sizeof(int16_t)*2*1024 );
|
||||||
if (LOG_DUMPFLAG(PRACH)) {
|
if (LOG_DUMPFLAG(PRACH)) {
|
||||||
LOG_M("prach_rxF0.m","prach_rxF0",rxsigF[0],N_ZC,1,1);
|
LOG_M("prach_rxF0.m","prach_rxF0",rxsigF[0],N_ZC,1,1);
|
||||||
LOG_M("prach_rxF1.m","prach_rxF1",rxsigF[1],6144,1,1);
|
LOG_M("prach_rxF1.m","prach_rxF1",rxsigF[1],6144,1,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (aa=0;aa<nb_rx; aa++) {
|
for (aa=0;aa<nb_rx; aa++) {
|
||||||
@@ -659,10 +658,10 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
|
|||||||
lev = (int32_t)prach_ifft[(preamble_shift2+i)];
|
lev = (int32_t)prach_ifft[(preamble_shift2+i)];
|
||||||
levdB = dB_fixed_times10(lev);
|
levdB = dB_fixed_times10(lev);
|
||||||
if (levdB>*max_preamble_energy) {
|
if (levdB>*max_preamble_energy) {
|
||||||
LOG_D(PHY,"preamble_index %d, delay %d en %d dB > %d dB\n",preamble_index,i,levdB,*max_preamble_energy);
|
LOG_D(PHY,"preamble_index %d, delay %d en %d dB > %d dB\n",preamble_index,i,levdB,*max_preamble_energy);
|
||||||
*max_preamble_energy = levdB;
|
*max_preamble_energy = levdB;
|
||||||
*max_preamble_delay = i; // Note: This has to be normalized to the 30.72 Ms/s sampling rate
|
*max_preamble_delay = i; // Note: This has to be normalized to the 30.72 Ms/s sampling rate
|
||||||
*max_preamble = preamble_index;
|
*max_preamble = preamble_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}// preamble_index
|
}// preamble_index
|
||||||
|
|||||||
@@ -127,24 +127,6 @@ void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int slot) {
|
|||||||
uint8_t prachStartSymbol;
|
uint8_t prachStartSymbol;
|
||||||
uint8_t N_dur = get_nr_prach_duration(prach_pdu->prach_format);
|
uint8_t N_dur = get_nr_prach_duration(prach_pdu->prach_format);
|
||||||
|
|
||||||
/*
|
|
||||||
uint16_t format,RA_sfn_index;
|
|
||||||
uint8_t start_symbol,N_t_slot,N_dur,N_RA_slot,config_period;
|
|
||||||
|
|
||||||
get_nr_prach_info_from_index(gNB->gNB_config.prach_config.prach_ConfigurationIndex.value,
|
|
||||||
frame,slot,
|
|
||||||
gNB->gNB_config.carrier_config.dl_frequency.value,
|
|
||||||
gNB->frame_parms.numerology_index,
|
|
||||||
gNB->frame_parms.frame_type,
|
|
||||||
&format,
|
|
||||||
&start_symbol,
|
|
||||||
&N_t_slot,
|
|
||||||
&N_dur,
|
|
||||||
&RA_sfn_index,
|
|
||||||
&N_RA_slot,
|
|
||||||
&config_period);
|
|
||||||
*/
|
|
||||||
|
|
||||||
for(int prach_oc = 0; prach_oc < prach_pdu->num_prach_ocas; prach_oc++) {
|
for(int prach_oc = 0; prach_oc < prach_pdu->num_prach_ocas; prach_oc++) {
|
||||||
for (ru_aa=0,aa=0;ru_aa<ru->nb_rx;ru_aa++,aa++) {
|
for (ru_aa=0,aa=0;ru_aa<ru->nb_rx;ru_aa++,aa++) {
|
||||||
gNB->prach_vars.rxsigF[aa] = ru->prach_rxsigF[prach_oc][ru_aa];
|
gNB->prach_vars.rxsigF[aa] = ru->prach_rxsigF[prach_oc][ru_aa];
|
||||||
@@ -160,8 +142,8 @@ void L1_nr_prach_procedures(PHY_VARS_gNB *gNB,int frame,int slot) {
|
|||||||
slot,
|
slot,
|
||||||
&max_preamble[0],
|
&max_preamble[0],
|
||||||
&max_preamble_energy[0],
|
&max_preamble_energy[0],
|
||||||
&max_preamble_delay[0]
|
&max_preamble_delay[0]);
|
||||||
);
|
|
||||||
free_nr_prach_entry(gNB,prach_id);
|
free_nr_prach_entry(gNB,prach_id);
|
||||||
LOG_D(PHY,"[RAPROC] Frame %d, slot %d, occasion %d (prachStartSymbol %d) : Most likely preamble %d, energy %d.%d dB delay %d (prach_energy counter %d)\n",
|
LOG_D(PHY,"[RAPROC] Frame %d, slot %d, occasion %d (prachStartSymbol %d) : Most likely preamble %d, energy %d.%d dB delay %d (prach_energy counter %d)\n",
|
||||||
frame,slot,prach_oc,prachStartSymbol,
|
frame,slot,prach_oc,prachStartSymbol,
|
||||||
|
|||||||
@@ -766,7 +766,7 @@ int main(int argc, char **argv){
|
|||||||
ue_prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index,
|
ue_prach_config->num_prach_fd_occasions_list[fd_occasion].prach_root_sequence_index,
|
||||||
UE->X_u);
|
UE->X_u);
|
||||||
|
|
||||||
tx_lev = generate_nr_prach(UE, 0, frame, slot);
|
generate_nr_prach(UE, 0, frame, slot);
|
||||||
|
|
||||||
/* tx_lev_dB not used later, no need to set */
|
/* tx_lev_dB not used later, no need to set */
|
||||||
//tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
|
//tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
|
||||||
@@ -832,31 +832,31 @@ int main(int argc, char **argv){
|
|||||||
for (trial=0; trial<n_frames; trial++) {
|
for (trial=0; trial<n_frames; trial++) {
|
||||||
|
|
||||||
if (input_fd==NULL) {
|
if (input_fd==NULL) {
|
||||||
sigma2_dB = 10*log10((double)tx_lev) - SNR - 10*log10(N_RB_UL*12/N_ZC);
|
sigma2_dB = 10*log10((double)tx_lev) - SNR - 10*log10(N_RB_UL*12/N_ZC);
|
||||||
|
|
||||||
if (n_frames==1)
|
if (n_frames==1)
|
||||||
printf("sigma2_dB %f (SNR %f dB) tx_lev_dB %f\n",sigma2_dB,SNR,10*log10((double)tx_lev));
|
printf("sigma2_dB %f (SNR %f dB) tx_lev_dB %f\n",sigma2_dB,SNR,10*log10((double)tx_lev));
|
||||||
|
|
||||||
//AWGN
|
//AWGN
|
||||||
sigma2 = pow(10,sigma2_dB/10);
|
sigma2 = pow(10,sigma2_dB/10);
|
||||||
// printf("Sigma2 %f (sigma2_dB %f)\n",sigma2,sigma2_dB);
|
// printf("Sigma2 %f (sigma2_dB %f)\n",sigma2,sigma2_dB);
|
||||||
|
|
||||||
if (awgn_flag == 0) {
|
if (awgn_flag == 0) {
|
||||||
multipath_tv_channel(UE2gNB, s_re, s_im, r_re, r_im, frame_parms->samples_per_frame, 0);
|
multipath_tv_channel(UE2gNB, s_re, s_im, r_re, r_im, frame_parms->samples_per_frame, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n_frames==1) {
|
if (n_frames==1) {
|
||||||
printf("rx_level data symbol %f, tx_lev %f\n",
|
printf("rx_level data symbol %f, tx_lev %f\n",
|
||||||
10*log10(signal_energy_fp(r_re,r_im,1,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES,0)),
|
10*log10(signal_energy_fp(r_re,r_im,1,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES,0)),
|
||||||
10*log10(tx_lev));
|
10*log10(tx_lev));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i< frame_parms->samples_per_subframe; i++) {
|
for (i = 0; i< frame_parms->samples_per_subframe; i++) {
|
||||||
for (aa = 0; aa < frame_parms->nb_antennas_rx; aa++) {
|
for (aa = 0; aa < frame_parms->nb_antennas_rx; aa++) {
|
||||||
((short*) &ru->common.rxdata[aa][rx_prach_start])[2*i] = (short) (.167*(r_re[aa][i] +sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
|
((short*) &ru->common.rxdata[aa][rx_prach_start])[2*i] = (short) (.167*(r_re[aa][i] +sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
|
||||||
((short*) &ru->common.rxdata[aa][rx_prach_start])[2*i+1] = (short) (.167*(r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
|
((short*) &ru->common.rxdata[aa][rx_prach_start])[2*i+1] = (short) (.167*(r_im[aa][i] + (iqim*r_re[aa][i]) + sqrt(sigma2/2)*gaussdouble(0.0,1.0)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
n_bytes = fread(&ru->common.rxdata[0][rx_prach_start],sizeof(int32_t),frame_parms->samples_per_subframe,input_fd);
|
n_bytes = fread(&ru->common.rxdata[0][rx_prach_start],sizeof(int32_t),frame_parms->samples_per_subframe,input_fd);
|
||||||
printf("fread %d bytes from file %s\n",n_bytes,input_file);
|
printf("fread %d bytes from file %s\n",n_bytes,input_file);
|
||||||
|
|||||||
Reference in New Issue
Block a user