Skip to content

Latest commit

 

History

History
410 lines (316 loc) · 15.7 KB

File metadata and controls

410 lines (316 loc) · 15.7 KB

Decoder parameters

--dec-h-path

Type

file

Rights

read only

Examples

--dec-h-path conf/dec/LDPC/AR4JA_4096_8192.qc --dec-h-path conf/dec/LDPC/MACKAY_504_1008.alist

This argument is not required if the encoder type enc-ldpc-enc-type is LDPC_DVBS2.

For the AList format, an file composed by positive integers is expected:

# -- Part 1 --
# 'nVN' is the total number of variable nodes and 'nCN' is the total number of check nodes
nVN nCN
# 'dmax_VN' is the higher variable node degree and 'dmax_CN' is the higher check node degree
dmax_VN dmax_CN
# list of the degrees for each variable nodes
d_VN_{1} d_VN_{2} [...] d_VN_{nVN}
# list of the degrees for each check nodes
d_CN_{1} d_CN_{2} [...] d_CN_{nCN}
#
# -- Part 2 --
# each following line describes the check nodes connected to a variable node, the first
# check node index is '1' (and not '0')
# variable node '1'
VN_{1}_CN_{idx_1} [...] VN_{1}_CN_{idx_d_VN_{1}}
# variable node '2'
VN_{2}_CN_{idx_1} [...] VN_{2}_CN_{idx_d_VN_{2}}
[...]
# variable node 'nVN'
VN_{nVN}_CN_{idx_1} [...] VN_{nVN}_CN_{idx_d_VN_{nVN}}
#
# -- Part 3 --
# each following line describes the variables nodes connected to a check node, the first
# variable node index is '1' (and not '0')
# check node '1'
CN_{1}_VN_{idx_1} [...] CN_{1}_VN_{idx_d_CN_{1}}
# check node '2'
CN_{2}_VN_{idx_1} [...] CN_{2}_VN_{idx_d_CN_{2}}
[...]
# check node 'nCN'
CN_{nCN}_VN_{idx_1} [...] CN_{nCN}_VN_{idx_d_CN_{nCN}}

In the part 2 and 3, it is possible to pad, at the end of the indexes list, with zeros when the current node degree is smaller than the maximum node degree. will be able to read the file even if it is padded with zeros.

For the format, an file composed by integers is expected:

# 'C' is the number of columns (there is 'C * Z' variable nodes)
# 'R' is the number of rows (there is 'R * Z' check nodes)
# 'Z' is the expansion factor
C R Z

# each 'B_r_{y}_c_{x}' is a sub-matrix bloc of size 'Z * Z'
# 'B_r_{y}_c_{x} = -1' means a zero matrix
# 'B_r_{y}_c_{x} = 0' means an identity matrix
# 'B_r_{y}_c_{x} = s' with 's' between '1' and 'Z-1' means an identity matrix shifted 's' times
#                     to the right
B_r_{1}_c_{1} B_r_{1}_c_{2} [...] B_r_{1}_c_{C}
B_r_{2}_c_{1} B_r_{2}_c_{2} [...] B_r_{2}_c_{C}
[...]
B_r_{R}_c_{1} B_r_{R}_c_{2} [...] B_r_{R}_c_{C}

# puncturing pattern (optional)
# 'T_c_{x}' can be '0' or '1'
#  - if 'T_c_{x} = 0', does not transmit the 'Z' consecutive bits
#  - if 'T_c_{x} = 1', transmits the 'Z' consecutive bits
T_c_{1} T_c_{2} [...] T_c_{C}

--dec-type, -D

Type

text

Allowed values

BIT_FLIPPING BP_PEELING BP_FLOODING BP_HORIZONTAL_LAYERED BP_VERTICAL_LAYERED CHASE ML

Default

BP_FLOODING

Examples

--dec-type BP_HORIZONTAL_LAYERED

Description of the allowed values:

Value Description
BIT_FLIPPING Select the category of algorithms.
BP_PEELING Select the algorithm from Peeling2001.
BP_FLOODING Select the algorithm from MacKay1995.
BP_HORIZONTAL_LAYERED Select the algorithm from Yeo2001.
BP_VERTICAL_LAYERED Select the algorithm from Zhang2002.
CHASE See the common dec-common-dec-type parameter.
ML See the common dec-common-dec-type parameter.

--dec-implem

Type

text

Allowed values

STD GALA GALB GALE WBF PPBF SPA LSPA AMS MS NMS OMS

Default

SPA

Examples

--dec-implem AMS

Description of the allowed values:

Value Description
STD Select the implementation.
GALA Select the algorithm Ryan2009.
GALB Select the algorithm Declerq2014 with majority vote.
GALE Select the algorithm Declerq2014 with extended alphabet.
PPBF Select the algorithm LeGhaffari2019.
WBF Select the algorithm Wadayama2010.
SPA Select the update rules MacKay1995.
LSPA Select the update rules MacKay1995.
AMS Select the update rule.
MS Select the update rule Fossorier1999.
NMS Select the update rule Chen2002.
OMS Select the update rule Chen2002.

tab_ldpc_dec_implem shows the different decoder types and their corresponding available implementations.

decoder types and available implementations.
Decoder |STD |GALA |GALB |GALE |PPBF |WBF |SPA |LSPA |AMS |MS |NMS |OMS
 *  * +  * *  * * |K2  * *  * *
 * *  * *  * * |K1 * *
 * *  * *  * * |K2  * *  * *

*/ * *: compatible with the dec-ldpc-dec-simd INTER parameter.

 * *: require the C++ compiler to support the dynamic memory allocation for over-aligned data, see the P0035R4 paper. This feature is a part of the C++17 standard (working on the C++ GNU compiler version 8.1.0). When compiling with the GNU compiler in C++11 mode, the -faligned-new option enables specifically the required feature.

+: compatible with the dec-ldpc-dec-simd INTRA parameter.

--dec-simd

Type

text

Allowed values

INTER

Examples

--dec-simd INTER

tab_ldpc_dec_implem shows the decoders and implementations that support .

Description of the allowed values:

Value Description
INTRA Select the intra-frame strategy.
INTER Select the inter-frame strategy.

Note

In the intra-frame strategy, units process several LLRs in parallel within a single frame decoding. In the inter-frame strategy, SIMD units decodes several independent frames in parallel in order to saturate the unit. This approach improves the throughput of the decoder but requires to load several frames before starting to decode, increasing both the decoding latency and the decoder memory footprint.

Note

When the inter-frame strategy is set, the simulator will run with the right number of frames depending on the length. This number of frames can be manually set with the src-src-fra parameter. Be aware that running the simulator with the src-src-fra parameter set to 1 and the dec-polar-dec-simd parameter set to INTER will completely be counterproductive and will lead to no throughput improvements.

--dec-h-reorder

Type

text

Allowed values

ASC DSC NONE

Default

NONE

Examples

--dec-h-reorder ASC

The degree of a is the number of that are connected to it.

Description of the allowed values:

Value Description
ASC Reorder from the smallest degree to the biggest degree.
DSC Reorder from the biggest degree to the smallest degree.
NONE Do not change the order.

--dec-ite, -i

Type

integer

Default

10

Examples

--dec-ite 30

Note

By default, in order to speedup the decoding time, the decoder can stop the decoding process if all the parity check equations are verified (also called the syndrome detection). In that case the decoder can perform less decoding iterations than the given number. To force the decoder to make all the iterations, use the dec-ldpc-dec-no-synd parameter.

--dec-min

Type

text

Allowed values

MIN MINL MINS

Default

MINL

Examples

--dec-min MIN

Description of the allowed values:

Value Description
MINS min*(a, b) = min (a, b) + log (1 + exp ( − (a + b))) − log (1 + exp ( − |a − b|)).
MINL min*(a, b) ≈ min (a, b) + corr(a + b) − corr(|a + b|) with $corr(x) = \begin{cases} 0 & \text{if } x >= 2.625\\ -0.375 x + 0.6825 & \text{if } x < 1.0 \\ -0.1875 x + 0.5 & \text{else} \end{cases}$.
MIN min*(a, b) ≈ min (a, b).

MINS for Min Star is the exact min* operator. MINL for Min Linear is a linear approximation of the min* function. MIN for Min is the simplest approximation with only a min  function.

--dec-norm

Type

real number

Default

1.0

Examples

--dec-norm 0.75

--dec-off

Type

real number

Default

0.0

Examples

--dec-off 0.25

--dec-mwbf

Type

real number

Default

0.0

Examples

--dec-mwbf 1.0

--dec-synd-depth

Type

integer

Default

1

Examples

--dec-synd-depth 2

--dec-ppbf-proba

Type

list of real numbers

Examples

--dec-ppbf-proba "0,0.001,0.1,0.3,1,1,1"

Thus, with a parity matrix that has its largest variable node at 5, you must give 7 values. Each value corresponds to an energy level as described in LeGhaffari2019.

--dec-no-synd

References

references.bib