Commit 1f788f0e authored by Sagar Parsawar's avatar Sagar Parsawar

Merge branch 'nr_prs_merge' of https://gitlab.eurecom.fr/oai/openairinterface5g into nr_prs_merge

parents 2a341472 fdb0f4cd
...@@ -712,7 +712,7 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { ...@@ -712,7 +712,7 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) {
unsigned int txs; unsigned int txs;
int i; int i;
T(T_ENB_PHY_OUTPUT_SIGNAL, T_INT(0), T_INT(0), T_INT(frame), T_INT(slot), T(T_ENB_PHY_OUTPUT_SIGNAL, T_INT(0), T_INT(0), T_INT(frame), T_INT(slot),
T_INT(0), T_BUFFER(&ru->common.txdata[0][fp->get_samples_slot_timestamp(slot,fp,0)], fp->samples_per_subframe * 4)); T_INT(0), T_BUFFER(&ru->common.txdata[0][fp->get_samples_slot_timestamp(slot,fp,0)], fp->get_samples_per_slot(slot,fp) * 4));
int sf_extension = 0; int sf_extension = 0;
int siglen=fp->get_samples_per_slot(slot,fp); int siglen=fp->get_samples_per_slot(slot,fp);
int flags = 0; int flags = 0;
......
...@@ -666,7 +666,7 @@ void processSlotRX(void *arg) { ...@@ -666,7 +666,7 @@ void processSlotRX(void *arg) {
if (rx_slot_type == NR_DOWNLINK_SLOT || rx_slot_type == NR_MIXED_SLOT){ if (rx_slot_type == NR_DOWNLINK_SLOT || rx_slot_type == NR_MIXED_SLOT){
if(UE->if_inst != NULL && UE->if_inst->dl_indication != NULL) { if(UE->if_inst != NULL && UE->if_inst->dl_indication != NULL && get_softmodem_params()->phy_test == 0) {
nr_downlink_indication_t dl_indication; nr_downlink_indication_t dl_indication;
nr_fill_dl_indication(&dl_indication, NULL, NULL, proc, UE, gNB_id, &phy_pdcch_config); nr_fill_dl_indication(&dl_indication, NULL, NULL, proc, UE, gNB_id, &phy_pdcch_config);
UE->if_inst->dl_indication(&dl_indication, NULL); UE->if_inst->dl_indication(&dl_indication, NULL);
......
...@@ -686,9 +686,9 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue, ...@@ -686,9 +686,9 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
// Pointers to extracted PDCCH symbols in frequency-domain. // Pointers to extracted PDCCH symbols in frequency-domain.
int32_t rx_size = 4*273*12; int32_t rx_size = 4*273*12;
int32_t rxdataF_ext[4*frame_parms->nb_antennas_rx][rx_size]; __attribute__ ((aligned(32))) int32_t rxdataF_ext[4*frame_parms->nb_antennas_rx][rx_size];
int32_t rxdataF_comp[4*frame_parms->nb_antennas_rx][rx_size]; __attribute__ ((aligned(32))) int32_t rxdataF_comp[4*frame_parms->nb_antennas_rx][rx_size];
int32_t pdcch_dl_ch_estimates_ext[4*frame_parms->nb_antennas_rx][rx_size]; __attribute__ ((aligned(32))) int32_t pdcch_dl_ch_estimates_ext[4*frame_parms->nb_antennas_rx][rx_size];
// Pointer to llrs, 4-bit resolution. // Pointer to llrs, 4-bit resolution.
int32_t llr_size = 2*4*100*12; int32_t llr_size = 2*4*100*12;
......
...@@ -430,8 +430,8 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, ...@@ -430,8 +430,8 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
for (symbol=1; symbol<4; symbol++) { for (symbol=1; symbol<4; symbol++) {
const uint16_t nb_re=symbol == 2 ? 72 : 180; const uint16_t nb_re=symbol == 2 ? 72 : 180;
struct complex16 rxdataF_ext[frame_parms->nb_antennas_rx][PBCH_MAX_RE_PER_SYMBOL]; __attribute__ ((aligned(32))) struct complex16 rxdataF_ext[frame_parms->nb_antennas_rx][PBCH_MAX_RE_PER_SYMBOL];
struct complex16 dl_ch_estimates_ext[frame_parms->nb_antennas_rx][PBCH_MAX_RE_PER_SYMBOL]; __attribute__ ((aligned(32))) struct complex16 dl_ch_estimates_ext[frame_parms->nb_antennas_rx][PBCH_MAX_RE_PER_SYMBOL];
memset(dl_ch_estimates_ext,0, sizeof dl_ch_estimates_ext); memset(dl_ch_estimates_ext,0, sizeof dl_ch_estimates_ext);
nr_pbch_extract(nr_ue_common_vars->common_vars_rx_data_per_thread[proc->thread_id].rxdataF, nr_pbch_extract(nr_ue_common_vars->common_vars_rx_data_per_thread[proc->thread_id].rxdataF,
estimateSz, estimateSz,
...@@ -456,7 +456,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue, ...@@ -456,7 +456,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
#ifdef DEBUG_PBCH #ifdef DEBUG_PBCH
LOG_I(PHY,"[PHY] PBCH log2_maxh = %d (%d)\n",nr_ue_pbch_vars->log2_maxh,max_h); LOG_I(PHY,"[PHY] PBCH log2_maxh = %d (%d)\n",nr_ue_pbch_vars->log2_maxh,max_h);
#endif #endif
struct complex16 rxdataF_comp[frame_parms->nb_antennas_rx][PBCH_MAX_RE_PER_SYMBOL]; __attribute__ ((aligned(32))) struct complex16 rxdataF_comp[frame_parms->nb_antennas_rx][PBCH_MAX_RE_PER_SYMBOL];
nr_pbch_channel_compensation(rxdataF_ext, nr_pbch_channel_compensation(rxdataF_ext,
dl_ch_estimates_ext, dl_ch_estimates_ext,
nb_re, nb_re,
......
...@@ -201,16 +201,6 @@ static int sync_to_gps(openair0_device *device) { ...@@ -201,16 +201,6 @@ static int sync_to_gps(openair0_device *device) {
LOG_W(HW,"WARNING: GPS not locked - time will not be accurate until locked\n"); LOG_W(HW,"WARNING: GPS not locked - time will not be accurate until locked\n");
} }
//wait for next pps
uhd::time_spec_t last = s->usrp->get_time_last_pps();
uhd::time_spec_t next = s->usrp->get_time_last_pps();
while(next == last) {
boost::this_thread::sleep(boost::posix_time::milliseconds(50));
last = next;
next = s->usrp->get_time_last_pps();
}
boost::this_thread::sleep(boost::posix_time::milliseconds(200));
//Set to GPS time //Set to GPS time
uhd::time_spec_t gps_time = uhd::time_spec_t(time_t(s->usrp->get_mboard_sensor("gps_time", mboard).to_int())); uhd::time_spec_t gps_time = uhd::time_spec_t(time_t(s->usrp->get_mboard_sensor("gps_time", mboard).to_int()));
s->usrp->set_time_next_pps(gps_time+1.0, mboard); s->usrp->set_time_next_pps(gps_time+1.0, mboard);
...@@ -306,11 +296,18 @@ static int trx_usrp_start(openair0_device *device) { ...@@ -306,11 +296,18 @@ static int trx_usrp_start(openair0_device *device) {
//s->first_rx = 1; //s->first_rx = 1;
s->rx_timestamp = 0; s->rx_timestamp = 0;
uhd::time_spec_t time_last_pps = s->usrp->get_time_last_pps(); //wait for next pps
LOG_I(HW,"last pps at %f, starting streaming at %f\n",time_last_pps.get_real_secs(),time_last_pps.get_real_secs()+1.0); uhd::time_spec_t last_pps = s->usrp->get_time_last_pps();
uhd::time_spec_t current_pps = s->usrp->get_time_last_pps();
while(current_pps == last_pps) {
boost::this_thread::sleep(boost::posix_time::milliseconds(1));
current_pps = s->usrp->get_time_last_pps();
}
LOG_I(HW,"current pps at %f, starting streaming at %f\n",current_pps.get_real_secs(),current_pps.get_real_secs()+1.0);
uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS); uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
cmd.time_spec = uhd::time_spec_t(time_last_pps+1.0); cmd.time_spec = uhd::time_spec_t(current_pps+1.0);
cmd.stream_now = false; // start at constant delay cmd.stream_now = false; // start at constant delay
s->rx_stream->issue_stream_cmd(cmd); s->rx_stream->issue_stream_cmd(cmd);
......
...@@ -218,9 +218,9 @@ MACRLCs = ( ...@@ -218,9 +218,9 @@ MACRLCs = (
prs_config = ( prs_config = (
{ {
NumPRSResources = 1; NumPRSResources = 1;
PRSResourceSetPeriod = [40, 0]; PRSResourceSetPeriod = [20, 2];
SymbolStart = [7]; SymbolStart = [7];
NumPRSSymbols = [7]; NumPRSSymbols = [6];
NumRB = 106; NumRB = 106;
RBOffset = 0; RBOffset = 0;
CombSize = 4; CombSize = 4;
...@@ -261,7 +261,7 @@ RUs = ( ...@@ -261,7 +261,7 @@ RUs = (
#beamforming 1x4 matrix: #beamforming 1x4 matrix:
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
#clock_src = "internal"; #clock_src = "internal";
sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal" sdr_addrs = "addr=192.168.10.2,clock_source=gpsdo,time_source=gpsdo"
} }
); );
......
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