SlideShare a Scribd company logo
1 of 36
Download to read offline
Advanced Wireless Communications
Report of the laboratory sessions
2015/16
Student:
Pietro Santoro
Teacher:
Guido Montorsi
POLITECNICO DI TORINO
Master Degree in Telecommunication Engineering
Pietro Santoro
Table of Contents
PC SESSION 1: LIMITS OF CODING ........................................................................................................................................ 1
1.1 Bounds for the capacity: Software implementation 2
1.2 Infinite block size analysis 3
1.3 Finite length analysis 5
1.4 Bounds achieved with MI statistics 7
PC SESSION 2: SISO DECODING ...............................................................................................................................................9
2.1 SISO Decoder, software implementation 10
2.2 SISO simulation results 16
PC SESSION 3: PCCC DECODING .......................................................................................................................................... 17
3.1 PCCC software implementation 18
3.2 PCCC simulation results 19
PC SESSION 4: SCCC DECODING ........................................................................................................................................... 21
4.1 SCCC software implementation 22
4.2 SCCC simulation results 22
PC SESSION 5: LDPC DECODING........................................................................................................................................... 24
5.1 LDPC codes 25
5.1 LDPC software implementation 26
5.1 LDPC simulation results 27
Pietro Santoro
Pietro Santoro
1
PC session 1 – Limits of coding
Purpose of session:
 To compute of mutual information for several common modulation sets
 To compute the lower bounds to achievable frame error rate for several
information block sizes, codulator rates and 2 dimensional modulations
 To compute, through the simulation software, the statistic of finite block size
mutual information for several information block sizes and two dimensional
modulations
Assignments:
1. Computation of mutual information for several common modulation sets (2,8,16)-PSK and
(4,16,64)-QAM (It is assumed infinite block size)
2. Using the sphere packing bound, computes lower bounds using the on achievable
performance (FER) with finite block size
a. Information Block sizes 100,1000,10000,100000, Infinity
b. Modulations (2,8,16)-PSK and (4,16)-QAM
c. FER 10-1
-10-8
3. Compute through simulation the statistic of finite block length MI for several values of the
codeword size (50,100, and 1000 channel uses). The finite block length MI is the random
variable defined as:
AWC - 2014/15
2
Pietro Santoro
3
1.1 Bounds for the capacity: Software implementation
The purpose of the following analysis is the comparison between different modulation sets in
terms of capacity. The block diagram is the following:
Figure 1.1
The input parameters for the system can be properly setting by modifying the file
input_finite_length_analysis.txt:
Output file prefix
Pit
Constellation type
QAM
Constellation Cardinality (log2)
2
Es/N0 [dB] (min,max,step)
0,20,1
Finite length analysis
0
Information size (min,max,step)
100,100000,10
-log10(P(e)) (min,max,step)
1,8,1
It is possible to set the constellation scheme (QAM or PSK) and its cardinality, the range in which
we want to vary the SNR and probability of error and finally we have also the possibility to choose
between finite and infinite length analysis by putting as flag 1 or 0 respectively .
The software is implemented in order to find the capacity of a Gaussian channel that is
constrained at the input with a 2D constellation. The formula that it applied in the simulation loop
is the following:
where:
AWC - 2014/15
4

𝐸𝑠
𝑁0
is the SNR and in particular 𝐸𝑠 is the average energy per symbol
 (𝑎𝑗 − 𝑎𝑖) and (𝑏𝑗 − 𝑏𝑖) are the coefficient for the constellation points
1.2 Infinite block size analysis
The first part of the simulation has been done under the following assumptions:
 Infinite block size (and below “Finite length analysis” the flag is 0)
 Constellation cardinality 𝑚 = 2
 Spectral efficiency 𝜀 𝑏 =
2
𝑚
𝑟 = 𝑟
The Shannon Theorem for AWGN channel imposes a limit on the rate, 0 ≤ 𝑟 ≤ 𝐶 of the
communication, but ensures the existence of a code that achieves arbitrary low error probability
for infinite block size. The following graphs give information about the power employment in the
transmission respect to the amount of transmitted information bits. As we can observe in the
following graph (figure 1.2), the shape of the curves is the same for all the considered cases:
Figure 1.2 – Capacity of different constellation schemes in function of the SNR
Pietro Santoro
5
each line, that is for 𝑟 = 𝐶 , divides the plot into two regions: the upper region, where 𝑟 > 𝐶, that
represents the unattainable efficiency part and the lower one, where 𝑟 < 𝐶, that is the real and
less efficient part.
Because we are assuming that all the points of the constellation are transmitted with same
probability
1
𝑀
, differently from the optimal Gaussian distribution; the first thing we can notice is
the asymptotic trend of the curves under the limit log2 𝑀, that is the maximum number of bit per
channel use that we can transmit with an M-ary modulation scheme (with 4QAM and 4PSK we can
convey at maximum 2 bits per channel use, with 16QAM and 16 PSK, 4 bits and so on).
Another important aspect we want to highlight is the value that curves have for the value of
capacity 1 bit per channel use: we have 0 dB for the ideal case and 0.2 dB for the 4QAM: it
suggests that if we want to use a constellation scheme with higher cardinality we have to use it in
the best way we can. More bit for each block means more energy per signal and for this reason
the efficiency curve for 4QAM starts to move away from the ideal one.
It is interesting to compare the M-QAM modulation schemes with respect to the MPAM ones:
 for a fixed value of Eb/No, MPSK has an unacceptable loss with respect to the
corresponding MQAM which is almost half of the capacity. This is due to the fact that M-
PSK modulation sets exploit only the phase variation. In the MQAM, we have two degree of
freedom in the structure of the constellation: phase and amplitude. For this reason MPSK is
never used with modulation efficiency up to 8.
 for all the Eb/No values we notice that the best performance are achieved by the 64QAM
modulation scheme. The price to pay for, this good behavior is the complexity of the
transmission system. ( Above of all we have to pay for the complexity of the receiver )
M-QAM modulation techniques are very good but we have to notice that before they start
bending there's a residual gap due to the shaping loss. This loss comes from the comparison
between the Gaussian PDF with the discrete one of MQAM modulation sets. These PDFs are
represented with a series of delta function. Even if we increase the number of points of the
constellation we cannot reach the ideal case.
AWC - 2014/15
6
1.2 Finite block size analysis
When we impose a finite value for the block size we find a lower bound for the 𝑃𝑤(𝑒) thanks to
the sphere packing bound. The bound is in the form 𝑃𝑤(𝑒) ≥ 𝑄 𝑛(𝜗; 𝐴), where:
and:
This bound has been obtained for Gaussian modulation. When we use the sphere packing bound
for modulations different from the Gaussian one it is a reasonable to follow the following
inequality and provide an Eb/No as below:
where:
are the minimum required Eb/No for information block size k to achieve a 𝑃𝑤(𝑒) using respectively
the modulation M and the unconstrained Gaussian modulation U, and:
are the minimum required Eb/No for an infinite information block size using respectively the
modulation M and the unconstrained Gaussian modulation U.
In the figure 1.3 is shown the lower bounds of the FER as function of Eb/No using 4QAM
modulation, for different block size k = 1000; 10000; 100000 in comparison with the ideal case
(infinite block size). The first curve in the graph represents the capacity for infinite block size and
unconstrained modulation (ideal condition): with a fixed codulator rate equal to 0.97 (code rate ≈
1/2 ) the required Eb/N0 is equal to -0.046 dB. The second one shows the capacity for infinite block
size but with a constrain in the modulation. The other curves vary according to the block size
(k=1000, 10000, 100000). As we can expect, for an higher value of k the performances are closer
and closer to the ideal case.
Moreover, for lower values of k the slope of the curve is less vertical because the choice of the
Pw(e) is not more arbitrary as in the ideal case and the gap of Eb/N0 becomes higher.
Pietro Santoro
7
Figure 1.3 – Lower bounds of FER 4QAM for k=100,1000,10000,infinite
AWC - 2014/15
8
1.3 Bounds achieved with MI statistics
In this section we apply a more general method for the study the mutual information that can be
applied to any type of channel.
The assumptions are: the channel is memoryless and ergodic. The instantaneous mutual
information is computed as:
where:
 n is the block size
 log(𝑃(𝑦𝑖|𝑥𝑖)) and log(𝑃(𝑥𝑖)) are LLRs
The following technique allows us to derive reliable statistics by just using simulations with a large
n. All the results obtained in this analysis have been carried out simulating a 4QAM modulation
scheme.
The statistics bring to a set of histograms that describes the distribution of the Mutual Information
for each imposed value of Es/N0. For n that tends to infinity the distribution becomes a delta
function centered into the mean that corresponds to the capacity.
Figura 1.4 – Distribution of the Mutual Information for different Eb/N0
In the following figures (1.5 and 1.6) we can compare the results for the 4QAM modulation
scheme with different block size 𝑛 = 100 and 𝑛 = 10000.
Pietro Santoro
9
The evolution of the mean is the same in both cases because for an increasing SNR the MI is
bounded with the capacity and the evolution of the variance changes. As we expect, for higher n,
the accuracy of the estimation is high and it can be observed in terms of lower variance.
Figura 1.5 – Mean and variance of the estimate for 4QAM and block size 100
Figura 1.6 - Mean and variance of the estimate for 4QAM and block size 10000
AWC - 2014/15
10
PC session 2 – SISO decoding
Purpose of session:
 To design and implement a C++ class realizing a Sliding Window with grouped
decisions Soft-Input Soft-Output decoder (SWG-SISO), with input and output binary
LLR.
 To simulate the performance of a transmission system of Errore. L'origine
riferimento non è stata trovata. employing a binary convolutional code, 2-PAM
modulation, AWGN channel and the developed binary SWG- SISO decoder.
 To compute the BER performance at the input and at the output of the SISO
decoder.
Figure a - Block diagram of the system
Assignments:
I. Comment the developed class (files “SISO_Decoder.cpp” and “SISO_Decoder.h”)
II. Simulate the results relative to the rate ½, 4 and 8 states convolutional encoder
reporting the 4 BER measures versus the Es/N0 in [dB]
Convol.
encoder
2-PAM
AWGN
2-PAM
AWGN
inf
enc
Soft
Demod
Soft
Demod
SISO
SISO
n0 bits
SISO
Dec
infRXI
encRXI
infRXO
BER
BER
BER
BER
encRXO
LLR
k0 bits
observbits
inf
Pietro Santoro
11
2.1 SISO decoding, software implementation
The following are the C++ classes, “SISO_Decoder.cpp” and “SISO_Decoder.h” that implement the
SISO decoder module that is depicted in the block diagram in figure a.
//BEGINNING SISO_Decoder.h
#pragma once
#include "Trellis.h"
class SISO_Decoder
{
public:
SISO_Decoder(void);
~SISO_Decoder(void);
void SetParameters(
const Trellis* trel,
const int D,
const int Nbl
);
void Run(
const int nsteps, // Number of processed trellis steps
const int* llruI, // Input bit LLR on information bits
const int* llrcI, // Input bit LLR on coded bits
int* llruO, // Output extrinsic LLR on inf bits
int* llrcO // Output extrinsic LLR on cod bits
);
void Reset();
private:
int time; // Counter of trellis steps
int ndata; // Number of data already read-out
int D; // Length of initialization window
int Nbl; // Length of updating window
int W; // Overall latency of the algorithm, length of the window
int k0; // Number of information bits per trellis step
int n0; // Number of coded bits per trellis step
int nbit; // Number of total bits per trellis steps (k0+n0)
int nsta; // Number of states
const Trellis* trel;
int* alpha; // Buffer to store results of forward recursion
int* beta; // Buffer to store results of backward recursion
int* llrinp; //buffer to store input LLR
int* llrout; //buffer to store output LLR
int* llrsym; // buffer to store output branch metrics
int* llrsymo; // buffer to store output branch metrics
int ntra; //Number of transitions = cardinality of input alphabet
int nlab; // Number of branch labels
int* aold,*anew;
};
//ENDING SISO_Decoder.h
AWC - 2014/15
12
//BEGINNING SISO_Decoder.cpp
#include "SISO_Decoder.h"
//constructor
SISO_Decoder::SISO_Decoder(void)
{ time=0;
alpha=0;
beta=0;
llrinp=0;
llrout=0;
}
//destructor
SISO_Decoder::~SISO_Decoder(void)
{ delete llrinp;
delete llrout;
delete alpha;
delete beta;
}
// Here I’m allocating the memory for the buffer needed to implement the algorithm
void SISO_Decoder::SetParameters(
const Trellis* trel,
const int D,
const int Nbl
)
{
this->D=D;
this->Nbl=Nbl;
this->trel=trel;
W=D+Nbl;
k0=trel->k;
n0=trel->n;
nbit=k0+n0;
nsta=trel->nstate;
ntra=trel->ntrans;
nlab=1<<nbit;
alpha =new int[nsta*2];
beta =new int[nsta*W];
llrinp=new int[nbit*W];
llrout=new int[nbit*Nbl];
llrsym=new int[1<<nbit];
llrsymo=new int[1<<nbit];
Reset();
}
void SISO_Decoder::Reset()
{ time=0;
ndata=0;
int i;
for(i=0;i<2*nsta;i++)alpha[i]=0;
for(i=0;i<W*nsta;i++)beta[i]=0;
for(i=0;i<W*nbit;i++)llrinp[i]=0;
for(i=0;i<Nbl*nbit;i++)llrout[i]=0;
anew=alpha;
aold=alpha+nsta;
}
Pietro Santoro
13
void maxacc(int& a, const int b)
{
int c=a-b;
if(c>0)return;
else
{ a=b;
return;
}
}
void bittobranch(const int nbit, const int* llrbit, int* llrsym)
{
int nsym=(1<<nbit); // number of symbols is 2^ number of bits
int i,k;
for(i=0;i<nsym;i++)
{
llrsym[i]=0;
for(k=0;k<nbit;k++)
{
llrsym[i] += ((i>>k)&1)* llrbit[k]; // Extract k-th bit from i
}
}
}
void branchtobit(const int nbit, int* llrsym, int* out)
{ int k,j,n0,n1;
int Nu=1<<nbit;
for(j=nbit-1;j>0;j--) // Cycle on constituent symbols
{ Nu>>=1;
/* 0 */
n0=llrsym[0];
for(k=1;k<Nu;k++)maxacc(n0,llrsym[k]);
/* 1 */
n1 = llrsym[Nu];
maxacc(llrsym[0],llrsym[Nu]);
for(k=1;k<Nu;k++)
{ maxacc(n1,llrsym[Nu+k]);
maxacc(llrsym[k],llrsym[Nu+k]);
}
out[j]=n1-n0;
}
out[0]=llrsym[1]-llrsym[0];
}
AWC - 2014/15
14
// Core of the program!!
void SISO_Decoder::Run(
const int nsteps, // Number of processed trellis steps
const int* llruI, // INTPUT: LLR of input information bit (k0 LLR per trellis step)
const int* llrcI, // INTPUT: LLR of input coded bit (n0 LLR per trellis step)
int* llruO, // OUTPUT: LLR of input information bit (k0 LLR per trellis step)
int* llrcO // OUTPUT: LLR of input coded bit (n0 LLR per trellis step)
)
{
int i,j,k,e,s,u,p;
int Ne=nsta*ntra; // Number of edges
int *bn; // pointer to the new values of backward recursion
int *bo; // pointer to the old values of backward recursion
int label,temp;
int ntra=1<<k0;
int nlab=1<<nbit;
// LOOP ON EACH TRELLIS STEP:
1. Initialization of the backward recursion
2. Aggregation of the LLRs on bits into branch metric
3. Backward recursion of size W=D+Nbl
4. Forward recursion of size Nbl and computation of the output branch matric
5. Marginalization of the branch metrics into LLRs on the bits
6. Storing of the data it the output buffer llruO
for(i=0;i<nsteps;i++)
{
// The input data are stored in the vector llrinp (circular buffer) and the pointer time is
increased each time it is processed a new trellis step
for(j=0;j<k0;j++)llrinp[time*nbit+j]=llruI[j];
for(j=0;j<n0;j++)llrinp[time*nbit+k0+j]=llrcI[j];
// The output computed extrinsic LLR are stored in the vector llrout (circula buffer) and the
pointer is incremented each time it is processed a new trellis step
for(j=0;j<k0;j++)*llruO++=llrout[ndata*nbit + j];
for(j=0;j<n0;j++)*llrcO++=llrout[ndata*nbit + k0+j];
// The pointers ndata and time are restored to zero when they reach respectively the values Nbl
and W
ndata = (ndata+1)%Nbl;
time = (time+1)%W;
// Here I’m checking if a new block can be decoded
if(ndata==0)
{
// 1. Backward recursion initialization: because we don’t know the final state we are assuming that
all the states have the same probability and for this reason we are setting to zero the values of
beta
for(k=0;k<nsta;k++)beta[(W-1)*nsta+k]=0;
for(k=W-2;k>=0;k--)
{
Pietro Santoro
15
p = (time+k+1)%W; // Here I’m retrieving the position of the
column corresponding to the correct time
instant
// 2. I’m storing the branch metric into the vector llrsym
bittobranch(nbit,llrinp + p*nbit, llrsym);
bo = beta+(k+1)*nsta; // pointer to old beta metrics
bn = beta+(k)*nsta; // pointer to new beta metrics
// we need to pointers because one is in
function of the other
// In this loop I compute the branch metrics for all the edges e and
the first thing that I do is to initialize to - ∞ (-10-7
) all the metrics
for(s=0;s<nsta;s++)bn[s]=-10000000;
// Here I fill the trellis
for(e=0;e<Ne;e++)
{
// Here I compute the label associated to the edge
label=(trel->trel[4*e+2]<<k0)+trel->trel[4*e+1];
// 3. Here I compute backward path metric
maxacc(bn[trel->trel[4*e+0]], // Branch metric
associated to the Starting
state sS
(e)
bo[trel->trel[4*e+3]]+ // Branch metric
associated to the Ending
state sE
(e)
llrsym[label]); // Branch metric
associated to the label
associated with the edge
u(e)/c(e)
}
}
// Here we start the forward recursion
for(k=0;k<Nbl;k++)
{
// Compute input branch metrics from LLR
p=(time+k)%W;
bittobranch(nbit,llrinp+p*nbit,llrsym);
// Initialization of all max* accumulators
for(s=0;s<nsta;s++)anew[s] =-1000000;
for(s=0;s<nlab;s++)llrsymo[s]=-1000000;
// Loop on all edges
for(s=0;s<nsta;s++)for(u=0;u<ntra;u++)
{
label = (trel->output(s,u)<<k0)+trel->input(s,u);
maxacc(anew[trel->ending(s,u)],
aold[trel->starting(s,u)]+llrsym[label]
);
// 4. Here I compute forward path metric
maxacc(llrsymo[label],
aold[trel->starting(s,u)]
The complexity of all the
algorithm depends on
these important lines. The
most important parameter
in terms of complexity is
the number of states Ne
AWC - 2014/15
16
+llrsym[label]
+ beta[j*nsta + trel->ending(s,u)]
);
}
// 5. Computation of the LLRs on bit from output branch metrics
branchtobit(nbit,llrsymo,llrout+j*nbit);
// 6. . Computation of the total LLR to extrinsic LLR
for(s=0;s<nbit;s++)llrout[j*nbit+s] -= llrinp[p*nbit+s];
// Swapping of the pointers of forward path metrics
bn=aold;
aold=anew;
anew=bn;
}
}
}
}
//ENDING
Pietro Santoro
17
2.2 SISO Decoder simulation results
In this section we will analyze the result figured out from the simulation of the system depicted in
the figure 2a. Here are exposed the graphs related to its performance that are expressed in term
of BER. As we can observe in the figure 2a, the block diagram contains a convolutional encoder
with and a SWG-SISO module as decoder. The convolutional encoder has been set with 4 and 8
states.
It may be also possible to adjust the window size by properly setting Nbl and D; but this is not
important for our goal because it could be useful only in those particular cases where has to be
analyzed the tradeoff between window size and decoding complexity.
The chosen Parameter for the SWG-SISO are D = 20 and Nbl = 1000.
Figure 3.1
In Figure 2.1 it can be observed the Information Bit Error curves as function of Eb/N0 for 4 and 8
state Encoders before and after the SISO module. As we expect, increasing the number of states of
the encoder the performances improve since the correction capability of the code is related to its
memory.
AWC - 2014/15
18
PC session 3 – PCCC decoding
Purpose of session:
 To understand the simulation program for a PCCC
 To understand the termination of convolutional codes
 To simulate and plot the performance of a rate 1/3 PCCC with different constituent
encoders and interleaver block sizes
Figure 4a - Block diagram of coding system based on PCCC and correspondent iterative decoder
Assignments:
I. Simulate the system in figure 3a in order to obtain BER and FER plots with 4 and 8
state encoders and interleaver size 100, 1000, 10000 and comment the obtained
plots.
Convol.
encoder
1
2-PAM
AWGN
2-PAM
AWGN
inf
enc1
Soft
Demod
Soft
Demod
enc1RX
infRX
BER[2]
Convol.
encoder
2
Int
enc2RX
SISO
SISO
SISO
Dec2
IntDeint
infpRX infpRX
infRX1
enc2
infp
SISO
SISO
SISO
Dec1
Pietro Santoro
19
3.1 PCCC software implementation
In the following we will analyze the performance of a communication system that uses a Parallel
Concatenated Convolutional Code (figure 3a). The source generates a sequence of information
bits of length N (inf); the PCCC Encoder is composed of two constituent convolutional encoders
working in parallel: the upper encoder generates the sequence enc1 of encoded bits with rate r1
while the lower one, that receive a permuted version of the sequence of information bit infp ,
generates the sequence enc2 with rate r2.
The overall PCCC Encoder has rate 𝑟 =
𝑟1 𝑟2
𝑟1+ 𝑟2
Upper and lower encoders are systematic and recursive. They are chosen by setting the
coefficients of the pair [Z,H] in the file test_PCCC_decoder.cpp. For example if [Z,H]=[015,013] it
corresponds to the binary couple [001101,001011]. It is used to describe the polynomial
[1+D2
+D3
,1+D+D3
] that refers to the encoder in figure 3.1:
Figure 3.1 – 8-states, SR encoder described by the polynomial
// SETTING FOR 8-states
int H[]={013};
int Z[]={015};
// SETTING FOR 4-states
// int H[]={07};
// int Z[]={05};
The 4-states encoder is represented by the pair [05,07] while the 8-state one by the pair [015,013]
(as we can see in the reported code).
The sequences enc1 and enc2 are both mapped by a 2-PAM modulation scheme that outputs
respectively the sequences mod1 and mod2 that are transmitted over an AWGN Channel. The
received sequences, that are rec1 and rec2 are passed to the SISO module that produces LLRs
sequences on coded bits: enc1RX and enc2RX.
AWC - 2014/15
20
The two sequences enc1RX and enc2RX are finally processed by the PCCC Decoder to extrapolate
the information bits. The core of the decoder is a couple of two SISO Decoders that share
information about the LLRs on output information bits in order to satisfy the equality:
The extrinsic information computed from one encoder is considered as a-priori information for the
other one and vice versa.
Thanks to the provided software, it has been possible to simulate a PCCC Decoder with overall rate
𝑟 =
1
3
, obtained by concatenating two systematic recursive constituent encoders with changeable
number of states. As requested from the assignment we have simulated the system with 4 and 8
states, and with interleaver size of 100, 1000 and 10000.
3.2 PCCC simulation results
By looking at the figure 3.1 and 3.2 we can easily observe that BER, and similarly FER, curves drop
more rapidly to smaller values of the Pb(e) when we increase the interleaver size N (a tradeoff has
to be considered between the increment of N and the performance we desire because the latency
of the decoder increases with the increment of the interleaver size).
If we focus on the BER and FER curves another thing that is easy to observe are the three main
regions of a the BER curve of a PCCC: the Non convergence, Waterfall and the Error Floor regions.
As we studied in the theory can be confirmed from the plot: by comparing performances of 4 and
8 states encoders we cannot say that one performs better than the other for all values of SNR
because there is a point where the two curves cross each other. The choice of the first or the
second will be done depending on the requirement.
Pietro Santoro
21
Figure 3.2 – BER curves for different values of #states and interleaver size N
Figure 3.3 – FER curves for different values of #states and interleaver size N
AWC - 2014/15
22
PC session 4 – SCCC decoding
Purpose of session:
 To understand the simulation program for a SCCC
 To simulate and plot the performance of a rate 1/4 SCCC with different constituent
encoders and interleaver block sizes
Figure 4a - Block diagram of rate 1/4 coding system based on SCCC and correspondent iterative decoder
Assignments:
I. Simulate the system in figure 4a in order to obtain BER and FER plots with 4 and 8 state
encoders and interleaver size 100, 1000, 10000 and comment the obtained plots
Convol.
encoder
1
2-PAM
AWGN
inf
enc1
Soft
Demod
enc1RX infRX
BER[2]
Conv.
encoder
2
Int
enc2RX
SISO
SISO
SISO
Dec2
IntDeint
enc1pRX enc1pRX
enc2enc1p
SISO
SISO
SISO
Dec1
Pietro Santoro
23
4.1 SCCC software implementation
In this section of the report we will analyze the performance of a communication system that uses
a Serial Concatenated Convolutional Code (figure 3a). The architecture of the software is similar
to the one we have seen in the third chapter of the report for PCCC: the source generates a
sequence of information bits of length N (inf); the core of the SCCC Encoder is composed of two
constituent convolutional encoders working in serial: the outer encoder (convolutional encoder 1)
generates the sequence enc1 of encoded bits (at rate r1 ) that is interleaved and sent as input to
the inner encoder (convolutional encoder 2) as enc1p. This last one generates the sequence enc2
with rate r2. The overall SCCC Encoder has rate 𝑟 = 𝑟1 𝑟2
The sequence enc2 is mapped by a 2-PAM modulator and it is transmitted over an AWGN Channel.
The received sequence is passed to the SISO module that produces LLRs sequence on coded bits:
enc2RX.
The sequence enc2RX is finally processed by the SCCC Decoder to extrapolate the information bits.
The core of the decoder is a couple of two SISO Decoders that share information about the LLRs on
output information bits with the aim of allowing an iterative process that makes possible, as for
PCCC decoding, the convergence of the system of equations:
Figure 4.1 – Architecture of the core of the SCCC decoder
4.2 SCCC simulation results
In the following figures (4.1 and 4.2) is it possible to observe the BER and FER curves obtained
thanks to the simulation of the SCCC system by varying number of states (4 and 8 states) and
interleaver size (N=100,1000 and 10000). The curves we have obtained for SCCC are not well
define as we experienced for PCCC; it is an indication of the higher complexity of this algorithm
with respect to the same we have already used for PCCC because the tests has been done on the
same calculator.
Similarly to PCCC, we can notice that the interleaver size is the key parameter for the reaching of
low values of error probability: 8 states and 10000 is the best combination we can use for high
performance of the system.
AWC - 2014/15
24
Figure 4.2 – BER curves for different values of #states and interleaver size N
Figure 4.3– FER curves for different values of #states and interleaver size N
Pietro Santoro
25
PC session 5 – LDPC decoding
Purpose of session:
 To understand the simulation program for an LDPC
 To understand LDPC encoding by back substitution
 To understand the difference between optimal and suboptimal decoding algorithm (min-
sum-offset) for LDPC
 To simulate and plot the performance of the LDPC code for the DVB-S2 standard.
Figure 5a - Block diagram of the transmission system using LDPC encoder
Assignments:
 BER and FER plot with rate ¼ and 8/9 with medium block length (16200) with optimal and
suboptimal decoder
 BER plot with rate ½ with optimal decoder and suboptimal decoder with for different
values of the offset parameter beta (short block)
 BER plot with rate ½ and the three values of available block length (short, medium and long
code) use the algorithm that you like.
 Comment on the plots
LDPC_Encoder
2-PAM
AWGN
inf
enc Soft
Demod
rec LDPC_Decoder
Run
RunSubopt
encRX
infRX
BER
betancode
isshort
DVBS2 Encoder
esn0
AWC - 2014/15
26
5.1 LDPC codes
They are special linear block codes whose have a “sparse” parity check matrix H. Their importance
is due to the good performance that is possible to achieve (well comparable with PCCC and SCCC
performances). The encoding technique has low complexity since the code word would consist of
the message bits and some parity check bits. What the LDPC encoder do can be roughly
schematized as follow: it choose certain variable nodes to place the message bits on and in the
second step calculate the missing values of the other nodes. In this way it solves the parity check
equations.
In practice however, more clever methods are used to ensure that encoding can be done in much
shorter time (parallel processing is possible) by exploiting the property of “sparseness” of the
parity-check matrix and a certain structure for the Tanner graph.
The decoding process is based on belief propagation algorithm between the variable and check
nodes. The algorithm can be described graphically by constructing the Tanner Graph (figure 5.1) of
a generic LDPC code:
Figure 5.1 – Tanner Graph of an H matrix of a generic LDPC code
{𝑣1 , 𝑣2 … 𝑣 𝑛} are the variable nodes {𝑐1 , 𝑐2 … 𝑐 𝑛−𝑘} are the check nodes. The number of edges
connected to a variable node 𝑣𝑖 is the degree of the variable node 𝑑 𝑣𝑖 , whereas the number of
Pietro Santoro
27
edges connected to a check node 𝑐𝑗 is the degree of the check node 𝑑 𝑐𝑗 . At the nth
iteration of
the algorithm, the generic message sent by a variable node 𝑣𝑖 to a check node 𝑐𝑗 is denoted by
𝑓(𝑛)
(𝑣𝑖, 𝑐𝑗 ), whereas the message sent by a check node 𝑐𝑗 to a variable node 𝑣𝑖 is denoted by
𝑓(𝑛)
(𝑐𝑗 , 𝑣𝑖). Adopting the belief propagation algorithm:
𝑓(𝑛+1)
(𝑣𝑖, 𝑐𝑗 ) = 𝑙𝑙𝑟𝑖 + ∑ 𝑓(𝑛)
(𝑐 𝑚 , 𝑣𝑖)
𝑑 𝑣𝑖
𝑚=0,𝑚≠𝑗
All the 𝑓(𝑛)
(𝑐𝑗 , 𝑣𝑖) can be computed in two different ways:
 Application of the Sum-prod operation
𝑓(𝑛+1)
(𝑐𝑗, 𝑣𝑖 ) = 2 arctanh ∏ tanh(
𝑓(𝑛)
(𝑣𝑖, 𝑐 𝑚 )
2
)
𝑑 𝑐𝑗
𝑚=1,𝑚≠𝑖
that is possible to approximate with 𝑔(∙) operator.
It represent the optimal computation for the decoding process.
 Application of the Min-sum operation
𝑓(𝑛+1)
(𝑐𝑗, 𝑣𝑖 ) = − ∏ 𝑠𝑖𝑔𝑛 (−𝑓(𝑛)
(𝑣𝑖, 𝑐 𝑚 ))
𝑑 𝑐𝑗
𝑚=1,𝑚≠𝑖
∙ min
𝑚=1,𝑚≠𝑖
|𝑓(𝑛)
(𝑣𝑖, 𝑐 𝑚 )|
In order to reduce the performance loss of Min-Sum with respect to Sum-Prod, it is
possible to apply an offset. It represent the sub-optimal computation for the decoding
process.
The belief propagation algorithm works as follows: at the first step, the check nodes' sockets
𝑓(𝑛=0)
(𝑣𝑖, 𝑐𝑗 ) are initialized to a priori LLRs on coded bits coming from the soft demodulator.
At each step the variable nodes' sockets 𝑓(𝑛)
(𝑐𝑗, 𝑣𝑖 ) are obtained, either from sum-prod or min-
sum computations, and the check nodes' sockets 𝑓(𝑛)
(𝑣𝑖, 𝑐𝑗 ) are updated.
At the end of the iterations, a posteriori LLRs are computed and hard decision is performed.
AWC - 2014/15
28
5.2 LDPC software implementation
The software implements the block diagram that is depicted in the figure 5a. The LDPC encoder is
can be properly set by changing the input parameters in order to satisfy all the requirements of
the session. It is possible to choose among different combination of rates of code and dimension
of the code (short with N=4096, medium with N=16200 and long code with N=64800) and to
choose the operator for the decoding block in order to evaluate optimal and sub-optimal
configurations for the decoder.
The possible rates used in DVBS-2 are r = [1/4; 1/3; 2/5; 1/2; 3/5; 2/3; 3/4; 4/5; 5/6; 8/9; 9/10] and
not all of them are possible with three different code length.
Output file
Data/temp.txt
Eb/N0 [dB]
0:10:0.1
Maximum number of frames
1000
Name of file of LDPC code (or DVBS2)
DVBS2
DVB-S2 Encoder
12
Short (2), Medium (1) or long code (0)?
2
Min-sum-offset (1) or sum-prod algorithm (0)?
1
Beta for offset
3
Number of decoder iterations
50
5.3 LDPC simulation results
As requested in the assignment of this laboratory session I have provided the BER and FER curves
for LDPC codes with different rate, ¼ and 8/9, and different decoding procedure, optimal (Sum-
Prod) and sub-optimal (Min-Sum) with an arbitrary offset. By looking at the plot of the figures 5.2
and 5.3 we can observe that:
 LDPC code with rate ¼ offers better performance because of the lower rate.
 Sub-optimal procedure introduces a loss that decreases with the increment of the SNR
because of the better approximation of the tanh() with the sign() function.
In figure 5.4 are depicted the BER curves for LDPC codes with the application of sub-optimal
routine and more specifically is depicted the variation of curve with the variation of the offset.
Pietro Santoro
29
The best result has been reached for γ=4.
Finally in figure 5.5 we can observe the BER curves for LDPC codes that uses different block size: as
expected from the theoretical results, for higher block size the performance of the overall system
are better by paying the good result with the drawback of a larger latency.
Figure 5.2 – BER curves for comparison of LDPC codes with different rate and different operator for the decoding
Figure 5.3 – FER curves for comparison of LDPC codes with different rate and different operator for the decoding
AWC - 2014/15
30
Figure 5.4 – BER curves of LDPC codes with different offset for comparison between Min-Sum and Sum-Prod
Figure 5.5 – BER curves of LDPC code for different block size

More Related Content

What's hot

DESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORM
DESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORMDESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORM
DESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORMsipij
 
Efficient realization-of-an-adfe-with-a-new-adaptive-algorithm
Efficient realization-of-an-adfe-with-a-new-adaptive-algorithmEfficient realization-of-an-adfe-with-a-new-adaptive-algorithm
Efficient realization-of-an-adfe-with-a-new-adaptive-algorithmCemal Ardil
 
Introduction to Radial Basis Function Networks
Introduction to Radial Basis Function NetworksIntroduction to Radial Basis Function Networks
Introduction to Radial Basis Function NetworksESCOM
 
Efficient Block Classification of Computer Screen Images for Desktop Sharing ...
Efficient Block Classification of Computer Screen Images for Desktop Sharing ...Efficient Block Classification of Computer Screen Images for Desktop Sharing ...
Efficient Block Classification of Computer Screen Images for Desktop Sharing ...DR.P.S.JAGADEESH KUMAR
 
BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...
BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...
BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...ijwmn
 
Adaptive Beamforming Algorithms
Adaptive Beamforming Algorithms Adaptive Beamforming Algorithms
Adaptive Beamforming Algorithms Mohammed Abuibaid
 
CMAC Neural Networks
CMAC Neural NetworksCMAC Neural Networks
CMAC Neural NetworksIJMREMJournal
 
Cerebellar Model Articulation Controller
Cerebellar Model Articulation ControllerCerebellar Model Articulation Controller
Cerebellar Model Articulation ControllerZahra Sadeghi
 
Deformable Part Models are Convolutional Neural Networks
Deformable Part Models are Convolutional Neural NetworksDeformable Part Models are Convolutional Neural Networks
Deformable Part Models are Convolutional Neural NetworksWei Yang
 
Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...
Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...
Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...sipij
 
MODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTION
MODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTIONMODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTION
MODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTIONijwmn
 
All-Reduce and Prefix-Sum Operations
All-Reduce and Prefix-Sum Operations All-Reduce and Prefix-Sum Operations
All-Reduce and Prefix-Sum Operations Syed Zaid Irshad
 
Performance comparison of row per slave and rows set per slave method in pvm ...
Performance comparison of row per slave and rows set per slave method in pvm ...Performance comparison of row per slave and rows set per slave method in pvm ...
Performance comparison of row per slave and rows set per slave method in pvm ...eSAT Journals
 
A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...
A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...
A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...ijwmn
 

What's hot (20)

DESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORM
DESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORMDESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORM
DESIGN OF DELAY COMPUTATION METHOD FOR CYCLOTOMIC FAST FOURIER TRANSFORM
 
Efficient realization-of-an-adfe-with-a-new-adaptive-algorithm
Efficient realization-of-an-adfe-with-a-new-adaptive-algorithmEfficient realization-of-an-adfe-with-a-new-adaptive-algorithm
Efficient realization-of-an-adfe-with-a-new-adaptive-algorithm
 
Introduction to Radial Basis Function Networks
Introduction to Radial Basis Function NetworksIntroduction to Radial Basis Function Networks
Introduction to Radial Basis Function Networks
 
Masters Report 3
Masters Report 3Masters Report 3
Masters Report 3
 
D010512126
D010512126D010512126
D010512126
 
MMedia-Lau
MMedia-LauMMedia-Lau
MMedia-Lau
 
Chap4 slides
Chap4 slidesChap4 slides
Chap4 slides
 
Efficient Block Classification of Computer Screen Images for Desktop Sharing ...
Efficient Block Classification of Computer Screen Images for Desktop Sharing ...Efficient Block Classification of Computer Screen Images for Desktop Sharing ...
Efficient Block Classification of Computer Screen Images for Desktop Sharing ...
 
3975 wd 1
3975 wd 13975 wd 1
3975 wd 1
 
BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...
BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...
BER Performance of Antenna Array-Based Receiver using Multi-user Detection in...
 
Adaptive Beamforming Algorithms
Adaptive Beamforming Algorithms Adaptive Beamforming Algorithms
Adaptive Beamforming Algorithms
 
CMAC Neural Networks
CMAC Neural NetworksCMAC Neural Networks
CMAC Neural Networks
 
Cerebellar Model Articulation Controller
Cerebellar Model Articulation ControllerCerebellar Model Articulation Controller
Cerebellar Model Articulation Controller
 
Deformable Part Models are Convolutional Neural Networks
Deformable Part Models are Convolutional Neural NetworksDeformable Part Models are Convolutional Neural Networks
Deformable Part Models are Convolutional Neural Networks
 
Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...
Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...
Efficient pu mode decision and motion estimation for h.264 avc to hevc transc...
 
A0270107
A0270107A0270107
A0270107
 
MODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTION
MODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTIONMODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTION
MODIFIED LLL ALGORITHM WITH SHIFTED START COLUMN FOR COMPLEXITY REDUCTION
 
All-Reduce and Prefix-Sum Operations
All-Reduce and Prefix-Sum Operations All-Reduce and Prefix-Sum Operations
All-Reduce and Prefix-Sum Operations
 
Performance comparison of row per slave and rows set per slave method in pvm ...
Performance comparison of row per slave and rows set per slave method in pvm ...Performance comparison of row per slave and rows set per slave method in pvm ...
Performance comparison of row per slave and rows set per slave method in pvm ...
 
A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...
A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...
A SEMI BLIND CHANNEL ESTIMATION METHOD BASED ON HYBRID NEURAL NETWORKS FOR UP...
 

Similar to Report AdvancedCodingFinal - Pietro Santoro

Improving The Performance of Viterbi Decoder using Window System
Improving The Performance of Viterbi Decoder using Window System Improving The Performance of Viterbi Decoder using Window System
Improving The Performance of Viterbi Decoder using Window System IJECEIAES
 
Computer-Based Analysis of The Performance of Different Modulation Techniques...
Computer-Based Analysis of The Performance of Different Modulation Techniques...Computer-Based Analysis of The Performance of Different Modulation Techniques...
Computer-Based Analysis of The Performance of Different Modulation Techniques...theijes
 
A Threshold Enhancement Technique for Chaotic On-Off Keying Scheme
A Threshold Enhancement Technique for Chaotic On-Off Keying SchemeA Threshold Enhancement Technique for Chaotic On-Off Keying Scheme
A Threshold Enhancement Technique for Chaotic On-Off Keying SchemeCSCJournals
 
A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...
A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...
A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...IJERA Editor
 
Performance evaluation with a
Performance evaluation with aPerformance evaluation with a
Performance evaluation with aijmnct
 
Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...
Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...
Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...IJECEIAES
 
Hardware Architecture of Complex K-best MIMO Decoder
Hardware Architecture of Complex K-best MIMO DecoderHardware Architecture of Complex K-best MIMO Decoder
Hardware Architecture of Complex K-best MIMO DecoderCSCJournals
 
BER Performance of MPSK and MQAM in 2x2 Almouti MIMO Systems
BER Performance of MPSK and MQAM in 2x2 Almouti MIMO SystemsBER Performance of MPSK and MQAM in 2x2 Almouti MIMO Systems
BER Performance of MPSK and MQAM in 2x2 Almouti MIMO Systemsijistjournal
 
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading ChannelCapacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading ChannelIOSR Journals
 
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading ChannelCapacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading ChannelIOSR Journals
 
Feasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering Technology
Feasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering TechnologyFeasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering Technology
Feasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering TechnologyCommunication Systems & Networks
 
A novel and efficient mixed-signal compressed sensing for wide-band cognitive...
A novel and efficient mixed-signal compressed sensing for wide-band cognitive...A novel and efficient mixed-signal compressed sensing for wide-band cognitive...
A novel and efficient mixed-signal compressed sensing for wide-band cognitive...Polytechnique Montreal
 
Design of Quaternary Logical Circuit Using Voltage and Current Mode Logic
Design of Quaternary Logical Circuit Using Voltage and Current Mode LogicDesign of Quaternary Logical Circuit Using Voltage and Current Mode Logic
Design of Quaternary Logical Circuit Using Voltage and Current Mode LogicVLSICS Design
 
AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...
AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...
AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...VLSICS Design
 
MDCT audio coding with pulse vector quantizers
MDCT audio coding with pulse vector quantizersMDCT audio coding with pulse vector quantizers
MDCT audio coding with pulse vector quantizersEricsson
 
Performance of the MIMO-MC-CDMA System with MMSE Equalization
Performance of the MIMO-MC-CDMA System with MMSE EqualizationPerformance of the MIMO-MC-CDMA System with MMSE Equalization
Performance of the MIMO-MC-CDMA System with MMSE EqualizationTamilarasan N
 
A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...
A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...
A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...IJCSEA Journal
 

Similar to Report AdvancedCodingFinal - Pietro Santoro (20)

Improving The Performance of Viterbi Decoder using Window System
Improving The Performance of Viterbi Decoder using Window System Improving The Performance of Viterbi Decoder using Window System
Improving The Performance of Viterbi Decoder using Window System
 
Computer-Based Analysis of The Performance of Different Modulation Techniques...
Computer-Based Analysis of The Performance of Different Modulation Techniques...Computer-Based Analysis of The Performance of Different Modulation Techniques...
Computer-Based Analysis of The Performance of Different Modulation Techniques...
 
A Threshold Enhancement Technique for Chaotic On-Off Keying Scheme
A Threshold Enhancement Technique for Chaotic On-Off Keying SchemeA Threshold Enhancement Technique for Chaotic On-Off Keying Scheme
A Threshold Enhancement Technique for Chaotic On-Off Keying Scheme
 
A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...
A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...
A Novel Alamouti STBC Technique for MIMO System Using 16- QAM Modulation and ...
 
Performance evaluation with a
Performance evaluation with aPerformance evaluation with a
Performance evaluation with a
 
Be35317323
Be35317323Be35317323
Be35317323
 
Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...
Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...
Computationally Efficient Multi-Antenna Techniques for Multi-User Two-Way Wire...
 
Hardware Architecture of Complex K-best MIMO Decoder
Hardware Architecture of Complex K-best MIMO DecoderHardware Architecture of Complex K-best MIMO Decoder
Hardware Architecture of Complex K-best MIMO Decoder
 
BER Performance of MPSK and MQAM in 2x2 Almouti MIMO Systems
BER Performance of MPSK and MQAM in 2x2 Almouti MIMO SystemsBER Performance of MPSK and MQAM in 2x2 Almouti MIMO Systems
BER Performance of MPSK and MQAM in 2x2 Almouti MIMO Systems
 
Ieee 2013 matlab abstracts part b
Ieee 2013 matlab abstracts part bIeee 2013 matlab abstracts part b
Ieee 2013 matlab abstracts part b
 
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading ChannelCapacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
 
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading ChannelCapacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
Capacity Enhancement of MIMO-OFDM System in Rayleigh Fading Channel
 
Feasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering Technology
Feasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering TechnologyFeasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering Technology
Feasibility Study of OFDM-MFSK Modulation Scheme for Smart Metering Technology
 
A novel and efficient mixed-signal compressed sensing for wide-band cognitive...
A novel and efficient mixed-signal compressed sensing for wide-band cognitive...A novel and efficient mixed-signal compressed sensing for wide-band cognitive...
A novel and efficient mixed-signal compressed sensing for wide-band cognitive...
 
40120130405003 2
40120130405003 240120130405003 2
40120130405003 2
 
Design of Quaternary Logical Circuit Using Voltage and Current Mode Logic
Design of Quaternary Logical Circuit Using Voltage and Current Mode LogicDesign of Quaternary Logical Circuit Using Voltage and Current Mode Logic
Design of Quaternary Logical Circuit Using Voltage and Current Mode Logic
 
AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...
AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...
AREA OPTIMIZED FPGA IMPLEMENTATION FOR GENERATION OF RADAR PULSE COM-PRESSION...
 
MDCT audio coding with pulse vector quantizers
MDCT audio coding with pulse vector quantizersMDCT audio coding with pulse vector quantizers
MDCT audio coding with pulse vector quantizers
 
Performance of the MIMO-MC-CDMA System with MMSE Equalization
Performance of the MIMO-MC-CDMA System with MMSE EqualizationPerformance of the MIMO-MC-CDMA System with MMSE Equalization
Performance of the MIMO-MC-CDMA System with MMSE Equalization
 
A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...
A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...
A COMPREHENSIVE STUDY AND PERFORMANCE COMPARISON OF M-ARY MODULATION SCHEMES ...
 

