Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

2019 6th International Conference on Signal Processing and Integrated Networks (SPIN)

FPGA Implementation of FEC Encoder with BCH &


LDPC codes for DVB S2 System
Durga Digdarsini, Deepak Mishra, Sanjay Mehta, TVS Ram
Space Applications Centre (SAC), Indian Space Research Organization (ISRO)
Ahmedabad, Gujarat, India
digdarsini@sac.isro.gov.in

We have used ROM in FPGA, to store parity address


Abstract—This paper gives the design and implementation of matrices for reading continuously throughout the operation at
Xilinx FPGA based Forward Error Correction (FEC) encoder for specific intervals. Flexibility is incorporated in the design by
DVB S2 system which includes BCH code followed by LDPC code using, the read and write properties of RAM [5], to generate
and finally bit mapped to constellation for QPSK modulation. LDPC parity bits as per requirement. For proof of concept
DVB-S2 FEC: (n=64800, k=32400) rate 1/2 code, with QPSK (POC) of the system we have targeted 64800bits code length
modulation scheme is considered as target for FPGA
and 1/2 code rate normal frame LDPC code and bit mapping
implementation. The architecture in this design efficiently uses
pipeline technique along with parallel processing to optimize the for QPSK constellation. BCH code is the outer code followed
hardware resources and overall latency, to accomplish FEC by LDPC as inner code in the design of FEC encoder for DVB
encoding for DVB S2 system. Coding is completed in Verilog HDL S2 system.
with Xilinx Virtex6 XC6VLX240T FPGA as target for hardware This paper is divided to further six sections as follows.
realization and QuestaSim simulator is used to complete the Section II gives the basic architecture of DVB S2 System along
functional simulation. with the brief description of major functional units followed by
details of FEC Encoder in DVB-S2 system. Section III
Keywords—DVB-S2, FEC, LDPC, BCH, RAM, FPGA. discusses the FPGA based implementation of BCH Encoder
used as outer code in FEC Encoder. Section IV illustrates the
I. INTRODUCTION design and generation of LDPC code in FPGA as inner code for
FEC Encoder which takes BCH coded data as input for further
processing. Section V gives the bit mapping of LDPC codes for
Advanced satellite communication technology necessitates QPSK constellation. Section VI gives the conclusion about the
proficient encoding technique to operate on high data rates, and design and implementation.
to achieve best signal transmission performance. Digital Video
Broadcasting Satellite Second Generation, DVB-S2 is the 2nd
generation satellite broadcasting standard, developed by the II. BASIC ARCHITECTURE OF DVB S2 SYSTEM
European Digital Video Broadcasting (DVB) project group [1].
DVB-S2 is a digital television broadcast standard that has been
designed succeeding to the well-liked DVB-S system [2].
Channel encoding method consist low density parity check
(LDPC) codes. Modulation schemes are: QPSK, 8PSK,
16APSK, and 32APSK modulations. There is a flexible Input
Stream
MODE
ADAPTATION
STREAM
ADAPTATION
Functional
Blocks
framing structure for different types of applications.
LDPC codes are advanced class of block codes have sparse DVB-S2

parity-check matrices that contain only a very small number of


non-zero entries. This code is used, as the inner code for FEC
encoding in DVB-S2 system [1]. LDPC codes enable high data
FEC
rate for satellite communication system. So LDPC codes are ENCODING
MAPPING
PL
FRAMING
MODULATION

popular in satellite applications to transfer highly efficient To RF

information over bandwidth in the occurrence of channel noise.


The Bose-Chaudhuri-Hocquenghem (BCH) codes random error BASE BAND FRAME FEC FRAME
correcting cyclic code. It has property to correct multiple
errors. In BCH codes, there is an accurate control over the
number of symbol errors correctable by the particular code [3]. Fig. 1: Functional Modules of DVB S2 System
In DVB-S2 system, FEC Encoder consists of an outer BCH
code and inner LDPC code. This contains two kinds of code
length and 11 types of code rate. The defined, 11 different code The functional units of DVB-S2 are shown in figure 1 as
rates for LDPC codes are 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, above. These modules are described as below [1]. Mode
5/6, 8/9 and 9/10. The normal frame length is of 64800 and the adaptation unit provides interfacing for input stream to the
short frame length is 16200 respectively. We have targeted to system. Stream adaptation module provides padding to
implement FEC Encoder of DVB-S2, BCH code & LDPC code complete a Base-Band Frame and Base-Band Scrambling.
followed by bit mapping to QPSK constellation in Xilinx Number bits per frame are defined by the system for various
FPGA, to realize the system with efficient use of inbuilt applications.
memories of FPGA.

978-1-7281-1380-7/19/$31.00 ©2019 IEEE 78


2019 6th International Conference on Signal Processing and Integrated Networks (SPIN)

