Communication Systems: QC-LDPC & Convolutional Codes Assignment
VerifiedAdded on  2023/06/04
|8
|1173
|144
Homework Assignment
AI Summary
This assignment focuses on the analysis and implementation of Quasi-Cyclic Low-Density Parity-Check (QC-LDPC) codes and recursive systematic convolutional (RSC) codes within the context of communication systems. The solution provides a detailed explanation of QC-LDPC code structure, encoding, and decoding, including a MATLAB implementation for generating codewords, modulating them using Binary Phase Shift Keying (BPSK), and transmitting them through an Additive White Gaussian Noise (AWGN) channel. Bit Error Rate (BER) performance is evaluated through simulations with varying signal-to-noise ratios (Eb/No). Additionally, the assignment addresses RSC codes, including drawing the state and trellis diagrams, determining codeword weights, and identifying message specifications for generating low-weight codewords. The solution uses MATLAB to determine these weights and provides insights into optimizing code performance.

FUNDAMENTALS OF COMMUNICATION SYSTEMS
ASSIGNMENT I & II
By (NAME)
INSTITUTIONAL AFFILIATION
COURSE NAME & COURSE ID
PROFESSOR (TUTOR)
LOCATION (STATE, COUNTRY)
DATE OF SUBMISSION
1
ASSIGNMENT I & II
By (NAME)
INSTITUTIONAL AFFILIATION
COURSE NAME & COURSE ID
PROFESSOR (TUTOR)
LOCATION (STATE, COUNTRY)
DATE OF SUBMISSION
1
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

QUASI-CYCLIC LOW DENSITY PARITY CHECK CODES
The Quasi-cyclic LDPC codes are codes that demonstrate similarity and cyclic connections
for row-column interconnection patterns or codes in a sub-matrix. The codes in QC-LDPC codes
are efficiently encoded with shift registers. The codes are denoted using shift values for all the sub-
matrices. The structure is compact in its matrix representation and can be easily constructed. The
performance simulation can show that constructed codes can perform as well as random codes at
short lengths. An algorithm is implemented in the construction of optimized codes for decoding
purposes in communication systems. The algorithm offers flexibility by the random codes while
producing hardware related codes. Some of the communication systems that implement the QC-
LDPC codes in encoding and decoding are WiMax, FPGA devices and resources.
The QC-LDPC is formed from the concatenation of circularly shifted sub-matrices with or
without zero sub-matrices. The general structure of the codes is given as,
where Ai is the circulant matrix.
Some of the methods used to obtain such structures are combinatorial construction and the
finite geometry methods. The QC-LDPC codes form part of the most advanced and high
performance Forward Error Correcting codes considered in structure of globally standardized
transmission systems. The codes are made up of a set of number from the binary circulant matrices
which are comprised of 1 or 0. For the circulant matrices, each row or column of the matrix forms a
cyclic shift of its previous row or column. The matrix generator for the systematic QC-LDPC is
obtained as,
The rate is given that (t*c)/((t+1)*c) or (t/(t+1)). The number of circulant, s, is decided on
the basis of the rate of code. The set H has at least one full rank matrix in which an inversion in the
construct, G, is performed. These codes have a low error floor, they are closely approaching the
2
The Quasi-cyclic LDPC codes are codes that demonstrate similarity and cyclic connections
for row-column interconnection patterns or codes in a sub-matrix. The codes in QC-LDPC codes
are efficiently encoded with shift registers. The codes are denoted using shift values for all the sub-
matrices. The structure is compact in its matrix representation and can be easily constructed. The
performance simulation can show that constructed codes can perform as well as random codes at
short lengths. An algorithm is implemented in the construction of optimized codes for decoding
purposes in communication systems. The algorithm offers flexibility by the random codes while
producing hardware related codes. Some of the communication systems that implement the QC-
LDPC codes in encoding and decoding are WiMax, FPGA devices and resources.
The QC-LDPC is formed from the concatenation of circularly shifted sub-matrices with or
without zero sub-matrices. The general structure of the codes is given as,
where Ai is the circulant matrix.
Some of the methods used to obtain such structures are combinatorial construction and the
finite geometry methods. The QC-LDPC codes form part of the most advanced and high
performance Forward Error Correcting codes considered in structure of globally standardized
transmission systems. The codes are made up of a set of number from the binary circulant matrices
which are comprised of 1 or 0. For the circulant matrices, each row or column of the matrix forms a
cyclic shift of its previous row or column. The matrix generator for the systematic QC-LDPC is
obtained as,
The rate is given that (t*c)/((t+1)*c) or (t/(t+1)). The number of circulant, s, is decided on
the basis of the rate of code. The set H has at least one full rank matrix in which an inversion in the
construct, G, is performed. These codes have a low error floor, they are closely approaching the
2

