Commit db629e6b authored by Raghavendra Dinavahi's avatar Raghavendra Dinavahi

NTN FDD FR1 bands added

Added support for NTN FDD FR1 bands 254, 255, 256 as specified in 3GPP TS 38.101-5
Conf files added for 15Khz, 5Mhz and 30Khz, 10Mhz configurations added for these bands
parent 220d851d
...@@ -194,8 +194,7 @@ int get_smallest_supported_bandwidth_index(int scs, frequency_range_t frequency_ ...@@ -194,8 +194,7 @@ int get_smallest_supported_bandwidth_index(int scs, frequency_range_t frequency_
// - 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
// - col: NR_band ul_min ul_max dl_min dl_max step N_OFFs_DL deltaf_raster // - col: NR_band ul_min ul_max dl_min dl_max step N_OFFs_DL deltaf_raster
const nr_bandentry_t nr_bandtable[] = { const nr_bandentry_t nr_bandtable[] = {{1, 1920000, 1980000, 2110000, 2170000, 20, 422000, 100},
{1, 1920000, 1980000, 2110000, 2170000, 20, 422000, 100},
{2, 1850000, 1910000, 1930000, 1990000, 20, 386000, 100}, {2, 1850000, 1910000, 1930000, 1990000, 20, 386000, 100},
{3, 1710000, 1785000, 1805000, 1880000, 20, 361000, 100}, {3, 1710000, 1785000, 1805000, 1880000, 20, 361000, 100},
{5, 824000, 849000, 869000, 894000, 20, 173800, 100}, {5, 824000, 849000, 869000, 894000, 20, 173800, 100},
...@@ -255,15 +254,20 @@ const nr_bandentry_t nr_bandtable[] = { ...@@ -255,15 +254,20 @@ 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},
{257,26500020,29500000,26500020,29500000, 1,2054166, 60}, {254, 1610000, 1626500, 2483500, 2500000, 20, 496700, 100},
{257,26500080,29500000,26500080,29500000, 2,2054167, 120}, {254, 1610000, 1626500, 2483500, 2500000, 2, 496700, 10},
{258,24250080,27500000,24250080,27500000, 1,2016667, 60}, {255, 1626500, 1660500, 1525000, 1559000, 20, 305000, 100},
{258,24250080,27500000,24250080,27500000, 2,2016667, 120}, {255, 1626500, 1660500, 1525000, 1559000, 2, 305000, 10},
{260,37000020,40000000,37000020,40000000, 1,2229166, 60}, {256, 1980000, 2010000, 2170000, 2200000, 20, 434000, 100},
{260,37000080,40000000,37000080,40000000, 2,2229167, 120}, {256, 1980000, 2010000, 2170000, 2200000, 2, 434000, 10},
{261,27500040,28350000,27500040,28350000, 1,2070833, 60}, {257, 26500020, 29500000, 26500020, 29500000, 1, 2054166, 60},
{261,27500040,28350000,27500040,28350000, 2,2070833, 120} {257, 26500080, 29500000, 26500080, 29500000, 2, 2054167, 120},
}; {258, 24250080, 27500000, 24250080, 27500000, 1, 2016667, 60},
{258, 24250080, 27500000, 24250080, 27500000, 2, 2016667, 120},
{260, 37000020, 40000000, 37000020, 40000000, 1, 2229166, 60},
{260, 37000080, 40000000, 37000080, 40000000, 2, 2229167, 120},
{261, 27500040, 28350000, 27500040, 28350000, 1, 2070833, 60},
{261, 27500040, 28350000, 27500040, 28350000, 2, 2070833, 120}};
// synchronization raster per band tables (Rel.15) // synchronization raster per band tables (Rel.15)
// (38.101-1 Table 5.4.3.3-1 and 38.101-2 Table 5.4.3.3-1) // (38.101-1 Table 5.4.3.3-1 and 38.101-2 Table 5.4.3.3-1)
...@@ -321,6 +325,11 @@ const sync_raster_t sync_raster[] = { ...@@ -321,6 +325,11 @@ const sync_raster_t sync_raster[] = {
{92, 0, 3584, 1, 3787}, {92, 0, 3584, 1, 3787},
{93, 0, 3572, 1, 3574}, {93, 0, 3572, 1, 3574},
{94, 0, 3584, 1, 3587}, {94, 0, 3584, 1, 3587},
{254, 0, 6215, 1, 6244},
{254, 1, 6218, 1, 6241},
{255, 0, 3818, 1, 3892},
{255, 1, 3824, 1, 3886},
{256, 0, 5429, 1, 5494},
{257, 3, 22388, 1, 22558}, {257, 3, 22388, 1, 22558},
{257, 4, 22390, 2, 22556}, {257, 4, 22390, 2, 22556},
{258, 3, 22257, 1, 22443}, {258, 3, 22257, 1, 22443},
......
...@@ -30,7 +30,7 @@ static const uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, ...@@ -30,7 +30,7 @@ static const uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3,
static const uint16_t nr_slots_per_subframe[MAX_NUM_SUBCARRIER_SPACING] = {1, 2, 4, 8, 16}; static const 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
static const int nr_ssb_table[54][3] = { static const 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},
...@@ -84,7 +84,12 @@ static const int nr_ssb_table[54][3] = { ...@@ -84,7 +84,12 @@ static const int nr_ssb_table[54][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},
{254, 15, nr_ssb_type_A},
{254, 30, nr_ssb_type_C},
{255, 15, nr_ssb_type_A},
{255, 30, nr_ssb_type_B},
{256, 15, nr_ssb_type_A}};
void set_Lmax(NR_DL_FRAME_PARMS *fp) { void set_Lmax(NR_DL_FRAME_PARMS *fp) {
// definition of Lmax according to ts 38.213 section 4.1 // definition of Lmax according to ts 38.213 section 4.1
......
...@@ -345,9 +345,6 @@ static void config_common(gNB_MAC_INST *nrmac, ...@@ -345,9 +345,6 @@ static void config_common(gNB_MAC_INST *nrmac,
} }
} }
uint32_t band = *frequencyInfoDL->frequencyBandList.list.array[0];
frequency_range = band < 100 ? FR1 : FR2;
frame_type_t frame_type = get_frame_type(*frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); frame_type_t frame_type = get_frame_type(*frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
nrmac->common_channels[0].frame_type = frame_type; nrmac->common_channels[0].frame_type = frame_type;
......
...@@ -542,7 +542,7 @@ void set_dl_maxmimolayers(NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig, ...@@ -542,7 +542,7 @@ void set_dl_maxmimolayers(NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig,
NR_SCS_SpecificCarrier_t *scs_carrier = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]; NR_SCS_SpecificCarrier_t *scs_carrier = scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0];
int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
const frequency_range_t freq_range = band < 100 ? FR1 : FR2; const frequency_range_t freq_range = band < 257 ? FR1 : FR2;
const int scs = scs_carrier->subcarrierSpacing; const int scs = scs_carrier->subcarrierSpacing;
const int bw_size = scs_carrier->carrierBandwidth; const int bw_size = scs_carrier->carrierBandwidth;
...@@ -2302,7 +2302,7 @@ NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const NR_ServingCellConfigCommon_t *scc, ...@@ -2302,7 +2302,7 @@ NR_BCCH_DL_SCH_Message_t *get_SIB1_NR(const NR_ServingCellConfigCommon_t *scc,
} }
const NR_FreqBandIndicatorNR_t band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; const NR_FreqBandIndicatorNR_t band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0];
frequency_range_t frequency_range = band < 100 ? FR1 : FR2; frequency_range_t frequency_range = band > 256 ? FR2 : FR1;
sib1->servingCellConfigCommon->downlinkConfigCommon.frequencyInfoDL.offsetToPointA = get_ssb_offset_to_pointA(*scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB, sib1->servingCellConfigCommon->downlinkConfigCommon.frequencyInfoDL.offsetToPointA = get_ssb_offset_to_pointA(*scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB,
scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA, scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencyPointA,
scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing, scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing,
......
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