FEC Encoding is accomplished by the concatenation of BCH The parity check bits known as BCHFEC of the BCH outer
as outer codes and LDPC as inner codes. This is followed by code are added at the end of each BBFRAME, and the parity
interleaving of LDPC coded data. Bit Mapping into check bits called as LDPCFEC of the inner LDPC encoder are
constellations for QPSK, and other modulations is applied, as be appended after the BCHFEC data. Figure 3 illustrates the
per the required application. Physical layer framing followed fields for insertion of parity bits of each code and the total
by Base-Band Filtering and Quadrature Modulation generates framing structure after coding.
the RF signal from the system. The parameters of FEC encoding for DVB-S2 system for
normal FECFRAME (nldpc = 64 800 bits) with Rate ½ LDPC
Figure 2 illustrates the FEC Encoder for DVB-S2 system
is given in DVB-S2 standard given Ref [1]. This is considered
which consists of three major functional modules. These are
for FPGA implementation in this paper.
BCH encoder as outer code, LDPC Encoder as inner code
followed by a block Interleaver. The encoded output from FEC
Encoder is provided to bitmapper for bit mapping to III. FPGA DESIGN FOR BCH ENCODER
constellation depending on the type of modulation.

The design of BCH code for FEC encoder in DVB-S2 is


shown in Figure 4 as below. As given in figure this module
consists of a type of linear feedback shift register (LFSR) of
192 bit where the final BCH parity bits are generated for each
frame.
BIT
BCH LDPC INTER MAPPER
ENCODER ENCODER LEAVER TO
CONSTELLATION

FEC ENCODER

BASE BAND FRAME FEC FRAME

P0 P1 P2 P190 P191
Fig. 2: FEC Encoder for DVB S2 standard

BB FRAME serial input for parity calculation


The FEC encoder module does BCH coding as outer code, 32208 bits
followed by inner LDPC Coding and interleaving of coded bits.
As shown in figure 3 below, the input stream called as
Baseband frames (BBFRAME) and the output stream is named
Fig. 4: FPGA Design for BCH Encoder
as FECFRAMEs. Each BBFRAME (Kbch bits) shall be
processed by the FEC coding subsystem, to generate a
FECFRAME, nldpc bits. The parameters for each stage of
encoder are defined in DVB-S2 standard [1]. The parameters for BCH code for nldpc = 64800 are
mentioned in Table 1 as per Ref [1]. The first t polynomials in
Table 1 are multiplied to generate polynomial of the t error
correcting BCH encoder. All the polynomials given in Table 1
Nbch = Kldpc are multiplied in our design to achieve error correction as 12 as
mentioned in Ref [1]. BCH Encoding of k information bits is
Kbch Nbch-Kbch nldpc-Kldpc obtained passing the total information bits serially through the
LFSR with number of flip-flops equal to the number of parity
bits in the code.
BBFRAME BCHFEC LDPCFEC

nldpc bits

Fig. 3: Data stream Format in BCH & LDPC Encoding

79
2019 6th International Conference on Signal Processing and Integrated Networks (SPIN)

As shown in the Figure 4, the parity bits in BCH code here is Parity bits. LDPC encoder processes an input block of size,
192. So the output of BCH code will be 32400 bits for 32208 kldpc on to a code word of size nldpc.
numbers of inputs bits in frame. The taps are chosen as per the
desired polynomial. The functional simulation of BCH code in Information bits kldpc , i = (i0 , i1…. ikldpc-1).
FEC DVB-S2 is shown in Figure 5. The BCH code targeted for Code word nldpc= (i0 , i1…. ikldpc-1, p0 , p1…. pnldpc-kldpc-1).
Xilinx FPGA is written Verilog HDL and simulation is
accomplished in QuestaSim simulator.
While encoding of each data frame, the information (I) bits
are repeated and generally distributed to a set of accumulators.
Each accumulator is used to generate a parity symbol as shown
in Figure 7. The single copy of original information is provided
with the parity bits (P) to constitute the code symbols [4].

I
P

Table1: BCH Polynomials for nldpc= 64800 Fig. 7: Parity bit generation in LDPC

The location of ones in leading columns of each group in


