BAB II DASAR TEORI
2.1.
Turbo Coding Turbo Coding merupakan salah satu channel coding yang memiliki kinerja yang baik dalam mengoreksi galat pada sistem komunikasi. Turbo coding terbagi menjadi dua bagian yaitu penyandi dan pengawasandi. Penyandi Turbo memanfaatkan dua komponen kode yang dihubungkan secara paralel dengan interleaver. Pengawasandi Turbo menggunakan dua komponen Maximum A-Posteriori Algoritma (MAP) yang dihubungkan secara paralel dengan interleaver dan deinterleaver. Gambar 2.1 menunjukkan diagram kotak Turbo Coding secara umum. Informasi
Modulasi
Penyandi
dikirim Kanal
Informasi
Demodulasi
Pengawasandi
diterima
Gambar 2.1. Diagram Kotak Turbo Coding. Pertama-tama informasi (data) bit dikirim ke penyandi. Pada penyandi, data tersebut akan ditambahkan dengan bit-bit redundan, sedemikian rupa sehingga pendeteksian dan/atau koreksi terhadap galat yang terjadi pada bit-bit data asli nantinya dapat dilakukan. Proses pada penyandi Turbo akan dijelaskan pada subbab berikutnya. Kemudian data dimodulasi, dalam skripsi ini digunakan modulasi BPSK. Data hasil modulasi selanjutnya dikirim melalui kanal yang rentan terhadap gangguan dan masuk pada bagian pengawasandi pada sisi penerima. Peran pengawasandi adalah untuk memperoleh data yang benar, yang mungkin dirusak oleh derau sepanjang kanal yang dilalui dan memutuskan manakah yang bernilai 0 atau 1 untuk tiap bit [2].Semua ini 6
7 dilakukan dengan memanfaatkan bit-bit
redundan yang didapatkan dari
penyandi. Proses yang terjadi pada sistem penerima berbeda dengan proses yang ditunjukkan pada Gambar 1.1. Pada pengawasandi Turbo, data akan langsung diawasandikan
tanpa
didemodulasi
terlebih
dahulu.
Hal
ini
karena
pengawasandi yang digunakan adalah Soft Input Soft Output (SISO), yaitu pengawasandi menerima dan menghasilkan nilai soft log likelihood ratio (LLR) [3]. SISO ini tidak hanya menunjukkan apakah sebuah bit bernilai 1 atau 0 tetapi juga nilai log likelihood ratio yang memberikan probabilitas bahwa sebuah bit diawasandikan dengan benar. Setelah melalui proses pengawasandi dan sudah mencapai batas iterasi yang diinginkan, bit-bit tersebut akan didemodulasi dan menghasilkan bit-bit yang diterima. Dalam skripsi ini, diteliti tiga macam Turbo Coding
yaitu Turbo
Convolutional, Turbo Block dan Turbo Gabungan yang komponen kodenya terdiri dari satu kode konvolusional dan satu kode blok. Berikut dijelaskan bagian-bagian dari Turbo Coding secara lebih rinci.
2.2.
Penyandi Turbo Penyandi Turbo berfungsi untuk menambahkan bit redundan atau biasa disebut parity bit pada bit-bit informasi (data). Parity bit ditambahkan untuk membantu proses deteksi atau koreksi galat yang terjadi. Penambahan parity bit tersebut mempunyai cara yang berbeda dalam setiap jenis Turbo tergantung pada komponen kode yang digunakan. Gambar 2.2 menunjukkan proses yang terjadi pada penyandi Turbo. Data
Komponen kode I Puncturing Interleaver
Komponen kode II
Gambar 2.2. Diagram Kotak Penyandi Turbo [3]. Pada Gambar 2.2 dapat dilihat bahwa data yang dikirim akan melalui dua komponen kode tergantung jenis Turbo. Pada komponen kode I, data
8 masukan berasal langsung dari data asli yang dikirim, sedangkan komponen kode II memiliki data masukan yang terlebih dahulu melewati interleaver. Interleaver pada penyandi Turbo berfungsi untuk mengubah urutan data bit sehingga data bit yang dipancarkan oleh kedua komponen kode tersebut saling tak gayut. Idenya adalah menyandikan informasi (data) yang sama dari dua sudut pandang yang berbeda. Pada Gambar 2.2 terdapat garis putus-putus yang menghubungkan blok dua komponen kode dengan blok puncturing. Garis ini menandakan hubungan kedua blok tersebut bersifat optional. Apabila ingin didapatkan code rate (laju penyandian) yang lebih tinggi, maka blok puncturing tersebut dapat digunakan. Untuk penyandi Turbo Convolutional, komponen kode yang digunakan adalah Recursive Systematic Convolutional (RSC). Untuk penyandi Turbo Block, komponen kode yang digunakan adalah Bose Chaudhuri Hocqueqhem (BCH). Untuk Turbo Gabungan, komponen kode I yang digunakan adalah Recursive Systematic Convolutional (RSC) sedangkan komponen kode II yang digunakan adalah Bose Chaudhuri Hocqueqhem (BCH).
2.2.1. Kode Recursive Systematic Convolutional (RSC) Komponen
kode
yang
digunakan
pada
penyandi
Turbo
Convolutional adalah Recursive Systematic Convolutional (RSC). Kode ini disebut Recursive karena ada keluaran yang diumpanbalikkan dan disebut sistematik karena terdapat bit masukan yang langsung menjadi keluaran. Kode Recursive Systematic Convolutional (RSC) yang digunakan dapat dilihat pada Gambar 2.3 dan Gambar 2.4. u p
u
A
D1
D2
B
Gambar 2.3. Kode RSC dengan Blok Delay 2 [4].
9 u p
u
A
D1
D2
D3
B
Gambar 2.4. Kode RSC dengan Blok Delay 3 [5].
Gambar 2.3 menunjukkan kode RSC
blok delay 2 dengan
generator polynomial [1 5/7] dan Gambar 2.4 menunjukkan kode RSC blok delay 3 dengan generator polynomial [1 15/13] [5]. Keduanya memiliki code rate sebesar 1/2. Code rate merupakan perbandingan jumlah bit masukan dengan jumlah bit keluaran. Dengan coderate ½ berarti 1 bit masukan menghasilkan 2 bit keluaran. Oleh karena itu, ketika diterapkan dalam penyandi Turbo Convolutional menjadi seperti pada Gambar 2.5. u u
Kode RSC I
p1
Puncturing Interleaver
Kode RSC II
p2
Gambar 2.5. Diagram Kotak Penyandi Turbo Convolutional.
Dapat dilihat dari Gambar 2.5, kode RSC yang mulanya memiliki code rate ½ dihubungkan secara paralel dengan sebuah kode RSC dan membentuk penyandi Turbo Convolutional dan code rate Turbo Convolutional menjadi 1/3. Keluaran pertama adalah bit sistematik yang hanya berasal dari kode RSC I. Hal ini dikarenakan bit data masukan dari kode RSC I dan II sama walaupun berbeda urutan. Keluaran kedua adalah
10 parity bit yang dihasilkan kode RSC I dan keluaran ketiga adalah parity bit yang dihasilkan kode RSC II. Untuk kode RSC dengan blok delay 2 dan 3, masing-masing memiliki cara sendiri untuk menghasilkan parity bit tergantung pada hubungan tiap blok delay. Misal data masukannya adalah 011. Untuk RSC dengan blok delay 2, pertama-tama semua blok delay berisikan bit 0. Kemudian dimasukkan data pertama yaitu 1 sehingga blok delay menjadi 10 (S2) dan bit u dan p secara berurutan adalah 11. Data kedua dimasukkan sehingga blok delay menjadi 01 (S1) dan keluarannya adalah 10 dan seterusnya. Keterangan lebih lanjut untuk jalannya kode RSC dapat dilihat pada Tabel 2.1. Cara yang sama dilakukan pada RSC dengan blok delay 3. Pada Gambar 2.3 dan Gambar 2.4 terdapat saklar yang bisa bergerak ke keadaan A atau B yang kemudian akan menentukan asal dari bit masukan. Saklar ini digunakan untuk kode RSC yang diterminasi, maksudnya apabila bit masukan sudah habis, maka state dari shift register dikembalikan seperti keadaan awal yaitu 00 atau 000. Tidak seperti kode konvolusional biasanya, karena sifat yang rekursif dari kode RSC ini maka untuk mendapatkan state tersebut digunakan saklar seperti pada Gambar 2.3 dan Gambar 2.4. Apabila bit masukan masih ada, maka saklar berada di atas atau dalam kondisi A. Sedangkan saat bit masukan habis, maka saklar berada di bawah atau dalam kondisi B dan langsung menggantikan nilai masukan. Kemudian state akan kembali ke keadaan nol karena nilai umpan balik di-xorkan dengan nilai umpan balik. Contoh langkah kode RSC yang diterminasi ditunjukkan pada Tabel 2.1 dengan shift index 4 dan 5. Penggunaan terminasi diterapkan pada kode RSC I sedangkan pada kode RSC II tidak diterapkan.
11 Tabel 2.1. Langkah-langkah Kode RSC. Input queue
Shift Index
Shift Register
Codeword
011
0
00
-
01
1
10
11
0
2
01
10
-
3
10
00
1
4
01
10
1
5
00
11
Kode RSC ini memiliki bit-bit keluaran yang tidak hanya bergantung pada bit-bit yang sedang diproses namun juga bergantung pada bit-bit masukan sebelumnya sehingga dibutuhkan sebuah memori yang diwujudkan dalam bentuk shift register. Karena keluarannya yang juga bergantung terhadap bit-bit masukan sebelumnya, kode RSC memiliki cara untuk menentukan bit keluaran yang dibangkitkan dari deretan bit masukan yang diberikan. Teknik tersebut adalah : 1)
diagram pohon;
2)
diagram state; atau
3)
diagram trellis.
Dari ketiga teknik tersebut, yang digunakan dalam skripsi ini adalah Diagram Trellis. Diagram Trellis ini menggambarkan keluaran untuk masing-masing bit masukan. Sebelum membuat diagram Trellis, terlebih dahulu dibuat tabel present state dan next state untuk memudahkan pembuatan Diagram Trellis. Garis putus-putus yang terdapat di diagram Trellis menandakan bahwa bit masukannya adalah 1, sedangkan garis lurus berarti bit masukannya adalah 0. Dalam membaca diagram Trellis diperlukan ketelitian dalam membaca garis karena garis menandakan data masukannya. Jika kode RSC dengan blok delay 2 dijalankan dengan data masukan 110 sama seperti contoh sebelumnya. Maka pertama-tama state berada pada S0, kemudian mengikuti garis putus-putus, state menjadi S2. Setelah itu mengikuti garis putus-putus lagi dan state menjadi S1 dan begitu seterusnya.
Tabel 2.2. Present State dan Next State dari Kode RSC Blok Delay 2. Present State
Masukan 0 1 0 1 0 1 0 1
Next State
State
D1
D2
0
0
S0
0
1
S1
1
0
S2
1
1
S3
t=0
t=1
t=2
t=3
t=4
S0
S0
S0
S0
S1
S1
S1
S2
S2
S3
S3
State
Out1 (u)
Out2(p)
S0
0
0
0 0
S2 S2
1 0
1 0
0 1 0 0
0 1 1 1
S0 S3 S1 S1
1 0 1 0
1 1 0 1
1
1
S3
1
0
D1 0
D2 0
1 1
t=T-4
t=T-3
t=T-2
t=T-1
t=T
S0
S0
S0
S0
S0
S0
S1
S1
S1
S1
S1
S1
S1
S2
S2
S2
S2
S2
S2
S2
S2
S3
S3
S3
S3
S3
S3
S3
S3
…..
Gambar 2.6. Diagram Trellis untuk Kode RSC dengan Blok Delay 2.
12
Tabel 2.3. Present State dan Next State dari Kode RSC Blok Delay 3.
Masukan 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
D1
Present State D2
D3
0
0
0
S0
0
0
1
S1
0
1
0
S2
0
1
1
S3
1
0
0
S4
1
0
1
S5
1
1
0
S6
1
1
1
S7
State
D1 0
Next State D2 0
D3 0
1 1
0 0
0 1 0 0
State
Out1 (u)
Out2(p)
S0
0
0
0 0
S4 S4
1 0
1 0
0 0 0 0
0 1 1 1
S0 S5 S1 S1
1 0 1 0
1 1 0 1
1 0
0 1
1 0
S5 S2
1 0
0 1
1 1
1 1
0 0
S6 S6
1 0
0 1
0 1
1 1
0 1
S2 S7
1 0
0 0
0 0
1 1
1 1
S3 S3
1 0
1 0
1
1
1
S7
1
1
13
t=0
t=1
t=2
t=3
t=4
t=T-4
t=T-3
t=T-2
t=T-1
S0
S0
S0
S0
S0
S0
S0
S0
S0
S0
S1
S1
S1
S1
S1
S1
S1
S1
S1
S1
S2
S2
S2
S2
S2
S2
S2
S2
S2
S2
S3
S3
S3
S3
S3
S3
S3
S3
S3
S3
S4
S4
S4
S4
S4
S4
S4
S4
S4
S4
S5
S5
S5
S5
S5
S5
S5
S5
S5
S5
S6
S6
S6
S6
S6
S6
S6
S6
S6
S6
S7
S7
S7
S7
S7
S7
S7
S7
S7
S7
….
t=T
Gambar 2.7. Diagram Trellis untuk Kode RSC dengan Blok Delay 3.
14
15 2.2.2. Kode Bose Chaudhuri Hocqueqhem(BCH) Komponen kode yang digunakan pada penyandi Turbo Block adalah kode BCH (n,k). Kode BCH yang digunakan adalah BCH (7,4) dan BCH (15,11). Keduanya ditunjukkan pada Gambar 2.8 dan Gambar 2.9. Switch 1
r0
r2
r1
Switch 2 out
in
Gambar 2.8. Kode BCH (7,4) [6].
Switch 1
r0
r1
r2
r3 Switch 2 out
in
Gambar 2.9. Kode BCH (15,11). Kode BCH ini ketika diterapkan dalam penyandi Turbo Block menjadi seperti pada Gambar 2.10. Kode BCH (7,4) memiliki code rate sebesar 4/7 dengan generator polynomial 1+x+x3 ketika dihubungkan secara paralel dengan kode BCH (7,4) lain untuk membentuk penyandi Turbo Block, maka code rate dari Turbo Block adalah 0,4. u
Kode BCH I Puncturing Interleaver
Kode BCH II
Gambar 2.10. Diagram Kotak Penyandi Turbo Block.
16 Kode BCH (15,11) memiliki code rate sebesar 11/15 dengan generator polynomial 1+x+x4 [6]. Setelah dihubungkan dengan kode BCH (15,11) lain untuk membentuk penyandi Turbo Block, code rate Turbo menjadi 0,58. Untuk mendapatkan parity bit pada kode BCH berbeda dengan kode RSC. Pada kode BCH (7,4) untuk setiap 4 bit yang dikodekan akan menghasilkan 3 parity bit dan untuk kode BCH (15,11) untuk setiap 11 bit yang dikodekan akan menghasilkan 4 parity bit. Selama sejumlah k data bit informasi yang dikirim, saklar 1 selalu terhubung dan saklar 2 berada di posisi bawah sehingga data bit langsung disalin dalam codeword. Setelah pergeseran ke-k, saklar 1 terbuka dan saklar 2 berpindah ke posisi atas. Selama pergeseran n-k terakhir, shift register kembali dibuat ke keadaan awal yaitu 000 atau 0000 dengan menambahkan bit masukan 0 sehingga menghasilkan parity bit yang akan digabungkan dalam codeword. Keterangan lebih lanjut untuk jalannya kode BCH (7,4) dapat dilihat pada Tabel 2.4, dengan memisalkan data masukan adalah 1011. Tabel 2.4. Langkah – langkah Kode BCH (7,4) [7]. Input queue
Shift Index
Shift Register
Codeword
1011
0
000
-------
101
1
110
------1
10
2
101
----11
1
3
100
---011
-
4
100
--1011
-
5
010
-01011
-
6
001
001011
-
7
000
1001011
Dapat dilihat dari Tabel 2.4, proses penyandian selalu diawali dan diakhiri dengan state 000. Untuk pergeseran k pertama, dalam hal ini adalah 4 pergeseran, data masukan langsung disalin menjadi bagian codeword. Kemudian, sisanya dihasilkan parity bit yang kemudian digabungkan dengan codeword sebelumnya. Pada BCH (7,4) dihasilkan
17 23 state dan 24 state pada kode BCH (15,11). Sama halnya dengan kode RSC, untuk memudahkan dalam melihat pergantian state yang terjadi, terlebih dahulu bisa dibuat tabel present dan next state yang kemudian digambarkan dalam diagram Trellis. Garis putus-putus yang terdapat pada diagram Trellis menandakan bahwa bit masukannya adalah 1, sedangkan garis lurus berarti bit masukannya adalah 0. Jika kode BCH (7,4) dijalankan dengan data masukan 1011 sama seperti contoh sebelumnya. Maka pertama-tama state berada pada S0, kemudian mengikuti garis putus-putus, state menjadi S6. Setelah itu mengikuti garis putus-putus lagi dan state menjadi S5 dan begitu seterusnya. Diagram Trellis BCH (15, 11) dapat digambar dengan ketentuan dari Present State dan Next State yang terdapat pada Tabel 2.6. Karena kerumitannya, diagram Trellis tidak bisa digambar di sini. Cara penggambarannya sama seperti diagram Trellis yang sebelumnya.
Tabel 2.5. Present State dan Next State dari Kode BCH (7,4).
Masukan 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
r0
Present State r1
r2
0
0
0
S0
0
0
1
S1
0
1
0
S2
0
1
1
S3
1
0
0
S4
1
0
1
S5
1
1
0
S6
1
1
1
S7
State
r0 0
Next State r1 0
r2 0
1 1
1 1
0 0 1 1
State
Out
S0
0
0 0
S6 S6
1 0
0 0 1 1
0 1 1 1
S0 S1 S7 S7
1 0 1 0
0 0
0 1
1 0
S1 S2
1 0
1 1
0 0
0 0
S4 S4
1 0
0 0
1 1
0 1
S2 S3
1 0
1 1
0 0
1 1
S5 S5
1 0
0
1
1
S3
1
Par 0 1 0 1 0 1 0 1
18
t=0
t=1
t=2
t=3
t=4
t=T-4
t=T-3
t=T-2
t=T-1
t=T
S0
S0
S0
S0
S0
S0
S0
S0
S0
S0
S1
S1
S1
S1
S1
S1
S1
S1
S1
S1
S2
S2
S2
S2
S2
S2
S2
S2
S2
S2
S3
S3
S3
S3
S3
S3
S3
S3
S3
S3
S4
S4
S4
S4
S4
S4
S4
S4
S4
S4
S5
S5
S5
S5
S5
S5
S5
S5
S5
S5
S6
S6
S6
S6
S6
S6
S6
S6
S6
S6
S7
S7
S7
S7
S7
S7
S7
S7
S7
S7
…..
Gambar 2.11. Diagram Trellis Kode BCH (7,4).
19
Tabel 2.6. Present State dan Next State dari Kode BCH (15,11).
Masukan 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
r0
Present State r1 r2
r3
0
0
0
0
S0
0
0
0
1
S1
0
0
1
0
S2
0
0
1
1
S3
0
1
0
0
S4
0
1
0
1
S5
0
1
1
0
S6
0
1
1
1
S7
1
0
0
0
S8
State
Next State r0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
r1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0
r2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0
r3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0
State
Out
S0 S12 S12 S0 S1 S13 S13 S1 S2 S14 S14 S2 S3 S15 S15 S3 S4 S8
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Par 0 1 0 1 0 1 0 1 0
20
Lanjutan Tabel 2.6. Masukan 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Present State
State
r0
r1
r2
r3
1
0
0
1
S9
1
0
1
0
S10
1
0
1
1
S11
1
1
0
0
S12
1
1
0
1
S13
1
1
1
0
S14
1
1
1
1
S15
Next State
State
Out
0
S8
0
0
0
S4
1
1
0
1
S5
0
1
0
0
1
S9
1
1
0
0
1
S9
0
0
1
0
1
S5
1
0
1
1
0
S6
0
1
0
1
0
S10
1
1
0
1
0
S10
0
0
1
1
0
S6
1
0
1
1
1
S7
0
1
0
1
1
S11
1
1
0
1
1
S11
0
0
1
1
1
S7
1
r0
r1
r2
r3
1
0
0
0
1
0
Par 1 0 1 0 1 0 1
21
22 2.2.3. Penyandi Turbo Gabungan Pada penyandi Turbo Gabungan, komponen kode yang digunakan adalah kode RSC dengan blok delay 2 dan kode BCH (7,4). Kedua kode ini dipilih berdasarkan waktu komputasi yang paling cepat untuk masingmasing Turbo. Cara kerja masing-masing kode sama seperti yang dijelaskan sebelumnya. Ketika kedua kode tersebut digabungkan akan menjadi seperti pada Gambar 2.12. u u
Kode RSC
p1
Puncturing Kode BCH
Interleaver
p2
Gambar 2.12. Diagram Kotak Penyandi Turbo Gabungan. Penyandi Turbo Gabungan memiliki code rate sebesar 4/11 dengan setiap 4 bit data masukan akan menghasilkan 11 bit keluaran. Diagram Trellis yang digunakan untuk kode RSC blok delay 2 sama seperti pada Gambar 2.6 dan untuk kode BCH (7,4) sama seperti pada Gambar 2.11.
2.2.4. Laju Penyandian (Code Rate) Jika komponen kode pertama memiliki masukan k1 bit per transisi state dengan laju r1=k1/n1, maka komponen kode tersebut akan menghasilkan n1-k1 parity bit untuk setiap transisi state. Jika komponen kode kedua dengan masukan k2 bit per transisi state dengan laju r2=k2/n2, maka komponen kode tersebut akan menghasilkan n2-k2 parity bit untuk tiap transisi state. Jumlah data masukan adalah sama untuk setiap komponen kode, k1=k2=k, sehingga laju penyandian kode Turbo ini menjadi [4] : 𝑟= 𝑟=
𝑘 𝑘 = 𝑘 + (𝑛1 − 𝑘) + (𝑛2 − 𝑘) 𝑛1 + 𝑛2 − 𝑘
𝑟1 𝑟2 𝑘 = 𝑘 𝑘 𝑟1 + 𝑟2 − 𝑟1 𝑟2 𝑟1 + 𝑟2 − 𝑘
(2.1)
23 dengan : k1 = k2 = k = jumlah data masukan pada komponen kode; n1-k1 = jumlah parity bit pada komponen kode pertama; n2-k2 = jumlah parity bit pada komponen kode kedua; r1= laju penyandian komponen kode pertama; dan r2 = laju penyandian komponen kode kedua.
2.2.5. Interleaver Dalam sistem komunikasi, interleaver berfungsi untuk mengubah urutan data dengan aturan tertentu. Interleaver dapat mengatasi burst error atau ledakan galat dengan mengubahnya menjadi random error. Dengan demikian, interleaver menjadi cara yang efektif untuk menghindari rentetan kesalahan data yang panjang. Dalam kode Turbo ini, interleaver dimanfaatkan untuk memastikan parity bit yang dihasilkan oleh penyandi kedua berbeda dengan parity bit yang dihasilkan oleh penyandi pertama. Dengan begitu, pengawasandi Turbo memiliki dua kelompok parity bit yang tidak saling bergantung dan tentunya akan meningkatkan kinerja. Jenis interleaver yang digunakan adalah block interleaver. Proses interleaving dan de-interleaving yang dilakukan digambarkan sebagai berikut :
Interleaving
:
a1, a2, a3, a4, a5, a6, a7, a8, a9, .. Write Read
Data masukan
:
𝑎3 𝑎4 𝑎1 𝑎2 𝑎5 𝑎6 𝑎7 𝑎8 ] [ 𝑎9 𝑎10 𝑎11 𝑎12 𝑎13 𝑎14 𝑎15 𝑎16
Data yang ditransmisikan : a1, a5, a9, a13, a2, a6, a10, a14, a3, a7,.. Read De-Interleaving
:
Write
𝑎1 𝑎2 𝑎3 𝑎4 𝑎5 𝑎6 𝑎7 𝑎8 ] [ 𝑎9 𝑎10 𝑎11 𝑎12 𝑎13 𝑎14 𝑎15 𝑎16
Data keluaran
:
a1, a2, a3, a4, a5, a6, a7, a8, a9, ..
24 Dari ilustrasi di atas, proses interleaving mengurutkan data dalam baris per baris, kemudian keluarannya dibaca dengan urutan kolom per kolom . Untuk proses de-interleaving
berlaku sebaliknya yaitu data
diurutkan dalam kolom per kolom kemudian keluarannya dibaca dengan urutan baris per baris. Dapat dilihat bahwa setelah data melalui proses deinterleaving , urutan data akan kembali seperti semula. Kemudian akan digambarkan saat terjadi burst error : Burst Error
Interleaving
:
Data keluaran
:
0, 0, 0, 1, 1, 1, 1, 0, 0, 0,..... Write Read
Data yang ditransmisikan :
0 [1 0 0
0 1 0 0
0 1 0 0
1 0] 0 0
0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0,0
Random Error Dari ilustrasi di atas dapat dilihat bahwa dengan pengubahan urutan data yang dilakukan, interleaver mampu menghindari terjadinya kerusakan data akibat burst error
pada suatu blok data yang cukup
panjang. Galat akan dipisahkan sehingga lebih mudah untuk dideteksi.
2.2.6. Puncturing Puncturing merupakan suatu proses yang dilakukan untuk meningkatkan laju penyandian. Dalam kode yang sudah di-puncture terdapat parity bit yang tidak ditransmisikan dalam kanal. Pola puncturing ditentukan oleh matriks puncturing P. Untuk sebuah penyandi dengan y keluaran, matriks P memiliki y baris. Jumlah kolom pada matriks P adalah jumlah bit yang dikenakan puncturing secara berulang. Berikut gambaran mengenai proses puncturing. Misalkan sebuah penyandi memiliki 2 keluaran 𝑐 (1) = [0
1 0 1
0 0]
𝑐 (2) = [0
1 1 0
1 0]
25 dengan : c(1) = bit keluaran penyandi pertama; dan c(2) = bit keluaran penyandi kedua. Matriks puncturing P terdiri dari : 1 1 𝑃=[ 1 1
1 ] 0
Angka nol yang berada pada baris kedua kolom ketiga menandakan bahwa setiap tiga bit pada keluaran c(2) akan di-puncture. Maka hasil proses puncturing ini adalah 𝑐 (2) = [0
1 𝑥 0
1 𝑥]
dengan : c(2) = bit keluaran penyandi kedua setelah proses puncturing.
2.3. Binary Phase Shift Keying (BPSK) Modulasi berfungsi untuk memetakan bit-bit informasi yang akan dikirimkan menjadi simbol-simbol sebelum ditumpangkan ke frekuensi pembawa. Pada Turbo Coding digunakan modulasi BPSK. BPSK merupakan salah satu bentuk dari M-ary Phase Shift Keying (M-PSK) yang mempunyai nilai M=2 yang berarti mempunyai dua fase keluaran yang berbeda 1800. Dalam skema BPSK, isyarat termodulasi dapat dinyatakan oleh persamaan berikut : 𝑥(𝑡) = {
𝐴 cos 𝜔𝑐 𝑡 𝐴 cos (𝜔𝑐 𝑡 + 𝜋)
merepresentasikan ′0′ merepresentasikan ′1′
(2.2)
Pergeseran fase sebesar 180° (π) sebanding dengan membalikkan gelombang sinus atau mengalikannya dengan -1. Gambar 2.13 menunjukan bentuk modulasi BPSK.
Gambar 2.13. Modulasi BPSK.
26 Im
0
1
Re
Gambar 2.14. Diagram Konstelasi BPSK.
2.4. Kanal Multipath Fading Fading
merupakan fluktuasi amplitudo isyarat secara cepat dalam
periode waktu tertentu yang disebabkan oleh diterimanya dua atau lebih isyarat yang sama oleh penerima akibat banyaknya lintasan isyarat (multipath) [8]. Pada komunikasi nirkabel, hal tersebut dapat terjadi karena adanya gangguan yang disebabkan oleh pantulan (reflection), difraksi (difraction) dan hamburan (scaterring). Gambar 2.15 mengilustrasikan fenomena jalur jamak (multipath).
Gambar 2.15. Fenomena Jalur Jamak (Multipath). Distribusi Rayleigh sering digunakan untuk memodelkan fluktuasi isyarat akibat multipath fading. Distribusi ini memiliki fungsi kerapatan probabilitas : 𝑟2
𝑟
𝑝(𝑟) = 𝜎2 𝑒𝑥𝑝 (− 2𝜎2 )
(2.3)
dengan : σ
= nilai rms isyarat terima; dan
σ2
= daya rata-rata waktu isyarat terima.
Fading juga dapat terjadi karena pergeseran Doppler yaitu pergeseran frekuensi yang disebabkan pergerakan penerima. Frekuensi Doppler dapat dihitung dengan persamaan berikut :
𝑓𝑑 = dengan : v = kecepatan kendaraan; dan
𝑣 𝜆
(2.4)
27 λ = panjang gelombang pembawa.
2.5. Derau AWGN (Additve White Gaussian Noise) Derau yang terjadi pada sistem komunikasi sering dimodelkan dengan derau yang terdistribusi Gaussian atau lebih dikenal dengan derau AWGN. Derau ini memiliki rapat spektrum daya yang tersebar secara merata pada tiap frekuensi. Oleh karena itu, AWGN akan merusak isyarat pada frekuensi berapapun isyarat tersebut dipancarkan. Derau Gaussian memiliki model matematis sebagai berikut:
𝑓𝑥 (𝑥) =
1 √2𝜋𝜎 2
𝑒 −(𝑥−𝜇)
2 /(2𝜎 2 )
(2.5)
Rata-rata dan varians Gaussian adalah 𝜇 dan 𝜎 2 , dengan 𝜎 adalah standar deviasi.
2.6. Pengawasandi Turbo Proses pengawasandi Turbo ditunjukkan pada Gambar 2.16 sampai Gambar 2.18. Dua pengawasandi dihubungkan dengan interleaver yang sama seperti pada penyandi. Untuk Turbo Convolutional dan Turbo Gabungan, setiap pengawasandi memiliki tiga masukan yang sudah melalui kanal sehingga masukan tersebut mengandung derau seperti pada Gambar 2.16 dan Gambar 2.18. Tiga masukan tersebut yaitu bit sistematik, parity bit dikirimkan dari penyandi yang bersangkutan dan informasi dari pengawasandi lainnya berkenaan dengan nilai bit yang diterima. Untuk Turbo Block hanya terdapat dua masukan untuk setiap pengawasandi karena bit data dan parity bit menjadi satu rentetan seperti pada Gambar 2.17. Informasi yang berasal dari pengawasandi lain disebut sebagai informasi a-priori. Pengawasandi akan menghasilkan soft-output mengenai bit yang diterima. Hal ini berarti bersamaan dengan penyediaan bit keluaran yang didapat, pengawasandi juga harus memberikan besarnya peluang sebuah bit dikodekan dengan benar. Softoutput ini biasa direpresentasikan dengan Log–Likelihood Ratio yang akan dibahas pada subbab berikutnya. Polaritas LLR menunjukkan tanda bit yang dikodekan dan amplitudonya menunjukkan besarnya probabilitas sebuah bit dikodekan dengan benar. Pengawasandi ini menggunakan algoritma Maximum A-Posteriori (MAP). Pengawasandi bekerja secara iteratif. Pada iterasi pertama, pengawasandi 1 mengambil masukan yang berasal dari penyandi 1, dalam hal ini adalah bit
28 sistematik dan parity bit sedangkan informasi a-priori L(uk) dianggap bernilai nol karena hanya ada dua nilai kemungkinan data yaitu 0 atau 1. Kemudian pengawasandi 1 menghasilkan soft-output sebagai estimasi bit data. Soft-output pengawasandi
1
kemudian
digunakan
sebagai
informasi
a-priori
untuk
pengawasandi 2 yang juga digabungkan dengan bit sistematik yang sudah diinterleaver serta parity bit yang berasal dari pengawasandi 2. Semua bit tersebut digunakan untuk menghitung estimasi bit data. Setelah didapatkan nilai soft output dari bit data pada pengawasandi 2 maka iterasi kedua dimulai. Pengawasandi 1 menghitung kembali soft output dengan masukan bit sistematik, parity bit serta soft output yang dihasilkan oleh pengawasandi 2 pada iterasi sebelumnya yang dalam hal ini berlaku sebagai informasi a-priori. Semua masukan tersebut berguna untuk menghitung kembali soft output yang lebih akurat yang nantinya menjadi informasi a-priori dari pengawasandi kedua. Proses tersebut dilakukan berulang-ulang sampai kriteria berhenti yang diinginkan . Kegunaan interleaver dan deinterleaver adalah untuk mengubah urutan data yang masuk agar ketika menjadi masukan untuk pengawasandi, baik bit keluaran dari kanal maupun bit keluaran dari masingmasing pengawasandi memiliki urutan data yang sama.
Gambar 2.16. Diagram Kotak Pengawasandi Turbo Convolutional.
Gambar 2.17. Diagram Kotak Pengawasandi Turbo Block.
29
Gambar 2.18. Diagram Kotak Pengawasandi Turbo Gabungan.
2.6.1. Log Likelihood Ratio (LLR) Nilai masukan dan keluaran pada pengawasandi Turbo diekspresikan dalam bentuk Log Likelihood Ratio (LLR). LLR dari bit data uk, L(uk) didefinisikan sebagai log perbandingan probabilitas bit merupakan nilai +1 atau -1.
𝐿(𝑢𝑘 ) = ln (
𝑃(𝑢𝑘 =+1)
)
𝑃(𝑢𝑘 =−1)
(2.6)
Polaritas LLR L(uk) bit uk menunjukkan bit uk bernilai +1 atau -1, sedangkan besarnya nilai LLR L(uk) menunjukkan besarnya keyakinan bit tersebut bernilai +1 atau -1. Saat LLR L(uk) bernilai ≈ 0, maka P(uk =+1) ≈ P(uk =-1) ≈ 0,5 .
Gambar 2.19. LLR L(uk) fungsi P(uk =+1) [7]. Pada pengawasandi Turbo, nilai LLR L(uk) berperan sebagai informasi a-priori yang dimiliki oleh sebuah pengawasandi. Untuk iterasi pertama pada pengawasandi 1, LLR L(uk) bernilai 0 karena hanya terdapat
30 dua kemungkinan untuk nilai bit uk sedangkan untuk berikutnya LLR L(uk) didapat dari hasil penghitungan pengawasandi pada tahap sebelumnya. Selain itu juga terdapat nilai LLR L(uk|y). Nilai ini didefinisikan sebagai berikut:
𝐿(𝑢𝐾 |𝑦) = 𝑙𝑛 (
𝑃(𝑢𝑘 =+1|𝑦)
)
𝑃(𝑢𝑘 =−1|𝑦)
(2.7)
LLR L(uk|y) merupakan perbandingan probabilitas bit uk = +1 apabila data yang diterima merupakan y, dengan probabilitas bit uk = -1 apabila data yang diterima merupakan y. Nilai LLR L(uk|y) pada kode Turbo dikenal sebagai informasi a-posteriori . Selain itu juga digunakan nilai LLR L(yk|xk) yang merupakan probabilitas sebuah bit diterima yk apabila bit yang dikirim adalah xk . 𝑃(𝑦𝑘 |𝑥𝑘 = +1) 𝐿(𝑦𝐾 |𝑥𝑘 ) = 𝑙𝑛 ( ) 𝑃(𝑦𝑘 |𝑥𝑘 = −1) = 𝐿𝑐 𝑦𝑘
(2.8)
dengan :
𝐿𝑐 = 4𝑅
𝐸𝑏 𝑁𝑜
(2.9)
didefinisikan sebagai nilai reliabilitas kanal dengan R adalah laju penyandian [3]. Oleh karena itu, LLR L(yk| xk) dikenal sebagai soft output kanal, yang didapat dengan mengalikan nilai reliabilitas kanal Lc dengan keluaran yk. 2.6.2. Algoritma Maximum A-Posteriori (MAP) Pada tahun 1974 telah diperkenalkan algoritma Maximum APosteriori
oleh Bahl, Cocke, Jelinek dan Raviv yang berguna untuk
menaksir probabilitas a posteriori dari state dan transisi. Algoritma ini juga dikenal sebagai algoritma BCJR, dinamakan sesuai penemunya. Algoritma MAP melihat setiap kemungkinan jalur yang melalui trellis, tidak hanya menaksir bit tetapi juga probabilitas bahwa setiap bit sudah diawasandikan dengan benar. Pada bagian ini akan dijelaskan dasar algoritma MAP yang digunakan sebagai soft output dalam pengawasandi Turbo. Bit pada waktu t dipengaruhi oleh bit yang dikirim sebelumnya dan akan mempengaruhi bit yang akan dikirim setelahnya. Untuk memanfaatkan informasi bit yang dikirim sebelum waktu t dan setelah waktu t, algoritma
31 MAP menggunakan dua arah dalam trellis : rekursi maju yang menaksir bit saat ini dengan dasar bit yang dikirim sebelumnya dan rekursi mundur yang menaksir bit saat ini dengan dasar bit yang dikirim setelahnya. Untuk penjelasan algoritma MAP ini akan digunakan diagram Trellis kode konvolusional RSC dengan R = ½ dan dua blok delay. Sk-1
Sk
S0
S0
S1
S1
S2
S2
S3
S3
Gambar 2.20. Diagram Trellis RSC dengan 2 Blok Delay. Seperti yang sudah dijelaskan sebelumnya, algoritma MAP memberikan untuk setiap bit uk yang diawasandikan, probabilitas bahwa bit tersebut adalah +1 atau -1 jika data yang diterima adalah y. Hal ini sama dengan mencari a-posteriori LLR L(uk|y) , dengan :
𝐿(𝑢𝐾 |𝑦) = 𝑙𝑛 (
𝑃(𝑢𝑘 =+1|𝑦)
)
𝑃(𝑢𝑘 =−1|𝑦)
(2.10)
Dengan menggunakan aturan Bayes dapat ditulis
𝐿(𝑢𝐾 |𝑦) = 𝑙𝑛 (
𝑃(𝑢𝑘 =+1∧𝑦) 𝑃(𝑢𝑘 =−1∧𝑦)
)
(2.11)
Dari diagram Trellis pada Gambar 2.20 terdapat empat state, dengan masing-masing state memiliki dua kemungkinan transisi tergantung pada nilai bitnya. Salah satu transisi tersebut berhubungan dengan masukan bit 0 (setelah dimodulasi menjadi +1) yang digambarkan dengan garis lurus dan lainnya berhubungan dengan masukan bit 1 (setelah dimodulasi menjadi -1) yang digambarkan dengan garis putus-putus. Dapat dilihat dari Gambar 2.20, jika state sebelumnya Sk-1 dan state saat ini Sk diketahui, maka bit masukan uk yang menyebabkan transisi tersebut akan diketahui. Oleh karena itu, probabilitas bahwa uk = +1 sama dengan probabilitas bahwa satu dari empat transisi Sk-1 menuju Sk yang disebabkan oleh uk = +1.
32 Oleh karena itu, persamaan di atas ditulis sebagai : ∑(𝑠̀ ,𝑠)⟹𝑢 =+1 𝑃(𝑆𝑘−1 =𝑠̀∧𝑆𝑘 =𝑠∧𝑦) 𝑘
𝐿(𝑢𝑘 |𝑦) = 𝑙𝑛 (∑
(𝑠̀ ,𝑠)⟹𝑢𝑘 =−1 𝑃(𝑆𝑘−1 =𝑠̀ ∧𝑆𝑘 =𝑠∧𝑦)
)
(2.12)
dengan (𝑠̀, 𝑠) ⟹ 𝑢𝑘 = +1 adalah semua transisi yang dapat terjadi dari Sk-1 = 𝑠̀ menuju Sk = s yang dapat terjadi karena bit masukan = +1 dan sama dengan (𝑠̀, 𝑠) ⟹ 𝑢𝑘 = −1 adalah semua transisi yang dapat terjadi dari Sk-1 = 𝑠̀ menuju Sk = s yang dapat terjadi karena bit masukan = -1. Untuk penurunan rumus di atas dapat dilihat selengkapnya pada [6] sehingga akhirnya dapat ditulis lagi menjadi ∑(𝑠̀ ,𝑠)⟹𝑢 =+1 𝛼𝑘−1 (𝑠̀)𝛾𝑘 (𝑠̀,𝑠)𝛽𝑘 (𝑠) 𝑘 ) (𝑠̀ ,𝑠)⟹𝑢 =−1 𝛼𝑘−1 (𝑠̀)𝛾𝑘 (𝑠̀,𝑠)𝛽𝑘 (𝑠)
𝐿(𝑢𝑘 |𝑦) = 𝑙𝑛 (∑
(2.13)
𝑘
dengan : (i) 𝛼𝑘−1 (𝑠̀) = 𝑃 (𝑆𝑘−1 = 𝑠̀ ∧ 𝑦𝑡<𝑘 ) adalah
probabilitas
bahwa
Trellis berada pada state 𝑠̀ saat k-1 jika data yang diterima adalah 𝑦𝑡<𝑘 ; (ii) 𝛽𝑘 (𝑠) = 𝑃(𝑦𝑡>𝑘 |𝑆𝑘 = 𝑠) adalah probabilitas yang membawa Trellis berada pada state s saat k jika data yang diterima adalah 𝑦𝑡>𝑘 ; dan (iii) 𝛾𝑘 (𝑠̀, 𝑠) = 𝑃({𝑦𝑘 ∧ 𝑆𝑘 = 𝑠}|𝑆𝑘−1 = 𝑠̀) adalah probabilitas yang
menunjukan bahwa Trellis berada pada state 𝑠̀ saat k-1 dan bergerak menuju state s saat k dengan data yang diterima adalah yk. 2.6.2.1. Penghitungan Nilai Branch Metrix 𝜸𝒌 (𝒔̀ , 𝒔) Nilai branch metrix 𝛾𝑘 (𝑠̀, 𝑠) diperoleh dari persamaan : 𝐿
𝛾𝑘 (𝑠̀ , 𝑠) = 𝐶 𝑒 (𝑢𝑘𝐿(𝑢𝑘)/2) exp ( 𝑐 ∑𝑛𝑙=1 𝑦𝑘𝑙 𝑥𝑦𝑙 ) 2
(2.14)
dengan C adalah sebuah konstanta dan dapat dihilangkan selama muncul pada numerator dan denominator pada𝐿(𝑢𝑘 |𝑦). 𝑥𝑦𝑙 adalah bit yang ditransmisikan dalam transisi state 𝑠̀ ke 𝑠 dan 𝑦𝑘𝑙 adalah bit yang diterima dan sudah melalui kanal sehingga sudah terkena derau. 2.6.2.2. Penghitungan Nilai Rekursi Maju 𝜶𝒌−𝟏 (𝒔̀ ) Nilai rekursi maju 𝛼𝑘−1 (𝑠̀) diperoleh dari persamaan : 𝛼𝑘 (𝑠) = ∑𝑠𝑒𝑚𝑢𝑎 𝑠 𝛾𝑘 (𝑠̀ , 𝑠). 𝛼𝑘−1 (𝑠̀)
(2.15)
33 Jika nilai 𝛾𝑘 (𝑠̀, 𝑠) diketahui, maka nilai 𝛼𝑘 (𝑠) dapat dihitung dengan menggunakan persamaan di atas. Diasumsikan trellis memiliki kondisi awal : 𝛼0 (𝑆0 = 0) = 1
(2.16)
𝛼0 (𝑆0 = 𝑠) = 0 untuk semua s ≠ 0 2.6.2.3. Penghitungan Nilai Rekursi Mundur 𝜷𝒌 (𝒔) Nilai rekursi mundur 𝛽𝑘 (𝑠) diperoleh dari persamaan : 𝛽𝑘−1 (𝑠̀ ) = ∑𝑠𝑒𝑚𝑢𝑎 𝑠 𝛽𝑘 (𝑠). 𝛾𝑘 (𝑠̀, 𝑠)
(2.17)
Jika digunakan trellis yang diterminasi, maka nilai inisial 𝛽𝑘 (𝑠) adalah : 𝛽𝑁 (𝑆𝑁 = 0) = 1
(2.18)
𝛽𝑁 (𝑆𝑁 = 𝑠) = 0 untuk semua s ≠ 0 Namun, jika digunakan trellis yang tidak diterminasi, maka nilai inisial 𝛽𝑘 (𝑠) adalah
𝛽𝑁 (𝑠) =
1 (𝑏𝑙𝑜𝑘 𝑑𝑒𝑙𝑎𝑦)2
untuk semua s
(2.19)
Setelah nilai 𝛾𝑘 (𝑠̀, 𝑠), 𝛼𝑘−1 (𝑠̀ ) dan 𝛽𝑘 (𝑠) diketahui , maka nilai 𝐿(𝑢𝑘 |𝑦) bisa dicari. Kemudian dapat dilihat pada Gambar 2.17,Gambar 2.18 dan Gambar 2.19 untuk setiap data ekstrinsik yang dikirim untuk menjadi masukan informasi a-priori pada sebuah pengawasandi didapat dari : 𝐿(𝑢𝑘 |𝑦) = 𝐿(𝑢𝑘 ) + 𝐿𝑐 𝑦𝑘𝑠 + 𝐿𝑒 (𝑢𝑘 ) 𝐿𝑒 (𝑢𝑘 ) = 𝐿(𝑢𝑘 |𝑦) − 𝐿(𝑢𝑘 ) − 𝐿𝑐 𝑦𝑘𝑠
(2.20)
2.7. Hard Decision Demodulasi Pada akhir iterasi yang dilakukan, sistem akan melakukan demodulasi hasil estimasi akhir yang dilakukan oleh pengawasandi 2 setelah tercapai ketentuan yang diinginkan. Apabila hasil estimasi akhir bernilai kurang dari nol (0) maka nilai suatu bit adalah 1 dan apabila hasil estimasi akhir bernilai lebih dari nol (0) maka nilai suatu bit adalah 0.
34 2.8. Bit Error Rate (BER) dan Eb/No Bit Error Rate didapat dari perbandingan jumlah galat yang terdapat dalam hasil akhir dengan jumlah bit masukan. BER ini menunjukkan kinerja sistem. Semakin tinggi nilainya maka semakin buruk kinerja sistem sedangkan semakin rendah nilainya maka semakin baik kinerja sistem. Nilai BER dihitung untuk setiap iterasi yang dilakukan oleh pengawasandi Turbo. Pada penelitian ini, BER digambarkan sebagai fungsi Eb/No yang merupakan perbandingan energi bit terhadap derau yang biasa digunakan dalam komunikasi digital.