TSS902E
Viterbi and Reed–Solomon FEC Decoder
1. Description
Digital communication channels are inherently noisy,
making transmission error control essential for reliable
communication at low transmit power.
The TEMIC TSS902E is a single–chip Forward Error
Correction decoder; it conforms to the MPEG–II
transport layer protocol specified by ISO/IEC standard
and FEC requirements of Digital Video Broadcasting
(DVB) specification; its typical applications are DVB
satellites, regenerative multi–media transmission
satellites and military communications.
The TEMIC TSS902E capabilities rely on Viterbi and
Reed–Solomon decoding algorithms to achieve
extremely low bit–error rate (BER) on the transmitted
data. Allowing discontinuous data blocks transmission,
the TSS902E burst mode feature is unique.
The component is made of the following blocks:
G
The inner decoder which performs the first level
error detection and correction.
This unit is made of a depuncturing block, a Viterbi
G
G
G
G
decoder (k=7) and a synchronization/clock
controller.
The convolutional deinterleaver, l=12 bytes for RS
(204, 188, T=8) configuration.
The outer decoder performs the second level error
protection, using a Reed Solomon (255, 239) error
correcting process.
The descrambler for energy dispersal removal.
A micro–processor interface to setup the device and
monitor the testability functions.
While monitoring the inner Viterbi decoder BER output,
the phase and the depuncturing pattern are tuned until
the Viterbi decoder proper alignment is found.
The Viterbi decoder output feeds the deinterleaver and
Reed–Solomon decoder synchronization module. Once
the synchronization words have been found, the
deinterleaver, the outer Reed–Solomon decoder and the
descrambler are properly aligned.
Each functional block may be by–passed, giving more
flexibility to a system designer.
2. Features
2.1. General
G
Compliant with ETS 300 421 for DVB, DVB–S.
G
Compliant with ISO/IEC–CD 13818–1 MPEG–II
transport layer protocol.
G
Input code rate frequency up to 10 MBits/sec at 5V.
G
On–chip Bit Error Rate monitoring.
G
SEU immunity better than 30 MeV/mg/cm
2
G
Total dose better than 50 Krad (Si).
G
Supply voltage 3 to 5V.
G
Power consumption 1W at 5V / 10MHz external
clock frequency (code rate 7/8).
G
0.6
µm
drawn CMOS, 3 metal layers.
G
132–pin MQFP.
2.3. Synchronization controller
G
Automatic synchronization capabilities for QPSK or
BPSK.
G
Responds to inverted synchronization byte.
G
Programmable synchronization byte.
2.4. Convolutional deinterleaver
G
Error protected frame length n = 204.
G
Interleave depth I = 12.
2.5. Reed Solomon Decoder
G
Supported programmable shortened code length
K = 34 to 239, T = 8.
G
Correction capability up to T = 8 bytes.
2.2. Viterbi Decoder
G
Selectable code rates
1
/
2
,
2
/
3
,
3
/
4
,
5
/
6
and
7
/
8
or automatic acquisition mode
.
G
Hard decision or 3–Bit soft–decision decoder inputs.
G
Constraint length k = 7.
G
E
b
/N
0
for BER 2.10
–4
(code rate
1
/
2
) 3.5 dB.
MHS
Rev. D
–
April 1999
2.6. Descrambler (Energy Dispersal)
G
Polynomial generator q(x) = X
15
+ X
14
+ 1.
G
MPEG–II inverted synchronization byte.
1
TSS902E
3. Term definitions
Table 1: VITERBI
TERM
k
NAME
Encoding constraint length
Traceback depth
Puncturing
Code rate
DEFINITION
Number of input bits contributing to the convolutional code.
Length of path through the trellis over which the Viterbi
decoder computes a decoded bit value likelihood.
Transmission rate increasing process. Done by erasing some
specific code bits before data transmission.
Convolutional code input to output bits ratio.
RANGE
7
2/3, 3/4, 5/6, 7/8
Table 2: CONVOLUTIONAL DEINTERLEAVER
TERM
I
NAME
Interleaving depth
DEFINITION
Interleaved stream separation.
RANGE
12
Table 3: REED–SOLOMON
TERM
K
R
N
T
NAME
Message length
Check symbols
Codeword length
Error corrections
DEFINITION
Number of user data symbols in one message block.
Symbols appended to the user data to detect errors.
Sum of message and check symbols.
N = K + R
Maximum number of error corrections performed by the RS
decoder.
RANGE
34
p
K
p
239 bytes
16 bytes
50
p
N
p
255 bytes
8
2
MHS
Rev. D
–
April 1999
TSS902E
4. Functional description
This section describes the TSS902E device architecture and its constituents functionality.
DUP[7:0]
AD[7:0]
AS
CS
RDWRB
RESETB
TESTxxx
MICROCONTROLLER INTERFACE & TEST
IRQ
REED SOLOMON DEC.
VITERBI DECODER
DEINTERLEAVER
DEPUNCTURING
DESCRAMBLER
IEXT[2:0]
CKOCTOUT
DATAOUT[7:0]
FRAMEOUT
SYNCOUT
CKBITOUT
QEXT[2:0]
BURSTSYNCIN
CKBITEXT
SYNCHRO. CONTROL
PLL
Serial
DATAOUTS
BURSTSYNCOUT
XXXOUTF
to external filter
Figure 1: TSS902E block diagram
4.1. Synchronization
The
Synchronization Control
block is made of two parts called
Synchro–Bit
and
Synchro–Frame
which algorithms are
described hereafter.
4.1.1. The Synchro–Bit module
The
Synchro–Bit
module performs the Depuncturing block and the Viterbi decoder synchronization by monitoring the
Bit Error Rate (BER). The Viterbi
BER
calculation is done by the device during the averaging period whereas the
monitoring period can be defined by the user in order to perform off–line statistical
BER
calculations.
The Depuncturing module adds missing bits according to the code rate. Since the code rate may be unknown, the
Depuncturing block may initially use a bad rate if the automatic mode has been selected (see
RxVitControl
register –
A/M and FRE bits). Furthermore, the Depuncturing process may be uncorrectly synchronized although using the right
code rate. Both conditions will lead to an unsatisfactory
BER
value.
The Viterbi
BER
value is considered to be acceptable when it remains under the RxVitThreshold register value. This
register is actually made of several registers, each associated to one code rate value (1/2, 2/3, 3/4, 5/6 and 7/8). If
throughout the averaging period the
BER
value stays below the threshold, the
Synchro–Bit
block sets the
SBF
(Synchro
Bit Found) flag within the
RxVitStatus
register, locks the PLL and allows the
Synchro–Frame
module to start the
synchro word search.
If, on the other hand, in automatic mode, the Viterbi decoder
BER
value exceeds its programmed threshold during the
averaging period, the device will enter in
sync–bit
search mode trying to resolve at first the input data phase ambiguity
within the current code rate; if the
BER
value still is too high, the device will assume that the depuncturing process
MHS
Rev. D
–
April 1999
3
TSS902E
was not performed on the right input bits (the bits assumed to be missing were not on the right position) and the
depuncturing state–machine will enter next state; finally, if the
BER
value still remains unacceptable, the code rate
value will be changed and the device will restart the overall search process.
Warning : if the programmed threshold value is too high, the bit synchronization may be found on a wrong position.
In automatic mode, all the threshold registers must be properly programmed according to the expected noise and code
rate. In semi–automatic mode, the user can just define the right value in the known code rate threshold register. In
manual mode, the maximum threshold value can be programmed in the code rate threshold register; the use of FRE
bit allows to find the bit synchronization for this code rate. (cf
RxVitControl
register usage)
A loss of synchronization restarts a search of frame synchro. The Data processing of blocks placed after sync–frame
block is restarted as well.
The
Synchro–Bit
module can be bypassed by bit
SYBE
of the
RxRSVitAct
register. When set, the
SYBE
bit enables the
synchronization between De–Puncturing and Viterbi blocks; when cleared, the
Synchro–Bit
module still maintains the
SBF generation in order to allow other blocks to work; in this case the De–Puncturing rate is fixed (Rate = 1/2, no phase
ambiguity).
4.1.2. The Synchro–Frame module
Starting on successful
Synchro–Bit
process completion, the
Synchro_Frame
process waits for the frame
synchronization word (47h) or the transport packet one (B8h) by default. The sync words search duration is limited
by a timeout value defined through the
RxSyncWCtl
register
TOV
bits and
RxVitSyncCompWord
register
SCW
bits. An
unsuccessful sync words search produces an interrupt and sets the
RxVitRSInt0
register
TiO
flag.
Whenever either sync word or bitwise inverted sync word is found, a counter is incremented and compared to the
number of consecutive sync words at the expected position required to get synchronized (RxSyncWCtl register
SY2/SY1/SY0
bits). The
Synchro–Frame
process remains in the sync word waiting loop until the expected number of
consecutive sync words is reached, then the
Synchro–Frame
block sets the
RxVitStatus
register
LCK
bit
(Synchro–Frame locked).
The default sync word value is 47h but it may be changed to any value through the
RxSyncWord
register. The sync
condition may take into account the bitwise inverted sync word search or not (RxVitSyncCompWord register
CENA
bit).
The bitwise inverted sync word occurs every 8 frames by default but this value may be changed from 1 to 15
(RxVitSyncCompWord register
SCW3
to
SCW0
bits).
A maximum number of allowed mismatching bits can be defined when expecting the sync word (RxSyncWctl register
MSY
bits).
The
Synchro–Frame
process may restart under the following external conditions:
D
a general reset is applied to the device.
D
the
Synchro_Frame
module receives a restart signal from the
Synchro–Bit
block.
D
the bit synchronization is lost.
D
the Reed–Solomon decoder is out of sync (RxDeSyncWCtl register
DRSM
bit); this condition may be masked.
D
the descrambler module is out of sync (RxDeSyncWCtl register
DSCM
bit); this condition may be masked.
The
Synchro–Frame
module will lose sync again after lock, when the sync word is not found at the expected position
for a number of consecutive frames which is specified in
RxVitDeSyncWCtl
register
DSY[2:0].
The maximum number
of mismatching bits for a missed sync word is programmable (RxVitDeSyncWCtl register
MDS[1:0]
bits).
A loss of synchronization restarts a search of frame synchro. The Data processing of blocks placed after sync–frame
block is restarted as well.
The
Synchro–Frame
module can be bypassed by bit
SYE
of the
RxRSVitAct
register.
4
MHS
Rev. D
–
April 1999
TSS902E
4.2. Depuncturing
The puncturing process is a way to change the code rate. Within a certain interval of code bits, some specific bits are
simply not transmitted, i.e. erased. The De–Puncturing block must add these erased bits according to the transmission
rate. This rate can be programmed in the
RxVitRate
register or automatically looked for by the Synchro_bit module.
The ETS 300 421 (Digital brodcasting systems for television, sound and data services; Framing structure, channel
cading and modulation for 11/12 GHz satellite services) defines punctured codes as in Table 1.
Table 4: Punctured code definition
Original Coding
K
G1 (X) G2 (Y)
Code rates
1/2
P
X:1
Y:1
dfree
X:10
Y:11
2/3
P
dfree
3/4
P
X:101
Y:110
dfree
5/6
P
X:10101
Y:11010
dfree
7/8
P
X:1000101
Y:1111010
dfree
10
7
171
oct
133
oct
I=X
1
Q=Y
1
I=X
1
Y
2
Y
3
Q=Y
1
X
3
Y
4
6
I=X
1
Y
2
Q=Y
1
X
3
5
I=X
1
Y
2
Y
4
Q=Y
1
X
3
X
5
4
I=X
1
Y
2
Y
4
Y
6
Q=Y
1
Y
3
X
5
Y
7
3
DePunctured Add Bit
No Bit
Note
1 = transmitted bit
0 = no transmitted bit
For example, running with the 7/8 rate, the IEXT and QEXT inputs receive the following sequence:
IEXT = a1, b2, b4, b6
QEXT = b1, b3, a5, a7
X
2
X
4
X
2
Y
3
X
2
Y
3
X
4
Y
5
X
2
X
3
X
4
Y
5
X
6
Y
7
At a coding rate of 7/8, the device has to generate 6 bitsat the proper position when it reads 8 bits in order to obtain
14 bits (i.e. 7 symbols). Depuncturing the above sequence gives:
IEXT = a1,
1, 1, 1,
a5,
1,
a7
QEXT = b1, b2, b3, b4,
1,
b6,
1
If the code rate is known, the Viterbi decoder module may be set to work in manual mode (see the
RxVitControl
register,
A/M
and
FRE
bits); in that case, the code rate must be defined through the
RxVitRate
register.
If the code rate is unknown, the
Synchro–Bit
module can retrieve it by cycling through the 1/2, 2/3, 3/4, 5/6 and 7/8
code rates, looking for a valid pattern; the
Synchro–Bit
module may also consider a possible phase ambiguity or a
depuncturing process error (the bits assumed to be missing were not at the right position). The depuncturing block can
work in BPSK or QPSK modes (I and Q information being serial on IEXT input in BPSK mode, therefore the internal
bit clock frequency is half the external one).
The depuncturing module can be bypassed by bit
DPE
of the
RxRSVitAct
register.
MHS
Rev. D
–
April 1999
5