程序代写代做 html data structure algorithm c/c++ Error Control Coding Project Assignment

Error Control Coding Project Assignment
1 Overview
In this project, students need to implement some state-of-the-art channel encoder(s) and decoder(s) in Matlab, simulate and analyse the performance of the implemented channel coding scheme(s).
The channel coding schemes adopted in this project are all extracted from wireless communications standards/specifications including GSM, CDMA2000, CD-ROM, WCDMA, LTE, WiMAX, DVB etc. On completion of the project, the students will have a better understanding of the channel coding principles, implementation details of error control coding, the role and effectiveness of error control coding in real-world telecommunications/data-storage applications.
Below in Table 1 is a list of possible project proposals. There are two parts in the project. Part I needs to be done for each student individually. Part II is a group project, which needs to done by each group.
Each project in part 2 is described by a ‘difficulty indicator’, which to some extent reflects how hard it is and how much effort and time it takes to complete that project successfully. However, it is not an accurate assessment on the project difficulty levels. Please also note that the numbers are not linearly related to the project difficulty. For example, a project with difficulty indicator 1 is NOT necessarily much easier than a project with difficulty indicator 3 and it will NOT take only 1/3 of efforts and time. You should NOT treat this indicator as the sole basis of making your decision. Other factors should be as important, such as your work load from other UoS, your past performance, your target performance, your self study ability, your interests, etc.
Part I – Individual Project. All students are divided into 9 groups randomly. There will be different assignments for different groups (See Table II). For example, students in group 1 need to project 1 and 6 in Table I. You will receive an email about the group which you belong to. Please find below the assignment for each group.
Please note that this is an individual assignment and needs to be done by each student individually. Do not work with other students and do not copy other’s solution.
Otherwise it will be treated as plagiarism.

Table 1 Part I Projects
Part I Project No.
Code Category
Standard
Detail
1
BCH Code
INTELSAT
BCH (127,113)
2
BCH Code
INMARSAT
BCH (63,39)
3
Reed-Solomon Code
DVB-C
RS (204,188)
4
Convolutional Code
GSM
CC (31,33)
5
Convolutional Code
W-CDMA Forward link
CC (561,753)
6
Convolutional Code
W-CDMA Reverse link
CC (557,663,711)
Table II – Part I individual projects for each group
Assignment Group No.
Projects in Table 1 assigned to the group
Group 1
Projects 1, 6
Group 2
Projects 2, 6
Group 3
Projects 3, 6
Group 4
Projects 1,5
Group 5
Projects 2, 5
Group 6
Projects 3,5
Group 7
Projects 1,4,
Group 8
Projects 2,4
Group 9
Projects 3, 4
Note: Please note that the above grouping is ONLY refers to part I individual assignment and is NOT the grouping for Part II project. For part II project, each student needs to find
your own partners and form a separate group to do the part II group project.
Part II – Group Project:You need to find partners to form a group to do the part II group project. Each group chooses one of the projects from Table 3.
Table III – Part II Group project
Group Project No.
Code Category
Standard
Detail
Difficulty Indicator
1
Concatenated RS+CC
WiMAX
RS (204,188) + CC (171,133)
4
2
Turbo Code
W-CDMA LTE
(1,15/13)
5
3
LDPC Code
WiMAX
Code rate 1⁄2, codeword length 2304
5+

