pusch_vars[ULSCH_id]->ul_ch_ptrs_estimates[i]=(int32_t*)malloc16_clear(sizeof(int32_t)*fp->ofdm_symbol_size*2*fp->symbols_per_slot);// max intensity in freq is 1 sc every 2 RBs
AssertFatal(1==0,"unknown prach format %x\n",prachFormat);
AssertFatal(1==0,"unknown prach format %x\n",prachFormat);
break;
break;
}
}
}
dftlen=2048>>mu;
// Do forward transform
if(LOG_DEBUGFLAG(PRACH)){
LOG_D(PHY,"rx_prach: Doing PRACH FFT for nb_rx:%d Ncp:%d\n",ru->nb_rx,Ncp);
}
}
//actually what we should be checking here is how often the current prach crosses a 0.5ms boundary. I am not quite sure for which paramter set this would be the case, so I will ignore it for now and just check if the prach starts on a 0.5ms boundary
if(fp->numerology_index==0){
// Note: Assumes PUSCH SCS @ 30 kHz, take values for formats 0-2 and adjust for others below
if(prachStartSymbol==0||prachStartSymbol==7)
intkbar=1;
Ncp+=16;
intK=24;
if(prach_sequence_length==0&&prachFormat==3){
K=4;
kbar=10;
}
}
elseif(prach_sequence_length==1){
else{
// Note: Assumes that PRACH SCS is same as PUSCH SCS
@@ -1389,6 +1405,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
...
@@ -1389,6 +1405,7 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
ch,
ch,
dl_ch,
dl_ch,
8);
8);
#endif
}
}
else{// this is case without frequency-domain linear interpolation, just take average of LS channel estimates of 4 DMRS REs and use a common value for the whole PRB
else{// this is case without frequency-domain linear interpolation, just take average of LS channel estimates of 4 DMRS REs and use a common value for the whole PRB
int32_tch_0,ch_1;
int32_tch_0,ch_1;
...
@@ -1424,6 +1441,10 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
...
@@ -1424,6 +1441,10 @@ int nr_pdsch_channel_estimation(PHY_VARS_NR_UE *ue,
//actually what we should be checking here is how often the current prach crosses a 0.5ms boundary. I am not quite sure for which paramter set this would be the case, so I will ignore it for now and just check if the prach starts on a 0.5ms boundary
//actually what we should be checking here is how often the current prach crosses a 0.5ms boundary. I am not quite sure for which paramter set this would be the case, so I will ignore it for now and just check if the prach starts on a 0.5ms boundary
@@ -667,7 +666,7 @@ int main(int argc, char **argv)
...
@@ -667,7 +666,7 @@ int main(int argc, char **argv)
printf("-n Number of frames to simulate\n");
printf("-n Number of frames to simulate\n");
printf("-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated\n");
printf("-s Starting SNR, runs from SNR0 to SNR0 + 5 dB. If n_frames is 1 then just SNR is simulated\n");
printf("-S Ending SNR, runs from SNR0 to SNR1\n");
printf("-S Ending SNR, runs from SNR0 to SNR1\n");
printf("-t Delay spread for multipath channel\n");
//printf("-t Delay spread for multipath channel\n");
printf("-g [A,B,C,D,E,F,G,R] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models or R for MIMO model (ignores delay spread and Ricean factor)\n");
printf("-g [A,B,C,D,E,F,G,R] Use 3GPP SCM (A,B,C,D) or 36-101 (E-EPA,F-EVA,G-ETU) models or R for MIMO model (ignores delay spread and Ricean factor)\n");
printf("-y Number of TX antennas used in gNB\n");
printf("-y Number of TX antennas used in gNB\n");
printf("-z Number of RX antennas used in UE\n");
printf("-z Number of RX antennas used in UE\n");
...
@@ -853,7 +852,11 @@ int main(int argc, char **argv)
...
@@ -853,7 +852,11 @@ int main(int argc, char **argv)
doublefs,bw;
doublefs,bw;
if(mu==1&&N_RB_DL==217){
if(mu==0&&N_RB_DL==25){
fs=7.68e6;
bw=5e6;
}
elseif(mu==1&&N_RB_DL==217){
fs=122.88e6;
fs=122.88e6;
bw=80e6;
bw=80e6;
}
}
...
@@ -877,6 +880,10 @@ int main(int argc, char **argv)
...
@@ -877,6 +880,10 @@ int main(int argc, char **argv)
@@ -892,6 +914,7 @@ int main(int argc, char **argv)
...
@@ -892,6 +914,7 @@ int main(int argc, char **argv)
AssertFatal(index>=0,"Num RBs not configured according to 3GPP 38.211 section 6.3.1.4. For PUSCH with transform precoding, num RBs cannot be multiple of any other primenumber other than 2,3,5\n");
AssertFatal(index>=0,"Num RBs not configured according to 3GPP 38.211 section 6.3.1.4. For PUSCH with transform precoding, num RBs cannot be multiple of any other primenumber other than 2,3,5\n");
dmrs_config_type=pusch_dmrs_type1;
dmrs_config_type=pusch_dmrs_type1;
nb_re_dmrs=6;
printf("[ULSIM]: TRANSFORM PRECODING ENABLED. Num RBs: %d, index for DMRS_SEQ: %d\n",nb_rb,index);
printf("[ULSIM]: TRANSFORM PRECODING ENABLED. Num RBs: %d, index for DMRS_SEQ: %d\n",nb_rb,index);
}
}
...
@@ -1560,7 +1583,7 @@ int main(int argc, char **argv)
...
@@ -1560,7 +1583,7 @@ int main(int argc, char **argv)