- 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}
- 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. |
- 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 | |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.
- 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.
- 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. |
- 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.
- 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.
- Type
real number
- Default
1.0
- Examples
--dec-norm 0.75
- Type
real number
- Default
0.0
- Examples
--dec-off 0.25
- Type
real number
- Default
0.0
- Examples
--dec-mwbf 1.0
- Type
integer
- Default
1
- Examples
--dec-synd-depth 2
- 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
.
references.bib