Normally, a group project with high difficulty indicator will lead to a higher mark (or bonus mark) if completed successfully. However, a completed project with a lower difficulty indicator will probably (but not necessarily) attract a higher mark than an uncompleted project with a high difficulty indicator.
Please note that if you choose the group projects with highest indicators such as turbo codes and LDPC codes (the most advanced FEC in modern communications systems), you will need to devote a significant amount of time and efforts in learning some additional material not covered in the lectures/tutorials.
2 When to Start
You should start to work on your project as early as possible. Please note that you should NOT wait until the relevant material has been covered in the lecture. Otherwise, you will not have enough to finish your project. You should reserve enough time for debugging and documentation. If you are not familiar with communication system simulation in MATLAB, you should spend some time to get yourself familiar before your project allocation is finalised, and attend the tutorials.
Note that for some projects you may need to learn ahead of the lecture schedule. Confining yourself within the lecture coverage will likely prevent you from successfully completing the project. Self-study and research ability are some of the assessment components in this Unit of Study.
3 Project Report
A report has to be included in the project submission, . The report should contain no more than 15
pages including references with 10pt font at minimum.
1) The group number and project number for your Part I and Part II project.
2) Your contributions to the group project;
Your Part I assignment report and your Part II project report, which generally should have the following sections.
3) Introduction: gives an overview of your project;
4) Theoretical background: describes the theories/principles/algorithms involved in
your project;
5) Calculation: answers the questions about the analytical performance calculations)
etc (if your project does not include any of such questions, you can skip this
section).
6) Design & Implementation: describes the design and implementation details of your
project coding system. This is the most important part of the report. It should
Each student needs to submit your own report.
including both part I and part II

7)
8) 9)
describe the ideas included in your design and implementation, the structure of your codes, key variables/data structures, flow charts of key codes/functions etc.
Analysis and comments: presents the details of the BER analysis and comments regarding the comparison of simulation and analytical results and suggestions for further work and improvement.
Conclusion: describes your views of the project, main achievements and difficulties, how the project met the requirements etc.
References: lists all the relevant references used in the project.
5 What to Hand In
By the due date, you need to hand in the following:
1) A cover sheet signed by each member of the group, indicating your contributions to the
project;
2) Program source code
3) Project report, including both Part I and Part II
4) A note about how your program could be run: the platform (MATLAB version number),
how to launch each program, the parameters to be set, if applicable, etc.
You need to submit them by email to Tutor by 6pm on 24th May 2020.
6 Interview for each student
In week 12 and 13, each student is required to attend an interview.
7 Important Dates
 Project Groups 5 April 2020
 Project Submissions 24 May 2020
 Interview: 19 May (Week 12) and 26 May (Week 13) 2020
8 Marking (Total mark of 90)
 Part I report + Interview: 50 marks
 Part II report: 30 marks
 Group Mark 10 marks for Part II (each group member will give a mark to
each other member, which shows the participation percentage in the project.

9 Programming Language and Platform
In this project, you need to write program(s) in MATLAB to simulate the performance of some forward error correcting (FEC) coding scheme. A familiarity with MATLAB programming is necessary. The Communications Toolbox provides off-the-shelf standard modules in communication systems, which includes random source, FEC encoders/decoders (CODECs), channels, modulations, etc. Since one of the purposes of this project is to let you develop and implement your own encoders and decoders, you are allowed to use all modules EXCEPT those in the ‘Galois Field Computation’ category, ‘Error Control Coding’ category and the ‘Low-Level Functions for Error Control Coding’ category. If you do use some of these functions, data structures or utilities, your mark will be reduced accordingly.
If you are not familiar with MATLAB there is a tutorial on MathWorks’ website, http://www.mathworks.com/academia/student_center/tutorials/launchpad.html, which could help you develop the necessary skills in MATLAB programming. No other languages but MATLAB are allowed to be used in this project. MATLAB is a widely used high-level language and interactive environment in engineering simulation and modelling. With its abundant functions, modules and toolboxes, you can develop your simulation systems in a quicker and more efficient way than with traditional programming language such as C/C++. Being proficient in MATLAB will be a great advantage for your future career.
10 About Plagiarism
On the Internet or from other resources, you might obtain documentations or program codes, which are the same or can be modified to be used in your project. A direct copy from these codes/resources is strictly prohibited. However, learning from reading others’ designs/codes is not a bad thing. Please include a reference list in your report/document in that case. When you hand in your completed project, a detailed report/document has to accompany the program codes. This document needs to describe the ideas included in your design and implementation, the structure of your codes, key variables/data structures, flow- charts of key codes/functions. If there is any suspect of plagiarism, your group will need to attend an interview with the lecturer. If the plagiarism is confirmed your group will get a zero mark for the project and further heavy penalty might be imposed. Please refer to the University policy on plagiarism http://www.usyd.edu.au/senate/policies/Plagiarism.pdf
11 Tips
1) Programming representation of codewords
A codeword can be represented by an n-tuple v  (v0,v1,…vn1) or a code polynomial
v(X)v0 v1X …vn1Xn1 wherevi, i0,1,…,n1 are binary digits. In a Matlab
program he above two representations may not be convenient and efficient. For a compact representation we can convert the binary sequence v  (v0,v1,…vn1) into ONE decimal
number. Thus the above codeword can be represented as

v(2)v0 v12…,vn12n1
in which all operations are in the real number field. Thus a codeword (100111) can be
represented as a decimal number 57. Note that the rightmost digit vn1 in the codeword is the most significant bit (MSB). Alternatively, you can use the leftmost digit v0 as the MSB,
as long as you do it consistently and indicate in the report which convention you use.
The MATLAB functions ‘de2bi’ and ‘bi2de’ are convenient ools to convert between binary sequences and decimal numbers.
2) The digit order in a codeword
In the lecture notes, we relate a codeword vector v(v0,v1,…vn1) with the code
polynomial v(X)v0 v1X …vn1Xn1 . However, MATLAB uses a slightly different notation, where the codeword bits are reversed. That is, the above codeword is
expressed as v  (vn1,vn2 ,…v0 ) . The same applies to a message sequence. For a message polynomial c(X)c0 c1X …vk1Xk1 the vector representation in MATLAB is c(ck1,ck2,…c0). You should be consistent if you wish to mix your own codes with
MATLAB functions such as ’bchenc’, ’bchdec’, etc.
3) Conversion between GF( 2m ) arrays and real arrays
In MATLAB messages and codewords are represented as Galois arrays of symbols in GF ( 2m ) . Assuming that you have a GF( 2m ) array ga and a real array ra, you can convert one into another as follows
ga=gf(ra) and ra=double(ga.x). 12 Project Descriptions
Part I – Individual Project
Part I project 1: BCH Code in International Telecommunications Satellite
Organisation (INTELSAT) System
Standard: INTELSAT TDMA/DSI
The International Telecommunications Satellite Organisation (INTELSAT) has a leading position in commercial satellite communications. In the INTELSAT time-division multiple access with digital speech interpolation (TDMA/DSI) system, the TDMA data bursts of 120 Mbit/sec are protected by a (128,112) modified BCH code.
This (128,112) code is a modification from the primitive (127,113) BCH code.
Instead of being distracted by the troublesome details of the modification, in this project, we only consider the primitive (127,113) BCH code.

