是对Bianchi模型、python计算及ns3验证_关于2~10 STA验证的补充-CSDN博客的补充,采用了不用matlab中间值,而是采用重新计算Tc Ts的方法进行计算:
看得T_DATA到除了mac头的延时,GI、phy头也要延时。
一个OFDM symbol共有64个子载波,如果按照20M的发射带宽计算的话,那么64个子载波的时域长度为64/20=3.2us,再加上保护间隔(GI, guard interval)的长度为0.8us,所以一个OFDM symbol时域周期为3.2us + 0.8us = 4us。
phy部分的编码传输时间、phy前导码时间、GI时间、由于不能使用完整N_DBPS导致的余出一点包大小的时间都考虑进取
L_SERVICE = 16 #phy头长度
L_TAIL = 6 #phy尾长度
#L_MAC = (24 + 4) * 8 #mac头长度
#L_APP_HDR = 8 * 6 #IP 头长度 二者的和就是H
T_LPHY = 20e-6 #phy卡导码时间长度,20us
L_ACK =ACK #ACK长度
T_GI = 800e-9 #ofdm符号间隔时间
T_SYMBOL = 3.2e-6 + T_GI #每个OFDM子载波带宽312.5khz,所以20M 里面有64个子载波,每个OFDM符号就是64个子载波传一下,,所以为符号时间加gi
N_DBPS = bitrate * T_SYMBOL #每个ofdm符号里面装多少bits——但这里T_SYMBOL不应该含gi
N_SYMBOLS = math.ceil((L_SERVICE + H + E_P + L_TAIL)/N_DBPS) #%物理层所有bit都算上,看看能分成几个ofdm符号,不足的取整
self.T_DATA = T_LPHY + (T_SYMBOL * N_SYMBOLS) #;%不足取整的部分也算时间的
N_DBPS = 24E6 * T_SYMBOL #ACK 的时间
N_SYMBOLS = math.ceil((L_SERVICE + L_ACK + L_TAIL)/N_DBPS)
self.T_ACK = T_LPHY + (T_SYMBOL * N_SYMBOLS)
计算结果:
30.020792924428772, 28.14524162624082, 26.983857622278723, 26.13264118105921, 25.45203353872358, 24.879831490270217, 24.382983626274978, 23.94179040089471, 23.543532045749867, 23.17949830919974
对比图