lms6: nrz-ambiguity

pull/8/head
Zilog80 2018-09-17 20:05:03 +02:00
rodzic d65c3c0017
commit 2855792d73
2 zmienionych plików z 16 dodań i 12 usunięć

Wyświetl plik

@ -5,7 +5,7 @@ Lockheed Martin Sippican LMS6
FSK 4800 baud
convolutional code R=1/2, K=7 (CCSDS)
(inv(c0),c1)
(c0,inv(c1))
polyA = x^6+x^3+x^2+x+1 (0x4f)
polyB = x^6+x^5+x^3+x^2+1 (0x6d)
@ -85,13 +85,13 @@ qA = x^6+x^5+x^4+x+1
qB = x^4+x^3+x^2+x
receive:
...,a(n-1),b(n-1),a(n),b(n),a(n+1),b(n+1),...
...,a(n-1),b(n-1),a(n),b(n),a(n+1),b(n+1),... (or inverted)
if NRZ-S demod:
alpha(n)=[a(n)==b(n-1)]=a(n)+b(n-1)+1
beta(n)=[a(n)==b(n)]=b(n)+a(n)+1
alpha(n) = [a(n)==b(n-1)] = a(n)+b(n-1)+1 = [a'(n)==b'(n-1)] , a' = inv(a) = a + 1/(1+x)
beta(n) = [a(n)==b(n)] = b(n)+a(n)+1 = [a'(n)==b'(n)] , b' = inv(b) = b + 1/(1+x)
alpha = a + x*b + 1/(1+x)
beta = a + b + 1/(1+x)
alpha = a + x*b + 1/(1+x) = a' + x*b' + x/(1+x)
beta = a + b + 1/(1+x) = a' + b' + 1/(1+x)
m*pA = alpha
m*pB = beta
@ -108,9 +108,13 @@ polyA + x*polyB = (x+1)qA = pA
beta = m*pB = m*polyA + m*polyB = cA + cB
alpha = m*pA = m*polyA + x*m*polyB = cA + x*cB
alpha + beta = (1+x)cB = (1+x)b
alpha + x*beta = (1+x)cA = (1+x)a + 1
alpha + beta = (1+x)cB = (1+x)b = (1+x)b' + 1
alpha + x*beta = (1+x)cA = (1+x)a + 1 = (1+x)a'
cA = a + 1/(1+x) = a'
cB = b = b' + 1/(1+x)
here:
cA = a' , cB = inv(b')
cB = b
cA = a + 1/(1+x)

Wyświetl plik

@ -1007,7 +1007,7 @@ int main(int argc, char **argv) {
for (i = 0; i < len; i++) {
inc_bufpos();
bit = rbit ^ (bc%2); // (inv(c0),c1)
bit = rbit ^ (bc%2); // (c0,inv(c1))
bc++;
buf[bufpos] = 0x30 + bit;
@ -1035,7 +1035,7 @@ int main(int argc, char **argv) {
while ( pos < RAWBITBLOCK_LEN ) {
if (read_rawbit(fp, &rbit) == EOF) break;
bit = rbit ^ (bc%2); // (inv(c0),c1)
bit = rbit ^ (bc%2); // (c0,inv(c1))
bc++;
blk_rawbits[pos] = 0x30 + bit;
pos++;