Commit db98e4fd authored by Thomas Schlichter's avatar Thomas Schlichter

add support for band 255 and 256 according to TS 38.108

parent 41cc1344
...@@ -57,8 +57,8 @@ int get_supported_band_index(int scs, int band, int n_rbs){ ...@@ -57,8 +57,8 @@ int get_supported_band_index(int scs, int band, int n_rbs){
} }
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) // Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101 and TS 38.108)
// Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101) // Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101 and TS 38.108)
// Notes: // Notes:
// - N_OFFs for bands from 80 to 89 and band 95 is referred to UL // - N_OFFs for bands from 80 to 89 and band 95 is referred to UL
// - Frequencies are expressed in KHz // - Frequencies are expressed in KHz
...@@ -120,6 +120,8 @@ const nr_bandentry_t nr_bandtable[] = { ...@@ -120,6 +120,8 @@ const nr_bandentry_t nr_bandtable[] = {
{94, 880000, 915000, 1432000, 1517000, 20, 286400, 100}, {94, 880000, 915000, 1432000, 1517000, 20, 286400, 100},
{95, 2010000, 2025000, 000, 000, 20, 402000, 100}, {95, 2010000, 2025000, 000, 000, 20, 402000, 100},
{96, 5925000, 7125000, 5925000, 7125000, 1, 795000, 15}, {96, 5925000, 7125000, 5925000, 7125000, 1, 795000, 15},
{255, 1626500, 1660500, 1525000, 1559000, 20, 305000, 100},
{256, 1980000, 2010000, 2170000, 2200000, 20, 434000, 100},
{257,26500020,29500000,26500020,29500000, 1,2054166, 60}, {257,26500020,29500000,26500020,29500000, 1,2054166, 60},
{257,26500080,29500000,26500080,29500000, 2,2054167, 120}, {257,26500080,29500000,26500080,29500000, 2,2054167, 120},
{258,24250080,27500000,24250080,27500000, 1,2016667, 60}, {258,24250080,27500000,24250080,27500000, 1,2016667, 60},
...@@ -318,7 +320,7 @@ int32_t get_delta_duplex(int nr_bandP, uint8_t scs_index) ...@@ -318,7 +320,7 @@ int32_t get_delta_duplex(int nr_bandP, uint8_t scs_index)
uint16_t config_bandwidth(int mu, int nb_rb, int nr_band) uint16_t config_bandwidth(int mu, int nb_rb, int nr_band)
{ {
if (nr_band < 100) { //FR1 if (nr_band < 257) { //FR1
switch(mu) { switch(mu) {
case 0 : case 0 :
if (nb_rb<=25) if (nb_rb<=25)
...@@ -494,6 +496,7 @@ void get_samplerate_and_bw(int mu, ...@@ -494,6 +496,7 @@ void get_samplerate_and_bw(int mu,
*tx_bw = 50e6; *tx_bw = 50e6;
*rx_bw = 50e6; *rx_bw = 50e6;
} }
break;
case 216: case 216:
if (threequarter_fs) { if (threequarter_fs) {
*sample_rate=46.08e6; *sample_rate=46.08e6;
...@@ -546,6 +549,7 @@ void get_samplerate_and_bw(int mu, ...@@ -546,6 +549,7 @@ void get_samplerate_and_bw(int mu,
*tx_bw = 10e6; *tx_bw = 10e6;
*rx_bw = 10e6; *rx_bw = 10e6;
} }
break;
case 25: case 25:
if (threequarter_fs) { if (threequarter_fs) {
*sample_rate=5.76e6; *sample_rate=5.76e6;
......
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, 30e3, 60e3, 120e3, 240e3}; uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, 30e3, 60e3, 120e3, 240e3};
uint16_t nr_slots_per_subframe[MAX_NUM_SUBCARRIER_SPACING] = {1, 2, 4, 8, 16}; uint16_t nr_slots_per_subframe[MAX_NUM_SUBCARRIER_SPACING] = {1, 2, 4, 8, 16};
// Table 5.4.3.3-1 38-101 // Table 5.4.3.3-1 38.101 and 38.108
int nr_ssb_table[48][3] = { int nr_ssb_table[][3] = {
{1, 15, nr_ssb_type_A}, {1, 15, nr_ssb_type_A},
{2, 15, nr_ssb_type_A}, {2, 15, nr_ssb_type_A},
{3, 15, nr_ssb_type_A}, {3, 15, nr_ssb_type_A},
...@@ -76,7 +76,10 @@ int nr_ssb_table[48][3] = { ...@@ -76,7 +76,10 @@ int nr_ssb_table[48][3] = {
{92, 15, nr_ssb_type_A}, {92, 15, nr_ssb_type_A},
{93, 15, nr_ssb_type_A}, {93, 15, nr_ssb_type_A},
{94, 15, nr_ssb_type_A}, {94, 15, nr_ssb_type_A},
{96, 30, nr_ssb_type_C} {96, 30, nr_ssb_type_C},
{255, 15, nr_ssb_type_A},
{255, 30, nr_ssb_type_B},
{256, 15, nr_ssb_type_A},
}; };
......
...@@ -321,7 +321,7 @@ void config_common_ue(NR_UE_MAC_INST_t *mac, ...@@ -321,7 +321,7 @@ void config_common_ue(NR_UE_MAC_INST_t *mac,
} }
uint32_t band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; uint32_t band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
mac->frequency_range = band<100?FR1:FR2; mac->frequency_range = band<257?FR1:FR2;
frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
......
...@@ -229,7 +229,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts, ...@@ -229,7 +229,7 @@ void config_common(int Mod_idP, int pdsch_AntennaPorts, int pusch_AntennaPorts,
} }
uint32_t band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; uint32_t band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
frequency_range_t frequency_range = band<100?FR1:FR2; frequency_range_t frequency_range = band<257?FR1:FR2;
frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
RC.nrmac[Mod_idP]->common_channels[0].frame_type = frame_type; RC.nrmac[Mod_idP]->common_channels[0].frame_type = frame_type;
......
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