Commit 874c165f authored by Florian Kaltenberger's avatar Florian Kaltenberger

WIP

parent 8c2df1d3
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "PHY/NR_TRANSPORT/nr_transport.h" #include "PHY/NR_TRANSPORT/nr_transport.h"
//#define NR_PSS_DEBUG #define NR_PSS_DEBUG
int nr_generate_pss( int16_t *d_pss, int nr_generate_pss( int16_t *d_pss,
int32_t **txdataF, int32_t **txdataF,
...@@ -52,7 +52,7 @@ int nr_generate_pss( int16_t *d_pss, ...@@ -52,7 +52,7 @@ int nr_generate_pss( int16_t *d_pss,
} }
#ifdef NR_PSS_DEBUG #ifdef NR_PSS_DEBUG
write_output("d_pss.m", "d_pss", (void*)d_pss, NR_PSS_LENGTH, 1, 1); write_output("d_pss.m", "d_pss", (void*)d_pss, NR_PSS_LENGTH, 1, 0);
#endif #endif
/// Resource mapping /// Resource mapping
...@@ -75,7 +75,7 @@ int nr_generate_pss( int16_t *d_pss, ...@@ -75,7 +75,7 @@ int nr_generate_pss( int16_t *d_pss,
} }
#ifdef NR_PSS_DEBUG #ifdef NR_PSS_DEBUG
write_output("pss_0.m", "pss_0", (void*)txdataF[0][2*l*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1); write_output("pss_0.m", "pss_0", (void*)&txdataF[0][2*l*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1);
#endif #endif
return 0; return 0;
......
...@@ -197,13 +197,15 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode) ...@@ -197,13 +197,15 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode)
* sync_pos SS/PBCH block * sync_pos SS/PBCH block
*/ */
cnt++; cnt++;
if (cnt >100){ if (1){
cnt =0; cnt =0;
/* process pss search on received buffer */ /* process pss search on received buffer */
sync_pos = pss_synchro_nr(ue, NO_RATE_CHANGE); sync_pos = pss_synchro_nr(ue, NO_RATE_CHANGE);
sync_pos_slot = (frame_parms->samples_per_tti>>1) - 3*(frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); sync_pos_slot = (frame_parms->samples_per_tti>>1) - 3*(frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples);
sync_pos = sync_pos_slot+frame_parms->nb_prefix_samples;
if (sync_pos >= frame_parms->nb_prefix_samples) if (sync_pos >= frame_parms->nb_prefix_samples)
sync_pos2 = sync_pos - frame_parms->nb_prefix_samples; sync_pos2 = sync_pos - frame_parms->nb_prefix_samples;
else else
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "PHY/sse_intrin.h" #include "PHY/sse_intrin.h"
//#include "SIMULATION/TOOLS/sim.h" //#include "SIMULATION/TOOLS/sim.h"
//#define DEBUG_PBCH 1 #define DEBUG_PBCH 1
//#define DEBUG_PBCH_ENCODING //#define DEBUG_PBCH_ENCODING
#ifdef OPENAIR2 #ifdef OPENAIR2
...@@ -247,6 +247,9 @@ void nr_pbch_channel_compensation(int **rxdataF_ext, ...@@ -247,6 +247,9 @@ void nr_pbch_channel_compensation(int **rxdataF_ext,
uint8_t output_shift) uint8_t output_shift)
{ {
short conjugate[8]__attribute__((aligned(16))) = {-1,1,-1,1,-1,1,-1,1};
short conjugate2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1};
uint16_t rb,nb_rb=20; uint16_t rb,nb_rb=20;
uint8_t aatx,aarx; uint8_t aatx,aarx;
#if defined(__x86_64__) || defined(__i386__) #if defined(__x86_64__) || defined(__i386__)
...@@ -552,8 +555,10 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, ...@@ -552,8 +555,10 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
for (symbol=5; symbol<8; symbol++) { for (symbol=5; symbol<8; symbol++) {
#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,2,1);
#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,
nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[eNB_id], nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[eNB_id],
...@@ -583,7 +588,9 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, ...@@ -583,7 +588,9 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
symbol, symbol,
log2_maxh); // log2_maxh+I0_shift log2_maxh); // log2_maxh+I0_shift
//write_output("rxdataF_comp.m","rxFcomp",nr_ue_pbch_vars->rxdataF_comp,180,2,1); #ifdef DEBUG_PBCH
write_output("rxdataF_comp.m","rxFcomp",nr_ue_pbch_vars->rxdataF_comp,180,2,1);
#endif
/*if (frame_parms->nb_antennas_rx > 1) /*if (frame_parms->nb_antennas_rx > 1)
pbch_detection_mrc(frame_parms, pbch_detection_mrc(frame_parms,
......
...@@ -57,6 +57,8 @@ ...@@ -57,6 +57,8 @@
* *
*********************************************************************/ *********************************************************************/
#define DBG_PSS_NR
void *get_idft(int ofdm_symbol_size) void *get_idft(int ofdm_symbol_size)
{ {
void (*idft)(int16_t *,int16_t *, int); void (*idft)(int16_t *,int16_t *, int);
...@@ -791,18 +793,6 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain ...@@ -791,18 +793,6 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain
/* Correlation computation is based on a a dot product which is realized thank to SIMS extensions */ /* Correlation computation is based on a a dot product which is realized thank to SIMS extensions */
for (n=0; n < length; n+=4) { for (n=0; n < length; n+=4) {
#ifdef RTAI_ENABLED
// This is necessary since the sync takes a long time and it seems to block all other threads thus screwing up RTAI. If we pause it for a little while during its execution we give RTAI a chance to catch up with its other tasks.
if ((n%frame_parms->samples_per_subframe == 0) && (n>0) && (openair_daq_vars.sync_state==0)) {
#ifdef DEBUG_PHY
msg("[SYNC TIME] pausing for 1000ns, n=%d\n",n);
#endif
rt_sleep(nano2count(1000));
}
#endif
for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++) { for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++) {
pss_corr_ue[pss_index][n] = 0; /* clean correlation for position n */ pss_corr_ue[pss_index][n] = 0; /* clean correlation for position n */
......
...@@ -32,7 +32,7 @@ extern char fmageren_name2[512]; ...@@ -32,7 +32,7 @@ extern char fmageren_name2[512];
extern unsigned int RX_DMA_BUFFER[4][NB_ANTENNAS_RX]; extern unsigned int RX_DMA_BUFFER[4][NB_ANTENNAS_RX];
extern unsigned int TX_DMA_BUFFER[4][NB_ANTENNAS_TX]; extern unsigned int TX_DMA_BUFFER[4][NB_ANTENNAS_TX];
#include "PHY/LTE_TRANSPORT/transport_extern.h" //#include "PHY/LTE_TRANSPORT/transport_extern.h"
extern int number_of_cards; extern int number_of_cards;
......
...@@ -118,6 +118,8 @@ int main(int argc, char **argv) ...@@ -118,6 +118,8 @@ int main(int argc, char **argv)
NR_DL_FRAME_PARMS *frame_parms; NR_DL_FRAME_PARMS *frame_parms;
nfapi_nr_config_request_t *gNB_config; nfapi_nr_config_request_t *gNB_config;
int ret;
cpuf = get_cpu_freq_GHz(); cpuf = get_cpu_freq_GHz();
if ( load_configmodule(argc,argv) == 0) { if ( load_configmodule(argc,argv) == 0) {
...@@ -309,6 +311,9 @@ int main(int argc, char **argv) ...@@ -309,6 +311,9 @@ int main(int argc, char **argv)
} }
} }
if (snr1set==0)
snr1 = snr0+10;
gNB2UE = new_channel_desc_scm(n_tx, gNB2UE = new_channel_desc_scm(n_tx,
n_rx, n_rx,
channel_model, channel_model,
...@@ -444,6 +449,9 @@ int main(int argc, char **argv) ...@@ -444,6 +449,9 @@ int main(int argc, char **argv)
LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1],frame_length_complex_samples,1,1); LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1],frame_length_complex_samples,1,1);
} }
ret = nr_initial_sync(UE, normal_txrx);
printf("nr_initial_sync1 returns %d\n",ret);
} //noise trials } //noise trials
printf("SNR %f : n_errors = %d/%d\n", SNR,n_errors,n_trials); printf("SNR %f : n_errors = %d/%d\n", SNR,n_errors,n_trials);
......
...@@ -806,10 +806,10 @@ void tx_rf(RU_t *ru) { ...@@ -806,10 +806,10 @@ void tx_rf(RU_t *ru) {
for (i=0; i<ru->nb_tx; i++) for (i=0; i<ru->nb_tx; i++)
txp[i] = (void*)&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_subframe)-sf_extension]; txp[i] = (void*)&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_subframe)-sf_extension];
/*if (proc->subframe_tx == 0){ if (proc->subframe_tx == 0){
write_output("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i],fp->samples_per_subframe_wCP, 1, 1); write_output("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i],fp->samples_per_subframe_wCP, 1, 1);
write_output("txdata_frame.m","txdata_frame",&ru->common.txdata[i],fp->samples_per_subframe, 1, 1); write_output("txdata_frame.m","txdata_frame",&ru->common.txdata[i],fp->samples_per_subframe, 1, 1);
}*/ }
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-ru->openair0_cfg.tx_sample_advance)&0xffffffff ); VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-ru->openair0_cfg.tx_sample_advance)&0xffffffff );
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 ); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment