blob: ec776605885f322c857b68744eeb609388c17114 [file] [log] [blame]
Vadim Yanitskiy94c00312018-07-02 20:28:55 +07001#!/usr/bin/env python
Max32e56412017-10-16 14:58:00 +02002# -*- coding: utf-8 -*-
Vadim Yanitskiy94c00312018-07-02 20:28:55 +07003
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +07004from conv_gen import ConvolutionalCode
5from conv_gen import poly
6
7# Polynomials according to 3GPP TS 05.03 Annex B
8G0 = poly(0, 3, 4)
9G1 = poly(0, 1, 3, 4)
10G2 = poly(0, 2, 4)
11G3 = poly(0, 1, 2, 3, 4)
12G4 = poly(0, 2, 3, 5, 6)
13G5 = poly(0, 1, 4, 6)
14G6 = poly(0, 1, 2, 3, 4, 6)
15G7 = poly(0, 1, 2, 3, 6)
16
17# Shared polynomials
18shared_polys = {
19 "xcch" : [
20 ( G0, 1 ),
21 ( G1, 1 ),
22 ],
23 "mcs" : [
24 ( G4, 1 ),
25 ( G7, 1 ),
26 ( G5, 1 ),
27 ],
28}
29
30# Convolutional code definitions
31conv_codes = [
32 # xCCH definition
33 ConvolutionalCode(
34 224,
35 shared_polys["xcch"],
36 name = "xcch",
37 description = [
38 "xCCH convolutional code:",
39 "228 bits blocks, rate 1/2, k = 5",
40 "G0 = 1 + D3 + D4",
41 "G1 = 1 + D + D3 + D4",
42 ]
43 ),
44
45 # RACH definition
46 ConvolutionalCode(
47 14,
48 shared_polys["xcch"],
49 name = "rach",
50 description = ["RACH convolutional code"]
51 ),
52
Max32e56412017-10-16 14:58:00 +020053 # Extended RACH definition from 3GPP TS 45.003 ยง5.3.2
54 ConvolutionalCode(
55 17,
56 shared_polys["xcch"],
57 puncture = [ 0, 2, 5, 37, 39, 41, -1 ],
58 name = "rach_ext",
59 description = ["Extended RACH (11 bit) convolutional code"]
60 ),
61
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +070062 # SCH definition
63 ConvolutionalCode(
64 35,
65 shared_polys["xcch"],
66 name = "sch",
67 description = ["SCH convolutional code"]
68 ),
69
70 # CS2 definition
71 ConvolutionalCode(
72 290,
73 shared_polys["xcch"],
74 puncture = [
75 15, 19, 23, 27, 31, 35, 43, 47, 51, 55, 59, 63, 67, 71,
76 75, 79, 83, 91, 95, 99, 103, 107, 111, 115, 119, 123, 127, 131,
77 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 187, 191, 195,
78 199, 203, 207, 211, 215, 219, 223, 227, 235, 239, 243, 247, 251, 255,
79 259, 263, 267, 271, 275, 283, 287, 291, 295, 299, 303, 307, 311, 315,
80 319, 323, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 379,
81 383, 387, 391, 395, 399, 403, 407, 411, 415, 419, 427, 431, 435, 439,
82 443, 447, 451, 455, 459, 463, 467, 475, 479, 483, 487, 491, 495, 499,
83 503, 507, 511, 515, 523, 527, 531, 535, 539, 543, 547, 551, 555, 559,
84 563, 571, 575, 579, 583, 587, -1
85 ],
86 name = "cs2",
87 description = [
88 "CS2 convolutional code:",
89 "G0 = 1 + D3 + D4",
90 "G1 = 1 + D + D3 + D4",
91 ]
92 ),
93
94 # CS3 definition
95 ConvolutionalCode(
96 334,
97 shared_polys["xcch"],
98 puncture = [
99 15, 17, 21, 23, 27, 29, 33, 35, 39, 41, 45, 47, 51, 53,
100 57, 59, 63, 65, 69, 71, 75, 77, 81, 83, 87, 89, 93, 95,
101 99, 101, 105, 107, 111, 113, 117, 119, 123, 125, 129, 131, 135, 137,
102 141, 143, 147, 149, 153, 155, 159, 161, 165, 167, 171, 173, 177, 179,
103 183, 185, 189, 191, 195, 197, 201, 203, 207, 209, 213, 215, 219, 221,
104 225, 227, 231, 233, 237, 239, 243, 245, 249, 251, 255, 257, 261, 263,
105 267, 269, 273, 275, 279, 281, 285, 287, 291, 293, 297, 299, 303, 305,
106 309, 311, 315, 317, 321, 323, 327, 329, 333, 335, 339, 341, 345, 347,
107 351, 353, 357, 359, 363, 365, 369, 371, 375, 377, 381, 383, 387, 389,
108 393, 395, 399, 401, 405, 407, 411, 413, 417, 419, 423, 425, 429, 431,
109 435, 437, 441, 443, 447, 449, 453, 455, 459, 461, 465, 467, 471, 473,
110 477, 479, 483, 485, 489, 491, 495, 497, 501, 503, 507, 509, 513, 515,
111 519, 521, 525, 527, 531, 533, 537, 539, 543, 545, 549, 551, 555, 557,
112 561, 563, 567, 569, 573, 575, 579, 581, 585, 587, 591, 593, 597, 599,
113 603, 605, 609, 611, 615, 617, 621, 623, 627, 629, 633, 635, 639, 641,
114 645, 647, 651, 653, 657, 659, 663, 665, 669, 671, -1
115 ],
116 name = "cs3",
117 description = [
118 "CS3 convolutional code:",
119 "G0 = 1 + D3 + D4",
120 "G1 = 1 + D + D3 + D4",
121 ]
122 ),
123
Vadim Yanitskiy3262f822016-09-23 01:48:59 +0700124 # CS2 definition (non-punctured)
125 ConvolutionalCode(
126 290,
127 shared_polys["xcch"],
128 name = "cs2_np",
129 description = [
130 "CS2 convolutional code (non-punctured):",
131 "G0 = 1 + D3 + D4",
132 "G1 = 1 + D + D3 + D4",
133 ]
134 ),
135
136 # CS3 definition (non-punctured)
137 ConvolutionalCode(
138 334,
139 shared_polys["xcch"],
140 name = "cs3_np",
141 description = [
142 "CS3 convolutional code (non-punctured):",
143 "G0 = 1 + D3 + D4",
144 "G1 = 1 + D + D3 + D4",
145 ]
146 ),
147
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +0700148 # TCH_AFS_12_2 definition
149 ConvolutionalCode(
150 250,
151 [
152 ( 1, 1 ),
153 ( G1, G0 ),
154 ],
155 puncture = [
156 321, 325, 329, 333, 337, 341, 345, 349, 353, 357, 361, 363,
157 365, 369, 373, 377, 379, 381, 385, 389, 393, 395, 397, 401,
158 405, 409, 411, 413, 417, 421, 425, 427, 429, 433, 437, 441,
159 443, 445, 449, 453, 457, 459, 461, 465, 469, 473, 475, 477,
160 481, 485, 489, 491, 493, 495, 497, 499, 501, 503, 505, 507,
161 -1
162 ],
163 name = 'tch_afs_12_2',
164 description = [
165 "TCH/AFS 12.2 kbits convolutional code:",
166 "250 bits block, rate 1/2, punctured",
167 "G0/G0 = 1",
168 "G1/G0 = 1 + D + D3 + D4 / 1 + D3 + D4",
169 ]
170 ),
171
172 # TCH_AFS_10_2 definition
173 ConvolutionalCode(
174 210,
175 [
176 ( G1, G3 ),
177 ( G2, G3 ),
178 ( 1, 1 ),
179 ],
180 puncture = [
181 1, 4, 7, 10, 16, 19, 22, 28, 31, 34, 40, 43,
182 46, 52, 55, 58, 64, 67, 70, 76, 79, 82, 88, 91,
183 94, 100, 103, 106, 112, 115, 118, 124, 127, 130, 136, 139,
184 142, 148, 151, 154, 160, 163, 166, 172, 175, 178, 184, 187,
185 190, 196, 199, 202, 208, 211, 214, 220, 223, 226, 232, 235,
186 238, 244, 247, 250, 256, 259, 262, 268, 271, 274, 280, 283,
187 286, 292, 295, 298, 304, 307, 310, 316, 319, 322, 325, 328,
188 331, 334, 337, 340, 343, 346, 349, 352, 355, 358, 361, 364,
189 367, 370, 373, 376, 379, 382, 385, 388, 391, 394, 397, 400,
190 403, 406, 409, 412, 415, 418, 421, 424, 427, 430, 433, 436,
191 439, 442, 445, 448, 451, 454, 457, 460, 463, 466, 469, 472,
192 475, 478, 481, 484, 487, 490, 493, 496, 499, 502, 505, 508,
193 511, 514, 517, 520, 523, 526, 529, 532, 535, 538, 541, 544,
194 547, 550, 553, 556, 559, 562, 565, 568, 571, 574, 577, 580,
195 583, 586, 589, 592, 595, 598, 601, 604, 607, 609, 610, 613,
196 616, 619, 621, 622, 625, 627, 628, 631, 633, 634, 636, 637,
197 639, 640, -1
198 ],
199 name = 'tch_afs_10_2',
200 description = [
201 "TCH/AFS 10.2 kbits convolutional code:",
202 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
203 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
204 "G3/G3 = 1",
205 ]
206 ),
207
208 # TCH_AFS_7_95 definition
209 ConvolutionalCode(
210 165,
211 [
212 ( 1, 1 ),
213 ( G5, G4 ),
214 ( G6, G4 ),
215 ],
216 puncture = [
217 1, 2, 4, 5, 8, 22, 70, 118, 166, 214, 262, 310,
218 317, 319, 325, 332, 334, 341, 343, 349, 356, 358, 365, 367,
219 373, 380, 382, 385, 389, 391, 397, 404, 406, 409, 413, 415,
220 421, 428, 430, 433, 437, 439, 445, 452, 454, 457, 461, 463,
221 469, 476, 478, 481, 485, 487, 490, 493, 500, 502, 503, 505,
222 506, 508, 509, 511, 512, -1
223 ],
224 name = 'tch_afs_7_95',
225 description = [
226 "TCH/AFS 7.95 kbits convolutional code:",
227 "G4/G4 = 1",
228 "G5/G4 = 1 + D + D4 + D6 / 1 + D2 + D3 + D5 + D6",
229 "G6/G4 = 1 + D + D2 + D3 + D4 + D6 / 1 + D2 + D3 + D5 + D6",
230 ]
231 ),
232
233 # TCH_AFS_7_4 definition
234 ConvolutionalCode(
235 154,
236 [
237 ( G1, G3 ),
238 ( G2, G3 ),
239 ( 1, 1 ),
240 ],
241 puncture = [
242 0, 355, 361, 367, 373, 379, 385, 391, 397, 403, 409, 415,
243 421, 427, 433, 439, 445, 451, 457, 460, 463, 466, 468, 469,
244 471, 472, -1
245 ],
246 name = 'tch_afs_7_4',
247 description = [
248 "TCH/AFS 7.4 kbits convolutional code:",
249 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
250 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
251 "G3/G3 = 1",
252 ]
253 ),
254
255 # TCH_AFS_6_7 definition
256 ConvolutionalCode(
257 140,
258 [
259 ( G1, G3 ),
260 ( G2, G3 ),
261 ( 1, 1 ),
262 ( 1, 1 ),
263 ],
264 puncture = [
265 1, 3, 7, 11, 15, 27, 39, 55, 67, 79, 95, 107,
266 119, 135, 147, 159, 175, 187, 199, 215, 227, 239, 255, 267,
267 279, 287, 291, 295, 299, 303, 307, 311, 315, 319, 323, 327,
268 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 369, 371,
269 375, 377, 379, 383, 385, 387, 391, 393, 395, 399, 401, 403,
270 407, 409, 411, 415, 417, 419, 423, 425, 427, 431, 433, 435,
271 439, 441, 443, 447, 449, 451, 455, 457, 459, 463, 465, 467,
272 471, 473, 475, 479, 481, 483, 487, 489, 491, 495, 497, 499,
273 503, 505, 507, 511, 513, 515, 519, 521, 523, 527, 529, 531,
274 535, 537, 539, 543, 545, 547, 549, 551, 553, 555, 557, 559,
275 561, 563, 565, 567, 569, 571, 573, 575, -1
276 ],
277 name = 'tch_afs_6_7',
278 description = [
279 "TCH/AFS 6.7 kbits convolutional code:",
280 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
281 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
282 "G3/G3 = 1",
283 "G3/G3 = 1",
284 ]
285 ),
286
287 # TCH_AFS_5_9 definition
288 ConvolutionalCode(
289 124,
290 [
291 ( G4, G6 ),
292 ( G5, G6 ),
293 ( 1, 1),
294 ( 1, 1),
295 ],
296 puncture = [
297 0, 1, 3, 5, 7, 11, 15, 31, 47, 63, 79, 95,
298 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287,
299 303, 319, 327, 331, 335, 343, 347, 351, 359, 363, 367, 375,
300 379, 383, 391, 395, 399, 407, 411, 415, 423, 427, 431, 439,
301 443, 447, 455, 459, 463, 467, 471, 475, 479, 483, 487, 491,
302 495, 499, 503, 507, 509, 511, 512, 513, 515, 516, 517, 519,
303 -1
304 ],
305 name = 'tch_afs_5_9',
306 description = [
307 "TCH/AFS 5.9 kbits convolutional code:",
308 "124 bits",
309 "G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6",
310 "G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6",
311 "G6/G6 = 1",
312 "G6/G6 = 1",
313 ]
314 ),
315
316 # TCH_AFS_5_15 definition
317 ConvolutionalCode(
318 109,
319 [
320 ( G1, G3 ),
321 ( G1, G3 ),
322 ( G2, G3 ),
323 ( 1, 1 ),
324 ( 1, 1 ),
325 ],
326 puncture = [
327 0, 4, 5, 9, 10, 14, 15, 20, 25, 30, 35, 40,
328 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160,
329 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280,
330 290, 300, 310, 315, 320, 325, 330, 334, 335, 340, 344, 345,
331 350, 354, 355, 360, 364, 365, 370, 374, 375, 380, 384, 385,
332 390, 394, 395, 400, 404, 405, 410, 414, 415, 420, 424, 425,
333 430, 434, 435, 440, 444, 445, 450, 454, 455, 460, 464, 465,
334 470, 474, 475, 480, 484, 485, 490, 494, 495, 500, 504, 505,
335 510, 514, 515, 520, 524, 525, 529, 530, 534, 535, 539, 540,
336 544, 545, 549, 550, 554, 555, 559, 560, 564, -1
337 ],
338 name = 'tch_afs_5_15',
339 description = [
340 "TCH/AFS 5.15 kbits convolutional code:",
341 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
342 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
343 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
344 "G3/G3 = 1",
345 "G3/G3 = 1",
346 ]
347 ),
348
349 # TCH_AFS_4_75 definition
350 ConvolutionalCode(
351 101,
352 [
353 ( G4, G6 ),
354 ( G4, G6 ),
355 ( G5, G6 ),
356 ( 1, 1 ),
357 ( 1, 1 ),
358 ],
359 puncture = [
360 0, 1, 2, 4, 5, 7, 9, 15, 25, 35, 45, 55,
361 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, 165, 175,
362 185, 195, 205, 215, 225, 235, 245, 255, 265, 275, 285, 295,
363 305, 315, 325, 335, 345, 355, 365, 375, 385, 395, 400, 405,
364 410, 415, 420, 425, 430, 435, 440, 445, 450, 455, 459, 460,
365 465, 470, 475, 479, 480, 485, 490, 495, 499, 500, 505, 509,
366 510, 515, 517, 519, 520, 522, 524, 525, 526, 527, 529, 530,
367 531, 532, 534, -1
368 ],
369 name = 'tch_afs_4_75',
370 description = [
371 "TCH/AFS 4.75 kbits convolutional code:",
372 "G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6",
373 "G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6",
374 "G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6",
375 "G6/G6 = 1",
376 "G6/G6 = 1",
377 ]
378 ),
379
380 # TCH_FR definition
381 ConvolutionalCode(
382 185,
383 shared_polys["xcch"],
384 name = "tch_fr",
385 description = ["TCH/F convolutional code"]
386 ),
387
388 # TCH_HR definition
389 ConvolutionalCode(
390 98,
391 [
392 ( G4, 1 ),
393 ( G5, 1 ),
394 ( G6, 1 ),
395 ],
396 puncture = [
397 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34,
398 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70,
399 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 103, 106,
400 109, 112, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142,
401 145, 148, 151, 154, 157, 160, 163, 166, 169, 172, 175, 178,
402 181, 184, 187, 190, 193, 196, 199, 202, 205, 208, 211, 214,
403 217, 220, 223, 226, 229, 232, 235, 238, 241, 244, 247, 250,
404 253, 256, 259, 262, 265, 268, 271, 274, 277, 280, 283, 295,
405 298, 301, 304, 307, 310, -1,
406 ],
407 name = "tch_hr",
408 description = ["TCH/H convolutional code"]
409 ),
410
411 # TCH_AHS_7_95 definition
412 ConvolutionalCode(
413 129,
414 [
415 ( 1, 1 ),
416 ( G1, G0 ),
417 ],
418 puncture = [
419 1, 3, 5, 7, 11, 15, 19, 23, 27, 31, 35, 43,
420 47, 51, 55, 59, 63, 67, 71, 79, 83, 87, 91, 95,
421 99, 103, 107, 115, 119, 123, 127, 131, 135, 139, 143, 151,
422 155, 159, 163, 167, 171, 175, 177, 179, 183, 185, 187, 191,
423 193, 195, 197, 199, 203, 205, 207, 211, 213, 215, 219, 221,
424 223, 227, 229, 231, 233, 235, 239, 241, 243, 247, 249, 251,
425 255, 257, 259, 261, 263, 265, -1,
426 ],
427 name = "tch_ahs_7_95",
428 description = ["TCH/AHS 7.95 kbits convolutional code"]
429 ),
430
431 # TCH_AHS_7_4 definition
432 ConvolutionalCode(
433 126,
434 [
435 ( 1, 1 ),
436 ( G1, G0 ),
437 ],
438 puncture = [
439 1, 3, 7, 11, 19, 23, 27, 35, 39, 43, 51, 55,
440 59, 67, 71, 75, 83, 87, 91, 99, 103, 107, 115, 119,
441 123, 131, 135, 139, 143, 147, 151, 155, 159, 163, 167, 171,
442 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219,
443 221, 223, 227, 229, 231, 235, 237, 239, 243, 245, 247, 251,
444 253, 255, 257, 259, -1,
445 ],
446 name = "tch_ahs_7_4",
447 description = ["TCH/AHS 7.4 kbits convolutional code"]
448 ),
449
450 # TCH_AHS_6_7 definition
451 ConvolutionalCode(
452 116,
453 [
454 ( 1, 1 ),
455 ( G1, G0 ),
456 ],
457 puncture = [
458 1, 3, 9, 19, 29, 39, 49, 59, 69, 79, 89, 99,
459 109, 119, 129, 139, 149, 159, 167, 169, 177, 179, 187, 189,
460 197, 199, 203, 207, 209, 213, 217, 219, 223, 227, 229, 231,
461 233, 235, 237, 239, -1,
462 ],
463 name = "tch_ahs_6_7",
464 description = ["TCH/AHS 6.7 kbits convolutional code"]
465 ),
466
467 # TCH_AHS_5_9 definition
468 ConvolutionalCode(
469 108,
470 [
471 ( 1, 1 ),
472 ( G1, G0 ),
473 ],
474 puncture = [
475 1, 15, 71, 127, 139, 151, 163, 175, 187, 195, 203, 211,
476 215, 219, 221, 223, -1,
477 ],
478 name = "tch_ahs_5_9",
479 description = ["TCH/AHS 5.9 kbits convolutional code"]
480 ),
481
482 # TCH_AHS_5_15 definition
483 ConvolutionalCode(
484 97,
485 [
486 ( G1, G3 ),
487 ( G2, G3 ),
488 ( 1, 1 ),
489 ],
490 puncture = [
491 0, 1, 3, 4, 6, 9, 12, 15, 18, 21, 27, 33,
492 39, 45, 51, 54, 57, 63, 69, 75, 81, 87, 90, 93,
493 99, 105, 111, 117, 123, 126, 129, 135, 141, 147, 153, 159,
494 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195,
495 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231,
496 234, 237, 240, 243, 244, 246, 249, 252, 255, 256, 258, 261,
497 264, 267, 268, 270, 273, 276, 279, 280, 282, 285, 288, 289,
498 291, 294, 295, 297, 298, 300, 301, -1,
499 ],
500 name = "tch_ahs_5_15",
501 description = ["TCH/AHS 5.15 kbits convolutional code"]
502 ),
503
504 # TCH_AHS_4_75 definition
505 ConvolutionalCode(
506 89,
507 [
508 ( 1, 1 ),
509 ( G5, G4 ),
510 ( G6, G4 ),
511 ],
512 puncture = [
513 1, 2, 4, 5, 7, 8, 10, 13, 16, 22, 28, 34,
514 40, 46, 52, 58, 64, 70, 76, 82, 88, 94, 100, 106,
515 112, 118, 124, 130, 136, 142, 148, 151, 154, 160, 163, 166,
516 172, 175, 178, 184, 187, 190, 196, 199, 202, 208, 211, 214,
517 220, 223, 226, 232, 235, 238, 241, 244, 247, 250, 253, 256,
518 259, 262, 265, 268, 271, 274, 275, 277, 278, 280, 281, 283,
519 284, -1,
520 ],
521 name = "tch_ahs_4_75",
522 description = ["TCH/AHS 4.75 kbits convolutional code"]
523 ),
524
525 # EDGE MCS1_DL_HDR definition
526 ConvolutionalCode(
527 36,
528 shared_polys["mcs"],
529 name = "mcs1_dl_hdr",
530 term_type = "CONV_TERM_TAIL_BITING",
531 description = [
532 "EDGE MCS-1 DL header convolutional code:",
533 "42 bits blocks, rate 1/3, k = 7",
534 "G4 = 1 + D2 + D3 + D5 + D6",
535 "G7 = 1 + D + D2 + D3 + D6",
536 "G5 = 1 + D + D4 + D6"
537 ]
538 ),
539
540 # EDGE MCS1_UL_HDR definition
541 ConvolutionalCode(
542 39,
543 shared_polys["mcs"],
544 name = "mcs1_ul_hdr",
545 term_type = "CONV_TERM_TAIL_BITING",
546 description = [
547 "EDGE MCS-1 UL header convolutional code:",
548 "45 bits blocks, rate 1/3, k = 7",
549 "G4 = 1 + D2 + D3 + D5 + D6",
550 "G7 = 1 + D + D2 + D3 + D6",
551 "G5 = 1 + D + D4 + D6"
552 ]
553 ),
554
555 # EDGE MCS1 definition
556 ConvolutionalCode(
557 190,
558 shared_polys["mcs"],
559 name = "mcs1",
560 description = [
561 "EDGE MCS-1 data convolutional code:",
562 "196 bits blocks, rate 1/3, k = 7",
563 "G4 = 1 + D2 + D3 + D5 + D6",
564 "G7 = 1 + D + D2 + D3 + D6",
565 "G5 = 1 + D + D4 + D6"
566 ]
567 ),
568
569 # EDGE MCS2 definition
570 ConvolutionalCode(
571 238,
572 shared_polys["mcs"],
573 name = "mcs2",
574 description = [
575 "EDGE MCS-2 data convolutional code:",
576 "244 bits blocks, rate 1/3, k = 7",
577 "G4 = 1 + D2 + D3 + D5 + D6",
578 "G7 = 1 + D + D2 + D3 + D6",
579 "G5 = 1 + D + D4 + D6"
580 ]
581 ),
582
583 # EDGE MCS3 definition
584 ConvolutionalCode(
585 310,
586 shared_polys["mcs"],
587 name = "mcs3",
588 description = [
589 "EDGE MCS-3 data convolutional code:",
590 "316 bits blocks, rate 1/3, k = 7",
591 "G4 = 1 + D2 + D3 + D5 + D6",
592 "G7 = 1 + D + D2 + D3 + D6",
593 "G5 = 1 + D + D4 + D6"
594 ]
595 ),
596
597 # EDGE MCS4 definition
598 ConvolutionalCode(
599 366,
600 shared_polys["mcs"],
601 name = "mcs4",
602 description = [
603 "EDGE MCS-4 data convolutional code:",
604 "372 bits blocks, rate 1/3, k = 7",
605 "G4 = 1 + D2 + D3 + D5 + D6",
606 "G7 = 1 + D + D2 + D3 + D6",
607 "G5 = 1 + D + D4 + D6"
608 ]
609 ),
610
611 # EDGE MCS5_DL_HDR definition
612 ConvolutionalCode(
613 33,
614 shared_polys["mcs"],
615 name = "mcs5_dl_hdr",
616 term_type = "CONV_TERM_TAIL_BITING",
617 description = [
618 "EDGE MCS-5 DL header convolutional code:",
619 "39 bits blocks, rate 1/3, k = 7",
620 "G4 = 1 + D2 + D3 + D5 + D6",
621 "G7 = 1 + D + D2 + D3 + D6",
622 "G5 = 1 + D + D4 + D6"
623 ]
624 ),
625
626 # EDGE MCS5_UL_HDR definition
627 ConvolutionalCode(
628 45,
629 shared_polys["mcs"],
630 name = "mcs5_ul_hdr",
631 term_type = "CONV_TERM_TAIL_BITING",
632 description = [
633 "EDGE MCS-5 UL header convolutional code:",
634 "51 bits blocks, rate 1/3, k = 7",
635 "G4 = 1 + D2 + D3 + D5 + D6",
636 "G7 = 1 + D + D2 + D3 + D6",
637 "G5 = 1 + D + D4 + D6"
638 ]
639 ),
640
641 # EDGE MCS5 definition
642 ConvolutionalCode(
643 462,
644 shared_polys["mcs"],
645 name = "mcs5",
646 description = [
647 "EDGE MCS-5 data convolutional code:",
648 "468 bits blocks, rate 1/3, k = 7",
649 "G4 = 1 + D2 + D3 + D5 + D6",
650 "G7 = 1 + D + D2 + D3 + D6",
651 "G5 = 1 + D + D4 + D6"
652 ]
653 ),
654
655 # EDGE MCS6 definition
656 ConvolutionalCode(
657 606,
658 shared_polys["mcs"],
659 name = "mcs6",
660 description = [
661 "EDGE MCS-6 data convolutional code:",
662 "612 bits blocks, rate 1/3, k = 7",
663 "G4 = 1 + D2 + D3 + D5 + D6",
664 "G7 = 1 + D + D2 + D3 + D6",
665 "G5 = 1 + D + D4 + D6"
666 ]
667 ),
668
669 # EDGE MCS7_DL_HDR definition
670 ConvolutionalCode(
671 45,
672 shared_polys["mcs"],
673 name = "mcs7_dl_hdr",
674 term_type = "CONV_TERM_TAIL_BITING",
675 description = [
676 "EDGE MCS-7 DL header convolutional code:",
677 "51 bits blocks, rate 1/3, k = 7",
678 "G4 = 1 + D2 + D3 + D5 + D6",
679 "G7 = 1 + D + D2 + D3 + D6",
680 "G5 = 1 + D + D4 + D6"
681 ]
682 ),
683
684 # EDGE MCS7_UL_HDR definition
685 ConvolutionalCode(
686 54,
687 shared_polys["mcs"],
688 name = "mcs7_ul_hdr",
689 term_type = "CONV_TERM_TAIL_BITING",
690 description = [
691 "EDGE MCS-7 UL header convolutional code:",
692 "60 bits blocks, rate 1/3, k = 7",
693 "G4 = 1 + D2 + D3 + D5 + D6",
694 "G7 = 1 + D + D2 + D3 + D6",
695 "G5 = 1 + D + D4 + D6"
696 ]
697 ),
698
699 # EDGE MCS7 definition
700 ConvolutionalCode(
701 462,
702 shared_polys["mcs"],
703 name = "mcs7",
704 description = [
705 "EDGE MCS-7 data convolutional code:",
706 "468 bits blocks, rate 1/3, k = 7",
707 "G4 = 1 + D2 + D3 + D5 + D6",
708 "G7 = 1 + D + D2 + D3 + D6",
709 "G5 = 1 + D + D4 + D6"
710 ]
711 ),
712
713 # EDGE MCS8 definition
714 ConvolutionalCode(
715 558,
716 shared_polys["mcs"],
717 name = "mcs8",
718 description = [
719 "EDGE MCS-8 data convolutional code:",
720 "564 bits blocks, rate 1/3, k = 7",
721 "G4 = 1 + D2 + D3 + D5 + D6",
722 "G7 = 1 + D + D2 + D3 + D6",
723 "G5 = 1 + D + D4 + D6"
724 ]
725 ),
726
727 # EDGE MCS9 definition
728 ConvolutionalCode(
729 606,
730 shared_polys["mcs"],
731 name = "mcs9",
732 description = [
733 "EDGE MCS-9 data convolutional code:",
734 "612 bits blocks, rate 1/3, k = 7",
735 "G4 = 1 + D2 + D3 + D5 + D6",
736 "G7 = 1 + D + D2 + D3 + D6",
737 "G5 = 1 + D + D4 + D6"
738 ]
739 ),
740]