2/23号完成:
(1)sendNpuschFormat1
(2)fillNpuschFormat1和fillNpuschFormat2
至此,NB Grid基本实现完毕。(todo list:NPDSCH/NPDCCH gap和以tab方式绘制nb grid)
代码同步commit到github:https://github.com/zhenggao2/NgToolset。
比如fillNpuschFormat1实现如下:
def fillNpuschFormat1(self, hsfn, sfn, slot): allSymb = self.args['npuschAllSymbols'] scs = self.args['npuschFormat1Scs'] #host LTE grid (isc, isymb) hostScs = [self.args['nbInbandPrbIndUl'] * 12 + isc for isc in scs] if self.args['nbUlScSpacing'] == NbiotPhy.NBIOT_UL_15K.value else [self.args['nbInbandPrbIndUl'] * 12 + math.floor(isc/4) for isc in scs] hostSlot = [slot] if self.args['nbUlScSpacing'] == NbiotPhy.NBIOT_UL_15K.value else list(range(4*slot, 4*(slot+1))) hostSymb = [] hostSymb.extend([i*self.symbPerSlotNb+j for i in hostSlot for j in range(self.symbPerSlotNb)]) key = str(hsfn)+'_'+str(sfn) for ind, isc in enumerate(scs): for isymb in range(self.symbPerSlotNb): if allSymb: #npusch-AllSymbols = True if self.gridNbUl[key][0][isc][slot*self.symbPerSlotNb+isymb] == NbiotResType.NBIOT_RES_BLANK.value: self.gridNbUl[key][0][isc][slot*self.symbPerSlotNb+isymb] = NbiotResType.NBIOT_RES_NPUSCH_FORMAT2.value else: isSrs = False for i in range(1 if self.args['nbUlScSpacing'] == NbiotPhy.NBIOT_UL_15K.value else 4): if self.args['hostLteGridUl'][0][hostScs[ind]][hostSymb[4*isymb+i]] == LTE_RES_SRS.value: isSrs = True break if not isSrs and self.gridNbUl[key][0][isc][slot*self.symbPerSlotNb+isymb] == NbiotResType.NBIOT_RES_BLANK.value: self.gridNbUl[key][0][isc][slot*self.symbPerSlotNb+isymb] = NbiotResType.NBIOT_RES_NPUSCH_FORMAT2.value
缺省配置下,NB部分输出为: