2/23号完成:
(1)sendNpuschFormat1
(2)fillNpuschFormat1和fillNpuschFormat2
至此,NB Grid基本实现完毕。(todo list:NPDSCH/NPDCCH gap和以tab方式绘制nb grid)
比如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部分输出为: