comtech
aha
corporation
Page 2 of 20
A subsidiary of Comtech Telecommunications Corporation
PSGalaxy_STK_0100
4.0
GALAXY CONFIGURATION
Prior to encoding or decoding using Galaxy,
configuration parameters must be set. During
encoding, the device appends Error Correction Code
(ECC) bits to the current block and then outputs the
encoded block. When decoding, Galaxy accepts soft
decision values and stores the data internally. The
block is then decoded iteratively by running it
through the soft in/soft out (SISO) decoder. Galaxy
iterates to the maximum programmed iteration limit
set by the
numIter
configuration parameter.
4.1
CODES
Galaxy Turbo Product codes are applied along
orthogonal axes as 2 dimensional (2D) product
codes, 3 dimensional (3D) codes, and enhanced
product codes. The codes applied along each axis do
not have to be the same (e.g. the blocks do not have
to be square). Table 1 lists the constituent code
choices for the X, Y, and Z axes. Note, code
shortening can be applied along any axis to achieve
an exact block size as required by the application.
Table 1:
Galaxy Constituent Codes
In addition to the 2D and 3D codes, Galaxy also
supports enhanced Turbo Product Codes (“hyper”
parity axis) which provide another dimension of
error correction. Enhanced TPCs are parity codes
applied along diagonals (the “hyper” axis) in the 2D
or 3D blocks.
The choice of code rate depends on many things
including desired overall code rate, data rate, gate
count, latency requirements, etc. The overall code
rate is the product of the axes code rates.
4.2
ITERATIONS
Decoding is done in an iterative fashion. Each
full iteration begins by passing an x-row into the Soft
Input Soft Output (SISO) decoder. The SISO output
is multiplied by a programmable X feedback (
xfbk
)
value. The completion of all x-rows constitutes one
axis iteration.
Next, each y-axis column is passed into the
SISO decoder. The SISO output is multiplied by the
programmable Y feedback value. The completion
of all y-columns constitutes one axis iteration.
If a 3D code is being decoded, each z-axis
column is passed into the SISO decoder. The SISO
output is multiplied by the programmable Z
feedback (
zfbk
) value. The completion of all z-
columns constitutes one axis iteration.
One full iteration is completed when one X and
one Y axis iteration is complete for a 2D code; or
one X, one Y, and one Z axis iteration is complete
for a 3D code. The iterations continue until the
iteration counter equals the number of iterations set
in the
numIter
parameter.
4.3
FEEDBACK
The TPC algorithm uses feedback, or
weighting, values for performance tuning. After
each axis iteration, the output of the Soft In, Soft
Output (SISO) Decoder is multiplied by the
feedback constant for that axis. These values are
then fed back into the SISO for future iterations.
The feedback multiplier values used for each
code axis can vary from 1/32 to 31/32 depending on
the number of iterations and system parameters
(soft input bits, resolution). The feedback
multipliers must be tuned to give optimum decoder
performance in a given system.
The following describes the tuning process. The
choice of feedback multiplier has no effect on
throughput or latency. For 2D square codes (
Xcode
=
Ycode
), a typical feedback multiplier value for
both axes at 3 or 4 iterations is 16/32. For 3D cubic
codes (
Xcode
=
Ycode
=
Zcode
), a typical feedback
multiplier value at 6 iterations is 12/32.
When using non-square or non-cubic codes, the
following general rules should be applied. Parity
codes should have their feedback multiplier values
set higher than Hamming codes when mixed. For
example, in a (32,26)x(32,26)x(4,3) code, the X and
Y feedback (
xfbk
and
yfbk
to 16/32 while the Z feedback (
zfbk
) should be set to
18/32 or 20/32. When mixing Hamming codes with
shorter Hamming codes, the feedback multiplier
should be set slightly higher for the shorter code.
AXIS CODEAXIS CODE
RATE
.965
.938
.891
.823
.688
.500
.996
.992
.984
.969
.938
.875
.75
CODE TYPE
(256,247)
(128,120)
(64,57)
(32,26)
(16,11)
(8,4)
(256,256)
(128,127)
(64,63)
(32,31)
(16,15)
(8,7)
(4,3)
Extended Hamming
Extended Hamming
Extended Hamming
Extended Hamming
Extended Hamming
Extended Hamming
Parity
Parity
Parity
Parity
Parity
Parity
Parity