Shannon limit, and the QS-LDPC code is adopted by a number of standards used in the field of
wireless communication such as DVB-S2, 802.11n. 802.16e.
BASIC STRUCTURE OF A QC-LDPC ENCODING/DECODING
This section seeks to investigate the performance of (117,78) QC-LDPC code with rate 2/3. Position
of 1s of each 39x39 circulant is as given in the table below:
H1 H2 H3
Position of 1s 1,2,4 1,5,10 1,9,20
(a) Generate 10 random bitstreams with length as the message of the encoder of ( ,) QC-LDPC
code.
For a code rate of 2/3
3
wireless communication such as DVB-S2, 802.11n. 802.16e.
BASIC STRUCTURE OF A QC-LDPC ENCODING/DECODING
This section seeks to investigate the performance of (117,78) QC-LDPC code with rate 2/3. Position
of 1s of each 39x39 circulant is as given in the table below:
H1 H2 H3
Position of 1s 1,2,4 1,5,10 1,9,20
(a) Generate 10 random bitstreams with length as the message of the encoder of ( ,) QC-LDPC
code.
For a code rate of 2/3
3
⊘ This is a preview!⊘
Do you want full access?
Subscribe today to unlock all pages.

Trusted by 1+ million students worldwide

(b) Determine the codewords obtained from the message generated in the section above.
Code rate 2/3
Matrix size 8x24
Expanded matrix size
corresponding to sub-block size
Sub-block 27 216x648
Sub-block 54 432x1296
Sub-block 81 648x1944
(c) Modulate codewords formed by BPSK and transmit them through the AWGN channel
having zero mean and variance 1.
(d) the noisy information obtained above are passed through the two level quantizer and entered
to the QC-LDPC decoder as shown below,
The aim fo a decoder design for QC_LDPC is to exploit the array structure for efficient
implementation. The decoder has been designed with a priority on high flexibility.
ANALYSIS OF A QC-LDPC CODE
To verify performance of constructed (117,78) QC-LDPC code based on different signal to noise
ratios per bit. This requires calculation of the Bit Error Rate (BER) of the code obtained from
different E b /N 0 s.
n=117
k=78
4
Code rate 2/3
Matrix size 8x24
Expanded matrix size
corresponding to sub-block size
Sub-block 27 216x648
Sub-block 54 432x1296
Sub-block 81 648x1944
(c) Modulate codewords formed by BPSK and transmit them through the AWGN channel
having zero mean and variance 1.
(d) the noisy information obtained above are passed through the two level quantizer and entered
to the QC-LDPC decoder as shown below,
The aim fo a decoder design for QC_LDPC is to exploit the array structure for efficient
implementation. The decoder has been designed with a priority on high flexibility.
ANALYSIS OF A QC-LDPC CODE
To verify performance of constructed (117,78) QC-LDPC code based on different signal to noise
ratios per bit. This requires calculation of the Bit Error Rate (BER) of the code obtained from
different E b /N 0 s.
n=117
k=78
4
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

n is the length of the block code and there is a total of 2k codewords which form a k-dimensional
subspace of the vector space of the n-tuple over the field GF. The linear block code is developed in
either row space of the generator matrix as well as the null space of the parity check matrix. k- is
the total number of information digits.
The code rate for this system is given as,
Using Matlab function, one may decode the binary QC-LDPC codes within the code rate 2/3. The
system is passed through a AWGN noise filter to detect the noise deviation. The following
algorithm is used to solve the problem:
(a) Generating the 10 bitstreams on the length of the message of the encoder.
sigma = 1; % AWGN noise deviation
x = (sign(randn(1,size(G,1)))+1)/2; % random bits
5
subspace of the vector space of the n-tuple over the field GF. The linear block code is developed in
either row space of the generator matrix as well as the null space of the parity check matrix. k- is
the total number of information digits.
The code rate for this system is given as,
Using Matlab function, one may decode the binary QC-LDPC codes within the code rate 2/3. The
system is passed through a AWGN noise filter to detect the noise deviation. The following
algorithm is used to solve the problem:
(a) Generating the 10 bitstreams on the length of the message of the encoder.
sigma = 1; % AWGN noise deviation
x = (sign(randn(1,size(G,1)))+1)/2; % random bits
5

