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)

*release first alpha version of ngapp: ngapp_build20190320

 

(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

(3) ngapp_build20190320 info:

First alpha release of '5GNR resource grid' tool(ngapp_build20190320):
*UI complete
*recvSsb ok
*recvSib1 ok
*sendMsg1 ok
*recvMsg2 ok
*remaining functions are to be implemented

通过该工具,你可以:
(1) 了解到5GNR中Carrier/point-A/BWP等相互关系;
(2) 了解到5GNR中SSB及Type-0 CSS/CORESET0的相互关系;
(3) 了解到5GNR中如何接收RMSI(即SIB1);
(4) 了解到5GNR中PRACH配置,及SSB与PRACH的相互关系;
(5) 了解到5GNR随机接入过程中如何接收Msg2(即RAR);

Note:
(1) 工具涉及到较多的配置参数,需要对NR系统有一定程度的理解;
(2) 压缩包解压路径中建议不要出现中文;
(3) 遇到dll缺失、程序崩溃或程序报错等问题而无法解决的,请提供:错误描述或错误截图、配置文件(ngapp/output/5gnr_grid_config_xxxx.cfg),通过邮件反馈给我。邮件地址及blog地址参见ngapp/Menu_Help/MenuItem_about
(4) 下载地址:
链接:https://pan.baidu.com/s/1nJpfBkHBmnD4r9wZLpI6NA 
提取码:9mhe

(5) User Manual: 点击'OK’按钮前请确认完成了下列配置:
tdd-ul-dl-config帧配置:
NG Toolset开发笔记--5GNR Resource Grid(49)_第1张图片 
DCI 1_0 SIB1配置:
NG Toolset开发笔记--5GNR Resource Grid(49)_第2张图片 
DCI 1_0 Msg2配置:
NG Toolset开发笔记--5GNR Resource Grid(49)_第3张图片 
initial ul bwp, rach配置:
NG Toolset开发笔记--5GNR Resource Grid(49)_第4张图片 
 

你可能感兴趣的:(Dev,4G/5G,Python,5GNR,MSG2,RAR)