LDPC Decoder object
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | cnum |
Number of Check Nodes |
|||
integer, | public | :: | vnum |
Number of variable nodes |
|||
integer, | public | :: | Ne |
Number of edges |
|||
type(TEdgeList), | public, | allocatable | :: | c_to_e(:) |
For each check node, the list of its connected edges |
||
type(TEdgeList), | public, | allocatable | :: | v_to_e(:) |
For each variable node, the list of its connected edges |
||
type(TEdgeList), | public, | allocatable | :: | c_to_v(:) |
For each check node, the list of its connected variable nodes |
||
type(TEdgeList), | public, | allocatable | :: | v_to_c(:) |
For each variable node, the list of its connected check nodes |
||
real(kind=wp), | public, | allocatable | :: | B_buffer(:) |
Support buffer for node processing (backwards partial results) |
||
real(kind=wp), | public, | allocatable | :: | F_buffer(:) |
Support buffer for node processing (forward partial results) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | N |
Number of edges |
||
integer, | intent(in) | :: | e_to_v(N) |
each location contains the index of the variable node connected to the edge corresponding to that location |
||
integer, | intent(in) | :: | e_to_c(N) |
each location contains the index of the check node connected to the edge corresponding to that location |
The resulting Decoder object
Destructor method for the TDecoder object It will just deallocate whatever was allocated.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(TDecoder) | :: | decoder |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(TDecoder) | :: | this |
Check the array of LLRs (or LAPPRs) against the syndrome
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(TDecoder) | :: | this |
Decoder |
|||
real(kind=wp), | intent(in) | :: | llr(this%vnum) |
Array of LLR (or LAPPR) |
||
logical, | intent(in) | :: | synd(this%cnum) |
Syndrome |
Evaluate the syndrome from a word
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(TDecoder) | :: | this |
Decoder |
|||
logical, | intent(in) | :: | word(this%vnum) |
Word |
Syndrome
Iteratively decode array of LLR (or LAPPRs) based on syndrome
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(TDecoder) | :: | this |
Decoder |
|||
real(kind=wp), | intent(in) | :: | llr_channel(this%vnum) |
Array of LLRs (or LAPPRs) obtained from the channel |
||
real(kind=wp), | intent(out) | :: | llr_updated(this%vnum) |
Array of processed LLRs (or LAPPRs) |
||
logical, | intent(in) | :: | synd(this%cnum) |
Syndrome |
||
integer, | intent(inout) | :: | N_iterations |
Maximum number of iterations (in), actual number of iterations (out) |