Update CCSDS LDPC coding scheme authored by Sydney Hauke's avatar Sydney Hauke
......@@ -19,7 +19,7 @@ The parity check matrices and generator matrices are required respectively for d
The parity check matrix for the (8176, 7156) code is constructed according to the structure presented in *section 7.3.2.2* and the specification of Circulants presented in *table 7.1* of 131.0-B-3. The systematic Circulant generator matrix is constructed according to *figure 7-2* and its Circulants presented in *table c-1 of annex C* of 131.0-B-3.
The parity check matrices for the 9 *AR4JA* codes are constructed according to the equations presented in *sections 7.4.2.2 and 7.4.2.3* and constants in *table 7-2, 7-3 and 7-4* of 131.0-B-3. The generator matrices are constructed according to *sections 7.4.3.3, 7.4.3.4 and 7.4.3.5*.
The parity check matrices for the 9 *AR4JA* codes are constructed according to the equations presented in *sections 7.4.2.2 and 7.4.2.3* and constants in *table 7-2, 7-3 and 7-4* of 131.0-B-3. The generator matrices are constructed according to *sections 7.4.3.3, 7.4.3.4 and 7.4.3.5*. Contrary to the (8176, 7156) code, the generator matrices for the AR4JA codes have to be derived from the parity check matrices through operations on matrices. Therefore, the boost library *uBlas* is used for linear algebra operations.
## LDPC encoder and decoder design considerations
......@@ -70,4 +70,17 @@ At the same iteration count, the LDPC decoder's performance is lower compared to
* Our implementation uses Min-Sum variant of Belief-Propagation while the reference decoder uses Sum-Product. If the latter is true, then the Sum-Product variant should have the advantage over the Min-Sum variant with the same iteration count.
* Some constants used for the construction of the parity check and generator matrices may be erroneous in the implementation. If this is the case, encoding and decoding might be still possible but with a lower decode performance.
* An implementation error in the decode algorithm might be present. If this is the case, it may be possible that the decoder can still decode but with lower performance than expected.
\ No newline at end of file
* An implementation error in the decode algorithm might be present. If this is the case, it may be possible that the decoder can still decode but with lower performance than expected.
## Development roadmap
1. Find and study the relevant CCSDS recommendations
2. Precompute the parity check and generator matrices for code (8176, 7156). It was decided at this point that it was not worth doing this way and instead to compute the matrices directly at runtime initialisation.
3. Write the LDPC encoder/decoder and their quality assessment tests
4. Debug encoder/decoder
5. Optimize encoder/decoder for throughput/latency
6. Validate BER/SNR behaviour of the encoder/decoder by simulation on the (8176, 7156) code
7. Support for 9 AR4JA codes : code the construction of the parity check and generator matrices. This part took a non-negligible time. The use of the boost library *uBlas* for linear algebra was met with many difficulties (mainly non-obvious bugs)
8. Debug matrix construction errors
9. Validate BER/SNR behaviour by simulation on all 9 AR4JA codes
10. Code cleanup
\ No newline at end of file