Report AdvancedCodingFinal - Pietro Santoro

  • 1. Advanced Wireless Communications Report of the laboratory sessions 2015/16 Student: Pietro Santoro Teacher: Guido Montorsi POLITECNICO DI TORINO Master Degree in Telecommunication Engineering
  • 2.
  • 3. Pietro Santoro Table of Contents PC SESSION 1: LIMITS OF CODING ........................................................................................................................................ 1 1.1 Bounds for the capacity: Software implementation 2 1.2 Infinite block size analysis 3 1.3 Finite length analysis 5 1.4 Bounds achieved with MI statistics 7 PC SESSION 2: SISO DECODING ...............................................................................................................................................9 2.1 SISO Decoder, software implementation 10 2.2 SISO simulation results 16 PC SESSION 3: PCCC DECODING .......................................................................................................................................... 17 3.1 PCCC software implementation 18 3.2 PCCC simulation results 19 PC SESSION 4: SCCC DECODING ........................................................................................................................................... 21 4.1 SCCC software implementation 22 4.2 SCCC simulation results 22 PC SESSION 5: LDPC DECODING........................................................................................................................................... 24 5.1 LDPC codes 25 5.1 LDPC software implementation 26 5.1 LDPC simulation results 27
  • 4.
  • 6.
  • 7. Pietro Santoro 1 PC session 1 – Limits of coding Purpose of session:  To compute of mutual information for several common modulation sets  To compute the lower bounds to achievable frame error rate for several information block sizes, codulator rates and 2 dimensional modulations  To compute, through the simulation software, the statistic of finite block size mutual information for several information block sizes and two dimensional modulations Assignments: 1. Computation of mutual information for several common modulation sets (2,8,16)-PSK and (4,16,64)-QAM (It is assumed infinite block size) 2. Using the sphere packing bound, computes lower bounds using the on achievable performance (FER) with finite block size a. Information Block sizes 100,1000,10000,100000, Infinity b. Modulations (2,8,16)-PSK and (4,16)-QAM c. FER 10-1 -10-8 3. Compute through simulation the statistic of finite block length MI for several values of the codeword size (50,100, and 1000 channel uses). The finite block length MI is the random variable defined as:
  • 9. Pietro Santoro 3 1.1 Bounds for the capacity: Software implementation The purpose of the following analysis is the comparison between different modulation sets in terms of capacity. The block diagram is the following: Figure 1.1 The input parameters for the system can be properly setting by modifying the file input_finite_length_analysis.txt: Output file prefix Pit Constellation type QAM Constellation Cardinality (log2) 2 Es/N0 [dB] (min,max,step) 0,20,1 Finite length analysis 0 Information size (min,max,step) 100,100000,10 -log10(P(e)) (min,max,step) 1,8,1 It is possible to set the constellation scheme (QAM or PSK) and its cardinality, the range in which we want to vary the SNR and probability of error and finally we have also the possibility to choose between finite and infinite length analysis by putting as flag 1 or 0 respectively . The software is implemented in order to find the capacity of a Gaussian channel that is constrained at the input with a 2D constellation. The formula that it applied in the simulation loop is the following: where:
  • 10. AWC - 2014/15 4  𝐸𝑠 𝑁0 is the SNR and in particular 𝐸𝑠 is the average energy per symbol  (𝑎𝑗 − 𝑎𝑖) and (𝑏𝑗 − 𝑏𝑖) are the coefficient for the constellation points 1.2 Infinite block size analysis The first part of the simulation has been done under the following assumptions:  Infinite block size (and below “Finite length analysis” the flag is 0)  Constellation cardinality 𝑚 = 2  Spectral efficiency 𝜀 𝑏 = 2 𝑚 𝑟 = 𝑟 The Shannon Theorem for AWGN channel imposes a limit on the rate, 0 ≤ 𝑟 ≤ 𝐶 of the communication, but ensures the existence of a code that achieves arbitrary low error probability for infinite block size. The following graphs give information about the power employment in the transmission respect to the amount of transmitted information bits. As we can observe in the following graph (figure 1.2), the shape of the curves is the same for all the considered cases: Figure 1.2 – Capacity of different constellation schemes in function of the SNR
  • 11. Pietro Santoro 5 each line, that is for 𝑟 = 𝐶 , divides the plot into two regions: the upper region, where 𝑟 > 𝐶, that represents the unattainable efficiency part and the lower one, where 𝑟 < 𝐶, that is the real and less efficient part. Because we are assuming that all the points of the constellation are transmitted with same probability 1 𝑀 , differently from the optimal Gaussian distribution; the first thing we can notice is the asymptotic trend of the curves under the limit log2 𝑀, that is the maximum number of bit per channel use that we can transmit with an M-ary modulation scheme (with 4QAM and 4PSK we can convey at maximum 2 bits per channel use, with 16QAM and 16 PSK, 4 bits and so on). Another important aspect we want to highlight is the value that curves have for the value of capacity 1 bit per channel use: we have 0 dB for the ideal case and 0.2 dB for the 4QAM: it suggests that if we want to use a constellation scheme with higher cardinality we have to use it in the best way we can. More bit for each block means more energy per signal and for this reason the efficiency curve for 4QAM starts to move away from the ideal one. It is interesting to compare the M-QAM modulation schemes with respect to the MPAM ones:  for a fixed value of Eb/No, MPSK has an unacceptable loss with respect to the corresponding MQAM which is almost half of the capacity. This is due to the fact that M- PSK modulation sets exploit only the phase variation. In the MQAM, we have two degree of freedom in the structure of the constellation: phase and amplitude. For this reason MPSK is never used with modulation efficiency up to 8.  for all the Eb/No values we notice that the best performance are achieved by the 64QAM modulation scheme. The price to pay for, this good behavior is the complexity of the transmission system. ( Above of all we have to pay for the complexity of the receiver ) M-QAM modulation techniques are very good but we have to notice that before they start bending there's a residual gap due to the shaping loss. This loss comes from the comparison between the Gaussian PDF with the discrete one of MQAM modulation sets. These PDFs are represented with a series of delta function. Even if we increase the number of points of the constellation we cannot reach the ideal case.
  • 12. AWC - 2014/15 6 1.2 Finite block size analysis When we impose a finite value for the block size we find a lower bound for the 𝑃𝑤(𝑒) thanks to the sphere packing bound. The bound is in the form 𝑃𝑤(𝑒) ≥ 𝑄 𝑛(𝜗; 𝐴), where: and: This bound has been obtained for Gaussian modulation. When we use the sphere packing bound for modulations different from the Gaussian one it is a reasonable to follow the following inequality and provide an Eb/No as below: where: are the minimum required Eb/No for information block size k to achieve a 𝑃𝑤(𝑒) using respectively the modulation M and the unconstrained Gaussian modulation U, and: are the minimum required Eb/No for an infinite information block size using respectively the modulation M and the unconstrained Gaussian modulation U. In the figure 1.3 is shown the lower bounds of the FER as function of Eb/No using 4QAM modulation, for different block size k = 1000; 10000; 100000 in comparison with the ideal case (infinite block size). The first curve in the graph represents the capacity for infinite block size and unconstrained modulation (ideal condition): with a fixed codulator rate equal to 0.97 (code rate ≈ 1/2 ) the required Eb/N0 is equal to -0.046 dB. The second one shows the capacity for infinite block size but with a constrain in the modulation. The other curves vary according to the block size (k=1000, 10000, 100000). As we can expect, for an higher value of k the performances are closer and closer to the ideal case. Moreover, for lower values of k the slope of the curve is less vertical because the choice of the Pw(e) is not more arbitrary as in the ideal case and the gap of Eb/N0 becomes higher.
  • 13. Pietro Santoro 7 Figure 1.3 – Lower bounds of FER 4QAM for k=100,1000,10000,infinite
  • 14. AWC - 2014/15 8 1.3 Bounds achieved with MI statistics In this section we apply a more general method for the study the mutual information that can be applied to any type of channel. The assumptions are: the channel is memoryless and ergodic. The instantaneous mutual information is computed as: where:  n is the block size  log(𝑃(𝑦𝑖|𝑥𝑖)) and log(𝑃(𝑥𝑖)) are LLRs The following technique allows us to derive reliable statistics by just using simulations with a large n. All the results obtained in this analysis have been carried out simulating a 4QAM modulation scheme. The statistics bring to a set of histograms that describes the distribution of the Mutual Information for each imposed value of Es/N0. For n that tends to infinity the distribution becomes a delta function centered into the mean that corresponds to the capacity. Figura 1.4 – Distribution of the Mutual Information for different Eb/N0 In the following figures (1.5 and 1.6) we can compare the results for the 4QAM modulation scheme with different block size 𝑛 = 100 and 𝑛 = 10000.
  • 15. Pietro Santoro 9 The evolution of the mean is the same in both cases because for an increasing SNR the MI is bounded with the capacity and the evolution of the variance changes. As we expect, for higher n, the accuracy of the estimation is high and it can be observed in terms of lower variance. Figura 1.5 – Mean and variance of the estimate for 4QAM and block size 100 Figura 1.6 - Mean and variance of the estimate for 4QAM and block size 10000
  • 16. AWC - 2014/15 10 PC session 2 – SISO decoding Purpose of session:  To design and implement a C++ class realizing a Sliding Window with grouped decisions Soft-Input Soft-Output decoder (SWG-SISO), with input and output binary LLR.  To simulate the performance of a transmission system of Errore. L'origine riferimento non è stata trovata. employing a binary convolutional code, 2-PAM modulation, AWGN channel and the developed binary SWG- SISO decoder.  To compute the BER performance at the input and at the output of the SISO decoder. Figure a - Block diagram of the system Assignments: I. Comment the developed class (files “SISO_Decoder.cpp” and “SISO_Decoder.h”) II. Simulate the results relative to the rate ½, 4 and 8 states convolutional encoder reporting the 4 BER measures versus the Es/N0 in [dB] Convol. encoder 2-PAM AWGN 2-PAM AWGN inf enc Soft Demod Soft Demod SISO SISO n0 bits SISO Dec infRXI encRXI infRXO BER BER BER BER encRXO LLR k0 bits observbits inf
  • 17. Pietro Santoro 11 2.1 SISO decoding, software implementation The following are the C++ classes, “SISO_Decoder.cpp” and “SISO_Decoder.h” that implement the SISO decoder module that is depicted in the block diagram in figure a. //BEGINNING SISO_Decoder.h #pragma once #include "Trellis.h" class SISO_Decoder { public: SISO_Decoder(void); ~SISO_Decoder(void); void SetParameters( const Trellis* trel, const int D, const int Nbl ); void Run( const int nsteps, // Number of processed trellis steps const int* llruI, // Input bit LLR on information bits const int* llrcI, // Input bit LLR on coded bits int* llruO, // Output extrinsic LLR on inf bits int* llrcO // Output extrinsic LLR on cod bits ); void Reset(); private: int time; // Counter of trellis steps int ndata; // Number of data already read-out int D; // Length of initialization window int Nbl; // Length of updating window int W; // Overall latency of the algorithm, length of the window int k0; // Number of information bits per trellis step int n0; // Number of coded bits per trellis step int nbit; // Number of total bits per trellis steps (k0+n0) int nsta; // Number of states const Trellis* trel; int* alpha; // Buffer to store results of forward recursion int* beta; // Buffer to store results of backward recursion int* llrinp; //buffer to store input LLR int* llrout; //buffer to store output LLR int* llrsym; // buffer to store output branch metrics int* llrsymo; // buffer to store output branch metrics int ntra; //Number of transitions = cardinality of input alphabet int nlab; // Number of branch labels int* aold,*anew; }; //ENDING SISO_Decoder.h
  • 18. AWC - 2014/15 12 //BEGINNING SISO_Decoder.cpp #include "SISO_Decoder.h" //constructor SISO_Decoder::SISO_Decoder(void) { time=0; alpha=0; beta=0; llrinp=0; llrout=0; } //destructor SISO_Decoder::~SISO_Decoder(void) { delete llrinp; delete llrout; delete alpha; delete beta; } // Here I’m allocating the memory for the buffer needed to implement the algorithm void SISO_Decoder::SetParameters( const Trellis* trel, const int D, const int Nbl ) { this->D=D; this->Nbl=Nbl; this->trel=trel; W=D+Nbl; k0=trel->k; n0=trel->n; nbit=k0+n0; nsta=trel->nstate; ntra=trel->ntrans; nlab=1<<nbit; alpha =new int[nsta*2]; beta =new int[nsta*W]; llrinp=new int[nbit*W]; llrout=new int[nbit*Nbl]; llrsym=new int[1<<nbit]; llrsymo=new int[1<<nbit]; Reset(); } void SISO_Decoder::Reset() { time=0; ndata=0; int i; for(i=0;i<2*nsta;i++)alpha[i]=0; for(i=0;i<W*nsta;i++)beta[i]=0; for(i=0;i<W*nbit;i++)llrinp[i]=0; for(i=0;i<Nbl*nbit;i++)llrout[i]=0; anew=alpha; aold=alpha+nsta; }
  • 19. Pietro Santoro 13 void maxacc(int& a, const int b) { int c=a-b; if(c>0)return; else { a=b; return; } } void bittobranch(const int nbit, const int* llrbit, int* llrsym) { int nsym=(1<<nbit); // number of symbols is 2^ number of bits int i,k; for(i=0;i<nsym;i++) { llrsym[i]=0; for(k=0;k<nbit;k++) { llrsym[i] += ((i>>k)&1)* llrbit[k]; // Extract k-th bit from i } } } void branchtobit(const int nbit, int* llrsym, int* out) { int k,j,n0,n1; int Nu=1<<nbit; for(j=nbit-1;j>0;j--) // Cycle on constituent symbols { Nu>>=1; /* 0 */ n0=llrsym[0]; for(k=1;k<Nu;k++)maxacc(n0,llrsym[k]); /* 1 */ n1 = llrsym[Nu]; maxacc(llrsym[0],llrsym[Nu]); for(k=1;k<Nu;k++) { maxacc(n1,llrsym[Nu+k]); maxacc(llrsym[k],llrsym[Nu+k]); } out[j]=n1-n0; } out[0]=llrsym[1]-llrsym[0]; }
  • 20. AWC - 2014/15 14 // Core of the program!! void SISO_Decoder::Run( const int nsteps, // Number of processed trellis steps const int* llruI, // INTPUT: LLR of input information bit (k0 LLR per trellis step) const int* llrcI, // INTPUT: LLR of input coded bit (n0 LLR per trellis step) int* llruO, // OUTPUT: LLR of input information bit (k0 LLR per trellis step) int* llrcO // OUTPUT: LLR of input coded bit (n0 LLR per trellis step) ) { int i,j,k,e,s,u,p; int Ne=nsta*ntra; // Number of edges int *bn; // pointer to the new values of backward recursion int *bo; // pointer to the old values of backward recursion int label,temp; int ntra=1<<k0; int nlab=1<<nbit; // LOOP ON EACH TRELLIS STEP: 1. Initialization of the backward recursion 2. Aggregation of the LLRs on bits into branch metric 3. Backward recursion of size W=D+Nbl 4. Forward recursion of size Nbl and computation of the output branch matric 5. Marginalization of the branch metrics into LLRs on the bits 6. Storing of the data it the output buffer llruO for(i=0;i<nsteps;i++) { // The input data are stored in the vector llrinp (circular buffer) and the pointer time is increased each time it is processed a new trellis step for(j=0;j<k0;j++)llrinp[time*nbit+j]=llruI[j]; for(j=0;j<n0;j++)llrinp[time*nbit+k0+j]=llrcI[j]; // The output computed extrinsic LLR are stored in the vector llrout (circula buffer) and the pointer is incremented each time it is processed a new trellis step for(j=0;j<k0;j++)*llruO++=llrout[ndata*nbit + j]; for(j=0;j<n0;j++)*llrcO++=llrout[ndata*nbit + k0+j]; // The pointers ndata and time are restored to zero when they reach respectively the values Nbl and W ndata = (ndata+1)%Nbl; time = (time+1)%W; // Here I’m checking if a new block can be decoded if(ndata==0) { // 1. Backward recursion initialization: because we don’t know the final state we are assuming that all the states have the same probability and for this reason we are setting to zero the values of beta for(k=0;k<nsta;k++)beta[(W-1)*nsta+k]=0; for(k=W-2;k>=0;k--) {
  • 21. Pietro Santoro 15 p = (time+k+1)%W; // Here I’m retrieving the position of the column corresponding to the correct time instant // 2. I’m storing the branch metric into the vector llrsym bittobranch(nbit,llrinp + p*nbit, llrsym); bo = beta+(k+1)*nsta; // pointer to old beta metrics bn = beta+(k)*nsta; // pointer to new beta metrics // we need to pointers because one is in function of the other // In this loop I compute the branch metrics for all the edges e and the first thing that I do is to initialize to - ∞ (-10-7 ) all the metrics for(s=0;s<nsta;s++)bn[s]=-10000000; // Here I fill the trellis for(e=0;e<Ne;e++) { // Here I compute the label associated to the edge label=(trel->trel[4*e+2]<<k0)+trel->trel[4*e+1]; // 3. Here I compute backward path metric maxacc(bn[trel->trel[4*e+0]], // Branch metric associated to the Starting state sS (e) bo[trel->trel[4*e+3]]+ // Branch metric associated to the Ending state sE (e) llrsym[label]); // Branch metric associated to the label associated with the edge u(e)/c(e) } } // Here we start the forward recursion for(k=0;k<Nbl;k++) { // Compute input branch metrics from LLR p=(time+k)%W; bittobranch(nbit,llrinp+p*nbit,llrsym); // Initialization of all max* accumulators for(s=0;s<nsta;s++)anew[s] =-1000000; for(s=0;s<nlab;s++)llrsymo[s]=-1000000; // Loop on all edges for(s=0;s<nsta;s++)for(u=0;u<ntra;u++) { label = (trel->output(s,u)<<k0)+trel->input(s,u); maxacc(anew[trel->ending(s,u)], aold[trel->starting(s,u)]+llrsym[label] ); // 4. Here I compute forward path metric maxacc(llrsymo[label], aold[trel->starting(s,u)] The complexity of all the algorithm depends on these important lines. The most important parameter in terms of complexity is the number of states Ne
  • 22. AWC - 2014/15 16 +llrsym[label] + beta[j*nsta + trel->ending(s,u)] ); } // 5. Computation of the LLRs on bit from output branch metrics branchtobit(nbit,llrsymo,llrout+j*nbit); // 6. . Computation of the total LLR to extrinsic LLR for(s=0;s<nbit;s++)llrout[j*nbit+s] -= llrinp[p*nbit+s]; // Swapping of the pointers of forward path metrics bn=aold; aold=anew; anew=bn; } } } } //ENDING
  • 23. Pietro Santoro 17 2.2 SISO Decoder simulation results In this section we will analyze the result figured out from the simulation of the system depicted in the figure 2a. Here are exposed the graphs related to its performance that are expressed in term of BER. As we can observe in the figure 2a, the block diagram contains a convolutional encoder with and a SWG-SISO module as decoder. The convolutional encoder has been set with 4 and 8 states. It may be also possible to adjust the window size by properly setting Nbl and D; but this is not important for our goal because it could be useful only in those particular cases where has to be analyzed the tradeoff between window size and decoding complexity. The chosen Parameter for the SWG-SISO are D = 20 and Nbl = 1000. Figure 3.1 In Figure 2.1 it can be observed the Information Bit Error curves as function of Eb/N0 for 4 and 8 state Encoders before and after the SISO module. As we expect, increasing the number of states of the encoder the performances improve since the correction capability of the code is related to its memory.
  • 24. AWC - 2014/15 18 PC session 3 – PCCC decoding Purpose of session:  To understand the simulation program for a PCCC  To understand the termination of convolutional codes  To simulate and plot the performance of a rate 1/3 PCCC with different constituent encoders and interleaver block sizes Figure 4a - Block diagram of coding system based on PCCC and correspondent iterative decoder Assignments: I. Simulate the system in figure 3a in order to obtain BER and FER plots with 4 and 8 state encoders and interleaver size 100, 1000, 10000 and comment the obtained plots. Convol. encoder 1 2-PAM AWGN 2-PAM AWGN inf enc1 Soft Demod Soft Demod enc1RX infRX BER[2] Convol. encoder 2 Int enc2RX SISO SISO SISO Dec2 IntDeint infpRX infpRX infRX1 enc2 infp SISO SISO SISO Dec1
  • 25. Pietro Santoro 19 3.1 PCCC software implementation In the following we will analyze the performance of a communication system that uses a Parallel Concatenated Convolutional Code (figure 3a). The source generates a sequence of information bits of length N (inf); the PCCC Encoder is composed of two constituent convolutional encoders working in parallel: the upper encoder generates the sequence enc1 of encoded bits with rate r1 while the lower one, that receive a permuted version of the sequence of information bit infp , generates the sequence enc2 with rate r2. The overall PCCC Encoder has rate 𝑟 = 𝑟1 𝑟2 𝑟1+ 𝑟2 Upper and lower encoders are systematic and recursive. They are chosen by setting the coefficients of the pair [Z,H] in the file test_PCCC_decoder.cpp. For example if [Z,H]=[015,013] it corresponds to the binary couple [001101,001011]. It is used to describe the polynomial [1+D2 +D3 ,1+D+D3 ] that refers to the encoder in figure 3.1: Figure 3.1 – 8-states, SR encoder described by the polynomial // SETTING FOR 8-states int H[]={013}; int Z[]={015}; // SETTING FOR 4-states // int H[]={07}; // int Z[]={05}; The 4-states encoder is represented by the pair [05,07] while the 8-state one by the pair [015,013] (as we can see in the reported code). The sequences enc1 and enc2 are both mapped by a 2-PAM modulation scheme that outputs respectively the sequences mod1 and mod2 that are transmitted over an AWGN Channel. The received sequences, that are rec1 and rec2 are passed to the SISO module that produces LLRs sequences on coded bits: enc1RX and enc2RX.
  • 26. AWC - 2014/15 20 The two sequences enc1RX and enc2RX are finally processed by the PCCC Decoder to extrapolate the information bits. The core of the decoder is a couple of two SISO Decoders that share information about the LLRs on output information bits in order to satisfy the equality: The extrinsic information computed from one encoder is considered as a-priori information for the other one and vice versa. Thanks to the provided software, it has been possible to simulate a PCCC Decoder with overall rate 𝑟 = 1 3 , obtained by concatenating two systematic recursive constituent encoders with changeable number of states. As requested from the assignment we have simulated the system with 4 and 8 states, and with interleaver size of 100, 1000 and 10000. 3.2 PCCC simulation results By looking at the figure 3.1 and 3.2 we can easily observe that BER, and similarly FER, curves drop more rapidly to smaller values of the Pb(e) when we increase the interleaver size N (a tradeoff has to be considered between the increment of N and the performance we desire because the latency of the decoder increases with the increment of the interleaver size). If we focus on the BER and FER curves another thing that is easy to observe are the three main regions of a the BER curve of a PCCC: the Non convergence, Waterfall and the Error Floor regions. As we studied in the theory can be confirmed from the plot: by comparing performances of 4 and 8 states encoders we cannot say that one performs better than the other for all values of SNR because there is a point where the two curves cross each other. The choice of the first or the second will be done depending on the requirement.
  • 27. Pietro Santoro 21 Figure 3.2 – BER curves for different values of #states and interleaver size N Figure 3.3 – FER curves for different values of #states and interleaver size N
  • 28. AWC - 2014/15 22 PC session 4 – SCCC decoding Purpose of session:  To understand the simulation program for a SCCC  To simulate and plot the performance of a rate 1/4 SCCC with different constituent encoders and interleaver block sizes Figure 4a - Block diagram of rate 1/4 coding system based on SCCC and correspondent iterative decoder Assignments: I. Simulate the system in figure 4a in order to obtain BER and FER plots with 4 and 8 state encoders and interleaver size 100, 1000, 10000 and comment the obtained plots Convol. encoder 1 2-PAM AWGN inf enc1 Soft Demod enc1RX infRX BER[2] Conv. encoder 2 Int enc2RX SISO SISO SISO Dec2 IntDeint enc1pRX enc1pRX enc2enc1p SISO SISO SISO Dec1
  • 29. Pietro Santoro 23 4.1 SCCC software implementation In this section of the report we will analyze the performance of a communication system that uses a Serial Concatenated Convolutional Code (figure 3a). The architecture of the software is similar to the one we have seen in the third chapter of the report for PCCC: the source generates a sequence of information bits of length N (inf); the core of the SCCC Encoder is composed of two constituent convolutional encoders working in serial: the outer encoder (convolutional encoder 1) generates the sequence enc1 of encoded bits (at rate r1 ) that is interleaved and sent as input to the inner encoder (convolutional encoder 2) as enc1p. This last one generates the sequence enc2 with rate r2. The overall SCCC Encoder has rate 𝑟 = 𝑟1 𝑟2 The sequence enc2 is mapped by a 2-PAM modulator and it is transmitted over an AWGN Channel. The received sequence is passed to the SISO module that produces LLRs sequence on coded bits: enc2RX. The sequence enc2RX is finally processed by the SCCC Decoder to extrapolate the information bits. The core of the decoder is a couple of two SISO Decoders that share information about the LLRs on output information bits with the aim of allowing an iterative process that makes possible, as for PCCC decoding, the convergence of the system of equations: Figure 4.1 – Architecture of the core of the SCCC decoder 4.2 SCCC simulation results In the following figures (4.1 and 4.2) is it possible to observe the BER and FER curves obtained thanks to the simulation of the SCCC system by varying number of states (4 and 8 states) and interleaver size (N=100,1000 and 10000). The curves we have obtained for SCCC are not well define as we experienced for PCCC; it is an indication of the higher complexity of this algorithm with respect to the same we have already used for PCCC because the tests has been done on the same calculator. Similarly to PCCC, we can notice that the interleaver size is the key parameter for the reaching of low values of error probability: 8 states and 10000 is the best combination we can use for high performance of the system.
  • 30. AWC - 2014/15 24 Figure 4.2 – BER curves for different values of #states and interleaver size N Figure 4.3– FER curves for different values of #states and interleaver size N
  • 31. Pietro Santoro 25 PC session 5 – LDPC decoding Purpose of session:  To understand the simulation program for an LDPC  To understand LDPC encoding by back substitution  To understand the difference between optimal and suboptimal decoding algorithm (min- sum-offset) for LDPC  To simulate and plot the performance of the LDPC code for the DVB-S2 standard. Figure 5a - Block diagram of the transmission system using LDPC encoder Assignments:  BER and FER plot with rate ¼ and 8/9 with medium block length (16200) with optimal and suboptimal decoder  BER plot with rate ½ with optimal decoder and suboptimal decoder with for different values of the offset parameter beta (short block)  BER plot with rate ½ and the three values of available block length (short, medium and long code) use the algorithm that you like.  Comment on the plots LDPC_Encoder 2-PAM AWGN inf enc Soft Demod rec LDPC_Decoder Run RunSubopt encRX infRX BER betancode isshort DVBS2 Encoder esn0
  • 32. AWC - 2014/15 26 5.1 LDPC codes They are special linear block codes whose have a “sparse” parity check matrix H. Their importance is due to the good performance that is possible to achieve (well comparable with PCCC and SCCC performances). The encoding technique has low complexity since the code word would consist of the message bits and some parity check bits. What the LDPC encoder do can be roughly schematized as follow: it choose certain variable nodes to place the message bits on and in the second step calculate the missing values of the other nodes. In this way it solves the parity check equations. In practice however, more clever methods are used to ensure that encoding can be done in much shorter time (parallel processing is possible) by exploiting the property of “sparseness” of the parity-check matrix and a certain structure for the Tanner graph. The decoding process is based on belief propagation algorithm between the variable and check nodes. The algorithm can be described graphically by constructing the Tanner Graph (figure 5.1) of a generic LDPC code: Figure 5.1 – Tanner Graph of an H matrix of a generic LDPC code {𝑣1 , 𝑣2 … 𝑣 𝑛} are the variable nodes {𝑐1 , 𝑐2 … 𝑐 𝑛−𝑘} are the check nodes. The number of edges connected to a variable node 𝑣𝑖 is the degree of the variable node 𝑑 𝑣𝑖 , whereas the number of
  • 33. Pietro Santoro 27 edges connected to a check node 𝑐𝑗 is the degree of the check node 𝑑 𝑐𝑗 . At the nth iteration of the algorithm, the generic message sent by a variable node 𝑣𝑖 to a check node 𝑐𝑗 is denoted by 𝑓(𝑛) (𝑣𝑖, 𝑐𝑗 ), whereas the message sent by a check node 𝑐𝑗 to a variable node 𝑣𝑖 is denoted by 𝑓(𝑛) (𝑐𝑗 , 𝑣𝑖). Adopting the belief propagation algorithm: 𝑓(𝑛+1) (𝑣𝑖, 𝑐𝑗 ) = 𝑙𝑙𝑟𝑖 + ∑ 𝑓(𝑛) (𝑐 𝑚 , 𝑣𝑖) 𝑑 𝑣𝑖 𝑚=0,𝑚≠𝑗 All the 𝑓(𝑛) (𝑐𝑗 , 𝑣𝑖) can be computed in two different ways:  Application of the Sum-prod operation 𝑓(𝑛+1) (𝑐𝑗, 𝑣𝑖 ) = 2 arctanh ∏ tanh( 𝑓(𝑛) (𝑣𝑖, 𝑐 𝑚 ) 2 ) 𝑑 𝑐𝑗 𝑚=1,𝑚≠𝑖 that is possible to approximate with 𝑔(∙) operator. It represent the optimal computation for the decoding process.  Application of the Min-sum operation 𝑓(𝑛+1) (𝑐𝑗, 𝑣𝑖 ) = − ∏ 𝑠𝑖𝑔𝑛 (−𝑓(𝑛) (𝑣𝑖, 𝑐 𝑚 )) 𝑑 𝑐𝑗 𝑚=1,𝑚≠𝑖 ∙ min 𝑚=1,𝑚≠𝑖 |𝑓(𝑛) (𝑣𝑖, 𝑐 𝑚 )| In order to reduce the performance loss of Min-Sum with respect to Sum-Prod, it is possible to apply an offset. It represent the sub-optimal computation for the decoding process. The belief propagation algorithm works as follows: at the first step, the check nodes' sockets 𝑓(𝑛=0) (𝑣𝑖, 𝑐𝑗 ) are initialized to a priori LLRs on coded bits coming from the soft demodulator. At each step the variable nodes' sockets 𝑓(𝑛) (𝑐𝑗, 𝑣𝑖 ) are obtained, either from sum-prod or min- sum computations, and the check nodes' sockets 𝑓(𝑛) (𝑣𝑖, 𝑐𝑗 ) are updated. At the end of the iterations, a posteriori LLRs are computed and hard decision is performed.
  • 34. AWC - 2014/15 28 5.2 LDPC software implementation The software implements the block diagram that is depicted in the figure 5a. The LDPC encoder is can be properly set by changing the input parameters in order to satisfy all the requirements of the session. It is possible to choose among different combination of rates of code and dimension of the code (short with N=4096, medium with N=16200 and long code with N=64800) and to choose the operator for the decoding block in order to evaluate optimal and sub-optimal configurations for the decoder. The possible rates used in DVBS-2 are r = [1/4; 1/3; 2/5; 1/2; 3/5; 2/3; 3/4; 4/5; 5/6; 8/9; 9/10] and not all of them are possible with three different code length. Output file Data/temp.txt Eb/N0 [dB] 0:10:0.1 Maximum number of frames 1000 Name of file of LDPC code (or DVBS2) DVBS2 DVB-S2 Encoder 12 Short (2), Medium (1) or long code (0)? 2 Min-sum-offset (1) or sum-prod algorithm (0)? 1 Beta for offset 3 Number of decoder iterations 50 5.3 LDPC simulation results As requested in the assignment of this laboratory session I have provided the BER and FER curves for LDPC codes with different rate, ¼ and 8/9, and different decoding procedure, optimal (Sum- Prod) and sub-optimal (Min-Sum) with an arbitrary offset. By looking at the plot of the figures 5.2 and 5.3 we can observe that:  LDPC code with rate ¼ offers better performance because of the lower rate.  Sub-optimal procedure introduces a loss that decreases with the increment of the SNR because of the better approximation of the tanh() with the sign() function. In figure 5.4 are depicted the BER curves for LDPC codes with the application of sub-optimal routine and more specifically is depicted the variation of curve with the variation of the offset.
  • 35. Pietro Santoro 29 The best result has been reached for γ=4. Finally in figure 5.5 we can observe the BER curves for LDPC codes that uses different block size: as expected from the theoretical results, for higher block size the performance of the overall system are better by paying the good result with the drawback of a larger latency. Figure 5.2 – BER curves for comparison of LDPC codes with different rate and different operator for the decoding Figure 5.3 – FER curves for comparison of LDPC codes with different rate and different operator for the decoding
  • 36. AWC - 2014/15 30 Figure 5.4 – BER curves of LDPC codes with different offset for comparison between Min-Sum and Sum-Prod Figure 5.5 – BER curves of LDPC code for different block size