Última actividad 1 month ago

LRPT k=7 r=1/2 Convolution Encoder

convencode.py Sin formato
1#!/usr/bin/env python
2
3import os, math
4import collections
5
6G1 = 0x79 # 171 octal
7G2 = 0x5B # 131 octal
8
9K = 7
10UW = 0x1ACFFC1D
11
12buff = collections.deque(maxlen=K)
13
14def binary(num, length=8):
15 return format(num, '#0{}b'.format(length + 2))
16
17# Fill the buffer with initial values
18for i in range(0, K):
19 buff.append(0)
20
21
22bitUW = []
23binaryUW = binary(UW, 32)[2:]
24for i in binaryUW:
25 bitUW.append(int(i))
26
27bitG1 = []
28bitG2 = []
29binaryG1 = binary(G1, K)[2:]
30binaryG2 = binary(G2, K)[2:]
31for i in range(0, K):
32 bitG1.append(int(binaryG1[i]))
33 bitG2.append(int(binaryG2[i]))
34
35convolved = []
36
37def buffIsZero():
38 for i in range(0, K):
39 if buff[i] == 1:
40 return False
41 return True
42
43for i in bitUW:
44 buff.appendleft(i)
45 b0 = 0
46 b1 = 0
47 for t in range(0, K):
48 b0 += bitG1[t] & buff[t]
49 b1 += bitG2[t] & buff[t]
50 b0 = b0 % 2
51 b1 = b1 % 2
52 b1 = 1 if b1 == 0 else 0
53 convolved.append(b0)
54 convolved.append(b1)
55
56while True:
57 buff.appendleft(0)
58 if buffIsZero():
59 break
60 b0 = 0
61 b1 = 0
62 for t in range(0, K):
63 b0 += bitG1[t] & buff[t]
64 b1 += bitG2[t] & buff[t]
65 b0 = b0 % 2
66 b1 = b1 % 2
67 b1 = 1 if b1 == 0 else 0
68 convolved.append(b0)
69 convolved.append(b1)
70
71#convolved = convolved[:len(convolved)-2]
72
73print convolved
74
75f = open("UW.bit", "w")
76t = open("UW_normal.bit", "w")
77for s in range(0, 64):
78 for i in bitUW:
79 if i == 1:
80 t.write(chr(0xFF))
81 t.write(chr(0xFF))
82 t.write(chr(0xFF))
83 else:
84 t.write(chr(0x00))
85 t.write(chr(0x00))
86 t.write(chr(0x00))
87 for i in convolved:
88 if i == 1:
89 f.write(chr(0xFF))
90 f.write(chr(0xFF))
91 f.write(chr(0xFF))
92 else:
93 f.write(chr(0x00))
94 f.write(chr(0x00))
95 f.write(chr(0x00))
96
97f.close()
98t.close()