Merge remote-tracking branch 'origin/NTN_FR2_bands' into integration_2026_w11 (!3414)
Added NTN-FR2 FDD bands defined in release 18 in Ka-band range * NTN-FR2 bands 510, 511, 512 added. TS 38.101-5 v 18.9 defines these 3 FR2-FDD bands for NTN operation. * These bands are defined in Ka band range (17.3Ghz - 31Ghz). * Tested using the added conf files using RFSIM and GEO configuration. * There were some inconsistencies observed when testing with RFSimulator before UE Syncs to the gNB in terms of samples being written for FR2 configurations. Once the UE syncs, the inconsistencies disappear. * this is the problem - UE writes incorrect number of samples and gNB complains about getting samples in past * The above inconsistencies were also fixed in this merge request. * These commits solving above inconsistencies were removed from this MR and a different MR was raised. MR with those commits: !3928.
This commit is contained in:
+125
-127
@@ -178,92 +178,97 @@ uint8_t set_ssb_case(int scs, int nr_band)
|
||||
return ssb_case;
|
||||
}
|
||||
|
||||
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) (Rel.17)
|
||||
// Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) (Rel.18)
|
||||
// Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101)
|
||||
// Notes:
|
||||
// - N_OFFs for bands from 80 to 89 and band 95 is referred to UL
|
||||
// - Frequencies are expressed in KHz
|
||||
// - col: NR_band ul_min ul_max dl_min dl_max step N_OFFs_DL deltaf_raster
|
||||
const nr_bandentry_t nr_bandtable[] = {{1, 1920000, 1980000, 2110000, 2170000, 20, 422000, 100},
|
||||
{2, 1850000, 1910000, 1930000, 1990000, 20, 386000, 100},
|
||||
{3, 1710000, 1785000, 1805000, 1880000, 20, 361000, 100},
|
||||
{5, 824000, 849000, 869000, 894000, 20, 173800, 100},
|
||||
{7, 2500000, 2570000, 2620000, 2690000, 20, 524000, 100},
|
||||
{8, 880000, 915000, 925000, 960000, 20, 185000, 100},
|
||||
{12, 699000, 716000, 729000, 746000, 20, 145800, 100},
|
||||
{13, 777000, 787000, 746000, 756000, 20, 149200, 100},
|
||||
{14, 788000, 798000, 758000, 768000, 20, 151600, 100},
|
||||
{18, 815000, 830000, 860000, 875000, 20, 172000, 100},
|
||||
{20, 832000, 862000, 791000, 821000, 20, 158200, 100},
|
||||
{24, 1627500, 1656500, 1526000, 1536000, 20, 305000, 100},
|
||||
{25, 1850000, 1915000, 1930000, 1995000, 20, 386000, 100},
|
||||
{26, 814000, 849000, 859000, 894000, 20, 171800, 100},
|
||||
{28, 703000, 758000, 758000, 813000, 20, 151600, 100},
|
||||
{29, 000, 000, 717000, 728000, 20, 143400, 100},
|
||||
{30, 2305000, 2315000, 2350000, 2360000, 20, 470000, 100},
|
||||
{34, 2010000, 2025000, 2010000, 2025000, 20, 402000, 100},
|
||||
{38, 2570000, 2620000, 2570000, 2630000, 20, 514000, 100},
|
||||
{39, 1880000, 1920000, 1880000, 1920000, 20, 376000, 100},
|
||||
{40, 2300000, 2400000, 2300000, 2400000, 20, 460000, 100},
|
||||
{41, 2496000, 2690000, 2496000, 2690000, 3, 499200, 15},
|
||||
{41, 2496000, 2690000, 2496000, 2690000, 6, 499200, 30},
|
||||
{46, 5150000, 5925000, 5150000, 5925000, 1, 743334, 15},
|
||||
{47, 5855000, 5925000, 5855000, 5925000, 1, 790334, 15},
|
||||
{48, 3550000, 3700000, 3550000, 3700000, 1, 636667, 15},
|
||||
{48, 3550000, 3700000, 3550000, 3700000, 2, 636668, 30},
|
||||
{50, 1432000, 1517000, 1432000, 1517000, 20, 286400, 100},
|
||||
{51, 1427000, 1432000, 1427000, 1432000, 20, 285400, 100},
|
||||
{53, 2483500, 2495000, 2483500, 2495000, 20, 496700, 100},
|
||||
{65, 1920000, 2010000, 2110000, 2200000, 20, 422000, 100},
|
||||
{66, 1710000, 1780000, 2110000, 2200000, 20, 422000, 100},
|
||||
{67, 000, 000, 738000, 758000, 20, 147600, 100},
|
||||
{70, 1695000, 1710000, 1995000, 2020000, 20, 399000, 100},
|
||||
{71, 663000, 698000, 617000, 652000, 20, 123400, 100},
|
||||
{74, 1427000, 1470000, 1475000, 1518000, 20, 295000, 100},
|
||||
{75, 000, 000, 1432000, 1517000, 20, 286400, 100},
|
||||
{76, 000, 000, 1427000, 1432000, 20, 285400, 100},
|
||||
{77, 3300000, 4200000, 3300000, 4200000, 1, 620000, 15},
|
||||
{77, 3300000, 4200000, 3300000, 4200000, 2, 620000, 30},
|
||||
{78, 3300000, 3800000, 3300000, 3800000, 1, 620000, 15},
|
||||
{78, 3300000, 3800000, 3300000, 3800000, 2, 620000, 30},
|
||||
{79, 4400010, 5000000, 4400010, 5000000, 1, 693334, 15},
|
||||
{79, 4400010, 5000000, 4400010, 5000000, 2, 693334, 30},
|
||||
{80, 1710000, 1785000, 000, 000, 20, 342000, 100},
|
||||
{81, 880000, 915000, 000, 000, 20, 176000, 100},
|
||||
{82, 832000, 862000, 000, 000, 20, 166400, 100},
|
||||
{83, 703000, 748000, 000, 000, 20, 140600, 100},
|
||||
{84, 1920000, 1980000, 000, 000, 20, 384000, 100},
|
||||
{85, 698000, 716000, 728000, 746000, 20, 145600, 100},
|
||||
{86, 1710000, 1785000, 000, 000, 20, 342000, 100},
|
||||
{89, 824000, 849000, 000, 000, 20, 342000, 100},
|
||||
{90, 2496000, 2690000, 2496000, 2690000, 3, 499200, 15},
|
||||
{90, 2496000, 2690000, 2496000, 2690000, 6, 499200, 30},
|
||||
{90, 2496000, 2690000, 2496000, 2690000, 20, 499200, 100},
|
||||
{91, 832000, 862000, 1427000, 1432000, 20, 285400, 100},
|
||||
{92, 832000, 862000, 1432000, 1517000, 20, 286400, 100},
|
||||
{93, 880000, 915000, 1427000, 1432000, 20, 285400, 100},
|
||||
{94, 880000, 915000, 1432000, 1517000, 20, 286400, 100},
|
||||
{95, 2010000, 2025000, 000, 000, 20, 402000, 100},
|
||||
{96, 5925000, 7125000, 5925000, 7125000, 1, 795000, 15},
|
||||
{100, 874400, 880000, 919400, 925000, 20, 174880, 100},
|
||||
{101, 1900000, 1910000, 1900000, 1910000, 20, 380000, 100},
|
||||
{102, 5925000, 6425000, 5925000, 6425000, 1, 795000, 15},
|
||||
{104, 6425000, 7125000, 6425000, 7125000, 1, 828334, 15},
|
||||
{104, 6425000, 7125000, 6425000, 7125000, 2, 828334, 30},
|
||||
{254, 1610000, 1626500, 2483500, 2500000, 20, 496700, 100},
|
||||
{254, 1610000, 1626500, 2483500, 2500000, 2, 496700, 10},
|
||||
{255, 1626500, 1660500, 1525000, 1559000, 20, 305000, 100},
|
||||
{255, 1626500, 1660500, 1525000, 1559000, 2, 305000, 10},
|
||||
{256, 1980000, 2010000, 2170000, 2200000, 20, 434000, 100},
|
||||
{256, 1980000, 2010000, 2170000, 2200000, 2, 434000, 10},
|
||||
{257, 26500020, 29500000, 26500020, 29500000, 1, 2054166, 60},
|
||||
{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}};
|
||||
// - col: NR_band ul_min ul_max dl_min dl_max ul_stepsize dl_stepsize N_OFFs_UL N_OFFs_DL deltaf_raster
|
||||
const nr_bandentry_t nr_bandtable[] = {{1, 1920000, 1980000, 2110000, 2170000, 20, 20, 384000, 422000, 100},
|
||||
{2, 1850000, 1910000, 1930000, 1990000, 20, 20, 370000, 386000, 100},
|
||||
{3, 1710000, 1785000, 1805000, 1880000, 20, 20, 342000, 361000, 100},
|
||||
{5, 824000, 849000, 869000, 894000, 20, 20, 164800, 173800, 100},
|
||||
{7, 2500000, 2570000, 2620000, 2690000, 20, 20, 500000, 524000, 100},
|
||||
{8, 880000, 915000, 925000, 960000, 20, 20, 176000, 185000, 100},
|
||||
{12, 699000, 716000, 729000, 746000, 20, 20, 139800, 145800, 100},
|
||||
{13, 777000, 787000, 746000, 756000, 20, 20, 155400, 149200, 100},
|
||||
{14, 788000, 798000, 758000, 768000, 20, 20, 157600, 151600, 100},
|
||||
{18, 815000, 830000, 860000, 875000, 20, 20, 163000, 172000, 100},
|
||||
{20, 832000, 862000, 791000, 821000, 20, 20, 166400, 158200, 100},
|
||||
{24, 1626500, 1660500, 1525000, 1559000, 20, 20, 325300, 305000, 100},
|
||||
{25, 1850000, 1915000, 1930000, 1995000, 20, 20, 370000, 386000, 100},
|
||||
{26, 814000, 849000, 859000, 894000, 20, 20, 162800, 171800, 100},
|
||||
{28, 703000, 748000, 758000, 803000, 20, 20, 140600, 151600, 100},
|
||||
{29, 000, 000, 717000, 728000, 0, 20, 0, 143400, 100},
|
||||
{30, 2305000, 2315000, 2350000, 2360000, 20, 20, 461000, 470000, 100},
|
||||
{34, 2010000, 2025000, 2010000, 2025000, 20, 20, 402000, 402000, 100},
|
||||
{38, 2570000, 2620000, 2570000, 2620000, 20, 20, 514000, 514000, 100},
|
||||
{39, 1880000, 1920000, 1880000, 1920000, 20, 20, 376000, 376000, 100},
|
||||
{40, 2300000, 2400000, 2300000, 2400000, 20, 20, 460000, 460000, 100},
|
||||
{41, 2496000, 2690000, 2496000, 2690000, 3, 3, 499200, 499200, 15},
|
||||
{41, 2496000, 2690000, 2496000, 2690000, 6, 6, 499200, 499200, 30},
|
||||
{46, 5150000, 5925000, 5150000, 5925000, 1, 1, 743334, 743334, 15},
|
||||
{47, 5855000, 5925000, 5855000, 5925000, 1, 1, 790334, 790334, 15},
|
||||
{48, 3550000, 3700000, 3550000, 3700000, 1, 1, 636667, 636667, 15},
|
||||
{48, 3550000, 3700000, 3550000, 3700000, 2, 2, 636668, 636668, 30},
|
||||
{50, 1432000, 1517000, 1432000, 1517000, 20, 20, 286400, 286400, 100},
|
||||
{51, 1427000, 1432000, 1427000, 1432000, 20, 20, 285400, 285400, 100},
|
||||
{53, 2483500, 2495000, 2483500, 2495000, 20, 20, 496700, 496700, 100},
|
||||
{65, 1920000, 2010000, 2110000, 2200000, 20, 20, 384000, 422000, 100},
|
||||
{66, 1710000, 1780000, 2110000, 2200000, 20, 20, 342000, 422000, 100},
|
||||
{67, 000, 000, 738000, 758000, 0, 20, 0, 147600, 100},
|
||||
{70, 1695000, 1710000, 1995000, 2020000, 20, 20, 339000, 399000, 100},
|
||||
{71, 663000, 698000, 617000, 652000, 20, 20, 132600, 123400, 100},
|
||||
{74, 1427000, 1470000, 1475000, 1518000, 20, 20, 285400, 295000, 100},
|
||||
{75, 000, 000, 1432000, 1517000, 0, 20, 0, 286400, 100},
|
||||
{76, 000, 000, 1427000, 1432000, 0, 20, 0, 285400, 100},
|
||||
{77, 3300000, 4200000, 3300000, 4200000, 1, 1, 620000, 620000, 15},
|
||||
{77, 3300000, 4200000, 3300000, 4200000, 2, 2, 620000, 620000, 30},
|
||||
{78, 3300000, 3800000, 3300000, 3800000, 1, 1, 620000, 620000, 15},
|
||||
{78, 3300000, 3800000, 3300000, 3800000, 2, 2, 620000, 620000, 30},
|
||||
{79, 4400000, 5000000, 4400000, 5000000, 1, 1, 693334, 693334, 15},
|
||||
{79, 4400000, 5000000, 4400000, 5000000, 2, 2, 693334, 693334, 30},
|
||||
{80, 1710000, 1785000, 000, 000, 20, 0, 342000, 0, 100},
|
||||
{81, 880000, 915000, 000, 000, 20, 0, 176000, 0, 100},
|
||||
{82, 832000, 862000, 000, 000, 20, 0, 166400, 0, 100},
|
||||
{83, 703000, 748000, 000, 000, 20, 0, 140600, 0, 100},
|
||||
{84, 1920000, 1980000, 000, 000, 20, 0, 384000, 0, 100},
|
||||
{85, 698000, 716000, 728000, 746000, 20, 20, 139600, 145600, 100},
|
||||
{86, 1710000, 1780000, 000, 000, 20, 0, 342000, 0, 100},
|
||||
{89, 824000, 849000, 000, 000, 20, 0, 342000, 0, 100},
|
||||
{90, 2496000, 2690000, 2496000, 2690000, 3, 3, 499200, 499200, 15},
|
||||
{90, 2496000, 2690000, 2496000, 2690000, 6, 6, 499200, 499200, 30},
|
||||
{90, 2496000, 2690000, 2496000, 2690000, 20, 20, 499200, 499200, 100},
|
||||
{91, 832000, 862000, 1427000, 1432000, 20, 20, 166400, 285400, 100},
|
||||
{92, 832000, 862000, 1432000, 1517000, 20, 20, 166400, 286400, 100},
|
||||
{93, 880000, 915000, 1427000, 1432000, 20, 20, 176000, 285400, 100},
|
||||
{94, 880000, 915000, 1432000, 1517000, 20, 20, 176000, 286400, 100},
|
||||
{95, 2010000, 2025000, 000, 000, 20, 20, 402000, 402000, 100},
|
||||
{96, 5925000, 7125000, 5925000, 7125000, 1, 1, 795000, 795000, 15},
|
||||
{100, 874400, 880000, 919400, 925000, 20, 20, 174880, 174880, 100},
|
||||
{101, 1900000, 1910000, 1900000, 1910000, 20, 20, 380000, 380000, 100},
|
||||
{102, 5925000, 6425000, 5925000, 6425000, 1, 1, 795000, 795000, 15},
|
||||
{104, 6425000, 7125000, 6425000, 7125000, 1, 1, 828334, 828334, 15},
|
||||
{104, 6425000, 7125000, 6425000, 7125000, 2, 2, 828334, 828334, 30},
|
||||
{254, 1610000, 1626500, 2483500, 2500000, 20, 20, 322000, 496700, 100},
|
||||
{254, 1610000, 1626500, 2483500, 2500000, 2, 2, 322000, 496700, 10},
|
||||
{255, 1626500, 1660500, 1525000, 1559000, 20, 20, 325300, 305000, 100},
|
||||
{255, 1626500, 1660500, 1525000, 1559000, 2, 2, 325300, 305000, 10},
|
||||
{256, 1980000, 2010000, 2170000, 2200000, 20, 20, 396000, 434000, 100},
|
||||
{256, 1980000, 2010000, 2170000, 2200000, 2, 2, 396000, 434000, 10},
|
||||
{257, 26500020, 29500000, 26500020, 29500000, 1, 1, 2054166, 2054166, 60},
|
||||
{257, 26500080, 29500000, 26500080, 29500000, 2, 2, 2054167, 2054167, 120},
|
||||
{258, 24250080, 27500000, 24250080, 27500000, 1, 1, 2016667, 2016667, 60},
|
||||
{258, 24250080, 27500000, 24250080, 27500000, 2, 2, 2016667, 2016667, 120},
|
||||
{260, 37000020, 40000000, 37000020, 40000000, 1, 1, 2229166, 2229166, 60},
|
||||
{260, 37000080, 40000000, 37000080, 40000000, 2, 2, 2229167, 2229167, 120},
|
||||
{261, 27500040, 28350000, 27500040, 28350000, 1, 1, 2070833, 2070833, 60},
|
||||
{261, 27500040, 28350000, 27500040, 28350000, 2, 2, 2070833, 2070833, 120},
|
||||
{510, 27500000, 28350000, 17300000, 20200000, 1, 4, 2070833, 1553336, 60},
|
||||
{510, 27500000, 28350000, 17300000, 20200000, 2, 8, 2070833, 1553336, 120},
|
||||
{511, 28350000, 30000000, 17300000, 20200000, 1, 4, 2084999, 1553336, 60},
|
||||
{511, 28350000, 30000000, 17300000, 20200000, 2, 8, 2084999, 1553336, 120},
|
||||
{512, 27500000, 30000000, 17300000, 20200000, 1, 4, 2070833, 1553336, 60},
|
||||
{512, 27500000, 30000000, 17300000, 20200000, 2, 8, 2070833, 1553336, 120}};
|
||||
|
||||
// synchronization raster per band tables (Rel.17)
|
||||
// (38.101-1 Table 5.4.3.3-1 and 38.101-2 Table 5.4.3.3-1)
|
||||
@@ -341,6 +346,13 @@ const sync_raster_t sync_raster[] = {
|
||||
{260, 4, 22996, 2, 23164},
|
||||
{261, 3, 22446, 1, 22492},
|
||||
{261, 4, 22446, 2, 22490},
|
||||
{510, 3, 17448, 12, 19428},
|
||||
{510, 4, 17472, 24, 19416},
|
||||
{511, 3, 17448, 12, 19428},
|
||||
{511, 4, 17472, 24, 19416},
|
||||
{512, 3, 17448, 12, 19428},
|
||||
{512, 4, 17472, 24, 19416},
|
||||
/***************************/
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@@ -542,14 +554,6 @@ int get_nb_periods_per_frame(uint8_t tdd_period)
|
||||
return nb_periods_per_frame;
|
||||
}
|
||||
|
||||
void get_delta_arfcn(int i, uint32_t nrarfcn, uint64_t N_OFFs)
|
||||
{
|
||||
uint32_t delta_arfcn = nrarfcn - N_OFFs;
|
||||
|
||||
if(delta_arfcn % (nr_bandtable[i].step_size) != 0)
|
||||
LOG_E(NR_MAC, "nrarfcn %u is not on the channel raster for step size %lu\n", nrarfcn, nr_bandtable[i].step_size);
|
||||
}
|
||||
|
||||
uint32_t to_nrarfcn(uint64_t CarrierFreq)
|
||||
{
|
||||
uint64_t CarrierFreq_by_1k = CarrierFreq / 1000;
|
||||
@@ -580,7 +584,6 @@ uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t nrarfcn)
|
||||
int deltaFglobal = 5;
|
||||
uint32_t N_REF_Offs = 0;
|
||||
uint64_t F_REF_Offs_khz = 0;
|
||||
uint64_t N_OFFs, frequency, freq_min;
|
||||
int i = get_nr_table_idx(nr_bandP, scs_index);
|
||||
|
||||
if (nrarfcn > 599999 && nrarfcn < 2016667) {
|
||||
@@ -594,42 +597,30 @@ uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t nrarfcn)
|
||||
F_REF_Offs_khz = 24250080;
|
||||
}
|
||||
|
||||
int32_t delta_duplex = get_delta_duplex(nr_bandP, scs_index);
|
||||
// First check if the ARFCN is on the RASTER
|
||||
uint32_t stepsize = nr_bandtable[i].dl_stepsize;
|
||||
uint32_t N_OFFs = nr_bandtable[i].N_OFFs_DL;
|
||||
|
||||
if (delta_duplex <= 0){ // DL band >= UL band
|
||||
if (nrarfcn >= nr_bandtable[i].N_OFFs_DL){ // is TDD of FDD DL
|
||||
N_OFFs = nr_bandtable[i].N_OFFs_DL;
|
||||
freq_min = nr_bandtable[i].dl_min;
|
||||
} else {// is FDD UL
|
||||
N_OFFs = nr_bandtable[i].N_OFFs_DL + delta_duplex/deltaFglobal;
|
||||
freq_min = nr_bandtable[i].ul_min;
|
||||
}
|
||||
} else { // UL band > DL band
|
||||
if (nrarfcn >= nr_bandtable[i].N_OFFs_DL + delta_duplex / deltaFglobal){ // is FDD UL
|
||||
N_OFFs = nr_bandtable[i].N_OFFs_DL + delta_duplex / deltaFglobal;
|
||||
freq_min = nr_bandtable[i].ul_min;
|
||||
} else { // is FDD DL
|
||||
N_OFFs = nr_bandtable[i].N_OFFs_DL;
|
||||
freq_min = nr_bandtable[i].dl_min;
|
||||
if (nrarfcn >= nr_bandtable[i].N_OFFs_UL) {
|
||||
if (nr_bandtable[i].N_OFFs_UL > N_OFFs || nrarfcn < N_OFFs) {
|
||||
N_OFFs = nr_bandtable[i].N_OFFs_UL;
|
||||
stepsize = nr_bandtable[i].ul_stepsize;
|
||||
}
|
||||
}
|
||||
|
||||
LOG_D(NR_MAC, "Frequency from NR-ARFCN for N_OFFs %lu, duplex spacing %d KHz, deltaFglobal %d KHz\n",
|
||||
N_OFFs,
|
||||
delta_duplex,
|
||||
deltaFglobal);
|
||||
LOG_D(NR_MAC, "N_OFFs %u, deltaFglobal %d KHz, stepsize:%d\n", N_OFFs, deltaFglobal, stepsize);
|
||||
|
||||
AssertFatal(nrarfcn >= N_OFFs,"nrarfcn %u < N_OFFs[%d] %llu\n", nrarfcn, nr_bandtable[i].band, (long long unsigned int)N_OFFs);
|
||||
get_delta_arfcn(i, nrarfcn, N_OFFs);
|
||||
AssertFatal(nrarfcn >= N_OFFs,"nrarfcn %u < N_OFFs[%d] %u\n", nrarfcn, nr_bandtable[i].band, N_OFFs);
|
||||
|
||||
frequency = 1000 * (F_REF_Offs_khz + (nrarfcn - N_REF_Offs) * deltaFglobal);
|
||||
if ((nrarfcn - N_OFFs) % stepsize != 0)
|
||||
LOG_E(NR_MAC, "nrarfcn %u is not on the channel raster for step size %u. N_OFFS:%d\n",
|
||||
nrarfcn, stepsize, N_OFFs);
|
||||
|
||||
LOG_D(NR_MAC, "Computing frequency (nrarfcn %llu => %llu KHz (freq_min %llu KHz, NR band %d N_OFFs %llu))\n",
|
||||
uint64_t frequency = 1000 * (F_REF_Offs_khz + (nrarfcn - N_REF_Offs) * deltaFglobal);
|
||||
LOG_I(NR_MAC, "Computing frequency (nrarfcn %llu => %llu KHz, NR band %d\n",
|
||||
(unsigned long long)nrarfcn,
|
||||
(unsigned long long)frequency/1000,
|
||||
(unsigned long long)freq_min,
|
||||
nr_bandP,
|
||||
(unsigned long long)N_OFFs);
|
||||
nr_bandP);
|
||||
|
||||
return frequency;
|
||||
}
|
||||
@@ -1049,12 +1040,13 @@ uint32_t get_ssb_offset_to_pointA(uint32_t absoluteFrequencySSB,
|
||||
// only difference wrt NR-ARFCN is delta frequency 5kHz if f < 3 GHz for ARFCN
|
||||
uint32_t absolute_diff = (absoluteFrequencySSB - absoluteFrequencyPointA);
|
||||
const int scaling_5khz = absoluteFrequencyPointA < 600000 ? 3 : 1;
|
||||
const int scaling = frequency_range == FR2 ? 1 << (ssbSubcarrierSpacing - 2) : 1 << ssbSubcarrierSpacing;
|
||||
const int scaling = (absoluteFrequencyPointA >= 2016667) ? 1 << (ssbSubcarrierSpacing - 2) : 1 << ssbSubcarrierSpacing;
|
||||
const int scaled_abs_diff = absolute_diff / (scaling_5khz * scaling);
|
||||
// absoluteFrequencySSB is the central frequency of SSB which is made by 20RBs in total
|
||||
const int ssb_offset_point_a = ((scaled_abs_diff / 12) - 10) * scaling;
|
||||
const int ssb_offset_scaling = (frequency_range == FR2) ? 1 << (ssbSubcarrierSpacing - 2) : 1 << ssbSubcarrierSpacing;
|
||||
const int ssb_offset_point_a = ((scaled_abs_diff / 12) - 10) * ssb_offset_scaling;
|
||||
// Offset to point A needs to be divisible by scaling
|
||||
AssertFatal(ssb_offset_point_a % scaling == 0, "PRB offset %d not valid for scs %d\n", ssb_offset_point_a, ssbSubcarrierSpacing);
|
||||
AssertFatal(ssb_offset_point_a % ssb_offset_scaling == 0, "PRB offset %d not valid for scs %d\n", ssb_offset_point_a, ssbSubcarrierSpacing);
|
||||
AssertFatal(ssb_offset_point_a >= 0, "ssb offset is negative %d for scs %d\n", ssb_offset_point_a, ssbSubcarrierSpacing);
|
||||
return ssb_offset_point_a;
|
||||
}
|
||||
@@ -1358,11 +1350,14 @@ long rrc_get_max_nr_csrs(const int max_rbs, const long b_SRS)
|
||||
|
||||
frequency_range_t get_freq_range_from_freq(uint64_t freq)
|
||||
{
|
||||
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
// 3GPP TS 38.101-1,38.101-5 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
if (freq >= 410000000 && freq <= 7125000000)
|
||||
return FR1;
|
||||
|
||||
if (freq >= 24250000000 && freq <= 71000000000)
|
||||
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
// FR2 is from 24250 MHz to 71000 MHz
|
||||
// 3GPP TS 38.101-5 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
// FR2 for NTN is from 17300 Mhz to 30000 MHz
|
||||
if (freq >= 17300000000 && freq <= 71000000000)
|
||||
return FR2;
|
||||
|
||||
AssertFatal(false, "Undefined Frequency Range for frequency %ld Hz\n", freq);
|
||||
@@ -1373,8 +1368,11 @@ frequency_range_t get_freq_range_from_arfcn(uint32_t arfcn)
|
||||
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
if (arfcn >= 82000 && arfcn <= 875000)
|
||||
return FR1;
|
||||
|
||||
if (arfcn >= 2016667 && arfcn <= 2795832)
|
||||
// 3GPP TS 38.101-1 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
// FR2 is from 24250 MHz to 71000 MHz (from ARFCN 2016667)
|
||||
// 3GPP TS 38.101-5 Version 19.0.0 Table 5.1-1: Definition of frequency ranges
|
||||
// FR2 for NTN is from 17300 Mhz to 30000 MHz, from ARFCN 1553336 (Table 5.4.2.3-3)
|
||||
if (arfcn >= 1553336 && arfcn <= 2795832)
|
||||
return FR2;
|
||||
|
||||
AssertFatal(false, "Undefined Frequency Range for ARFCN %d\n", arfcn);
|
||||
|
||||
@@ -107,8 +107,10 @@ typedef struct nr_bandentry_s {
|
||||
uint64_t ul_max;
|
||||
uint64_t dl_min;
|
||||
uint64_t dl_max;
|
||||
uint64_t step_size;
|
||||
uint64_t N_OFFs_DL;
|
||||
uint8_t ul_stepsize;
|
||||
uint8_t dl_stepsize;
|
||||
uint32_t N_OFFs_UL;
|
||||
uint32_t N_OFFs_DL;
|
||||
uint8_t deltaf_raster;
|
||||
} nr_bandentry_t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user