| Step 1: input parameters |
| N, k, L, data serial, data serial to parallel, d1, d2, d3, d4. |
| Step 2: conversion of data from serial to parallel |
| Converting serial data of length “N” to parallel data having “l” blocks of length “k” each such that sum (k) for i = 0 to l-1 is N |
| Step 3: generation of the codeword |
| Inserting a convolutional encoder for each data block which converts data block of length “k” to a codeword of length, i.e., rate = 2/3 |
| Step 4: generation of trellis code polynomial |
| Define the generator polynomial |
| Initialize the codeword, next state, and previous state matrices |
| Generate the code from each parallel encoder |
| Calculate the number of constellation points using the number of bits per symbol |
| Store the value of the symbol that needs to be transmitted in N |
| Apply the random interleaver for removing the burst errors |
| Step 5: apply modulation of the Type-64 QAM |
| Step 6: defining the simulation parameters |
| Total energy of the codeword, |
| Calculate the number of information bits = number of symbols |
| Calculate the number of coded bits = number of symbols |
| While () |
| Step 7: initialize the counters to store |
| Number of errors = error counts |
| Number of frame = frame count |
| Number of bits = bit count |
| Step 8: calculate SNR |
| |
| |
| While (error counts < 1000 and frame count ≤ 100) |
| Step 9: compute energy per bit |
| |
| Step 10: compute noise variance |
| |
| Step 11: apply the input bits |
| Input bits = round (rand (1 )) |
| Step 12: covert number of bits to symbols |
| Symbols = bits to the symbol (n, number of symbols, input bits) |
| Step 13: apply convolution encoding |
| Generate the transmitted Signal |
| Step 14: calculate the received signal |
| |
| Step 15: apply the demodulation |
| |
| Step 16: apply Viterbi decoding using the hard decision |
| |
| |
| |
| |
| |
| End |
| Step 17: calculate bit error rate |
| End |