BAB IV Simulasi Kode BCH
4.1 Fungsi pada Model Sistem
Pada tugas akhir ini, akan dibahas mengenai analisis kinerja dari kode BCH dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0. Kanal yang digunakan pada tugas akhir ini adalah menggunakan kanal AWGN (Additive White Gaussian Noise) pada model sistem Shannon. Modulasi digital yang digunakan pada tugas akhir ini adalah menggunakan modulasi BPSK (Binary Phase Shift Keying).
Simulasi dilakukan dengan menggunakan sebuah program yang dirancang dengan menggunakan bahasa pemrograman Microsoft Visual Basic 6.0, yaitu dengan merancang beberapa fungsi untuk membentuk suatu model sistem. Berikut dirincikan fungsi-fungsi yang digunakan pada proses simulasi tersebut.
4.1.1 Fungsi Pembangkitan Pesan
Proses simulasi pada tugas akhir ini menggunakan pesan input yang terdiri dari deretan perulangan bit 0 dan 1 yang dibangkitkan secara acak dengan menggunakan sebuah fungsi pembangkitan pesan. Fungsi ini memiliki algoritma seperti berikut:
Fungsi CreateMessage(pnBitLen) For nF = 1 To pnBitLen Step 8
cTemp cTemp + FDec2Biner(Int(Rnd * 100) + 50, 8)
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
4.1.2 Fungsi Encoder
Bit pesan input akan dilewatkan ke sebuah metode pengkodean untuk menambahkan bit-bit tambahan yang dapat digunakan untuk pendeteksian dan pengoreksian apabila terjadi error pada saat transmisi. Pada tugas akhir ini, digunakan metode Kode BCH yang dirancang dalam bentuk fungsi.
Fungsi ini digunakan untuk melakukan proses encoding pada metode BCH Code. Proses encoding ini mencakup proses pengubahan pesan ke bentuk biner dan proses perhitungan checkbit dari pesan. Algoritma dari fungsi ini dapat dirincikan sebagai berikut:
Panggil algoritma pembentukan tabel Galois Field GF(5)
Panggil algoritma penentuan minimal polinomial sebanyak 5 buah cGen TMin_Poly_B(1)
Untuk nI 2 sampai Indeks Tertinggi dari TMin_Poly_B cGen cGen * TMin_Poly_B(nI)
nJ = 0
Untuk nI 1 sampai Panjang karakter dari cInput dengan lompatan 16
nJ = nJ + 1
cPesan(nJ) Ambil 16 buah karakter pada cInput mulai dari posisi nI
Jika Panjang(cPesan(nJ)) < 16 maka
cPesan(nJ) cPesan(nJ) + Tambahkan [16 – Panjang karakter dari cPesan(nJ)] buah karakter "0"
Jika [terdapat error pada saat transmisi data] maka Untuk nJ 1 sampai Indeks Tertinggi dari cPesan
nJlh Ambil nilai acak antara 1 sampai 3 cPos ""
Untuk nI 1 sampai nJlh Lakukan proses berikut,
nPos Ambil posisi acak antara 0 sampai
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
Hingga nPos tidak terdapat dalam cPos cPos cPos + "," + nPos
Untuk nI 1 sampai Panjang karakter dari cPesan(nJ) Jika nI terdapat dalam cPos maka
cPesanT(nJ) cPesanT(nJ) + Not(Ambil
sebuah
karakter pada posisi nI dari cPesan(nJ))
Jika tidak, maka
cPesanT(nJ) cPesanT(nJ) + Ambil sebuah karakter pada posisi nI dari cPesan(nJ)
Untuk nI 1 sampai Panjang karakter dari cCheck(nJ) Jika nI + 16 termasuk dalam cPos maka
cCheckT(nJ) cCheckT(nJ) + Not(Ambil
sebuah
karakter pada posisi nI dari cPesan(nJ))
Jika tidak, maka
cCheckT(nJ) cCheckT(nJ) + Ambil sebuah karakter pada posisi nI dari cCheckT(nJ)
Jika tidak, maka
Untuk nJ 1 sampai Indeks Tertinggi dari cPesan cPesanT(nJ) cPesan(nJ)
cCheckT(nJ) cCheck(nJ)
4.1.3 Fungsi Modulator
Modulator yang digunakan untuk simulasi pada model sistem adalah BPSK (Binary Phase Shift Keying). Pemodelan modulator pada tugas akhir ini akan menggunakan sebuah fungsi yang memiliki algoritma sebagai berikut:
Fungsi FBPSKMod(pcIStream, pnFc, pnFb, pnPowerbit) nScale pnFc / pnFb
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
Untuk nI = 1 sampai Panjang(pcIStream)
nSignBit 2 * Mid(pcIStream, nI, 1) - 1 nK 0
Untuk nJ = ((nI - 1) * nScale + 1) sampai (nI * nScale)
nOStream(nJ) nSignBit * pnPowerbit * Cos(2 * pi *
pnFc
* Linspace(0, 1 / pnFb, nScale, nK)) cTemp cTemp + IIf(cTemp = "", "", ",") + nOStream(nJ)
nK nK + 1
FBPSKMod cTemp
4.1.4 Fungsi Pembangkitan Kesalahan Bit
Proses simulasi pada tugas akhir ini menggunakan metode Box Muller untuk menambahkan AWGN (Additive White Gaussian Noise) pada bit pesan yang dikirimkan. Metode Box Muller ini akan dimodelkan dengan menggunakan sebuah fungsi yang memiliki algoritma sebagai berikut:
Fungsi FBoxMuller(pnNo) Randomize Timer
nAngka 2 * pi * IIf(Int(Rnd * 100) Mod 2 = 0, 1, -1) * Round(Rnd * pnNo, 4)
Do
nAkar Sqr(2 * Abs(Log(Round(Rnd * pnNo, 4)))) * IIf(Int(Rnd * 100) Mod 2 = 0, 1, -1) Loop Until Not Error
nX nAkar * Cos(nAngka) nY nAkar * Sin(nAngka)
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
4.1.5 Fungsi Demodulator
Sinyal analog yang dimodulasikan oleh modulator harus dikonversi kembali menjadi bentuk sinyal digital agar dapat dibaca oleh penerima pesan. Proses simulasi pada tugas akhir ini menggunakan sebuah fungsi untuk memodelkan demodulator. Fungsi ini memiliki algoritma sebagai berikut:
Function FBPSKDemod(pcIStream, pnFc, pnFb, pnPowerbit) nScale pnFc / pnFb
cArrIStream Split(pcIStream, ",")
nCount (UBound(cArrIStream) + 1) / nScale Untuk nI = 0 sampai UBound(cArrIStream) nArrIStream(nI + 1) cArrIStream(nI)
Untuk nI = 1 sampai nCount nTotal 0
Untuk nJ = 1 sampai nScale
nArrVal(nJ) nArrIStream((nI - 1) * nScale + nJ) * Cos(2 * pi * pnFc * (nJ / pnFb)) nTotal nTotal + nArrVal(nJ)
nBit Int((Sign(nTotal) + 1) / 2) cOutput cOutput + nBit
FBPSKDemod cOutput
4.1.6 Fungsi Decoding
Hasil demodulator sinyal analog yang melalui kanal AWGN yang dimodelkan dengan menggunakan metode Box Muller ini akan memunculkan error pada bit pesan. Untuk itu, diperlukan proses pendeteksian dan pengoreksian error dengan menggunakan kode BCH yang akan dimodelkan dalam bentuk fungsi.
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
Fungsi decoding ini mencakup proses pengecekan error pada saat transmisi data dan proses pengoreksian error apabila terdapat error pada saat transmisi data. Algoritma dari fungsi ini dapat dirincikan sebagai berikut:
Untuk nI 1 sampai Indeks Tertinggi dari cPesanT pcInfoBit cPesanT(nI)
pcCheckBit cCheckT(nI)
cMod GF_Mod(pcInfoBit + pcCheckBit, cGen))
Jika cMod = "0" maka
bVerify bVerify And True Jika tidak, maka
bVerify bVerify And False Jika bVerify maka
Tampilkan pesan "Tidak terdapat error dalam Code Word !" Proses selesai
Jika tidak, maka
Tampilkan pesan "Terdapat error dalam Code Word !"
Panggil algoritma penentuan minimal polinomial sebanyak 6 buah Untuk nH 1 sampai 2 * pnT
cBitMinPoly(nH) Ubah Min_Poly(nH) ke bentuk biner cSindrome(nH) GF_Mod(pcInfoBit + pcCheckBit, cBitMinPoly(nH)))
Untuk nB 1 sampai 2 * pnT
nMax Panjang karakter dari cSindrome(nB)
cSindromeA(nB) -1
Untuk nH 1 sampai [Panjang karakter dari cSindrome(nB)] - 1 cBit Ambil sebuah karakter pada posisi nH dari
cSindrome(nB)
Jika cBit = "1" maka
nPangkat nB * (nMax - nH) Selama nPangkat > 2 ^ pnM - 1
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
cSindromeA(nB) ArrTF(cSindromeA(nB) + 1) + ArrTF(nPangkat + 1))) - 1
Jika karakter di sebelah kanan dari cSindrome(nB) = "1" maka
cSindromeA(nB) ArrTF(cSindromeA(nB) + 1) + ArrTF(1) - 1 Panggil algoritma fungsi Berlekamp
GF_Mod cSisa
4.1.7 Fungsi Berlekamp
Algoritma ini digunakan untuk menghitung nilai output dari fungsi Berlekamp yang berfungsi untuk membentuk tabel BCH. Prosedur kerja dari algoritma ini dapat dirincikan sebagai berikut:
Function Berlekamp() nQ(0, 0) 1 nQ(1, 0) 1 nL(0) 0 nL(1) 0 nD(0) 1 nD(1) cSindromeA(1) nKolT(0) -1 nKolT(1) 0 Untuk nN = 0 sampai pnT - 1 Jika nD(nN + 1) = 0 maka nQ(nN + 2, 0) nQ(nN + 1, 0) nQ(nN + 2, 1) nQ(nN + 1, 1) nQ(nN + 2, 2) nQ(nN + 1, 2) nQ(nN + 2, 3) nQ(nN + 1, 3) nLBesar nL(nN + 2)
Jika tidak, maka
nM Cari nilai M yang memenuhi ketentuan Jika nD(nM) > 1 maka
Edy Susanto : Analisis Kinerja Kode BCH, 2010.
Jika tidak, jika nD(nM) = 1 maka nKoef nD(nN + 1)
Jika tidak, maka nKoef 0
Selama nKoef < 0, lakukan proses berikut nKoef nKoef + (2 ^ pnM - 1)
Jika nM > 0 maka
nPangkat 2 * (nN - (nM - 1)) Jika tidak, maka
nPangkat 1
nDHasil(1, nPangkat) nKoef
Jika nN = pnT - 1 maka Keluar dari looping
Untuk nI = 3 sampai 0
Jika nQ(nN + 2, nI) > 0 maka nL(nN + 2) nI
Keluar dari looping
nD(nN + 2) cSindromeA(2 * nN + 3) Untuk nI = 1 sampai nL(nN + 2) nD(nN + 2) ArrTF(nD(nN + 2) + 1) + (ArrTF(cSindromeA(2 * nN + 3 - nI) + nQ(nN + 2, nI) + 1) - 1 nKolT(nN + 2) 2 * (nN + 1) - nL(nN + 2) cHasil "" Untuk nI = 3 sampai 0
Jika nQ(3, nI) > 0 maka
cHasil cHasil + " + a^" + nQ(3, nI) + "*x^" + nI
Edy Susanto : Analisis Kinerja Kode BCH, 2010.