matrix A for each code rate & frame type pair is defined by
DVB-S2 standard. Using these specification the number of
Information node groups & there weights can be found for
LDPC parity bits generation. In this case for normal frame
(N=64800) & rate 1/2 first 36 IN groups have weight 8 & next
54 IN groups have weight 3.This information of leading
columns are mapped into row & shift parameters required for
desired encoding is as per the formula specified by DVB-S2
Fig. 5: Functional Simulation for BCH encoder standard in [1]. In this design kldpc = 32400, and nldpc = 64800.
By processing 32400 BCH coded bits 32400 LDPC parity bits
are genertaed. Before calculation of parity bits all the bits in
IV. DESIGN OF LDPC ENCODER IN FPGA parity buffer are initialized to value zero. Each information bit
is accumulated in parity buffer as per the address in parity bit
accumulator specified by the Encoder parameters [1]. Once all
LDPC codes can be represented by a tanner graph [4]. A
the information bits are processed, then following operation is
LDPC code is shown by a bipartite graph, in which N variable
performed on the parity bits, pi = pi xor pi-1, i = 1, 2,
nodes and M check nodes corresponds to the code word and the
……… nldpc-kldpc-1.The final content in the parity buffer
parity check constraints of M×N parity check matrix H
gives the parity bits for the LDPC codeword.
respectively. Edge presents a non-zero entry in the matrix H as
Figure 8 illustrates the block diagram with functional
shown in Figure 6.
modules for design of LDPC Encoder for DVB-S2 in FPGA.
The parity bit accumulator addresses are generated in
MATLAB by writing code for the formula defined by DVB-S2
standard and theses addresses are stored in ROM in FPGA.
BCH coded bits are stored in RAM which are read serially to
give input to LDPC parity calculation. 1st 32400 coded outputs
Fig. 6: Tanner graph for LDPC code of LDPC is same as BCH code output 32400 bits. 2nd 32400
bits of LDPC code are the parity bits calculated throughout the
process of encoding. For each input information bit to LDPC
A (n, k) LDPC is a linear block code, in which n-bits encoder, the desired parity bit accumulator addresses are
corresponds to codeword bits and p (= ník) is the number of retrieved from ROM and the parity bit accumulation takes
place in RAM.

80
2019 6th International Conference on Signal Processing and Integrated Networks (SPIN)

V. BIT MAPPER CONSTELLATION

Address Encoder
LDPC Parity Address Each normal 64800 bits FECFRAME is serial-to-parallel
RAM
Generation
( ROM)
Parameters Generation
LDPC ( RAM)
converted depending on the type of modulation. Parallel factor
ROM
32400 bits
for QPSK modulation (ȘMOD) is two. (I, Q) sequence of
variable length is generated from each parallel sequence
depending on the parallelism factor ȘMOD. The input stream is
BCH Coded called a FECFRAME, the output stream is called as a
Parity
RAM
Generation/
LDPC coded bit XFECFRAME (compleX FECFRAME), consists of
Control
Logic 32400 bits
Data Shifting
64800/ȘMOD modulation symbols. Each generated modulation
for symbol is a complex vector in the format (I,Q). Two bits of
operations
FECFRAME are mapped to one QPSK symbol. Bit mapping
Address into the QPSK constellation in FPGA shall follow figure 10.
Generation
(BCH RAM )

QPSK I
Fig.8: LDPC Encoder design in FPGA LDPC coded bit Bit Mapping
To
The functional modules in encoder operate as in a parallel Constellation
architecture. Pipelining technology is also adopted in the design QPSK Q
to improve the coding efficiency. The parity bit accumulator
addresses are divided in to several groups in ROM to utilize the
Fig. 10: Bit Mapping to QPSK Constellation
full parallel architecture for encoding. Memory related
operations are performed in ping pong technique to maintain
continuous processing of the input BBFRAMEs. Control logic
is implemented in the design to maintain the sequence of VI. CONCLUSION
operations in the total logic block modules synchronized with
each other. Both pipelining & parallel processing techniques FEC Encoder consists of BCH code & LDPC code, for
are incorporated in the design to meet the timing specifications DVB-S2 system is realized using Xilinx Virtex 6 FPGA in this
and increase the throughput. paper. This consists of BCH code as outer code and LDPC
code as inner code followed by bit mapping for QPSK
constellation. Code length of 64800bits and 1/2 code rate
normal frame LDPC code is considered for FPGA
implementation. The design is processed at a clock @ 122MHz
meeting the timing specifications requirements. Parallel
processing and pipeline technology are efficiently applied in
the design along with the use of multiple RAM in FPGA to
improve the coding efficiency.

REFERENCES

[1] Final Draft ETSI EN 302 307 V1.2.1 (2009-04). European Standards
(Telecommunications series). Digital Video Broadcasting (DVB);
Fig.9: Functional simulation of LDPC encoder in FPGA Second generation framing structure, channel coding and modulation
systems for broadcasting, Interactive Services, News Gathering and
Figure 9 gives the functional simulation result of LDPC Other Broadband Satellite Applications (DVB-S2).
Encoder DVB-S2 accomplished in QuestaSim simulator. The [2] A. Morello, et. al “DVB-S2: The Second Generation Standard for
Satellite Broad-Band Services,” Proceedings of IEEE, Vol: 94, Issue: 1,
LDPC code is written in Verilog HDL for Xilinx FPGA and Jan. 2006.
simulation is accomplished in QuestaSim simulator. Dummy [3] https://en.wikipedia.org/wiki/BCH_code.
BBFRAMEs are provided through Verilog test bench to the [4] https://en.wikipedia.org/wiki/Low-density_parity-check_code.
FEC encoder to accomplish the complete end to end simulation [5] Datasheet, LogiCORE IP Block Memory
Generator,https://www.xilinx.com/support/documentation/ip_document
of FEC encoder including BCH & LDPC code. Control logic is ation.
implemented in the design to generate all the memory
addresses and maintain all the sequence of operations.

81

You might also like