• Tidak ada hasil yang ditemukan

Fungsi pada Model Sistem

Dalam dokumen ANALISIS KINERJA KODE BCH (Halaman 77-85)

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.

Dalam dokumen ANALISIS KINERJA KODE BCH (Halaman 77-85)

Dokumen terkait