blob: 42f340b92e3605beffc33c3bb251a920a52eb71a [file] [log] [blame]
Oliver Smitha47d37c2019-12-11 08:46:41 +01001#!/usr/bin/env python3
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
Philipp Maier31c29ea2020-02-28 14:27:10 +0100525 # TCH_AXS SID UPDATE definition
526 ConvolutionalCode(
527 49,
528 [
529 ( G1, G3 ),
530 ( G2, G3 ),
531 ( 1, 1 ),
532 ( 1, 1 ),
533 ],
534 name = 'tch_axs_sid_update',
535 description = [
536 "TCH/AFS and TCH/AHS SID UPDATE convolutional code:",
537 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
538 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
539 "G3/G3 = 1",
540 "G3/G3 = 1",
541 ]
542 ),
543
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +0700544 # EDGE MCS1_DL_HDR definition
545 ConvolutionalCode(
546 36,
547 shared_polys["mcs"],
548 name = "mcs1_dl_hdr",
549 term_type = "CONV_TERM_TAIL_BITING",
550 description = [
551 "EDGE MCS-1 DL header convolutional code:",
552 "42 bits blocks, rate 1/3, k = 7",
553 "G4 = 1 + D2 + D3 + D5 + D6",
554 "G7 = 1 + D + D2 + D3 + D6",
555 "G5 = 1 + D + D4 + D6"
556 ]
557 ),
558
559 # EDGE MCS1_UL_HDR definition
560 ConvolutionalCode(
561 39,
562 shared_polys["mcs"],
563 name = "mcs1_ul_hdr",
564 term_type = "CONV_TERM_TAIL_BITING",
565 description = [
566 "EDGE MCS-1 UL header convolutional code:",
567 "45 bits blocks, rate 1/3, k = 7",
568 "G4 = 1 + D2 + D3 + D5 + D6",
569 "G7 = 1 + D + D2 + D3 + D6",
570 "G5 = 1 + D + D4 + D6"
571 ]
572 ),
573
574 # EDGE MCS1 definition
575 ConvolutionalCode(
576 190,
577 shared_polys["mcs"],
578 name = "mcs1",
579 description = [
580 "EDGE MCS-1 data convolutional code:",
581 "196 bits blocks, rate 1/3, k = 7",
582 "G4 = 1 + D2 + D3 + D5 + D6",
583 "G7 = 1 + D + D2 + D3 + D6",
584 "G5 = 1 + D + D4 + D6"
585 ]
586 ),
587
588 # EDGE MCS2 definition
589 ConvolutionalCode(
590 238,
591 shared_polys["mcs"],
592 name = "mcs2",
593 description = [
594 "EDGE MCS-2 data convolutional code:",
595 "244 bits blocks, rate 1/3, k = 7",
596 "G4 = 1 + D2 + D3 + D5 + D6",
597 "G7 = 1 + D + D2 + D3 + D6",
598 "G5 = 1 + D + D4 + D6"
599 ]
600 ),
601
602 # EDGE MCS3 definition
603 ConvolutionalCode(
604 310,
605 shared_polys["mcs"],
606 name = "mcs3",
607 description = [
608 "EDGE MCS-3 data convolutional code:",
609 "316 bits blocks, rate 1/3, k = 7",
610 "G4 = 1 + D2 + D3 + D5 + D6",
611 "G7 = 1 + D + D2 + D3 + D6",
612 "G5 = 1 + D + D4 + D6"
613 ]
614 ),
615
616 # EDGE MCS4 definition
617 ConvolutionalCode(
618 366,
619 shared_polys["mcs"],
620 name = "mcs4",
621 description = [
622 "EDGE MCS-4 data convolutional code:",
623 "372 bits blocks, rate 1/3, k = 7",
624 "G4 = 1 + D2 + D3 + D5 + D6",
625 "G7 = 1 + D + D2 + D3 + D6",
626 "G5 = 1 + D + D4 + D6"
627 ]
628 ),
629
630 # EDGE MCS5_DL_HDR definition
631 ConvolutionalCode(
632 33,
633 shared_polys["mcs"],
634 name = "mcs5_dl_hdr",
635 term_type = "CONV_TERM_TAIL_BITING",
636 description = [
637 "EDGE MCS-5 DL header convolutional code:",
638 "39 bits blocks, rate 1/3, k = 7",
639 "G4 = 1 + D2 + D3 + D5 + D6",
640 "G7 = 1 + D + D2 + D3 + D6",
641 "G5 = 1 + D + D4 + D6"
642 ]
643 ),
644
645 # EDGE MCS5_UL_HDR definition
646 ConvolutionalCode(
647 45,
648 shared_polys["mcs"],
649 name = "mcs5_ul_hdr",
650 term_type = "CONV_TERM_TAIL_BITING",
651 description = [
652 "EDGE MCS-5 UL header convolutional code:",
653 "51 bits blocks, rate 1/3, k = 7",
654 "G4 = 1 + D2 + D3 + D5 + D6",
655 "G7 = 1 + D + D2 + D3 + D6",
656 "G5 = 1 + D + D4 + D6"
657 ]
658 ),
659
660 # EDGE MCS5 definition
661 ConvolutionalCode(
662 462,
663 shared_polys["mcs"],
664 name = "mcs5",
665 description = [
666 "EDGE MCS-5 data convolutional code:",
667 "468 bits blocks, rate 1/3, k = 7",
668 "G4 = 1 + D2 + D3 + D5 + D6",
669 "G7 = 1 + D + D2 + D3 + D6",
670 "G5 = 1 + D + D4 + D6"
671 ]
672 ),
673
674 # EDGE MCS6 definition
675 ConvolutionalCode(
676 606,
677 shared_polys["mcs"],
678 name = "mcs6",
679 description = [
680 "EDGE MCS-6 data convolutional code:",
681 "612 bits blocks, rate 1/3, k = 7",
682 "G4 = 1 + D2 + D3 + D5 + D6",
683 "G7 = 1 + D + D2 + D3 + D6",
684 "G5 = 1 + D + D4 + D6"
685 ]
686 ),
687
688 # EDGE MCS7_DL_HDR definition
689 ConvolutionalCode(
690 45,
691 shared_polys["mcs"],
692 name = "mcs7_dl_hdr",
693 term_type = "CONV_TERM_TAIL_BITING",
694 description = [
695 "EDGE MCS-7 DL header convolutional code:",
696 "51 bits blocks, rate 1/3, k = 7",
697 "G4 = 1 + D2 + D3 + D5 + D6",
698 "G7 = 1 + D + D2 + D3 + D6",
699 "G5 = 1 + D + D4 + D6"
700 ]
701 ),
702
703 # EDGE MCS7_UL_HDR definition
704 ConvolutionalCode(
705 54,
706 shared_polys["mcs"],
707 name = "mcs7_ul_hdr",
708 term_type = "CONV_TERM_TAIL_BITING",
709 description = [
710 "EDGE MCS-7 UL header convolutional code:",
711 "60 bits blocks, rate 1/3, k = 7",
712 "G4 = 1 + D2 + D3 + D5 + D6",
713 "G7 = 1 + D + D2 + D3 + D6",
714 "G5 = 1 + D + D4 + D6"
715 ]
716 ),
717
718 # EDGE MCS7 definition
719 ConvolutionalCode(
720 462,
721 shared_polys["mcs"],
722 name = "mcs7",
723 description = [
724 "EDGE MCS-7 data convolutional code:",
725 "468 bits blocks, rate 1/3, k = 7",
726 "G4 = 1 + D2 + D3 + D5 + D6",
727 "G7 = 1 + D + D2 + D3 + D6",
728 "G5 = 1 + D + D4 + D6"
729 ]
730 ),
731
732 # EDGE MCS8 definition
733 ConvolutionalCode(
734 558,
735 shared_polys["mcs"],
736 name = "mcs8",
737 description = [
738 "EDGE MCS-8 data convolutional code:",
739 "564 bits blocks, rate 1/3, k = 7",
740 "G4 = 1 + D2 + D3 + D5 + D6",
741 "G7 = 1 + D + D2 + D3 + D6",
742 "G5 = 1 + D + D4 + D6"
743 ]
744 ),
745
746 # EDGE MCS9 definition
747 ConvolutionalCode(
748 606,
749 shared_polys["mcs"],
750 name = "mcs9",
751 description = [
752 "EDGE MCS-9 data convolutional code:",
753 "612 bits blocks, rate 1/3, k = 7",
754 "G4 = 1 + D2 + D3 + D5 + D6",
755 "G7 = 1 + D + D2 + D3 + D6",
756 "G5 = 1 + D + D4 + D6"
757 ]
758 ),
759]