1) Derive the generator polynomial g( X ) of the primitive (127,113) BCH code.
2) What is the error correcting capability t ? If the code is used in a binary symmetric
channel (BSC) with the transition probability p  1 , estimate the bit error
probability (BER).
3) Assuming that d is the code minimum Hamming distance and the channel is a
binary symmetric channel (BSC) with the transition probability p  1, estimate
the probability of undetected errors.
4) Design the encoder and decoder for this code and implement them in MATLAB.
5) Assuming that QPSK is used as the modulation scheme, simulate the coding system
in a BSC channel. Plot the BER versus p curve. Please note that you need to choose the appropriate values of p , such that the BERs at least cover the range from 105 to 101 . Plot the undetected error probability with the same range of p
values. Compare the simulation results with your estimation produced in 2) and 3)
and comment on the accuracy of your estimations and justify.
6) Simulate the coding system in an additive white Gaussian noise (AWGN) channel
and plot the BER versus signal-to-noise ratio (SNR) curves. Please choose the appropriate SNR values such that the corresponding BERs at least cover the range from 105 to 101 .
7) From the simulation results estimate the coding gain of the simulated code at the BER of 105 and compare it with the asymptotic coding gain.
8) How could you improve the coding gain and what would be the complexity implications?
Part I project 2 – BCH Code in International Maritime Satellite Organisation (INMARSAT) System
Standard: INMARSAT
INMARSAT was originally founded as a not-for-profit international organisation in 1979, at the behest of the International Maritime Organisation for the purpose of establishing a satellite communications network for the maritime community. Later on, it began to provide services to aircraft and portable users worldwide.
The INMARSAT system used a (63,39) BCH code in the assignment/request channel for request messages. In this project, you will investigate, implement and simulate the (63,39) BCH code.
1) Derive the generator polynomial g( X ) of the primitive (63,39) BCH code.
2) What is the error correcting capability t ? If the code is used in a binary symmetric
channel (BSC) with transition probability p  1, estimate the bit error probability (BER).

3) Assuming that d is the code minimum Hamming distance and the channel is a binary symmetric channel (BSC) with transition probability p  1, estimate the
probability of undetected error.
4) Design the encoder and decoder for this code and implement them in MATLAB.
5) Assuming that QPSK is used as the modulation scheme, simulate the coding system
in a BSC channel. Plot the BER versus p curve. Please note that you need to choose the appropriate values of p , such that the BERs at least cover the range from 105 to 101 . Plot the undetected error probability with the same range of p
values. Compare the simulation results with your estimation produced in 2) and 3)
and comment on the accuracy of your estimations and justify.
6) Simulate the coding system in an additive white Gaussian noise (AWGN) channel
and plot the BER versus signal-to-noise ratio (SNR) curves. Please choose appropriate SNR values such that the corresponding BERs cover at least the range from 105 to 101 .
7) From the simulation results estimate the coding gain of the simulated code at the BER of 105 and compare it with the asymptotic coding gain.
8) How could you improve the coding gain and what would be the complexity implications?
Part I project 3- Reed-Solomon Code in Digital Video Broadcasting – Cable Systems (DVB-C)
Standard:
EN 300 429 V1.2.1 (1998-04), Digital Video Broadcasting (DVB); Frame structure, channel coding and modulation for cable systems.
Digital television (DTV) is a modern broadcasting technology by means of digital signals instead of analog signals used by traditional analog TV. DTV can provide people with movie-quality picture and sound, multiple programming choices and interactive capabilities.
Digital Video Broadcasting (DVB) is a suite of internationally accepted open standards for DTV, which have been chosen for use in Australia.
The family of DVB standards covers broadcasting services through satellite (DVB-S, DVB-S2), cable (DVB-C), terrestrial (DVB-T) and handheld (DVB-H), etc.
In this project, we only consider the DVB-C standard.
The DVB-C standard adopted a (204,188) Reed-Solomon (RS) code as the forward error correcting (FEC) code. The (204,188) RS code is shortened from the (255,239) RS code. The code generator polynomial of the code is

