additional check for absoluteFrequencySSB to be in channel raster and some cleanup of config files
This commit is contained in:
@@ -32,7 +32,7 @@ gNBs =
|
|||||||
# downlinkConfigCommon
|
# downlinkConfigCommon
|
||||||
#frequencyInfoDL
|
#frequencyInfoDL
|
||||||
# this is 2150 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
# this is 2150 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||||
absoluteFrequencySSB = 433096;
|
absoluteFrequencySSB = 432880;
|
||||||
dl_frequencyBand = 66;
|
dl_frequencyBand = 66;
|
||||||
# this is 2150 MHz
|
# this is 2150 MHz
|
||||||
dl_absoluteFrequencyPointA = 430000;
|
dl_absoluteFrequencyPointA = 430000;
|
||||||
|
|||||||
@@ -23,13 +23,6 @@ gNBs =
|
|||||||
do_SRS = 1;
|
do_SRS = 1;
|
||||||
min_rxtxtime = 5;
|
min_rxtxtime = 5;
|
||||||
|
|
||||||
pdcch_ConfigSIB1 = (
|
|
||||||
{
|
|
||||||
controlResourceSetZero = 12;
|
|
||||||
searchSpaceZero = 0;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
servingCellConfigCommon = (
|
servingCellConfigCommon = (
|
||||||
{
|
{
|
||||||
#spCellConfigCommon
|
#spCellConfigCommon
|
||||||
|
|||||||
@@ -26,13 +26,6 @@ gNBs =
|
|||||||
do_CSIRS = 1;
|
do_CSIRS = 1;
|
||||||
do_SRS = 0;
|
do_SRS = 0;
|
||||||
|
|
||||||
pdcch_ConfigSIB1 = (
|
|
||||||
{
|
|
||||||
controlResourceSetZero = 11;
|
|
||||||
searchSpaceZero = 0;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
servingCellConfigCommon = (
|
servingCellConfigCommon = (
|
||||||
{
|
{
|
||||||
#spCellConfigCommon
|
#spCellConfigCommon
|
||||||
|
|||||||
@@ -1117,7 +1117,7 @@ void config_security(gNB_RRC_INST *rrc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Section 5.4.3 of 38.101-1 and -2
|
// Section 5.4.3 of 38.101-1 and -2
|
||||||
void check_ssb_raster(long absolutefreqssb, int band, int scs)
|
void check_ssb_raster(uint64_t freq, int band, int scs)
|
||||||
{
|
{
|
||||||
int start_GSCN = 0, step_GSCN = 0, end_GSCN = 0;
|
int start_GSCN = 0, step_GSCN = 0, end_GSCN = 0;
|
||||||
for (int i = 0; i < sizeof(sync_raster) / 20; i++) {
|
for (int i = 0; i < sizeof(sync_raster) / 20; i++) {
|
||||||
@@ -1130,7 +1130,6 @@ void check_ssb_raster(long absolutefreqssb, int band, int scs)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
AssertFatal(start_GSCN != 0, "Couldn't find band %d with SCS %d\n", band, scs);
|
AssertFatal(start_GSCN != 0, "Couldn't find band %d with SCS %d\n", band, scs);
|
||||||
uint64_t freq = from_nrarfcn(band, scs, absolutefreqssb);
|
|
||||||
int GSCN;
|
int GSCN;
|
||||||
if (freq <= 3000000000) {
|
if (freq <= 3000000000) {
|
||||||
int N = 0;
|
int N = 0;
|
||||||
@@ -1142,29 +1141,29 @@ void check_ssb_raster(long absolutefreqssb, int band, int scs)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
AssertFatal(N != 0, "absoluteFrequencySSB %ld (%lu Hz) not on the synchronization raster (N * 1200kHz + M * 50 kHz)\n",
|
AssertFatal(N != 0, "SSB frequency %lu Hz not on the synchronization raster (N * 1200kHz + M * 50 kHz)\n",
|
||||||
absolutefreqssb, freq);
|
freq);
|
||||||
GSCN = (3 * N) + (M - 3) / 2;
|
GSCN = (3 * N) + (M - 3) / 2;
|
||||||
}
|
}
|
||||||
else if (freq <= 24250000000) {
|
else if (freq <= 24250000000) {
|
||||||
AssertFatal((freq - 3000000000) % 1440000 == 0,
|
AssertFatal((freq - 3000000000) % 1440000 == 0,
|
||||||
"absoluteFrequencySSB %ld (%lu Hz) not on the synchronization raster (3000 MHz + N * 1.44 MHz)\n",
|
"SSB frequency %lu Hz not on the synchronization raster (3000 MHz + N * 1.44 MHz)\n",
|
||||||
absolutefreqssb, freq);
|
freq);
|
||||||
GSCN = ((freq - 3000000000) / 1440000) + 7499;
|
GSCN = ((freq - 3000000000) / 1440000) + 7499;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
AssertFatal((freq - 24250080000) % 17280000 == 0,
|
AssertFatal((freq - 24250080000) % 17280000 == 0,
|
||||||
"absoluteFrequencySSB %ld (%lu Hz) not on the synchronization raster (24250.08 MHz + N * 17.28 MHz)\n",
|
"SSB frequency %lu Hz not on the synchronization raster (24250.08 MHz + N * 17.28 MHz)\n",
|
||||||
absolutefreqssb, freq);
|
freq);
|
||||||
GSCN = ((freq - 24250080000) / 17280000) + 22256;
|
GSCN = ((freq - 24250080000) / 17280000) + 22256;
|
||||||
}
|
}
|
||||||
AssertFatal(GSCN >= start_GSCN && GSCN <= end_GSCN,
|
AssertFatal(GSCN >= start_GSCN && GSCN <= end_GSCN,
|
||||||
"GSCN %d corresponding to absoluteFrequencySSB %ld does not belong to GSCN range for band %d\n",
|
"GSCN %d corresponding to SSB frequency %lu does not belong to GSCN range for band %d\n",
|
||||||
GSCN, absolutefreqssb, band);
|
GSCN, freq, band);
|
||||||
int rel_GSCN = GSCN - start_GSCN;
|
int rel_GSCN = GSCN - start_GSCN;
|
||||||
AssertFatal(rel_GSCN % step_GSCN == 0,
|
AssertFatal(rel_GSCN % step_GSCN == 0,
|
||||||
"GSCN %d corresponding to absoluteFrequencySSB %ld not in accordance with GSCN step for band %d\n",
|
"GSCN %d corresponding to SSB freqyency %lu not in accordance with GSCN step for band %d\n",
|
||||||
GSCN, absolutefreqssb, band);
|
GSCN, freq, band);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
||||||
@@ -1232,8 +1231,13 @@ void RCconfig_NRRRC(MessageDef *msg_p, uint32_t i, gNB_RRC_INST *rrc)
|
|||||||
(int)scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth,
|
(int)scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth,
|
||||||
(int)scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.preambleReceivedTargetPower);
|
(int)scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->rach_ConfigGeneric.preambleReceivedTargetPower);
|
||||||
// SSB of the PCell is always on the sync raster
|
// SSB of the PCell is always on the sync raster
|
||||||
|
uint64_t ssb_freq = from_nrarfcn(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0],
|
||||||
|
*scc->ssbSubcarrierSpacing,
|
||||||
|
*scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB);
|
||||||
|
LOG_I(RRC, "absoluteFrequencySSB %ld corresponds to %lu Hz\n",
|
||||||
|
*scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB, ssb_freq);
|
||||||
if (get_softmodem_params()->sa)
|
if (get_softmodem_params()->sa)
|
||||||
check_ssb_raster(*scc->downlinkConfigCommon->frequencyInfoDL->absoluteFrequencySSB,
|
check_ssb_raster(ssb_freq,
|
||||||
*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0],
|
*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0],
|
||||||
*scc->ssbSubcarrierSpacing);
|
*scc->ssbSubcarrierSpacing);
|
||||||
fix_scc(scc, ssb_bitmap);
|
fix_scc(scc, ssb_bitmap);
|
||||||
|
|||||||
@@ -2335,17 +2335,16 @@ uint64_t from_nrarfcn(int nr_bandP,
|
|||||||
AssertFatal(nrarfcn >= N_OFFs,"nrarfcn %u < N_OFFs[%d] %llu\n", nrarfcn, nr_bandtable[i].band, (long long unsigned int)N_OFFs);
|
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);
|
get_delta_arfcn(i, nrarfcn, N_OFFs);
|
||||||
|
|
||||||
frequency = 1000*(F_REF_Offs_khz + (nrarfcn - N_REF_Offs) * deltaFglobal);
|
frequency = 1000 * (F_REF_Offs_khz + (nrarfcn - N_REF_Offs) * deltaFglobal);
|
||||||
|
|
||||||
LOG_I(NR_MAC, "Computing frequency (pointA %llu => %llu KHz (freq_min %llu KHz, NR band %d N_OFFs %llu))\n",
|
LOG_D(NR_MAC, "Computing frequency (nrarfcn %llu => %llu KHz (freq_min %llu KHz, NR band %d N_OFFs %llu))\n",
|
||||||
(unsigned long long)nrarfcn,
|
(unsigned long long)nrarfcn,
|
||||||
(unsigned long long)frequency/1000,
|
(unsigned long long)frequency/1000,
|
||||||
(unsigned long long)freq_min,
|
(unsigned long long)freq_min,
|
||||||
nr_bandP,
|
nr_bandP,
|
||||||
(unsigned long long)N_OFFs);
|
(unsigned long long)N_OFFs);
|
||||||
|
|
||||||
return frequency;
|
return frequency;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void nr_get_tbs_dl(nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu,
|
void nr_get_tbs_dl(nfapi_nr_dl_tti_pdsch_pdu *pdsch_pdu,
|
||||||
|
|||||||
@@ -25,13 +25,6 @@ gNBs =
|
|||||||
sib1_tda = 15;
|
sib1_tda = 15;
|
||||||
min_rxtxtime = 6;
|
min_rxtxtime = 6;
|
||||||
|
|
||||||
pdcch_ConfigSIB1 = (
|
|
||||||
{
|
|
||||||
controlResourceSetZero = 6;
|
|
||||||
searchSpaceZero = 0;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
servingCellConfigCommon = (
|
servingCellConfigCommon = (
|
||||||
{
|
{
|
||||||
#spCellConfigCommon
|
#spCellConfigCommon
|
||||||
|
|||||||
@@ -38,13 +38,6 @@ gNBs =
|
|||||||
min_rxtxtime = 6;
|
min_rxtxtime = 6;
|
||||||
sib1_tda = 0;
|
sib1_tda = 0;
|
||||||
|
|
||||||
pdcch_ConfigSIB1 = (
|
|
||||||
{
|
|
||||||
controlResourceSetZero = 12;
|
|
||||||
searchSpaceZero = 0;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
servingCellConfigCommon = (
|
servingCellConfigCommon = (
|
||||||
{
|
{
|
||||||
#spCellConfigCommon
|
#spCellConfigCommon
|
||||||
|
|||||||
Reference in New Issue
Block a user