|
| 1 | +# Channel codes basics |
| 2 | + |
| 3 | +## Main idea |
| 4 | + |
| 5 | +The main idea of the channel codes can be formulated as following thesises: |
| 6 | +- **noise immunity** of the signal should be increased; |
| 7 | +- **redundant bits** are added for *error detection* and *error correction*; |
| 8 | +- some special algorithms (<u>coding schemes</u>) are used for this. |
| 9 | + |
| 10 | + |
| 11 | + |
| 12 | +The fact how "further" a certain algorithm divides the code words among themselves, and determines how strongly it protects the signal from noise [1, p.23]. |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | +In the case of binary codes, the minimum distance between all existing code words is called ** Hamming distance ** and is usually denoted **dmin**: |
| 17 | + |
| 18 | +<img src="https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/FECexamp2.png" alt="examp2" width="400"/> |
| 19 | + |
| 20 | + |
| 21 | +## Classification |
| 22 | + |
| 23 | +Some classification is needed to talk about those or other implementations of the encoding and decoding algorithms. |
| 24 | + |
| 25 | +First, the channel codes: |
| 26 | +- can only [*detect*](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) the presence of errors |
| 27 | +- and they can also [*correct* errors](https://en.wikipedia.org/wiki/Error_correction_code). |
| 28 | + |
| 29 | +Secondly, codes can be classified as **block** and **continuous**: |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +## Net bit rate |
| 34 | +Redundancy of the channel coding schemes influences (decreases) bit rate. Actually, it is the cost for the noiseless increasing. |
| 35 | +**Net bit** rate concept is usually used: |
| 36 | + |
| 37 | +<img src="https://raw.githubusercontent.com/kirlf/CSP/master/FEC/assets/nebitrate.png" alt="net" width="500"/> |
| 38 | + |
| 39 | +To change the code rate (k/n) of the block code dimensions of the Generator matrix can be changed: |
| 40 | + |
| 41 | + |
| 42 | +To change the coderate of the continuous code, e.g. [convolutional code](https://github.com/kirlf/CSP/blob/master/FEC/Convolutional%20codes%20intro.md), **puncturing** procedure is frequently used: |
| 43 | + |
| 44 | + |
| 45 | + |
| 46 | +### Reference |
| 47 | + |
| 48 | +[1] Moon, Todd K. "Error correction coding." Mathematical Methods and Algorithms. Jhon Wiley and Son (2005). |
0 commit comments