NG Toolset開發筆記--5GNR Resource Grid(49)

3/19 update:

recvMsg2 is ok now, including:

*PDCCH monitoring after sending msg1

*Msg2 time-domain/freq-domain resource mapping (similar to SIB1)

 

(1) PDCCH monitoring after sending msg1(PRACH)

Add a new parameter: ra-ResponseWindow, which must be less than or equal to 10ms(that's 1 frame).

For PDCCH monitoring for DCI 1_0 scheduling Msg2(that's RAR), we need to convert PRACH timing which is based on prachScs into PDCCH(css0/coreset0) which is based on mibCommonScs.

After available PDCCH occasions are determined, we need to validate them against ra-ResponseWindow:

startHsfn, startSfn, startSlot, startFirstSymb = css0Msg2[0]
            raRespWinStart = ((1024 * startHsfn + startSfn) * self.nrSlotPerRf[self.nrScs2Mu[self.nrMibCommonScs]] + startSlot) * self.nrSymbPerSlotNormCp + startFirstSymb
            raRespWinEnd = ((1024 * startHsfn + startSfn) * self.nrSlotPerRf[self.nrScs2Mu[self.nrMibCommonScs]] + startSlot + self.nrRachRaRespWin) * self.nrSymbPerSlotNormCp + startFirstSymb - self.nrCoreset0NumSymbs
            validCss0Msg2 = [css0Msg2[0]]
            for i in range(1, len(css0Msg2)):
                ocHsfn, ocSfn, ocSlot, ocFirstSymb = css0Msg2[i]
                symbInd2 = ((1024 * ocHsfn + ocSfn) * self.nrSlotPerRf[self.nrScs2Mu[self.nrMibCommonScs]] + ocSlot) * self.nrSymbPerSlotNormCp + ocFirstSymb 
                if symbInd2 >= raRespWinStart and symbInd2 < raRespWinEnd:
                    validCss0Msg2.append(css0Msg2[i])

Examples as below:

Configurations:
contents of ["freqBand"]: {'opBand': 'n77', 'duplexMode': 'TDD', 'maxDlFreq': 4200, 'freqRange': 'FR1'}
contents of ["ssbGrid"]: {'scs': '30KHz', 'pattern': 'Case C', 'minGuardBand240k': 'NA', 'kSsb': '0', 'nCrbSsb': '2'}
contents of ["ssbBurst"]: {'maxL': 8, 'inOneGroup': '00001111', 'groupPresence': 'NA', 'period': '20ms'}
contents of ["mib"]: {'sfn': '0', 'hrf': '0', 'dmrsTypeAPos': 'pos2', 'commonScs': '30KHz', 'rmsiCoreset0': '0', 'rmsiCss0': '0', 'coreset0MultiplexingPat': 1, 'coreset0NumRbs': 24, 'coreset0NumSymbs': 2, 'coreset0OffsetList': (0,), 'coreset0Offset': 0, 'coreset0StartRb': 0}
contents of ["carrierGrid"]: {'scs': '15KHz', 'bw': '10MHz', 'numRbs': '52', 'minGuardBand': '2'}
contents of ["pci"]: 0
contents of ["numUeAp"]: 4Tx
contents of ["tddCfg"]: {'refScs': '15KHz', 'pat1Period': '5ms', 'pat1NumDlSlots': '3', 'pat1NumDlSymbs': '10', 'pat1NumUlSymbs': '2', 'pat1NumUlSlots': '1', 'pat2Period': 'not used', 'pat2NumDlSlots': '', 'pat2NumDlSymbs': '', 'pat2NumUlSymbs': '', 'pat2NumUlSlots': ''}
contents of ["css0"]: {'aggLevel': '4', 'numCandidates': 'n4'}
contents of ["dci10Sib1"]: {'rnti': '0xFFFF', 'muPdcch': '1', 'muPdsch': '1', 'tdRa': '2', 'tdMappingType': 'Type A', 'tdK0': '0', 'tdSliv': '95', 'tdStartSymb': '2', 'tdNumSymbs': '9', 'fdRaType': 'RA Type1', 'fdRa': '000101111', 'fdStartRb': '0', 'fdNumRbs': '24', 'fdVrbPrbMappingType': 'interleaved', 'fdBundleSize': 'n2', 'mcsCw0': '1', 'tbs': '736'}
contents of ["dci10Msg2"]: {'rnti': '0x0001', 'muPdcch': '1', 'muPdsch': '1', 'tdRa': '3', 'tdMappingType': 'Type A', 'tdK0': '0', 'tdSliv': '86', 'tdStartSymb': '2', 'tdNumSymbs': '7', 'fdRaType': 'RA Type1', 'fdRa': '000101111', 'fdStartRb': '0', 'fdNumRbs': '24', 'fdVrbPrbMappingType': 'interleaved', 'fdBundleSize': 'n2', 'mcsCw0': '1', 'tbScaling': '0', 'tbs': '608'}
contents of ["dmrsSib1"]: {'dmrsType': 'Type 1', 'dmrsAddPos': 'pos2', 'maxLength': 'len1', 'dmrsPorts': '0', 'cdmGroupsWoData': '2', 'numFrontLoadSymbs': '1', 'tdL': [2, 6, 9], 'fdK': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
contents of ["dmrsMsg2"]: {'dmrsType': 'Type 1', 'dmrsAddPos': 'pos2', 'maxLength': 'len1', 'dmrsPorts': '0', 'cdmGroupsWoData': '2', 'numFrontLoadSymbs': '1', 'tdL': [2, 7], 'fdK': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
contents of ["iniUlBwp"]: {'bwpId': '0', 'scs': '15KHz', 'cp': 'normal', 'locAndBw': '14025', 'startRb': '0', 'numRbs': '52'}
contents of ["rach"]: {'prachConfId': '107', 'raFormat': 'A2', 'raX': 1, 'raY': (0,), 'raSubfNumFr1SlotNumFr2': (3, 4, 8, 9), 'raStartingSymb': 0, 'raNumSlotsPerSubfFr1Per60KSlotFr2': 2, 'raNumOccasionsPerSlot': 3, 'raDuration': 4, 'scs': '30KHz', 'msg1Fdm': '2', 'msg1FreqStart': '0', 'raRespWin': 'sl4', 'totNumPreambs': '64', 'ssbPerRachOccasion': 'oneHalf', 'cbPreambsPerSsb': '4', 'msg3Tp': 'disabled', 'raLen': 139, 'raNumRbs': 24, 'raKBar': 2}
output of monitorPdcch for DCI 1_0 scheduling Msg2(RAR):
converting from prachScs(=30KHz) to commonScs(=30KHz): [hsfn=0, sfn=0, slot=8, msg1LastSymb=11] --> [hsfn=0, sfn=0, slot=8, symb=11]
start monitoring CSS0 for DCI 1_0 scheduling RAR: hsfn=0, sfn=0, firstSlotMonitoring=8, firstSymbMonitoring=12
---->inside detCss0(hsfn=0, sfn=0)
[Type-0 CSS]PDCCH monitoring occasion for SSB index=4(hrf=0): [[(0, 0, 4), (0, 0, 5)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB index=5(hrf=0): [[(0, 0, 5), (0, 0, 6)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB index=6(hrf=0): [[(0, 0, 6), (0, 0, 7)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB index=7(hrf=0): [[(0, 0, 7), (0, 0, 8)], 0, ['OK', 'NOK']]
---->inside recvSsb(hsfn=0,sfn=1, scaleFd=2, scaleTd=2)
---->inside initTddGrid(hsfn=0, sfn=1)
scaleTd=4 where baseScsTd=60KHz and tddCfgRefScs=15KHz
---->inside detCss0(hsfn=0, sfn=1)
---->inside recvSsb(hsfn=0,sfn=2, scaleFd=2, scaleTd=2)
---->inside initTddGrid(hsfn=0, sfn=2)
scaleTd=4 where baseScsTd=60KHz and tddCfgRefScs=15KHz
issb=4, ssbFirstSc=24, v=0, ssbFirstSymb=60
issb=5, ssbFirstSc=24, v=0, ssbFirstSymb=72
issb=6, ssbFirstSc=24, v=0, ssbFirstSymb=88
issb=7, ssbFirstSc=24, v=0, ssbFirstSymb=100
---->inside detCss0(hsfn=0, sfn=2)
[Type-0 CSS]PDCCH monitoring occasion for SSB index=4(hrf=0): [[(0, 2, 4), (0, 2, 5)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB index=5(hrf=0): [[(0, 2, 5), (0, 2, 6)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB index=6(hrf=0): [[(0, 2, 6), (0, 2, 7)], 0, ['OK', 'OK']]
[Type-0 CSS]PDCCH monitoring occasion for SSB index=7(hrf=0): [[(0, 2, 7), (0, 2, 8)], 0, ['OK', 'NOK']]
contents of css0Msg2:
PDCCH occasion #0: [0, 2, 4, 0]
PDCCH occasion #1: [0, 2, 5, 0]
PDCCH occasion #2: [0, 2, 6, 0]
PDCCH occasion #3: [0, 2, 7, 0]
contents of validCss0Msg2(raRespWin=4 slots):
PDCCH occasion #0: [0, 2, 4, 0]
PDCCH occasion #1: [0, 2, 5, 0]
PDCCH occasion #2: [0, 2, 6, 0]
PDCCH occasion #3: [0, 2, 7, 0]
randomly selecting pdcch candidate: pdcchOccasion=1(numPdcchOccasions=4), pdcchCandidate=0(numPdcchCandidates=2)

(2) Msg2 time-domain/freq-domain resource mapping:

similar to recvSib1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章