1. Introduction
Quasi-cyclic Low Density Parity Check codes are amongst the most advanced and high performance Forward Error Correcting (FEC) codes, which were considered in structure of globally standardised transmission systems. The parity check matrix of a basic binary QC-LDPC code is formed by combination of number of binary circulant matrices, whose constituent elements are either 1 or 0. This is generally expressed by H=[H1 H2 H3 … Ht], where H1,H2,H3,…,Ht are t different ?? × ?? circulants. In circulant matrices, every row (or column) of the matrix is the cyclic shift (either left or right shift) of its previous row (or column).Based on the above definition, the generator matrix of the systematic QC-LDPC codes is given by
(?? ?? )
? ?
?? = ? ?? ( ) (?? ?? ) ?
? ? ?
? (?? ?? ) ?
Where Ic(t-1) is ?? × (?? - 1) Identity matrix and (A)T denotes transpose of A .
This concludes codes with rate ((t-1)*c)/(t*c) or (t-1)/t . Indeed, number of circulant s is decided on the basis of the rate of code. Note that in the above H, at least one of constituent circulants would be a full rank matrix to apply its inversion in construction of G.
2. Basic structure of a QC-LDPC encoding/decoding
In this section, we investigate performance of (117,78) QC-LDPC code with rate 2/3. Position of 1s of each 39× 39 circulant is given in Table 1.
Table 1. Positions of 1s in circulants applied in (117,78) QC-LDPC code.
H1 H2 H3
Positions of 1s 1,2,4 1,5,10 1,7,14
a) Generate 10 (ten) random bitstreams of length 78 as the message for the encoder of (117 ,78) QC-LDPC code.
b) Determine codewords obtained from messages generated in part (a).
c) Modulate codewords formed from part (b) by BPSK and transmit them through the AWGN channel having zero mean and variance 1.
d) The noisy information obtained from part (c) are passed through the two-level quantizer and entered to the QC-LDPC decoder. Figure 1 shows a block diagram of the encoding and decoding of FEC codes, which can also be applied for the mentioned QC-LDPC code. In this figure, ?? = 2?? , where R is the code
rate and Eb/N0 is the energy per bit per bit. For Eb/N0=4.0 dB, apply the bit-flipping algorithm and decode the noisy codewords generated in part (c). Express the decoded messages and compare them with the original ones. Note that in ? calculation, Eb/N0 is not a dB value.
Figure 1. Block diagram of FEC encoding/Decoding.
3. Analysis of a QC-LDPC code
In this section, we extend results of Section 2 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 Eb /N0s. 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 Eb/N0s.
Note:
a) Use “randn” command of Matlab for generation of noise.
b) In Matlab, BER is calculated by “biterr” command.
c) In order to achieve inverse of a binary matrix, use “B_inv_bin=inv(gf (B))”, where B is a binary matrix and “B_inv_bin” is the inverse of B. The output of this matrix is in binary mode. In order to convert it to the general mode (decimal mode), use “B_inv=double(B_inv_bin.x)” command, where “B_inv” is the inverse of binary matrix “B” represented in decimal mode.
d) In Table 2, number of simulations written for each Eb/N0 is an estimated value for obtaining a smooth graph. If necessary, you can increase number of Eb/N0s and number of simulations (for each value of Eb/N0) to achieve a smooth of BER graph.
e) In your report provide aims and conclusion of conducted project.
Table 2.
Number of simulations (dB) BER
100 3.0
100 3.5
1000 3.75
1000 4.0
100000 4.25
10000 4.5
10000 4.75
100000 5.0
100000 5.25
100000 5.5
100000 5.75
GET ANSWERS / LIVE CHAT