(b) Determining the codewords or the coding as a result of the random generated bitstreams
from the system.
y = mod(x*G,2); % coding
(c) Modulating codewords using BPSK and transmit them through AWGN channel having zero
mean and variance 1.
z = 2*y-1; % BPSK modulation
z=z + sigma*randn(1,size(G,2)); % AWGN transmission
f1=1./(1+exp(-2*z/sigma^2)); % likelihoods
f0=1-f1;
[z_hat, success, k] = ldpc_decode(z,f0,f1,H);
x_hat = z_hat(size(G,2)+1-size(G,1):size(G,2));
x_hat = x_hat';
(d) Computing the BER in the analysis of a QC-LDPC code
(e) The number of simulations filed in the table below, for this purpose, by running number of
simulations, complete Table 2 and draw a graph expressing performance of the code by
calculating average of BERs in terms of E b /N 0 s.
Number of simulations Eb/No (dB) BER
100 3.0 0.1345
100 3.5 0.1228
6
from the system.
y = mod(x*G,2); % coding
(c) Modulating codewords using BPSK and transmit them through AWGN channel having zero
mean and variance 1.
z = 2*y-1; % BPSK modulation
z=z + sigma*randn(1,size(G,2)); % AWGN transmission
f1=1./(1+exp(-2*z/sigma^2)); % likelihoods
f0=1-f1;
[z_hat, success, k] = ldpc_decode(z,f0,f1,H);
x_hat = z_hat(size(G,2)+1-size(G,1):size(G,2));
x_hat = x_hat';
(d) Computing the BER in the analysis of a QC-LDPC code
(e) The number of simulations filed in the table below, for this purpose, by running number of
simulations, complete Table 2 and draw a graph expressing performance of the code by
calculating average of BERs in terms of E b /N 0 s.
Number of simulations Eb/No (dB) BER
100 3.0 0.1345
100 3.5 0.1228
6
⊘ This is a preview!⊘
Do you want full access?
Subscribe today to unlock all pages.

Trusted by 1+ million students worldwide

1000 3.75 0.1107
1000 4.0 0.0975
100000 4.25 0.0567
10000 4.5 0.0313
10000 4.75 0.0085
100000 5.0 0.0022
100000 5.25 0.0008
100000 5.5 0.0003
100000 5.75 0.0001
The recursive systematic convolutional (RSC) code,
This one uses the turbo codes,
% Create a trellis for a rate 2/3 convolutional code. Set the traceback and
% code rate parameters.
trellis = poly2trellis([5 4],[23 35 0; 0 5 13]);
traceBack = 16;
codeRate = 2/3;
%%
% Create a convolutional encoder and its equivalent Viterbi decoder.
convEncoder = comm.ConvolutionalEncoder('TrellisStructure',trellis);
vitDecoder = comm.ViterbiDecoder('TrellisStructure',trellis, ...
'InputFormat','Hard','TracebackDepth',traceBack);
7
1000 4.0 0.0975
100000 4.25 0.0567
10000 4.5 0.0313
10000 4.75 0.0085
100000 5.0 0.0022
100000 5.25 0.0008
100000 5.5 0.0003
100000 5.75 0.0001
The recursive systematic convolutional (RSC) code,
This one uses the turbo codes,
% Create a trellis for a rate 2/3 convolutional code. Set the traceback and
% code rate parameters.
trellis = poly2trellis([5 4],[23 35 0; 0 5 13]);
traceBack = 16;
codeRate = 2/3;
%%
% Create a convolutional encoder and its equivalent Viterbi decoder.
convEncoder = comm.ConvolutionalEncoder('TrellisStructure',trellis);
vitDecoder = comm.ViterbiDecoder('TrellisStructure',trellis, ...
'InputFormat','Hard','TracebackDepth',traceBack);
7
Paraphrase This Document
Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser

8
1 out of 8
Your All-in-One AI-Powered Toolkit for Academic Success.
 +13062052269
info@desklib.com
Available 24*7 on WhatsApp / Email
Unlock your academic potential
Copyright © 2020–2025 A2Z Services. All Rights Reserved. Developed and managed by ZUCOL.