g(X)(X 0)(X 1)(X 2)(X 15)
where  is the primitive element in GF(28). The primitive polynomial used to construct GF(28) is
p(X)X8 X4 X3 X2 1.
1) What is the error correcting capability t and minimum distance d of the (204,188) RS code? Assuming that a binary symmetric channel (BSC) with transition probability p is used, estimate the probability of erroneous decoded message block (one message block contains 204 coded bytes) at the output of the RS decoder.
2) Design and implement the encoder and decoder of the (204,188) RS code in MATLAB.
3) Simulate the coding system in a binary symmetric channel (BSC). Plot the message error probability versus channel transition probability (p) curve. Compare the simulation results with the estimates you get in 1). Plot the bit error probability (BER) versus channel transition probability (p) curve. Note that you need to choose appropriate values of p, such that the resultant BERs at least cover the range from 105 to101.
4) DVB-C uses quadrature amplitude modulation (QAM) as the modulation format. Assuming that QPSK with Gray mapping is used, simulate the coding system in an AWGN environment. Plot the BER versus signal-to-noise ratio (SNR) curve. Note that you need to choose appropriate values of SNRs, such that the resultant BERs at least cover the range from 105 to 101 .
5) From the simulation results estimate the coding gain of the simulated code at the BER of 105 and compare it with the asymptotic coding gain.
6) How could you improve the coding gain and what would be the complexity implications?
Part I project 4 – Convolutional Code in Global System for Mobile Communications (GSM)
Standard: GSM and DCS1800 Technical Specifications
Global System for Mobile Communications (GSM) is the 2G standard for mobile phones.
In the TCH/FS transmission mode, a rate-1/2 convolutional code is used. The generator polynomials for this convolutional code are
g (D)1DD4 0
g(D)1DD3 D4 1
1) Draw the trellis diagram of this code.

2) Find the minimum free distance d free and the total number of nonzero information bits on all weight- d free paths Bd free of this code from the trellis.
3) Based on d free and Bd free obtained in 2), estimate the bit error probability (BER) of
the coding system on a binary symmetric channel (BSC) with the transition
probability p.
4) Repeat 3) in an additive white Gaussian noise (AWGN) channel with signal-to-
noise ratio (SNR) Eb / N0 for hard decision decoding and soft decision decoding,
respectively.
5) Simulate the coding system in an AWGN channel with hard-decision decoding.
Plot the BER versus SNR curves. Note that you need to choose appropriate values of SNRs, such that the resultant BERs at least cover the range from 105 to 101 . Compare the simulation results with your estimates in 4.
6) From the simulation results estimate the hard decision coding gains of the simulated code at the BER of 105 and compare them with the respective asymptotic coding gains.
Part I projects 5 and 6 – Convolutional Codes in CDMA 2000 and W-CDMA
Standards:
ETSI TS 125 222 V7.1.0 (2006-09) / 3GPP TS 25.222 version 7.1.0 Release 7.
Wideband-CDMA (W-CDMA) and IS-2000(CDMA2000) are is the air interfaces for Universal Mobile Telecommunications Systems (UMTS), the 3G cellular mobile phone standards.
Both W-CDMA and CDMA2000 adopted a rate-1/2 convolutional code for the forward link and a rate-1/3 convolutional code for the reverse link.
The rate-1/2 convolutional code has generator polynomials
g (D)1D2 D3 D4 D8 0
g (D)1DD2 D3 D5 D7 D8 1
The rate-1/3 convolutional code has generator polynomials
g (D)1D2 D3 D5 D6 D7 D8 0
g (D)1DD3 D4 D7 D8 1
g (D)1DD2 D5 D8 2
1) The transfer function of the rate-1/2 code has been found in the literature as A(X)11X12 50X14 286X16 
Group 5 does the forward link
Group 6 does the reverse link.

A(W,X) W
Estimate the bit error probability (BER) of the coding system in a binary symmetric channel (BSC) and an additive white Gaussian noise (AWGN) channel.
2) The transfer function of the rate-1/3 code has been found in the literature as A(X)5X18 7X20 36X22 
A(W,X) W
Estimate the bit error probability (BER) of the coding system in a binary symmetric
channel (BSC) and an additive white Gaussian noise (AWGN) channel.
3) Simulate the coding system in MATLAB in an AWGN channel with hard-decision decoding. Plot the BER versus SNR curves. Note that you need to choose appropriate values of SNRs, such that the resultant BERs at least cover the range
from 105 to 101 . Compare the simulation results with your estimates in 1.
4) From the simulation results estimate the hard decision coding gains of the simulated code at the BER of 105 and compare them with the respective asymptotic coding
gains.
=========================================================
Part II – Group Projects
Part II project 1: Concatenated Reed-Solomon Code and Convolutional Code in IEEE 802.16 (WiMAX)
Worldwide Interoperability for Microwave Access (WiMAX) is the standard for wireless metropolitan area networks. It is a technology enabling the delivery of last mile wireless broadband access as an alternative to cable and DSL.
The WiMAX physical layer adopted a concatenated Reed-Solomon (RS) code and convolutional code as the FEC for both uplink and downlink as shown in Figure 1.
33X12 281X14 2179X16  W1
11X18 32X20 195X22  W1

