26 nA = np.linspace(5, 50, 10)
36 T_SYMBOL_DATA = 12.8e-6 + T_GI
48 Aggregation_Type =
"A_MPDU"
52 L_MSDU_HEADER = 14 * 8
54 Aggregation_Type =
"NONE"
56 N_DBPS = data_rate * T_SYMBOL_DATA
58 if Aggregation_Type ==
"NONE":
59 N_SYMBOLS = math.ceil((L_SERVICE + (L_MAC + L_DATA + L_APP_HDR) + L_TAIL) / N_DBPS)
60 T_DATA = T_PHY_DATA + (T_SYMBOL_DATA * N_SYMBOLS)
64 if Aggregation_Type ==
"A_MSDU":
65 N_SYMBOLS = math.ceil(
68 + K_MPDU * (L_MAC + L_MPDU_HEADER + K_MSDU * (L_MSDU_HEADER + L_DATA + L_APP_HDR))
73 T_DATA = T_PHY_DATA + (T_SYMBOL_DATA * N_SYMBOLS)
75 if Aggregation_Type ==
"A_MPDU":
76 N_SYMBOLS = math.ceil(
77 (L_SERVICE + K_MPDU * (L_MAC + L_MPDU_HEADER + L_DATA + L_APP_HDR) + L_TAIL) / N_DBPS
79 T_DATA = T_PHY_DATA + (T_SYMBOL_DATA * N_SYMBOLS)
82 N_DBPS = ack_rate * T_SYMBOL_ACK
83 N_SYMBOLS = math.ceil((L_SERVICE + L_ACK + L_TAIL) / N_DBPS)
84 T_ACK = T_PHY_ACK + (T_SYMBOL_ACK * N_SYMBOLS)
86 T_s = T_DATA + T_SIFS + T_ACK + T_DIFS
90 T_s = T_DATA + T_SIFS + T_ACK + T_DIFS + delta
91 T_C = T_DATA + T_DIFS + T_SIFS + T_ACK + delta
93 T_S = T_s / (1 - B) + T_SLOT
95 S_bianchi = np.zeros(len(nA))
96 for j
in range(len(nA)):
99 m = math.log2((CWmax + 1) / (CWmin + 1))
100 tau1 = np.linspace(0, 0.1, 100000)
101 p = 1 - np.power((1 - tau1), (n - 1))
104 for i
in range(int(m)):
105 ps = ps + np.power(2 * p, i)
107 taup = 2.0 / (1 + W + p * W * ps)
108 b = np.argmin(np.abs(tau1 - taup))
111 Ptr = 1 - math.pow((1 - tau), int(n))
112 Ps = n * tau * math.pow((1 - tau), int(n - 1)) / Ptr
120 / ((1 - Ptr) * T_SLOT + Ptr * Ps * T_S + Ptr * (1 - Ps) * T_C)
124 bianchi_result = S_bianchi
125 return bianchi_result
129 str_bianchi =
" {" +
'"HeMcs{:d}'.format(mcs) +
'_{:d}MHz"'.format(bw) +
", {\n"
130 for i
in range(len(bianchi_result)):
131 str_tmp =
" {" +
"{:d}, {:.4f}".format(5 * (i + 1), bianchi_result[i]) +
"},\n"
132 str_bianchi = str_bianchi + str_tmp
133 str_bianchi = str_bianchi +
" }},\n"
153 ack_rates_20MHz = [6e6, 12e6, 12e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6]
168 ack_rates_40MHz = [6e6, 12e6, 12e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6]
183 ack_rates_80MHz = [6e6, 12e6, 12e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6]
184 data_rates_160MHz = [
198 ack_rates_160MHz = [6e6, 12e6, 12e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6, 24e6]
204 with open(
"bianchi_11ax_difs.txt",
"w", encoding=
"utf-8")
as f:
205 for i
in range(len(data_rates_20MHz)):
206 bianchi_result =
bianchi_ax(data_rates_20MHz[i], ack_rates_20MHz[i], k, difs)
209 for i
in range(len(data_rates_40MHz)):
210 bianchi_result =
bianchi_ax(data_rates_40MHz[i], ack_rates_40MHz[i], k, difs)
213 for i
in range(len(data_rates_80MHz)):
214 bianchi_result =
bianchi_ax(data_rates_80MHz[i], ack_rates_80MHz[i], k, difs)
217 for i
in range(len(data_rates_160MHz)):
218 bianchi_result =
bianchi_ax(data_rates_160MHz[i], ack_rates_160MHz[i], k, difs)
223 with open(
"bianchi_11ax_eifs.txt",
"w", encoding=
"utf-8")
as f:
224 for i
in range(len(data_rates_20MHz)):
225 bianchi_result =
bianchi_ax(data_rates_20MHz[i], ack_rates_20MHz[i], k, difs)
228 for i
in range(len(data_rates_40MHz)):
229 bianchi_result =
bianchi_ax(data_rates_40MHz[i], ack_rates_40MHz[i], k, difs)
232 for i
in range(len(data_rates_80MHz)):
233 bianchi_result =
bianchi_ax(data_rates_80MHz[i], ack_rates_80MHz[i], k, difs)
236 for i
in range(len(data_rates_160MHz)):
237 bianchi_result =
bianchi_ax(data_rates_160MHz[i], ack_rates_160MHz[i], k, difs)
def bianchi_ax(data_rate, ack_rate, k, difs)
def str_result(bianchi_result, mcs, bw)