Commit 8f02fcba authored by Wolfgang A. Mozart's avatar Wolfgang A. Mozart

adding support for 3/4 sampling

parent ebb490d9
...@@ -36,9 +36,10 @@ extern uint16_t prach_root_sequence_map0_3[838]; ...@@ -36,9 +36,10 @@ extern uint16_t prach_root_sequence_map0_3[838];
extern uint16_t prach_root_sequence_map4[138]; extern uint16_t prach_root_sequence_map4[138];
uint8_t dmrs1_tab[8] = {0,2,3,4,6,8,9,10}; uint8_t dmrs1_tab[8] = {0,2,3,4,6,8,9,10};
int N_RB_DL_array[6] = {6,15,25,50,75,100}; int N_RB_DL_array[6] = {6,15,25,50,75,100};
extern char threequarter_fs;
int l1_north_init_eNB() { int l1_north_init_eNB() {
int i,j; int i,j;
...@@ -100,7 +101,7 @@ void phy_config_request(PHY_Config_t *phy_config) { ...@@ -100,7 +101,7 @@ void phy_config_request(PHY_Config_t *phy_config) {
fp->Ncp_UL = Ncp; fp->Ncp_UL = Ncp;
fp->nb_antenna_ports_eNB = p_eNB; fp->nb_antenna_ports_eNB = p_eNB;
fp->threequarter_fs = 0; fp->threequarter_fs = threequarter_fs;
AssertFatal(cfg->phich_config.phich_resource.value<4, "Illegal phich_Resource\n"); AssertFatal(cfg->phich_config.phich_resource.value<4, "Illegal phich_Resource\n");
......
...@@ -744,13 +744,18 @@ extern "C" { ...@@ -744,13 +744,18 @@ extern "C" {
openair0_cfg[0].rx_gain_calib_table = calib_table_x310; openair0_cfg[0].rx_gain_calib_table = calib_table_x310;
switch ((int)openair0_cfg[0].sample_rate) { switch ((int)openair0_cfg[0].sample_rate) {
case 122880000: case 122880000:
// from usrp_time_offset // from usrp_time_offset
//openair0_cfg[0].samples_per_packet = 2048; //openair0_cfg[0].samples_per_packet = 2048;
openair0_cfg[0].tx_sample_advance = 15; //to be checked openair0_cfg[0].tx_sample_advance = 15; //to be checked
openair0_cfg[0].tx_bw = 80e6; openair0_cfg[0].tx_bw = 80e6;
openair0_cfg[0].rx_bw = 80e6; openair0_cfg[0].rx_bw = 80e6;
break; break;
case 92160000:
openair0_cfg[0].tx_sample_advance = 15; //to be checked
openair0_cfg[0].tx_bw = 80e6;
openair0_cfg[0].rx_bw = 80e6;
break;
case 61440000: case 61440000:
// from usrp_time_offset // from usrp_time_offset
//openair0_cfg[0].samples_per_packet = 2048; //openair0_cfg[0].samples_per_packet = 2048;
...@@ -758,6 +763,11 @@ extern "C" { ...@@ -758,6 +763,11 @@ extern "C" {
openair0_cfg[0].tx_bw = 40e6; openair0_cfg[0].tx_bw = 40e6;
openair0_cfg[0].rx_bw = 40e6; openair0_cfg[0].rx_bw = 40e6;
break; break;
case 46080000:
openair0_cfg[0].tx_sample_advance = 15;
openair0_cfg[0].tx_bw = 40e6;
openair0_cfg[0].rx_bw = 40e6;
break;
case 30720000: case 30720000:
// from usrp_time_offset // from usrp_time_offset
//openair0_cfg[0].samples_per_packet = 2048; //openair0_cfg[0].samples_per_packet = 2048;
...@@ -765,6 +775,11 @@ extern "C" { ...@@ -765,6 +775,11 @@ extern "C" {
openair0_cfg[0].tx_bw = 20e6; openair0_cfg[0].tx_bw = 20e6;
openair0_cfg[0].rx_bw = 20e6; openair0_cfg[0].rx_bw = 20e6;
break; break;
case 23040000:
openair0_cfg[0].tx_sample_advance = 15;
openair0_cfg[0].tx_bw = 20e6;
openair0_cfg[0].rx_bw = 20e6;
break;
case 15360000: case 15360000:
//openair0_cfg[0].samples_per_packet = 2048; //openair0_cfg[0].samples_per_packet = 2048;
openair0_cfg[0].tx_sample_advance = 45; openair0_cfg[0].tx_sample_advance = 45;
......
...@@ -114,6 +114,7 @@ unsigned short config_frames[4] = {2,9,11,13}; ...@@ -114,6 +114,7 @@ unsigned short config_frames[4] = {2,9,11,13};
extern volatile int oai_exit; extern volatile int oai_exit;
extern int numerology; extern int numerology;
extern int fh_two_thread; extern int fh_two_thread;
extern char threequarter_fs;
extern void phy_init_RU(RU_t*); extern void phy_init_RU(RU_t*);
...@@ -1242,32 +1243,40 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) { ...@@ -1242,32 +1243,40 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
if (fp->threequarter_fs) { if (fp->threequarter_fs) {
cfg->sample_rate=23.04e6; cfg->sample_rate=23.04e6;
cfg->samples_per_frame = 230400; cfg->samples_per_frame = 230400;
cfg->tx_bw = 10e6;
cfg->rx_bw = 10e6;
} }
else { else {
cfg->sample_rate=30.72e6; cfg->sample_rate=30.72e6;
cfg->samples_per_frame = 307200; cfg->samples_per_frame = 307200;
cfg->tx_bw = 10e6;
cfg->rx_bw = 10e6;
} }
}else if(numerology == 1){ cfg->tx_bw = 10e6;
cfg->sample_rate=61.44e6; cfg->rx_bw = 10e6;
cfg->samples_per_frame = 307200; } else if(numerology == 1) {
if (fp->threequarter_fs) {
cfg->sample_rate=46.08e6;
cfg->samples_per_frame = 230400;
} else {
cfg->sample_rate=61.44e6;
cfg->samples_per_frame = 307200;
}
cfg->tx_bw = 20e6; cfg->tx_bw = 20e6;
cfg->rx_bw = 20e6; cfg->rx_bw = 20e6;
}else if(numerology == 2){ }else if(numerology == 2){
cfg->sample_rate=122.88e6; if (fp->threequarter_fs) {
cfg->samples_per_frame = 307200; cfg->sample_rate=92.16e6;
cfg->samples_per_frame = 230400;
} else {
cfg->sample_rate=122.88e6;
cfg->samples_per_frame = 307200;
}
cfg->tx_bw = 40e6; cfg->tx_bw = 40e6;
cfg->rx_bw = 40e6; cfg->rx_bw = 40e6;
}else{ }else{
printf("Wrong input for numerology %d\n setting to 20MHz normal CP configuration",numerology); printf("Wrong input for numerology %d\n setting to 20MHz normal CP configuration",numerology);
cfg->sample_rate=30.72e6; cfg->sample_rate=30.72e6;
cfg->samples_per_frame = 307200; cfg->samples_per_frame = 307200;
cfg->tx_bw = 10e6; cfg->tx_bw = 10e6;
cfg->rx_bw = 10e6; cfg->rx_bw = 10e6;
} }
} else if(fp->N_RB_DL == 50) { } else if(fp->N_RB_DL == 50) {
cfg->sample_rate=15.36e6; cfg->sample_rate=15.36e6;
cfg->samples_per_frame = 153600; cfg->samples_per_frame = 153600;
......
...@@ -133,7 +133,7 @@ static char UE_flag=0; ...@@ -133,7 +133,7 @@ static char UE_flag=0;
unsigned int mmapped_dma=0; unsigned int mmapped_dma=0;
int single_thread_flag=1; int single_thread_flag=1;
static char threequarter_fs=0; char threequarter_fs=0;
uint32_t downlink_frequency[MAX_NUM_CCs][4]; uint32_t downlink_frequency[MAX_NUM_CCs][4];
int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; int32_t uplink_frequency_offset[MAX_NUM_CCs][4];
...@@ -754,35 +754,39 @@ void init_openair0() { ...@@ -754,35 +754,39 @@ void init_openair0() {
openair0_cfg[card].configFilename = NULL; openair0_cfg[card].configFilename = NULL;
if(frame_parms[0]->N_RB_DL == 100) { if(frame_parms[0]->N_RB_DL == 100) {
if(numerology == 0) if(numerology == 0) {
{ if (frame_parms[0]->threequarter_fs) {
if (frame_parms[0]->threequarter_fs) { openair0_cfg[card].sample_rate=23.04e6;
openair0_cfg[card].sample_rate=23.04e6; openair0_cfg[card].samples_per_frame = 230400;
openair0_cfg[card].samples_per_frame = 230400; } else {
openair0_cfg[card].sample_rate=30.72e6;
openair0_cfg[card].samples_per_frame = 307200;
}
openair0_cfg[card].tx_bw = 10e6; openair0_cfg[card].tx_bw = 10e6;
openair0_cfg[card].rx_bw = 10e6; openair0_cfg[card].rx_bw = 10e6;
} else if(numerology == 1) {
if (frame_parms[0]->threequarter_fs) {
openair0_cfg[card].sample_rate=46.08e6;
openair0_cfg[card].samples_per_frame = 230400;
} else {
openair0_cfg[card].sample_rate=61.44e6;
openair0_cfg[card].samples_per_frame = 307200;
}
openair0_cfg[card].tx_bw = 20e6;
openair0_cfg[card].rx_bw = 20e6;
} else if(numerology == 2) {
if (frame_parms[0]->threequarter_fs) {
openair0_cfg[card].sample_rate=92.16e6;
openair0_cfg[card].samples_per_frame = 230400;
} else {
openair0_cfg[card].sample_rate=122.88e6;
openair0_cfg[card].samples_per_frame = 307200;
}
openair0_cfg[card].tx_bw = 40e6;
openair0_cfg[card].rx_bw = 40e6;
} else { } else {
openair0_cfg[card].sample_rate=30.72e6; printf("Un supported numerology\n");
openair0_cfg[card].samples_per_frame = 307200;
openair0_cfg[card].tx_bw = 10e6;
openair0_cfg[card].rx_bw = 10e6;
} }
}else if(numerology == 1)
{
openair0_cfg[card].sample_rate=61.44e6;
openair0_cfg[card].samples_per_frame = 307200;
openair0_cfg[card].tx_bw = 20e6;
openair0_cfg[card].rx_bw = 20e6;
}else if(numerology == 2)
{
openair0_cfg[card].sample_rate=122.88e6;
openair0_cfg[card].samples_per_frame = 307200;
openair0_cfg[card].tx_bw = 20e6;
openair0_cfg[card].rx_bw = 20e6;
}else
{
printf("Un supported numerology\n");
}
} else if(frame_parms[0]->N_RB_DL == 50) { } else if(frame_parms[0]->N_RB_DL == 50) {
openair0_cfg[card].sample_rate=15.36e6; openair0_cfg[card].sample_rate=15.36e6;
openair0_cfg[card].samples_per_frame = 153600; openair0_cfg[card].samples_per_frame = 153600;
...@@ -1292,7 +1296,7 @@ int main( int argc, char **argv ) ...@@ -1292,7 +1296,7 @@ int main( int argc, char **argv )
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
#ifdef OAI_USRP || defined(OAI_ADRV9371_ZC706) #if defined(OAI_USRP) || defined(OAI_ADRV9371_ZC706)
UE[CC_id]->hw_timing_advance = timing_advance; UE[CC_id]->hw_timing_advance = timing_advance;
#else #else
UE[CC_id]->hw_timing_advance = 160; UE[CC_id]->hw_timing_advance = 160;
......
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