11#include "nr-lte-mi-error-model.h"
13#include "ns3/assert.h"
14#include "ns3/double.h"
21NS_LOG_COMPONENT_DEFINE(
"NrLteAmc");
23NS_OBJECT_ENSURE_REGISTERED(NrLteAmc);
32static const double SpectralEfficiencyForCqi[16] = {
60static const int ModulationSchemeForMcs[32] = {
61 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
63 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
79static const double SpectralEfficiencyForMcs[32] = {
80 0.15, 0.19, 0.23, 0.31, 0.38, 0.49, 0.6, 0.74, 0.88, 1.03, 1.18, 1.33, 1.48, 1.7, 1.91, 2.16,
81 2.41, 2.57, 2.73, 3.03, 3.32, 3.61, 3.9, 4.21, 4.52, 4.82, 5.12, 5.33, 5.55, 0, 0, 0,
89static const int McsToItbsDl[29] = {
90 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13,
91 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
99static const int McsToItbsUl[29] = {
100 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 11, 12, 13,
101 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 23, 24, 25, 26,
112static const int TransportBlockSizeTable[110][27] = {
113 {16, 24, 32, 40, 56, 72, 88, 104, 120, 136, 144, 176, 208, 224,
114 256, 280, 328, 336, 376, 408, 440, 488, 520, 552, 584, 616, 712},
115 {32, 56, 72, 104, 120, 144, 176, 224, 256, 296, 328, 376, 440, 488,
116 552, 600, 632, 696, 776, 840, 904, 1000, 1064, 1128, 1192, 1256, 1480},
117 {56, 88, 144, 176, 208, 224, 256, 328, 392, 456, 504, 584, 680, 744,
118 840, 904, 968, 1064, 1160, 1288, 1384, 1480, 1608, 1736, 1800, 1864, 2216},
119 {88, 144, 176, 208, 256, 328, 392, 472, 536,
120 616, 680, 776, 904, 1000, 1128, 1224, 1288, 1416,
121 1544, 1736, 1864, 1992, 2152, 2280, 2408, 2536, 2984},
122 {120, 176, 208, 256, 328, 424, 504, 584, 680,
123 776, 872, 1000, 1128, 1256, 1416, 1544, 1608, 1800,
124 1992, 2152, 2344, 2472, 2664, 2856, 2984, 3112, 3752},
125 {152, 208, 256, 328, 408, 504, 600, 712, 808,
126 936, 1032, 1192, 1352, 1544, 1736, 1800, 1928, 2152,
127 2344, 2600, 2792, 2984, 3240, 3496, 3624, 3752, 4392},
128 {176, 224, 296, 392, 488, 600, 712, 840, 968,
129 1096, 1224, 1384, 1608, 1800, 1992, 2152, 2280, 2536,
130 2792, 2984, 3240, 3496, 3752, 4008, 4264, 4392, 5160},
131 {208, 256, 328, 440, 552, 680, 808, 968, 1096,
132 1256, 1384, 1608, 1800, 2024, 2280, 2472, 2600, 2856,
133 3112, 3496, 3752, 4008, 4264, 4584, 4968, 5160, 5992},
134 {224, 328, 376, 504, 632, 776, 936, 1096, 1256,
135 1416, 1544, 1800, 2024, 2280, 2600, 2728, 2984, 3240,
136 3624, 3880, 4136, 4584, 4776, 5160, 5544, 5736, 6712},
137 {256, 344, 424, 568, 696, 872, 1032, 1224, 1384,
138 1544, 1736, 2024, 2280, 2536, 2856, 3112, 3240, 3624,
139 4008, 4264, 4584, 4968, 5352, 5736, 5992, 6200, 7480},
140 {288, 376, 472, 616, 776, 968, 1128, 1320, 1544,
141 1736, 1928, 2216, 2472, 2856, 3112, 3368, 3624, 4008,
142 4392, 4776, 5160, 5544, 5992, 6200, 6712, 6968, 8248},
143 {328, 424, 520, 680, 840, 1032, 1224, 1480, 1672,
144 1864, 2088, 2408, 2728, 3112, 3496, 3624, 3880, 4392,
145 4776, 5160, 5544, 5992, 6456, 6968, 7224, 7480, 8760},
146 {344, 456, 568, 744, 904, 1128, 1352, 1608, 1800,
147 2024, 2280, 2600, 2984, 3368, 3752, 4008, 4264, 4776,
148 5160, 5544, 5992, 6456, 6968, 7480, 7992, 8248, 9528},
149 {376, 488, 616, 808, 1000, 1224, 1480, 1672, 1928,
150 2216, 2472, 2792, 3240, 3624, 4008, 4264, 4584, 5160,
151 5544, 5992, 6456, 6968, 7480, 7992, 8504, 8760, 10296},
152 {392, 520, 648, 872, 1064, 1320, 1544, 1800, 2088,
153 2344, 2664, 2984, 3368, 3880, 4264, 4584, 4968, 5352,
154 5992, 6456, 6968, 7480, 7992, 8504, 9144, 9528, 11064},
155 {424, 568, 696, 904, 1128, 1384, 1672, 1928, 2216,
156 2536, 2792, 3240, 3624, 4136, 4584, 4968, 5160, 5736,
157 6200, 6968, 7480, 7992, 8504, 9144, 9912, 10296, 11832},
158 {456, 600, 744, 968, 1192, 1480, 1736, 2088, 2344,
159 2664, 2984, 3496, 3880, 4392, 4968, 5160, 5544, 6200,
160 6712, 7224, 7992, 8504, 9144, 9912, 10296, 10680, 12576},
161 {488, 632, 776, 1032, 1288, 1544, 1864, 2216, 2536,
162 2856, 3112, 3624, 4136, 4584, 5160, 5544, 5992, 6456,
163 7224, 7736, 8248, 9144, 9528, 10296, 11064, 11448, 13536},
164 {504, 680, 840, 1096, 1352, 1672, 1992, 2344, 2664,
165 2984, 3368, 3880, 4392, 4968, 5544, 5736, 6200, 6712,
166 7480, 8248, 8760, 9528, 10296, 11064, 11448, 12216, 14112},
167 {536, 712, 872, 1160, 1416, 1736, 2088, 2472, 2792,
168 3112, 3496, 4008, 4584, 5160, 5736, 6200, 6456, 7224,
169 7992, 8504, 9144, 9912, 10680, 11448, 12216, 12576, 14688},
170 {568, 744, 936, 1224, 1480, 1864, 2216, 2536, 2984,
171 3368, 3752, 4264, 4776, 5352, 5992, 6456, 6712, 7480,
172 8248, 9144, 9912, 10680, 11448, 12216, 12960, 13536, 15264},
173 {600, 776, 968, 1256, 1544, 1928, 2280, 2664, 3112,
174 3496, 3880, 4392, 4968, 5736, 6200, 6712, 7224, 7992,
175 8760, 9528, 10296, 11064, 11832, 12576, 13536, 14112, 16416},
176 {616, 808, 1000, 1320, 1608, 2024, 2408, 2792, 3240,
177 3624, 4008, 4584, 5352, 5992, 6456, 6968, 7480, 8248,
178 9144, 9912, 10680, 11448, 12576, 12960, 14112, 14688, 16992},
179 {648, 872, 1064, 1384, 1736, 2088, 2472, 2984, 3368,
180 3752, 4264, 4776, 5544, 6200, 6968, 7224, 7736, 8760,
181 9528, 10296, 11064, 12216, 12960, 13536, 14688, 15264, 17568},
182 {680, 904, 1096, 1416, 1800, 2216, 2600, 3112, 3496,
183 4008, 4392, 4968, 5736, 6456, 7224, 7736, 7992, 9144,
184 9912, 10680, 11448, 12576, 13536, 14112, 15264, 15840, 18336},
185 {712, 936, 1160, 1480, 1864, 2280, 2728, 3240, 3624,
186 4136, 4584, 5352, 5992, 6712, 7480, 7992, 8504, 9528,
187 10296, 11064, 12216, 12960, 14112, 14688, 15840, 16416, 19080},
188 {744, 968, 1192, 1544, 1928, 2344, 2792, 3368, 3752,
189 4264, 4776, 5544, 6200, 6968, 7736, 8248, 8760, 9912,
190 10680, 11448, 12576, 13536, 14688, 15264, 16416, 16992, 19848},
191 {776, 1000, 1256, 1608, 1992, 2472, 2984, 3368, 3880,
192 4392, 4968, 5736, 6456, 7224, 7992, 8504, 9144, 10296,
193 11064, 12216, 12960, 14112, 15264, 15840, 16992, 17568, 20616},
194 {776, 1032, 1288, 1672, 2088, 2536, 2984, 3496, 4008,
195 4584, 5160, 5992, 6712, 7480, 8248, 8760, 9528, 10296,
196 11448, 12576, 13536, 14688, 15840, 16416, 17568, 18336, 21384},
197 {808, 1064, 1320, 1736, 2152, 2664, 3112, 3624, 4264,
198 4776, 5352, 5992, 6712, 7736, 8504, 9144, 9912, 10680,
199 11832, 12960, 14112, 15264, 16416, 16992, 18336, 19080, 22152},
200 {840, 1128, 1384, 1800, 2216, 2728, 3240, 3752, 4392,
201 4968, 5544, 6200, 6968, 7992, 8760, 9528, 9912, 11064,
202 12216, 13536, 14688, 15840, 16992, 17568, 19080, 19848, 22920},
203 {872, 1160, 1416, 1864, 2280, 2792, 3368, 3880, 4584,
204 5160, 5736, 6456, 7224, 8248, 9144, 9912, 10296, 11448,
205 12576, 13536, 14688, 15840, 16992, 18336, 19848, 20616, 23688},
206 {904, 1192, 1480, 1928, 2344, 2856, 3496, 4008, 4584,
207 5160, 5736, 6712, 7480, 8504, 9528, 10296, 10680, 11832,
208 12960, 14112, 15264, 16416, 17568, 19080, 19848, 20616, 24496},
209 {936, 1224, 1544, 1992, 2408, 2984, 3496, 4136, 4776,
210 5352, 5992, 6968, 7736, 8760, 9912, 10296, 11064, 12216,
211 13536, 14688, 15840, 16992, 18336, 19848, 20616, 21384, 25456},
212 {968, 1256, 1544, 2024, 2472, 3112, 3624, 4264, 4968,
213 5544, 6200, 6968, 7992, 9144, 9912, 10680, 11448, 12576,
214 14112, 15264, 16416, 17568, 19080, 19848, 21384, 22152, 25456},
215 {1000, 1288, 1608, 2088, 2600, 3112, 3752, 4392, 4968,
216 5736, 6200, 7224, 8248, 9144, 10296, 11064, 11832, 12960,
217 14112, 15264, 16992, 18336, 19080, 20616, 22152, 22920, 26416},
218 {1032, 1352, 1672, 2152, 2664, 3240, 3880, 4584, 5160,
219 5736, 6456, 7480, 8504, 9528, 10680, 11448, 12216, 13536,
220 14688, 15840, 16992, 18336, 19848, 21384, 22920, 23688, 27376},
221 {1032, 1384, 1672, 2216, 2728, 3368, 4008, 4584, 5352,
222 5992, 6712, 7736, 8760, 9912, 11064, 11832, 12216, 13536,
223 15264, 16416, 17568, 19080, 20616, 22152, 22920, 24496, 28336},
224 {1064, 1416, 1736, 2280, 2792, 3496, 4136, 4776, 5544,
225 6200, 6712, 7736, 8760, 9912, 11064, 11832, 12576, 14112,
226 15264, 16992, 18336, 19848, 21384, 22152, 23688, 24496, 29296},
227 {1096, 1416, 1800, 2344, 2856, 3496, 4136, 4968, 5544,
228 6200, 6968, 7992, 9144, 10296, 11448, 12216, 12960, 14688,
229 15840, 16992, 18336, 19848, 21384, 22920, 24496, 25456, 29296},
230 {1128, 1480, 1800, 2408, 2984, 3624, 4264, 4968, 5736,
231 6456, 7224, 8248, 9528, 10680, 11832, 12576, 13536, 14688,
232 16416, 17568, 19080, 20616, 22152, 23688, 25456, 26416, 30576},
233 {1160, 1544, 1864, 2472, 2984, 3752, 4392, 5160, 5992,
234 6712, 7480, 8504, 9528, 10680, 12216, 12960, 13536, 15264,
235 16416, 18336, 19848, 21384, 22920, 24496, 25456, 26416, 30576},
236 {1192, 1544, 1928, 2536, 3112, 3752, 4584, 5352, 5992,
237 6712, 7480, 8760, 9912, 11064, 12216, 12960, 14112, 15264,
238 16992, 18336, 19848, 21384, 22920, 24496, 26416, 27376, 31704},
239 {1224, 1608, 1992, 2536, 3112, 3880, 4584, 5352, 6200,
240 6968, 7736, 8760, 9912, 11448, 12576, 13536, 14112, 15840,
241 17568, 19080, 20616, 22152, 23688, 25456, 26416, 28336, 32856},
242 {1256, 1608, 2024, 2600, 3240, 4008, 4776, 5544, 6200,
243 6968, 7992, 9144, 10296, 11448, 12960, 13536, 14688, 16416,
244 17568, 19080, 20616, 22920, 24496, 25456, 27376, 28336, 32856},
245 {1256, 1672, 2088, 2664, 3240, 4008, 4776, 5736, 6456,
246 7224, 7992, 9144, 10680, 11832, 12960, 14112, 14688, 16416,
247 18336, 19848, 21384, 22920, 24496, 26416, 28336, 29296, 34008},
248 {1288, 1736, 2088, 2728, 3368, 4136, 4968, 5736, 6456,
249 7480, 8248, 9528, 10680, 12216, 13536, 14688, 15264, 16992,
250 18336, 20616, 22152, 23688, 25456, 27376, 28336, 29296, 35160},
251 {1320, 1736, 2152, 2792, 3496, 4264, 4968, 5992, 6712,
252 7480, 8504, 9528, 11064, 12216, 13536, 14688, 15840, 17568,
253 19080, 20616, 22152, 24496, 25456, 27376, 29296, 30576, 35160},
254 {1352, 1800, 2216, 2856, 3496, 4392, 5160, 5992, 6968,
255 7736, 8504, 9912, 11064, 12576, 14112, 15264, 15840, 17568,
256 19080, 21384, 22920, 24496, 26416, 28336, 29296, 31704, 36696},
257 {1384, 1800, 2216, 2856, 3624, 4392, 5160, 6200, 6968,
258 7992, 8760, 9912, 11448, 12960, 14112, 15264, 16416, 18336,
259 19848, 21384, 22920, 25456, 27376, 28336, 30576, 31704, 36696},
260 {1416, 1864, 2280, 2984, 3624, 4584, 5352, 6200, 7224,
261 7992, 9144, 10296, 11832, 12960, 14688, 15840, 16416, 18336,
262 19848, 22152, 23688, 25456, 27376, 29296, 31704, 32856, 37888},
263 {1416, 1864, 2344, 2984, 3752, 4584, 5352, 6456, 7224,
264 8248, 9144, 10680, 11832, 13536, 14688, 15840, 16992, 19080,
265 20616, 22152, 24496, 26416, 28336, 29296, 31704, 32856, 37888},
266 {1480, 1928, 2344, 3112, 3752, 4776, 5544, 6456, 7480,
267 8248, 9144, 10680, 12216, 13536, 15264, 16416, 16992, 19080,
268 21384, 22920, 24496, 26416, 28336, 30576, 32856, 34008, 39232},
269 {1480, 1992, 2408, 3112, 3880, 4776, 5736, 6712, 7480,
270 8504, 9528, 11064, 12216, 14112, 15264, 16416, 17568, 19848,
271 21384, 22920, 25456, 27376, 29296, 30576, 32856, 34008, 40576},
272 {1544, 1992, 2472, 3240, 4008, 4776, 5736, 6712, 7736,
273 8760, 9528, 11064, 12576, 14112, 15840, 16992, 17568, 19848,
274 22152, 23688, 25456, 27376, 29296, 31704, 34008, 35160, 40576},
275 {1544, 2024, 2536, 3240, 4008, 4968, 5992, 6712, 7736,
276 8760, 9912, 11448, 12576, 14688, 15840, 16992, 18336, 20616,
277 22152, 24496, 26416, 28336, 30576, 31704, 34008, 35160, 40576},
278 {1608, 2088, 2536, 3368, 4136, 4968, 5992, 6968, 7992,
279 9144, 9912, 11448, 12960, 14688, 16416, 17568, 18336, 20616,
280 22920, 24496, 26416, 28336, 30576, 32856, 35160, 36696, 42368},
281 {1608, 2088, 2600, 3368, 4136, 5160, 5992, 6968, 7992,
282 9144, 10296, 11832, 12960, 14688, 16416, 17568, 19080, 20616,
283 22920, 25456, 27376, 29296, 31704, 32856, 35160, 36696, 42368},
284 {1608, 2152, 2664, 3496, 4264, 5160, 6200, 7224, 8248,
285 9144, 10296, 11832, 13536, 15264, 16992, 18336, 19080, 21384,
286 23688, 25456, 27376, 29296, 31704, 34008, 36696, 37888, 43816},
287 {1672, 2152, 2664, 3496, 4264, 5352, 6200, 7224, 8504,
288 9528, 10680, 12216, 13536, 15264, 16992, 18336, 19848, 21384,
289 23688, 25456, 28336, 30576, 32856, 34008, 36696, 37888, 43816},
290 {1672, 2216, 2728, 3624, 4392, 5352, 6456, 7480, 8504,
291 9528, 10680, 12216, 14112, 15840, 17568, 18336, 19848, 22152,
292 24496, 26416, 28336, 30576, 32856, 35160, 36696, 39232, 45352},
293 {1736, 2280, 2792, 3624, 4392, 5544, 6456, 7480, 8760,
294 9912, 11064, 12576, 14112, 15840, 17568, 19080, 19848, 22152,
295 24496, 26416, 29296, 31704, 34008, 35160, 37888, 39232, 45352},
296 {1736, 2280, 2856, 3624, 4584, 5544, 6456, 7736, 8760,
297 9912, 11064, 12576, 14112, 16416, 18336, 19080, 20616, 22920,
298 24496, 27376, 29296, 31704, 34008, 36696, 37888, 40576, 46888},
299 {1800, 2344, 2856, 3752, 4584, 5736, 6712, 7736, 9144,
300 10296, 11448, 12960, 14688, 16416, 18336, 19848, 20616, 22920,
301 25456, 27376, 29296, 31704, 34008, 36696, 39232, 40576, 46888},
302 {1800, 2344, 2856, 3752, 4584, 5736, 6712, 7992, 9144,
303 10296, 11448, 12960, 14688, 16992, 18336, 19848, 21384, 23688,
304 25456, 28336, 30576, 32856, 35160, 37888, 39232, 40576, 48936},
305 {1800, 2408, 2984, 3880, 4776, 5736, 6968, 7992, 9144,
306 10296, 11448, 13536, 15264, 16992, 19080, 20616, 21384, 23688,
307 26416, 28336, 30576, 32856, 35160, 37888, 40576, 42368, 48936},
308 {1864, 2472, 2984, 3880, 4776, 5992, 6968, 8248, 9528,
309 10680, 11832, 13536, 15264, 16992, 19080, 20616, 22152, 24496,
310 26416, 29296, 31704, 34008, 36696, 37888, 40576, 42368, 48936},
311 {1864, 2472, 3112, 4008, 4968, 5992, 6968, 8248, 9528,
312 10680, 11832, 13536, 15264, 17568, 19848, 20616, 22152, 24496,
313 27376, 29296, 31704, 34008, 36696, 39232, 42368, 43816, 51024},
314 {1928, 2536, 3112, 4008, 4968, 5992, 7224, 8504, 9528,
315 11064, 12216, 14112, 15840, 17568, 19848, 21384, 22152, 24496,
316 27376, 29296, 31704, 35160, 36696, 39232, 42368, 43816, 51024},
317 {1928, 2536, 3112, 4136, 4968, 6200, 7224, 8504, 9912,
318 11064, 12216, 14112, 15840, 18336, 19848, 21384, 22920, 25456,
319 27376, 30576, 32856, 35160, 37888, 40576, 42368, 43816, 52752},
320 {1992, 2600, 3240, 4136, 5160, 6200, 7480, 8760, 9912,
321 11064, 12576, 14112, 16416, 18336, 20616, 22152, 22920, 25456,
322 28336, 30576, 32856, 35160, 37888, 40576, 43816, 45352, 52752},
323 {1992, 2600, 3240, 4264, 5160, 6200, 7480, 8760, 9912,
324 11448, 12576, 14688, 16416, 18336, 20616, 22152, 23688, 26416,
325 28336, 30576, 34008, 36696, 39232, 40576, 43816, 45352, 52752},
326 {2024, 2664, 3240, 4264, 5160, 6456, 7736, 8760, 10296,
327 11448, 12960, 14688, 16416, 19080, 20616, 22152, 23688, 26416,
328 29296, 31704, 34008, 36696, 39232, 42368, 45352, 46888, 55056},
329 {2088, 2728, 3368, 4392, 5352, 6456, 7736, 9144, 10296,
330 11832, 12960, 14688, 16992, 19080, 21384, 22920, 24496, 26416,
331 29296, 31704, 34008, 36696, 40576, 42368, 45352, 46888, 55056},
332 {2088, 2728, 3368, 4392, 5352, 6712, 7736, 9144, 10680,
333 11832, 12960, 15264, 16992, 19080, 21384, 22920, 24496, 27376,
334 29296, 32856, 35160, 37888, 40576, 43816, 45352, 46888, 55056},
335 {2088, 2792, 3368, 4392, 5544, 6712, 7992, 9144, 10680,
336 11832, 13536, 15264, 17568, 19848, 22152, 23688, 24496, 27376,
337 30576, 32856, 35160, 37888, 40576, 43816, 46888, 48936, 55056},
338 {2152, 2792, 3496, 4584, 5544, 6712, 7992, 9528, 10680,
339 12216, 13536, 15840, 17568, 19848, 22152, 23688, 25456, 27376,
340 30576, 32856, 35160, 39232, 42368, 43816, 46888, 48936, 57336},
341 {2152, 2856, 3496, 4584, 5544, 6968, 8248, 9528, 11064,
342 12216, 13536, 15840, 17568, 19848, 22152, 23688, 25456, 28336,
343 30576, 34008, 36696, 39232, 42368, 45352, 46888, 48936, 57336},
344 {2216, 2856, 3496, 4584, 5736, 6968, 8248, 9528, 11064,
345 12576, 14112, 15840, 18336, 20616, 22920, 24496, 25456, 28336,
346 31704, 34008, 36696, 39232, 42368, 45352, 48936, 51024, 57336},
347 {2216, 2856, 3624, 4776, 5736, 6968, 8248, 9912, 11064,
348 12576, 14112, 16416, 18336, 20616, 22920, 24496, 26416, 29296,
349 31704, 34008, 36696, 40576, 43816, 45352, 48936, 51024, 59256},
350 {2280, 2984, 3624, 4776, 5736, 7224, 8504, 9912, 11448,
351 12960, 14112, 16416, 18336, 20616, 22920, 24496, 26416, 29296,
352 31704, 35160, 37888, 40576, 43816, 46888, 48936, 51024, 59256},
353 {2280, 2984, 3624, 4776, 5992, 7224, 8504, 9912, 11448,
354 12960, 14688, 16416, 19080, 21384, 23688, 25456, 26416, 29296,
355 32856, 35160, 37888, 40576, 43816, 46888, 51024, 52752, 59256},
356 {2280, 2984, 3752, 4776, 5992, 7224, 8760, 10296, 11448,
357 12960, 14688, 16992, 19080, 21384, 23688, 25456, 27376, 30576,
358 32856, 35160, 39232, 42368, 45352, 46888, 51024, 52752, 61664},
359 {2344, 3112, 3752, 4968, 5992, 7480, 8760, 10296, 11832,
360 13536, 14688, 16992, 19080, 21384, 24496, 25456, 27376, 30576,
361 32856, 36696, 39232, 42368, 45352, 48936, 51024, 52752, 61664},
362 {2344, 3112, 3880, 4968, 5992, 7480, 8760, 10296, 11832,
363 13536, 14688, 16992, 19080, 22152, 24496, 26416, 27376, 30576,
364 34008, 36696, 39232, 42368, 45352, 48936, 52752, 55056, 61664},
365 {2408, 3112, 3880, 4968, 6200, 7480, 9144, 10680, 12216,
366 13536, 15264, 17568, 19848, 22152, 24496, 26416, 28336, 30576,
367 34008, 36696, 40576, 43816, 46888, 48936, 52752, 55056, 63776},
368 {2408, 3240, 3880, 5160, 6200, 7736, 9144, 10680, 12216,
369 13536, 15264, 17568, 19848, 22152, 25456, 26416, 28336, 31704,
370 34008, 37888, 40576, 43816, 46888, 51024, 52752, 55056, 63776},
371 {2472, 3240, 4008, 5160, 6200, 7736, 9144, 10680, 12216,
372 14112, 15264, 17568, 19848, 22920, 25456, 27376, 28336, 31704,
373 35160, 37888, 40576, 43816, 46888, 51024, 52752, 55056, 63776},
374 {2472, 3240, 4008, 5160, 6456, 7736, 9144, 11064, 12576,
375 14112, 15840, 18336, 20616, 22920, 25456, 27376, 29296, 31704,
376 35160, 37888, 42368, 45352, 48936, 51024, 55056, 57336, 66592},
377 {2536, 3240, 4008, 5352, 6456, 7992, 9528, 11064, 12576,
378 14112, 15840, 18336, 20616, 22920, 25456, 27376, 29296, 32856,
379 35160, 39232, 42368, 45352, 48936, 51024, 55056, 57336, 66592},
380 {2536, 3368, 4136, 5352, 6456, 7992, 9528, 11064, 12576,
381 14112, 15840, 18336, 20616, 23688, 26416, 28336, 29296, 32856,
382 36696, 39232, 42368, 45352, 48936, 52752, 55056, 57336, 66592},
383 {2536, 3368, 4136, 5352, 6456, 7992, 9528, 11448, 12960,
384 14688, 16416, 18336, 21384, 23688, 26416, 28336, 30576, 32856,
385 36696, 39232, 42368, 46888, 48936, 52752, 57336, 59256, 68808},
386 {2600, 3368, 4136, 5352, 6712, 8248, 9528, 11448, 12960,
387 14688, 16416, 19080, 21384, 23688, 26416, 28336, 30576, 34008,
388 36696, 40576, 43816, 46888, 51024, 52752, 57336, 59256, 68808},
389 {2600, 3496, 4264, 5544, 6712, 8248, 9912, 11448, 12960,
390 14688, 16416, 19080, 21384, 24496, 27376, 29296, 30576, 34008,
391 37888, 40576, 43816, 46888, 51024, 55056, 57336, 59256, 68808},
392 {2664, 3496, 4264, 5544, 6712, 8248, 9912, 11448, 13536,
393 15264, 16992, 19080, 21384, 24496, 27376, 29296, 30576, 34008,
394 37888, 40576, 43816, 46888, 51024, 55056, 57336, 61664, 71112},
395 {2664, 3496, 4264, 5544, 6968, 8504, 9912, 11832, 13536,
396 15264, 16992, 19080, 22152, 24496, 27376, 29296, 31704, 35160,
397 37888, 40576, 45352, 48936, 51024, 55056, 59256, 61664, 71112},
398 {2728, 3496, 4392, 5736, 6968, 8504, 10296, 11832, 13536,
399 15264, 16992, 19848, 22152, 25456, 28336, 29296, 31704, 35160,
400 37888, 42368, 45352, 48936, 52752, 55056, 59256, 61664, 71112},
401 {2728, 3624, 4392, 5736, 6968, 8760, 10296, 11832, 13536,
402 15264, 16992, 19848, 22152, 25456, 28336, 30576, 31704, 35160,
403 39232, 42368, 45352, 48936, 52752, 57336, 59256, 61664, 73712},
404 {2728, 3624, 4392, 5736, 6968, 8760, 10296, 12216, 14112,
405 15840, 17568, 19848, 22920, 25456, 28336, 30576, 31704, 35160,
406 39232, 42368, 46888, 48936, 52752, 57336, 61664, 63776, 73712},
407 {2792, 3624, 4584, 5736, 7224, 8760, 10296, 12216, 14112,
408 15840, 17568, 19848, 22920, 25456, 28336, 30576, 32856, 36696,
409 39232, 43816, 46888, 51024, 55056, 57336, 61664, 63776, 75376},
410 {2792, 3752, 4584, 5992, 7224, 8760, 10680, 12216, 14112,
411 15840, 17568, 20616, 22920, 26416, 29296, 30576, 32856, 36696,
412 40576, 43816, 46888, 51024, 55056, 57336, 61664, 63776, 75376},
413 {2856, 3752, 4584, 5992, 7224, 9144, 10680, 12576, 14112,
414 16416, 18336, 20616, 23688, 26416, 29296, 31704, 32856, 36696,
415 40576, 43816, 46888, 51024, 55056, 59256, 61664, 63776, 75376},
416 {2856, 3752, 4584, 5992, 7480, 9144, 10680, 12576, 14688,
417 16416, 18336, 20616, 23688, 26416, 29296, 31704, 34008, 36696,
418 40576, 43816, 48936, 51024, 55056, 59256, 63776, 66592, 75376},
419 {2856, 3752, 4584, 5992, 7480, 9144, 10680, 12576, 14688,
420 16416, 18336, 21384, 23688, 26416, 29296, 31704, 34008, 37888,
421 40576, 45352, 48936, 52752, 57336, 59256, 63776, 66592, 75376},
422 {2984, 3880, 4776, 6200, 7480, 9144, 11064, 12960, 14688,
423 16416, 18336, 21384, 23688, 27376, 30576, 31704, 34008, 37888,
424 42368, 45352, 48936, 52752, 57336, 59256, 63776, 66592, 75376},
425 {2984, 3880, 4776, 6200, 7480, 9528, 11064, 12960, 14688,
426 16992, 18336, 21384, 24496, 27376, 30576, 32856, 34008, 37888,
427 42368, 45352, 48936, 52752, 57336, 61664, 63776, 66592, 75376},
428 {2984, 3880, 4776, 6200, 7736, 9528, 11064, 12960, 15264,
429 16992, 19080, 21384, 24496, 27376, 30576, 32856, 35160, 39232,
430 42368, 46888, 48936, 52752, 57336, 61664, 66592, 68808, 75376},
431 {2984, 4008, 4776, 6200, 7736, 9528, 11448, 12960, 15264,
432 16992, 19080, 22152, 24496, 27376, 30576, 32856, 35160, 39232,
433 42368, 46888, 51024, 55056, 59256, 61664, 66592, 68808, 75376},
434 {2984, 4008, 4968, 6456, 7736, 9528, 11448, 13536, 15264,
435 16992, 19080, 22152, 24496, 28336, 31704, 34008, 35160, 39232,
436 43816, 46888, 51024, 55056, 59256, 61664, 66592, 68808, 75376},
437 {3112, 4008, 4968, 6456, 7992, 9528, 11448, 13536, 15264,
438 17568, 19080, 22152, 25456, 28336, 31704, 34008, 35160, 39232,
439 43816, 46888, 51024, 55056, 59256, 63776, 66592, 71112, 75376},
454 TypeId(
"ns3::NrLteAmc")
459 "The requested BER in assigning MCS (default is 0.00005).",
460 DoubleValue(0.00005),
461 MakeDoubleAccessor(&NrLteAmc::m_ber),
462 MakeDoubleChecker<double>())
463 .AddAttribute(
"AmcModel",
464 "AMC model used to assign CQI",
465 EnumValue(NrLteAmc::MiErrorModel),
466 MakeEnumAccessor<AmcModel>(&NrLteAmc::m_amcModel),
467 MakeEnumChecker(NrLteAmc::MiErrorModel,
469 NrLteAmc::PiroEW2010,
475NrLteAmc::GetCqiFromSpectralEfficiency(
double s)
478 NS_ASSERT_MSG(s >= 0.0,
"negative spectral efficiency = " << s);
480 while ((cqi < 15) && (SpectralEfficiencyForCqi[cqi + 1] < s))
484 NS_LOG_LOGIC(
"cqi = " << cqi);
489NrLteAmc::GetMcsFromCqi(
int cqi)
491 NS_LOG_FUNCTION(cqi);
492 NS_ASSERT_MSG(cqi >= 0 && cqi <= 15,
"CQI must be in [0..15] = " << cqi);
493 double spectralEfficiency = SpectralEfficiencyForCqi[cqi];
495 while ((mcs < 28) && (SpectralEfficiencyForMcs[mcs + 1] <= spectralEfficiency))
499 NS_LOG_LOGIC(
"mcs = " << mcs);
504NrLteAmc::GetDlTbSizeFromMcs(
int mcs,
int nprb)
506 NS_LOG_FUNCTION(mcs);
508 NS_ASSERT_MSG(mcs < 29,
"MCS=" << mcs);
509 NS_ASSERT_MSG(nprb > 0 && nprb < 111,
"NPRB=" << nprb);
511 int itbs = McsToItbsDl[mcs];
512 return TransportBlockSizeTable[nprb - 1][itbs];
516NrLteAmc::GetUlTbSizeFromMcs(
int mcs,
int nprb)
518 NS_LOG_FUNCTION(mcs);
520 NS_ASSERT_MSG(mcs < 29,
"MCS=" << mcs);
521 NS_ASSERT_MSG(nprb > 0 && nprb < 111,
"NPRB=" << nprb);
523 int itbs = McsToItbsUl[mcs];
524 return TransportBlockSizeTable[nprb - 1][itbs];