Data source
RS (255, 239)
Byte Inter- leaver
Rate- 1/2 CC
Modu lator
Figure 1 Block diagram of the concatenated FEC in WirelessMAN SCa PHY
The outer code is a (255,239) RS code with a generator polynomial g(X)(X 0)(X 1)(X 2)(X 15)
where  is the primitive element in GF(28). The primitive polynomial used to construct GF(28) is
p(X)X8 X4 X3 X2 1.
The output from the RS encoder is fed into a block interleaver, which is basically an NR by 255 matrix, each entry containing one byte. The matrix is written one byte at a time row- wise and read one byte at a time column-wise. The parameter NR is the interleaver depth, which is negotiated between the base station (BS) and the subscriber station (SS).
The rate-1/2 convolutional code is the most commonly used one with constraint length of 7. It has generator polynomials
g (D)1DD2 D3 D6 0
g(D)1D2 D3 D5 D6 1
1) What is the error correcting capability t and minimum distance d of the (255,239) RS code? Assuming that a binary symmetric channel (BSC) with transition probability p is used, estimate the probability of erroneous decoded message block (one message block contains 255 coded bytes) at the output of the RS decoder.
2) Design and implement the encoder and decoder for the outer code in MATLAB.
3) Simulate the outer code in a binary symmetric channel (BSC) with the transition probability of p. Plot the message error probability and bit error probability (BER) versus channel transition probability (p) curve. Note that you need to choose appropriate values of p, such that the resultant BERs at least cover the range from
105 to 101 . Compare the simulation results with the calculation results from 1).
4) Design and implement the encoder and decoder (both hard and soft decision) for
the inner code in MATLAB.
5) Simulate the inner code in a BSC channel. Plot the bit error probability (BER)
versus the channel transition probability (p) curve. Note that you need to choose appropriate values of p, such that the resultant BERs at least cover the range from 105 to101.
6) Assuming BPSK is used as the modulation format, simulate the inner code in an additive white Gaussian noise (AWGN) channel. Plot the bit error probability (BER) versus signal-to-noise ratio (SNR) Eb /N0 curve. Note that you need to choose

appropriate values of Eb / N0 , such that the resultant BERs at least cover the range
from 105 to 101 .
7) Assuming BPSK is used as the modulation format, simulate the concatenated
coding system including outer code, interleaver and inner code in an additive white Gaussian noise (AWGN) channel. Plot the bit error probability (BER) versus signal-to-noise ratio (SNR) Eb /N0 curve. Note that you need to choose
appropriate values of Eb / N0 , such that the resultant BERs at least cover the range from 105 to 101 . Compare the results with 6) and comment.

