1 |
2 |
rud_dp |
++++++++++++++++++++++++++
|
2 |
|
|
RS Decoder (31,19,6) v1.1
|
3 |
|
|
++++++++++++++++++++++++++
|
4 |
|
|
|
5 |
|
|
This project consists of 8 verilog files including a testbench file.
|
6 |
|
|
The files are:
|
7 |
|
|
- RSDecoder.v : contains description of top module of the decoder. It combines
|
8 |
|
|
5 modules of typical RS Decoder building blocks.
|
9 |
|
|
- scblock.v : contains description of the SC (Syndrome Computation) block and its
|
10 |
|
|
submodules.
|
11 |
|
|
- kesblock.v : KES (Key Equation Solver) block and its submodules.
|
12 |
|
|
- cseeblock.v : CSEE (Chien Search and Error Evaluator) block and parallel
|
13 |
|
|
invers multiplier module. CSEE is the only block in the decoder
|
14 |
|
|
that use invers multiplier to compute error magnitude using Fourney
|
15 |
|
|
Formula.
|
16 |
|
|
- controller.v : describes controller module. It consists of 2 FSMs and 2 counters.
|
17 |
|
|
- fifo_register.v : a FIFO register consists of 31 registers to store received word and
|
18 |
|
|
a register to synchronize outputted data with CSEE block.
|
19 |
|
|
- common_modules.v: this file contains basic modules that used by other higher modules.
|
20 |
|
|
It behaves like a library for the project.
|
21 |
|
|
- testbench.v : the testbench contains 3 different received word vectors. First
|
22 |
|
|
received word contains no error symbol. Second word contains 6 error
|
23 |
|
|
symbols and the last word contains 8 error symbols.
|
24 |
|
|
|
25 |
|
|
Limitations in this version:
|
26 |
|
|
Despite its high data rates, the decoder has some limitations that must be considered.
|
27 |
|
|
- It flags decoding failure at the end of outputted word. So, other block outside the
|
28 |
|
|
decoder cannot differentiate between uncorrected word and corrected word until it
|
29 |
|
|
receive decoding failure flag at the end of the word.
|
30 |
|
|
- Decoding failure is detected when degree of error location polynomial and
|
31 |
|
|
number of its roots is not equal. It means the error location polynomial doesn't
|
32 |
|
|
have roots in the underlying GF(2^5). To determine the roots, decoder must activate
|
33 |
|
|
CSEE block first. Hence, decoding failure is detected after all elements in
|
34 |
|
|
GF(2^5) have been evaluated.
|
35 |
|
|
- Uncorrectable word still have to be summed with wrong error values. Because decoding
|
36 |
|
|
failure is detected at the end of word, there is no other mechanism to solve
|
37 |
|
|
the problem, unless decoder start to output the word after all GF(2^5) elements
|
38 |
|
|
has been evaluated.
|
39 |
|
|
Hopefully, in next version, limitations above can be solved.
|
40 |
|
|
|
41 |
|
|
|
42 |
|
|
Rudy Dwi Putra
|
43 |
|
|
rudy.dp@gmail.com
|