diff --git a/lms6/lms6.txt b/lms6/lms6.txt index 79e8744..1beb01f 100644 --- a/lms6/lms6.txt +++ b/lms6/lms6.txt @@ -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) diff --git a/lms6/lms6ccsds.c b/lms6/lms6ccsds.c index da9971c..2669b5d 100644 --- a/lms6/lms6ccsds.c +++ b/lms6/lms6ccsds.c @@ -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++;