Part II project 2: Turbo Code in 3G W-CDMA and 4G LTE Mobile Phone
Standards
The Universal Mobile Telecommunications Systems (UMTS) W-CDMA and 3GPP Long Term Evolution (LTE) are the 3G and 4G cellular mobile communication standards, respectively. Both standards contain a convolutional code and a turbo code as the forward error correcting (FEC) codes for different transport channels. In this project, we consider the turbo code.
The turbo code in W-CDMA and LTE is a parallel concatenated convolutional code (PCCC) with two identical 8-state recursive systematic convolutional (RSC) constituent encoders and one turbo code internal interleaver. The coding rate of the turbo code is 1/3. The generator polynomials for the constituent RSC encoders are
feedback: g (D)1D2 D3 0
feedforward: g (D)1DD3 1
The message block length K can vary between 40 and 5114 information bits. Both RSCs are reset to the all-zero state when starting to encode a block and terminated to the all-zero state by adding 3 tail bits for each encoder. The tail bits from both encoders are transmitted along with the codeword bits.
The internal interleaver is a block-type interleaver, which uses padding, intra-row and inter-row permutations, and pruning techniques. To avoid being distracted by tedious implementation intricate interleaver details, a simple random interleaver is used in this project. In other words, a uniformly distributed random permutation is used for each frame.
1) Draw the trellis diagram of the constituent RSC code.
2) Find the minimum free distance d free and the total number of nonzero information
bits on all weight- d free paths Bd free of this code from the trellis.
3) Based on d free and Bd free obtained in 2), estimate the bit error probability (BER) of
the coding system on an additive white Gaussian noise (AWGN) channel with signal-to-noise ratio (SNR) Eb / N 0 for soft decision decoding and BPSK
modulation.
4) Design the encoder and Log-MAP decoder of the RSC code and implement them in
MATLAB.
5) Simulate the RSC encoder and decoder system in an AWGN channel with BPSK
modulation. Plot the BER versus SNR curves. Note that you need to choose appropriate values of SNRs, such that the resultant BERs at least cover the range from 105 to 101 . Compare the simulation results with your estimates in 3).
6) Design and implement the turbo encoder and decoder in MATLAB.
7) Assuming BPSK is used as the modulation format, simulate the turbo coding system in an additive white Gaussian noise (AWGN) channel with a message block length K=1024 and 4096, respectively. Compare the simulation results and
comment.

8) Repeat 7) with K=4096 replacing the random interleaver with a block interleaver of size 64 by 64, and compare the results and comment.
9) Repeat 7) with K=4096 in Rayleigh fading channel.

Part II project 3: Low Density Parity Check Metropolitan Wireless Networks IEEE 802.16 (WiMAX)
Standard: IEEE Std 802.16-2004 / IEEE Std 802.16e-2005
Worldwide Interoperability for Microwave Access (WiMAX) is the wireless metropolitan area network standard. It is a technology enabling the delivery of last mile wireless broadband access as an alternative to cable and DSL.
The WiMAX OFDMA Physical layer applies a low density parity check (LDPC) code as one of the FEC options for both uplink and downlink.
The LDPC code in WiMAX is based on a set of fundamental LDPC codes. Each fundamental code is a systematic linear block code. By modifying their code rate and block length, the fundamental codes can accommodate various code rates and packet sizes.
In this project, we only consider one fundamental LDPC code used in WiMAX. The code rate is 1⁄2, and the codeword length is n=2304 bits, and hence the information bit length is k=1152. The parity check matrix of this code is an (n-k) by n matrix H. It is defined through an (nb-kb) by nb base model matrix Hbm, where nb=24, kb=12.
The base matrix is given by:

The base model matrix is expanded to the parity check matrix as follows. The expansion factor z=n/nb=2304/24=96. Each element in Hbm is replaced by a z by z submatrix. An element of –1 is replaced by a z by z zero matrix. An element of 0 is replaced by a z by z identify matrix. An element of p (p>0) is replaced by a z by z identity matrix circularly right shifted p times.
1) Construct the parity check matrix of the LDPC code. Is it a regular or irregular LDPC code?
2) Design and implement the LDPC encoder and decoder (Sum-Product Algorithm) in MATLAB.
3) Simulate the LDPC coding system in an additive white Gaussian noise (AWGN) channel with BPSK modulation. Plot the bit error probability (BER) versus signal-to-noise ratio (SNR) Eb /N0 curve. Note that you need to
choose appropriate values of SNRs such that the resultant BERs cover the range from 105 to 101 . Compare your results with uncoded BPSK and the channel capacity, and comment.
4) Repeat 3) in a Rayleigh fading channel.