Added NTN-FR2 FDD bands defined in release 18. Bandtable modified.
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)
UL STEPSIZE, UL NOFFS added into band table
This commit is contained in:
+122
-125
@@ -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,7 +1040,7 @@ 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;
|
||||
@@ -1358,11 +1349,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 +1367,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;
|
||||
|
||||
|
||||
@@ -1184,6 +1184,7 @@ typedef struct {
|
||||
} nr_prach_info_3gpp_fr2_t;
|
||||
|
||||
// Table 6.3.3.2-4: Random access configurations for FR2 and unpaired spectrum
|
||||
// and NTN-FR2 and paired as defined in 38.211v18.06
|
||||
static const nr_prach_info_3gpp_fr2_t table_6_3_3_2_4_prachConfig_Index[256] = {
|
||||
// format, format, x, y, y, SFN_nbr, star_symb, slots_sfn, occ_slot,
|
||||
// duration
|
||||
@@ -1458,7 +1459,8 @@ int get_format0(uint8_t index, uint8_t unpaired, frequency_range_t frequency_ran
|
||||
if (frequency_range==FR1)
|
||||
format = table_6_3_3_2_2_prachConfig_Index[index].format;
|
||||
else
|
||||
AssertFatal(0==1,"no paired spectrum for FR2\n");
|
||||
// Table defined for NTN-FR2 and paired in 3GPP Spec 38.211v18.06
|
||||
format = table_6_3_3_2_4_prachConfig_Index[index].format;
|
||||
}
|
||||
return format;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user