TUGAS AKHIR
PERBANDINGAN PERFORMANSI CONVOLUTIONAL CODE DENGAN CONVOLUTIONAL TURBO CODE Diajukan Guna Melengkapi Sebagian Syarat Dalam mencapai gelar Sarjana Strata Satu (S1)
Disusun Oleh : Nama NIM Jurusan Peminatan Pembimbing
: : : : :
Eko Kuncoro Adiyanto 41406120004 Teknik Elektro Telekomunikasi Dr. Ing. Mudrik Alaydrus
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS MERCU BUANA JAKARTA 2009
LEMBAR PERNYATAAN Yang bertanda tangan di bawah ini, Nama : NIM : Jurusan : Fakultas : Judul Skripsi
Eko Kuncoro Adiyanto 41406120004 Teknik Elektro Teknik Industri : Perbandingan Performansi Convolutional Code dengan Convolutional Turbo Code
Dengan ini menyatakan bahwa hasil penulisan Skripsi yang telah saya buat ini merupakan hasil karya sendiri dan benar keasliannya. Apabila ternyata di kemudian hari penulisan Skripsi ini merupakan hasil plagiat atau penjiplakan terhadap karya orang lain, maka saya bersedia mempertanggungjawabkan sekaligus bersedia menerima sanksi berdasarkan aturan tata tertib di Universitas Mercu Buana.
Demikian, pernyataan ini saya buat dalam keadaan sadar dan tidak dipaksakan.
Penulis, Materai Rp.6000 [ Eko Kuncoro Adiyanto ]
ii
LEMBAR PENGESAHAN TUGAS AKHIR
PERBANDINGAN PERFORMANSI CONVOLUTIONAL CODE DENGAN CONVOLUTIONAL TURBO CODE
Disusun Oleh : Nama NIM Jurusan Peminatan
: : : :
Eko Kuncoro Adiyanto 41406120004 Teknik Elektro Telekomunikasi
Mengetahui, Pembimbing
Koordinator TA
(Dr. Ing. Mudrik Alaydrus)
(Ir. Yudhi Gunadi MT.)
Mengetahui, Ketua Program Studi Teknik Elektro
(Ir. Yudhi Gunadi MT.)
iii
ABSTRAKSI
Dunia telekomunikasi saat ini didominasi oleh banyaknya perangkat yang memiliki kemampuan nirkabel. Dengan adanya media transmisi udara yang sifatnya terbuka terhadap segala jenis noise, maka kemampuan suatu system dalam mengirimkan suatu informasi haruslah handal. Hal ini dapat diartikan teknik pengkoreksi error harus mampu diaplikasikan sesuai kebutuhan. Forward error control atau yang biasa disebut proses pengkoreksi error pada sistem pentransmisi dan penerima merupakan hal yang akan dibahas penulis pada tugas akhir kali ini. Pada tugas akhir ini, pembahasan penulis akan difokuskan pada perbedaan performansi forward error control jenis Convolutional Turbo Codes dengan Convolutional Codes. Perbedaan yang dibahas adalah perbandingan kurva BER berbanding daya Eb/No dengan menggunakan beberapa parameter yang berbeda seperti modulasi, bit input rate, perpindahan user, dan kanal. Setiap parameter akan membentuk grafik yang berbeda yang bisa penulis analisa, sehingga penulis pada akhir tugas kahir bisa mengambil suatu kesimpulan mengenai perbandingan Convolutional Turbo Codes dengan Convolutional Codes. Untuk membuat grafik itu sendiri, penulis membuat program menggunakan software Matlab dengan input dan parameter yang berbeda-beda sesuai urutan pembahasan. Pembahasan pertama dari perbandingan BER dengan Eb/No dari Convolutional Turbo Codes dengan Convolutional Codes adalah menggunakan parameter Modulasi yang berbeda, yaitu modulasi QPSK,8PSK,16QAM dan 64 QAM. Pembahasan kedua yaitu pengaruh kanal Rayleigh Fading di media transmisi pada channel coding. Pembahasan ketiga kemudian pengembangan dari kanal Rayleigh yaitu pemberian kecepatan pada user, bagaimana pengaruhnya terhadapa channel coding.
iv
KATA PENGANTAR Syukur Alhamdulillah penulis panjatkan atas nikmat, rahmat dan karunia Allah SWT, sehingga penulis dapat menyelesaikan penulisan laporan tugas akhir ini dengan baik. Laporan Tugas Akhir ini disusun secara sistematis dan tertulis berdasarkan program simulasi yang telah dikerjakan untuk memenuhi syarat memperoleh gelar Strata 1 Program Studi Teknik Elektro Jurusan Teknik Industri Universitas Mercubuana. Pada pembuatan tugas akhir ini, penulis telah dibantu dan didukung oleh banyak pihak. Oleh karena itu, walaupun sulit menyebut semuanya satu persatu, penulis mengucapkan terima kasih sebesar-besarnya terutama kepada : 1.
Bapak dan Ibu dengan segenap cinta dan kasih sayangnya yang terus mendukung penulis agar menjadi lebih baik dan lebih baik lagi.
2.
Mekarku tercinta, tempat penulis saling bercerita dan berbagi, yang tak henti-hentinya memberikan motivasi dan dukungan untuk slalu berusaha terbaik untuk masa depan.
3.
Deknie dan Adam, atas doa dan dukungan kepada penulis untuk menyelesaikan kuliah S1 ini.
4.
Bapak Dr. Ing. Mudrik Alaydrus, selaku dosen pembimbing atas bimbingan yang telah diberikan di dalam penulisan laporan Tugas Akhir ini.
5.
Seluruh Dosen Teknik Elektro Universitas Mercubuana yang telah memberikan ilmu yang sangat berguna bagi masa depan penulis.
6.
Teman – teman seperjuangan di Teknik Elektro Program Kelas Karyawan Universitas Mercubuana angkatan IX.
7.
Dan seluruh pihak yang secara langsung maupun tidak langsung yang telah membantu penulis. Penulis menyadari bahwa penulis masih memiliki banyak kekurangan, baik
dalam penulisan laporan maupun pemahaman materi. Oleh karena itu, untuk mendapatkan hasil yang lebih baik di masa depan penulis sangat mengharapkan masukan, kritik, serta saran atas apa yang telah penulis lakukan.
v
Akhir kata, semoga laporan ini dapat bermanfaat dan menjadi inspirasi bagi semua pihak termasuk penulis pribadi.
Jakarta, Agustus 2009
Penulis
vi
DAFTAR ISI Lembar Judul………………………………………………………………… i Lembar Pernyataan………………………………………………………….
ii
Lembar Pengesahan…………………………………………………………
iii
Abstraksi…………………………………………………………………….. iv Kata Pengantar………………………………………………………………
v
Daftar Isi……………………………………………………………….. …… vii Daftar Tabel…………………………………………………………………. ix Daftar Gambar……………………………………………………………… BAB I
x
PENDAHULUAN………………………………………………… 1 1.1.Latar Belakang……………………………………………….
1
1.2.Rumusan Masalah……………………………………………
1
1.3.Batasan Masalah …………………………………………….
2
1.4.Tujuan Penulisan……………………………………………... 2 1.5.Metode Penelitian…………………………………………….. 3 1.6.Sistematika Penulisan………………………………………… 3 BAB II
DASAR TEORI…………………………………………………… 4 2.1 Channel Coding………………………………………………. 4 2.2 Block Code…………………………………………………… 5 2.2.1 Hamming Distance…………………………………….. 6 2.2.2 Code Weight…………………………………………… 6 2.3 Convolutional Code………………………………………….
6
2.3.1 Proses Encoding………………………………………... 7 2.3.2 Proses Decoding………………………………………… 10 2.4 Convolutional Turbo Code…………………………………… 10 2.4.1 Proses Encoding………………………………………… 11 2.4.2 Proses Decoding ………………………………………… 14 2.5 Interleaver…………………………………………………….. 17 2.5.1 Blok Interleaver………………………………………… 18 2.6 Modulasi……………………………………………………… 19 2.6.1 PSK……………………………………………………… 19
vii
2.6.2 QAM……………………………………………………..19 2.7 Kanal ……………………………………………………….. …. 19 2.7.1 AWGN…………………………………………………. 19 2.7.2 Rayleigh Fading……………………………………….. 19 BAB III METODE PENELITIAN…………………………………………. 22 3.1 Pemilihan Parameter………………………………………….
22
3.1.1Bit Input………………………………………………… 22 3.1.2 Blok Interleaver………………………………………… 22 3.1.3 Modulasi………………………………………………… 23 3.1.4 Eb/No…………………………………………………… 23 3.1.5 Pergerakan User………………………………………… 23 3.2 Blok Diagram…………………………………………………. 23 3.2.1 Blok Diagram Pengirim………………………………… 24 3.2.2 Blok Diagram Penerima……………………………….. 24 3.2.3 Kanal…………………………………………………… 25 3.3 Diagram Alir…………………………………………………… 25 3.3.1Pengirim…………………………………………………. 26 3.3.2Penerima………………………………………………… 27 BAB IV ANALISA DATA DAN PEMBAHASAN………………………… 29 4.1 Perbandingan Performansi Dengan Perbedaan Penggunaan Modulasi…………………………….. 29 4.2 Perbandingan Performansi Dengan Perbedaan Penggunaan Kanal………………………………… 32 4.3 Perbandingan Performansi Dengan Perbedaan Kecepatan User…………………………………… 35 BAB V
KESIMPULAN……………………………………………………. 38
Daftar Pustaka……………………………………………………………….
viii
40
DAFTAR TABEL Tabel 2.1 State enkoder untuk m = 2 (2)……………………………………… 13 Tabel 2.2. Transisi state untuk m = 2 (2) …………………………………....... 13
ix
DAFTAR GAMBAR Gambar 2.1
Diagram Blok Sistem Transmisi……………………………..… 4
Gambar 2.2
Rangkaian dasar encoder convolutional codes………………… 7
Gambar 2.3
Tree diagram…………………………………………………… 8
Gambar 2.4
Trellis diagram……………………………………………….… 9
Gambar 2.5
Enkoder kode turbo…………………………………………..… 11
Gambar 2.6
Enkoder konvolusional konvensional……………..…………… 12
Gambar 2.7
Enkoder RSC…………………………………………………… 12
Gambar 2.8
Diagram state dan trellis konvolusional kode………..………… 14
Gambar 2.9
Diagram blok dekoder kode turbo……………………………… 15
Gambar 2.10 Interleaver menaikkan bobot kode c3 dibandingkan c2...……… 18 Gambar 2.11 Interleaver blok………………………………………………… 18 Gambar 2.12 Efek doppler dalam sistem komunikasi mobile……………..… 21 Gambar 3.1
Block Diagram………………………………………………… 23
Gambar 3.2
Diagram Alir…………………………………………………… 26
Gambar 4.1
Kurva BER berbanding Eb/No dengan Modulasi QPSK, Input 153600 bit…………………………..… 29
Gambar 4.2
Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Input 153600 bit……………………………... 30
Gambar 4.3
Kurva BER berbanding Eb/No dengan Modulasi 16QAM, Input 153600 bit…………………………... 30
Gambar 4.4
Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Input 153600 bit…………………………... 31
Gambar 4.5
Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Input 153600 bit, Kanal AWGN……………………………..… 32
Gambar 4.6
Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Input 153600 bit, Kanal AWGN&Rayleigh Fading…………… 32
Gambar 4.7
Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Input 153600 bit, Kanal AWGN……………………………….. 33
Gambar 4.8
Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Input 153600 bit, Kanal AWGN&Rayleigh Fading…………… 33
x
Gambar 4.9
Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Kanal AWGN&Rayleigh Fading, Kecepatan 0 km/jam, Input 153600 bit……………………………………………….. 35
Gambar 4.10 Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Kanal AWGN&Rayleigh Fading, Kecepatan 100 km/jam, Input 153600 bit………………………………………………... 35 Gambar 4.11 Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Kanal AWGN&Rayleigh Fading, Kecepatan 0 km/jam, Input 153600 bit……………………………………………..…. 36 Gambar 4.12 Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Kanal AWGN&Rayleigh Fading, Kecepatan 100 km/jam, Input 153600 bit………………………………………………... 36
xi
BAB I PENDAHULUAN 1.1. LATAR BELAKANG Komunikasi wireless atau komunikasi tanpa kabel adalah primadona dalam dunia pertelekomunikasian. Saat ini, setiap perangkat telekomunikasi yg dimiliki oleh setiap orang sudah pasti memiliki kemampuan berkomunikasi tanpa kabel. Seiring dengan perkembangan jaman, semakin banyak penemuanpenemuan baru dalam bidang telekomunikasi. Perangkat semakin kecil, namun kemampuannya malah menjadi dua kali lipat atau bahkan lebih. Jangkauan semakin jauh dan sinyalnya pun semakin kuat dari sebelumnya. Tantangan yang harus dihadapi oleh para penemu atau peneliti saat ini adalah bagaimana membuat sistem komunikasi tanpa kabel yg bisa diakses oleh orang banyak dengan kecepatan tinggi dan bandwidth yg lebar, namun juga memiliki sistem reabilitas data yang baik. Untuk memperoleh reabilitas data yang baik dalam suatu komunikasi data secara nirkabel atau tanpa kabel tentunya terbagi berlapis – lapis. Jika berbicara secara Service Layer, maka setiap layer tentunya memiliki struktur pemrosesan data tersendiri. Pada pembahasan kali ini, penulis akan mencoba menganalisa perbandingan reabilitas data dari dua buah pengkodean kanal yang berbeda. 1.2. RUMUSAN MASALAH Pada sistem komunikasi data, pengkodean kanal atau channel coding berfungsi sebagai penjaga agar bit informasi yang dikirimkan dijamin reabilitas nya sampai ke penerima. Reabilitas disini kaitannya adalah dengan kevalidan suatu data yg dikirim dari si pengirim sampai ke penerimanya. Jika data tidak valid, maka informasi yg akan disampaikan ke penerima pun tidak akan valid. Pada sistem channel coding, ada dua tipe pengkodean yg masing-masing memiliki perbedaan. Dua tipe tersebut adalah backward error control dan forward error control. Backward error control berarti bahwa jika suatu data yg diterima memiliki error, maka sang penerima atau receiver akan meminata pengirim atau transmitter untuk mengirim ulang datanya.
1
2
Sedangkan pada Forward Error Control, jika terjadi error pada suatu data, maka si Receiver akan langsung mengkoreksi error tersebut sehingga menjadi benar. Pada teknologi saat ini, sistem channel coding yg digunakan adalah Forward Error Control. Dimana Forward Error Control sendiri memiliki banyak sekali varian yang bisa dibedakan dari cara mengkoreksi errornya, efisiensi dayanya, tingkat Bit Error Rate (BER), dll. Pada pembahasan skripsi ini, penulis akan membandingkan performansi dua buah metode forward error control, yaitu Convolutional Codes yg saat ini digunakan pada sistem komunikasi seluler dan Convolutional Turbo Codes yang kemungkinan besar akan digunakan pada komunikasi seluler generasi ke-4. Kinerja kedua channel coding ini akan di nilai berdasarkan besar daya yang dibutuhkan dalam menghasilkan suatu nilai Bit Error Rate tertentu. 1.3. BATASAN MASALAH Agar pembahasan topik skripsi ini tidak terlalu melebar maka dibutuhkan suatu pembatasan masalah. Beberapa poin penting yang difokuskan untuk dibahas adalah : a.
Secara garis besar, perbandingan dilakukan melalui perbedaan level BER & level Eb/No.
b.
Secara detail, perbandingan dilakukan dengan perbedaan pada penggunaan modulasi, kanal, dan kecepatan perpindahan user.
c.
Simulasi dilakukan dengan menggunakan software MATLAB.
1.4. TUJUAN PENULISAN Tujuan dari Skripsi ini adalah : Menganalisa dua buah teknik channel coding Convolutional Code dan Convolutional Turbo Code dengan cara membandingkan performansinya melalui penggunaan parameter yang berbeda.
3
1.5. METODE PENELITIAN Penelitian skripsi ini dilakukan dengan beberapa metode, yaitu : a.
Studi Pustaka Dengan melakukan pengumpulan data melalui buku-buku referensi, jurnal-jurnal, ataupun bahan-bahan lain yang didapat dari internet
b.
Studi Lapangan Dengan melakukan simulasi pada software yg dibuat oleh penulis, kemudian membandingkannya dengan teori yg ada.
c.
Tanya Jawab Dengan melakukan tanya jawab kepada dosen pembimbing, serta terlibat aktif dalam diskusi kepada senior – senior yang sudah cukup ahli di bidang komunikasi data dan bidang pengolahan sinyal digital.
1.6. SISTEMATIKA PENULISAN Secara garis besar sistematika penulisan tugas akhir ini terdiri dari bab dengan metode penyampaian sebagai berikut: BAB I PENDAHULUAN Menerangkan latar belakang masalah, maksud dan tujuan, pembatasan masalah, metodologi penelitian dan sistematika penulisan. BAB II DASAR TEORI Menerangkan tentang dasar teori channel coding, convolutional & turbo code, Interleaver, Modulasi, Kanal. BAB III METODE PENELITIAN Menjelaskan cara pengambilan dan pengolahan data dengan menggunakan simulasi software yang dibuat. BAB IV ANALISA DATA DAN PEMBAHASAN Membahas tentang keterkaitan antar faktor-faktor dari data yang diperoleh kemudian menganalisa proses dan hasil penyelesaian masalah. BAB V KESIMPULAN Merupakan kesimpulan dari seluruh pembahasan pada penulisan skripsi ini.
BAB II DASAR TEORI 2.1 CHANNEL CODING Pada sistem pentransmisian data dari suatu pengirim ke penerima, tahapan yg dilalui oleh data tersebut tentunya sangat panjang. Secara garis besar, data pertama kali di kodekan oleh Encoder, kemudian data tersebut dimodulasikan agar mampu ditransmisikan melalui media transmisi yang akan digunakan. Di bawah ini merupakan suatu diagram blok pada sistem pentransmisian data secara garis besar. Channel Encoder
Data bit Input (N)
Mapper / Modulasi
Interleaver
Noise AWGN
Rayleigh Fading
Data bit Output (N)
Channel Decoder
Deinterleaver
Demapper / Demodulasi
Gambar 2.1 Diagram Blok Sistem Transmisi Pada salah satu bagian diatas, Channel Coding berfungsi menjaga data dari error yg mungkin terjadi selama proses transmisi dengan cara menambahkan bit redundansi kedalam data yang akan dikirimkan. Posisi Bit redundansi ini memiliki dua sisi, yaitu, di satu sisi dapat menjamin reabilitas data, namun di satu sisi bit redundansi ini malah menambah rate transmisi, yang artinya bisa mengurangi efisiensi dari bandwidth. Untuk mengatasi hal ini, maka digunakan teori Shannon, dimana disebutkan melalui persamaan : C = B log2 (1 + P/NoB ) = B log2 ( 1 + S/N ) ……………… ……………....(2.1) P = EbRb …………………………………………………………..………………………………………(2.2) C/B = log2 (1 + EbRb/NoB ) ……………………………………………..…...(2.3)
4
5
Dimana, C adalah kapasitas kanal atau laju bit rate (Bps). B adalah Bandwidth (Hz), P adalah daya sinyal yang diterima (Watt). No adalah single sided noise power density (Watt/Hz). Eb adalah energi rata-rata tiap bit. Rb adalah bit rate transmisi. Dan C/B adalah efisiensi Bandwidth. Persamaan ini menjelaskan bahwa, nilai dari efisiensi bandwidth sesungguhnya dapat dihitung melalui nilai-nilai P, No, Eb, Rb, dan B, sehingga efisiensi bandwidth ini bisa menjadi optimum. Pada sisi penerima, Channel coding melakukan fungsi deteksi dan koreksi error. Channel Coding membagi fungsi ini dengan dua cara, yaitu Backward Error Control dan Forward Error Control. Backward Error Control melakukan control error dengan cara, penerima meminta data dikirim ulang oleh pengirim, saat penerima mendeteksi terjadinya error. Sedangkan Forward Error Control memiliki fungsi yg lebih baik yaitu penerima langsung mengkoreksi error yg ada pada saat penerima mendeteksi terjadinya error. Forward error control sendiri secara garis besar memiliki dua macam tipe dasar yaitu Block Code dan Convolutional Code. Untuk lebih jelasnya hal ini akan dibahas pada sub-bab selanjutnya.
2.2 BLOCK CODE Pada block code, sejumlah bit pariti ditambahkan pada bit informasi sehingga terbentuk sebuah codeword atau code block. Pada bagian pengirim, sejumlah k bit informasi dan r bit pariti dikodekan kedalam n code bit. Dengan demikian jumlah bit redundansi r yang ditambahkan pada data informasinya adalah sebanyak n-k bit untuk digunakan pada proses deteksi dan koreksi error yang mungkin terjadi. Block code yang dihasilkan dapat direpresentasikan dalam bentuk (n,k) code, dan rate dari kode tersebut adalah sebesar Rc = k/n. Kemampuan suatu block code dalam mengkoreksi error yang timbul ditentukan oleh jarak antara codewords (Hamming Distance) dan bobot dari codewords tersebut (Code Weight).
6
2.2.1 HAMMING DISTANCE Hamming distance adalah jarak minimum antara dua buah codewords (dmin). Contoh 2.2.1 : C1 = 0000, C2 = 0101, C3 = 1010, C4 = 1111. Jarak (d) antara C2 dan C3 adalah 4, jarak antara C2 dan C4 adalah 2, jarak antara C3 dan C2 adalah 2. Sehingga seperti yg tertera pada contoh 2.2.1, jarak minimum antar codewords (dmin) adalah 2. 2.2.2 CODE WEIGHT Code weight sendiri pada contoh 2.2.1 diatas adalah nilai dari codeword tersebut, seperti misalnya C2 = 0101, maka Code Weight dari codeword ini adalah 5. Nilai hamming distance & code weight ini sangat penting jika : Suatu Codewords menerima e error, dan nilai e tersebut lebih kecil dari jarak minimum codewords (e < dmin), maka hal ini memungkinkan untuk mendeteksi adanya error. Suatu Codewords menerima e error, dan nilai 2e+1 lebih kecil dari jarak minimum codewords (2e+1 < dmin), maka hal ini berarti memungkinkan untuk mendeteksi error tersbut sekaligus mengkoreksinya sampai menjadi bit informasi yang sesungguhnya. Untuk mendeteksi dan mengkoreksi suatu error, diperlukan nilai Hamming Distance lebih dari 3 (dmin > 3), sehingga pada contoh 2.2.1 diatas, error tidak dapat dikoreksi namun hanya bisa dideteksi.
2.3 CONVOLUTIONAL CODE Convolutional Codes adalah jenis pengkodean yg memiliki perbedaan dengan Block Code. Bit informasi tidak dikelompokkan ke dalam blok-blok yang berbeda sebelum dikodekan (codewords). Proses pengkodean dilakukan dengan cara melakukan konvolusi aliran bit – bit informasi yang diterima secara kontinu menjadi urutan bit output yang kontinu pula. Konvolusi ini mengakibatkan terjadinya Coding Gain yang lebih besar dibandingkan dengan Block Code dengan tingkat kompleksitas yang sama. Dengan adanya proses konvolusi yang menyebabkan bit – bit keluaran tergantung pada bit – bit masukan yang sedang di proses dan dari deretan bit – bit
7
sumber sebelumnya, maka proses ini akan membutuhkan suatu memori. Dalam prakteknya, bentuk memori ini dapat berupa shift register dengan panjang tertentu (constrain length). Pada shift register ini, konvolusi yang dilakukan adalah dengan membentuk dua buah adder modulo-2 yang melakukan operasi XOR. Hasil dari kedua XOR ini di switch bolak – balik untuk mendapat urutan kode. Pada pengkodean konvolusi ini, tiap codeword selain bergantung pada message yang bersesuaian, juga tergantung pada m blok message sebelumnya. Satu set codeword dengan k input, n output dan tingkat memori m disebut dengan kode konvolusi (n,k,m). Rate kode didefinisikan R = k/n. Karena pengkodean konvolusi memiliki tingkat memori maka harus diimplementasikan dengan rangkaian logika sequensial.
2.3.1 PROSES ENCODING Bentuk rangkaian encoder dari convolutional codes adalah seperti pada gambar 2.1. Encoder ini terdiri dari shift register 3-bit yang juga berfungsi sebagai memori dan dua buah adder modulo-2 untuk operasi konvolusi. Tiap bit masukan yang diberikan akan memberikan hasil dua bit keluaran, masing-masing dari sebuah adder modulo-2. Encoder yang digambarkan tersebut dikatakan memiliki constrain length 3 dengan code rate 1/2.
Gambar 2.2. Rangkaian dasar encoder convolutional codes Encoder konvolusi berhubungan dengan memori maka harus disediakan cara yang sederhana untuk menentukan deretan bit keluaran khusus yang dibangkitkan dari deretan bit masukan yang diberikan.
8
Teknik yang berdasarkan penyajian secara diagram dapat digunakan, misalnya :
Tree diagram
State diagram
Trellis diagram
Teknik yang paling sering digunakan adalah trellis diagram, karena dengan diagram ini dapat digambarkan sekaligus proses decodingnya. Namun demikian terlebih dahulu harus dibuat tree diagram atau state diagram dari keluaran untuk masing-masing kemungkinan masukan. Tree diagram untuk keluaran ditampilkan pada gambar 2. 00 000 00
A
000 O1O2
00 000
A 001 11
B
00 000 01 001 11
B 011
0/1 0 0 0
C
010
10
D
S3S2S1
10 01 010
100
A
C 101 01
B
001 11 11 011 10
110
C
D 111 00
D
A
11 001 01 010
B C
10 011
D
10 100
A
01 101 11 110
B C
00 111
D
00 000
A
11 001 01 010
B C
10 011
D
10 100
A
01 101 11 110
B C
00 111
D
Gambar 2.3 Tree diagram Tree diagram pada gambar 2 menunjukkan bahwa, jumlah cabang dalam tree digandakan untuk tiap bit masukan yang baru. Dapat dilihat bahwa tree berulang setelah cabang dari level kedua, sebab setelah level ini hanya terdapat empat simpul unik yang berbeda. Simpul-simpul ini disebut sebagai state dan diberi simbol A, B, C, dan D.
9
Setiap satu simpul-simpul ini menghasilkan pasangan simpul keluaran yang sama dari bit-bit keluaran dan state simpul baru terjadi, tanpa melihat posisi dari simpul dalam tree. Misalnya, dari setiap simpul C pasangan yang sama akan muncul yaitu: keluaran 10 dan state baru A untuk masukan 0, atau keluaran 01 dan state baru B untuk masukan 1. Berbekal tree diagram tersebut selanjutnya dapat dibuat trellis diagram. Contoh trellis diagram untuk tree diagram diatas digambarkan pada gambar 3. Trellis diagram tersebut menunjukkan semua keluaran yang dihasilkan dari encoder ini untuk setiap masukan. Selanjutnya untuk deret masukan yang khusus, sebuah path tunggal melalui trellis dihasilkan, yang akan menghasilkan deretan bit-bit keluaran.
C
D
1
00
11
11
01 01
2
00
3
01 01 10
00
4
10
00
11
10
10
0
00
11
01 01 10
11
10 01
11
branch nodes
B
00
10
11
11
00
11
10
00
11
A
00
5
01 01 10
00
6
branch level
Gambar 2.4 Trellis diagram Misalkan deret bit masukan adalah 110101…, mula-mula diasumsikan shift register dalam keadaan reset (semua bit 0). Setelah bit pertama dari menjadi 11. Setelah bit masukan kedua di shift isi shift register menjadi 011 bit masukan di shift isi dari shift register menjadi 001. Keluaran kedua adder akan dan keluaran kedua adder adalah 10, demikian seterusnya. Path yang dihasilkan adalah garis biru pada gambar 3 diatas.
10
2.3.2 PROSES DECODING Fungsi dari decoder adalah untuk menentukan deretan bit keluaran yang paling mirip (most likely) dari aliran bit masukan yang diberikan dan pengetahuan dari encoder yang digunakan pada sumber. Prosedur decoding equivalen dengan membandingkan deretan bit yang diterima dengan semua kemungkinan deretan bit yang mungkin diperoleh dari hasil encoder dan memilih deretan bit yang paling dekat dengan deretan bit yang diterima. Untuk menentukan deretan bit yang paling dekat dengan bit yang diterima adalah dengan cara menghitung Hamming distancenya, deretan bit yang memiliki Hamming distance paling minimumlah yang dipilih untuk deretan bit tersebut. Pada dasarnya trellis diagram selalu mempunyai dua buah path untuk tiap node. Path-path yang tidak terputus merupakan survivor path yang berguna untuk menentukan decoding path dalam trellis diagram. Path yang dipilih sebagai path hasil decodong adalah path yang tidak terputus sepanjang trellis diagram dan memiliki aggregate Hamming distance minimum. Algoritma pencarian path seperti ini disebut algoritma Viterbi, sedangkan decoder yang berfungsi untuk menemukan path yang paling mirip dengan deretan bit yang telah diterima dikenal dengan nama maximum-likelihood decoder.
2.4 CONVOLUTIONAL TURBO CODE Kode turbo (turbo code) pertama kali diperkenalkan oleh G. Berrou dkk (1), merupakan paradigma baru untuk forward error-correction. Kode turbo ini berhasil mencapai unjuk kerja koreksi kesalahan mendekati batas teori Shannon . Untuk nilai BER (bit error rate) 10-5 dan laju kode ½ diperlukan Eb/No sebesar 0,7 dB. Pengkodean turbo memperkenalkan beberapa konsep baru seperti penggunaan pendekodean secara iterative dan interleaving tak seragam. Metode pendekode yang digunakan adalah algoritma Maximum A posteriori Probability (MAP).
11
2.4.1 PROSES ENCODING Secara umum enkoder kode turbo dapat digambarkan seperti pada Gambar 2.1. Enkoder kode turbo menggunakan dua enkoder recursive systematic convolutional (RSC) yang identik yang terhubung secara paralel dan pada enkoder RSC yang kedua sebelumnya dilewatkan ke sebuah interleaver (2). Kedua RSC tersebut disebut sebagai enkoder konstituen dari enkoder kode turbo.
C1k C2k
Uk
Enkoder RSC 1 C3k Interleaver
Puncture dan Paralel ke serial
C'2k
U'k
Enkoder RSC 2 C'3k
Gambar 2.5 Enkoder kode turbo
Bit-bit informasi dikodekan oleh kedua enkoder RSC. Enkoder pertama beroperasi pada bit input sesuai urutan kedatangannya, sedangkan enkoder kedua beroperasi pada bit input hasil dari permutasi yang dilakukan oleh interleaver. Jika simbol input dengan panjang 1 dan ukuran simbol output adalah R, maka enkoder mempunyai laju kode rc = 1/R. Tergantung dari laju kode yang diinginkan, bit-bit paritas dari kedua enkoder konstituen dipuncture sebelum ditransmisikan. Bit-bit ekor (tail bits) akan ditambahkan pada akhir dari frame yang dikirimkan.
RECURSIVE SYSTEMATIC CONVOLUTIONAL (RSC) Enkoder RSC diperoleh dari enkoder konvolusional nonrekursive
nonsistematik (konvensional) dengan mengumpan balik salah satu output enkoder menjadi
input
konvensional.
(4).
Gambar
2.2
menunjukkan
enkoder
konvolusional
12
Gambar 2.6 Enkoder konvolusional konvensional Secara umum untuk menyatakan
sebuah enkoder konvolusional
konvensional digunakan representasi oktal dari polinomial dalam D. Operator delay D mengindikasikan sebuah jeda (delay) satu waktu simbol, Dn mengindikasikan n kali jeda waktu simbol. Sehingga dalam gambar 2.2 diatas dapat dinyatakan generator aliran untuk enkoder tersebut adalah g1 = 1 + D + D2 dan g2 = 1 + D2 . Kadang penulisan generator aliran untuk suatu enkoder konvolusional dinyatakan dalam biner atau oktal, yaitu g1 = [111]2 = (7)8 dan g2 = [101]2 = (5)8. Untuk lebih kompak, biasanya generator aliran suatu enkoder dinyatakan dalam bentuk
G = [g1 , g2].
Generator aliran enkoder RSC dinyatakan dalam G = [1 , g2/g1] dimana 1 menandakan output sistematik, g2 menandakan keluaran umpan maju, dan g1 menandakan umpan balik ke input enkoder RSC. Gambar 2.3 menunjukkan enkoder RSC yang dihasilkan dari enkoder konvolusional konvensional pada gambar 2.2.
c1
+ x
+
D
D
+ c2
Gambar. 2.7 Enkoder RSC Bit keluaran dari enkoder tergantung dari isi dari operator delay D, yang dikenal sebagai encoder state. Untuk enkoder dengan m operator delay maka ada
13
2m state untuk tiap enkoder. Dalam enkoder pada gambar 2.2 dan gambar 2.3 dimana mempunyai m = 2 maka ada 22=4 state yang mungkin yaitu : Tabel 2.1 State enkoder untuk m = 2 (2) Isi D1 Isi D2 State 0
0
0
0
1
1
1
0
2
1
1
3
Berdasarkan tabel state yang mungkin pada tabel 2.1. dapat kita buat tabel transisi state sebagai berikut : Tabel 2.2. Transisi state untuk m = 2 (2) Bit
State awal
State akhir
Bit output
input D1
D2
State D1
D2
State C1
C2
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
2
1
1
0
0
1
1
0
0
0
1
1
1
0
1
1
1
0
2
0
0
0
1
0
2
0
1
1
1
0
1
1
0
2
1
1
3
0
1
0
1
1
3
0
1
1
0
1
1
1
1
3
1
1
3
1
0
Berdasarkan tabel 2.2 diatas maka dapat digambarkan diagram state dan trelis untuk enkoder dengan m = 2 sebagai berikut :
14 state k-1
state k
0(0,0)
0
1(1,0)
0 1(1,1)
3
1
0(1,0)
1 2
1(0,0) 0(1,0)
2
1 1(0,0)
2
1(1,1)
0(1,1)
0
1(0,1) 0(0,1)
3
0(0,1)
1(0,1)
0(1,1)
3
0(0,0)
1(1,0)
Diagram Trellis
Diagram State
Gambar 2.8 Diagram state dan trellis konvolusional kode
2.4.2 PROSES DECODING Fungsi dari decoder adalah untuk menentukan deretan bit keluaran yang paling mirip dari aliran bit masukan yang diberikan dan pengetahuan dari encoder yang digunakan pada sumber. Prosedur decoding sama dengan membandingkan deretan bit yang diterima dengan semua kemungkinan deretan bit yang mungkin diperoleh dari hasil encoder dan memilih deretan bit yang paling dekat dengan deretan bit yang diterima. Pada Algoritm Viterbi Decoding, teknik dasar yang digunakan adalah menggunakan metode Trellis diagram. Pada dasarnya trellis diagram selalu mempunyai dua buah path untuk tiap node. Path-path yang tidak terputus merupakan survivor path yang berguna untuk menentukan decoding path dalam trellis diagram. Path yang dipilih sebagai path hasil decoding adalah path yang tidak terputus sepanjang trellis diagram. Algoritma pencarian path seperti ini disebut algoritma Viterbi, dengan viterbi decoder inilah yang nanti digunakan pada program untuk mendapatkan kode asli dan juga dapat mendeteksi serta mengetahui letak kesalahan. Sementara itu pada Convolutional Turbo Code, decoder yang paling baik adalah dengan menggunakan decoder log-MAP. Secara umum dekoder log-MAP terlihat pada gambar 2.9, terdiri dari dua dekoder log-MAP yang terhubung secara paralel. Input dekoder log-MAP 1 berupa bit sistematik yang diterima dari kanal
15
yang telah terganggu noise ysk , redundan bit parity y pk dan umpan balik dari hasil dekoder log-MAP 2.
yks
L1(uk)
hilangkan bit ekor
l'
buat hard decission
+ hilangkan bit ekor tambah 0 pada ekor bit
de-interleaver
Le21(u)
Le21(u')
dekoder MAP 1
ysk
Le12(u')
Le12(u)
dekoder MAP 1
interleaver
ypk y1,sk
tambah bit ekor
interleaver
y'1,sk
y'pk
Gambar 2.9 Diagram blok dekoder kode turbo
Sebelum membahas mengenai algoritma dekoding yang digunakan yaitu algoritma log-MAP (2,6) maka terlebih dahulu perlu didefinisikan beberapa hal antara lain: N adalah ukuran frame dari simbol yang ditransmisikan k adalah indek wakru, k [1,N]
ck {c1k , ck2 ,..., ckq } adalah
kode
simbol
yang
dibangkitkan
oleh
enkoder
konvolusional, ckm (1,1) , m (1, q)
xk ( x1k, s , xk2, p , xk3, p ,...xkq , p ), {x1k, s , xk2, p ,...xkq , p } ( A, A) adalah simbol termodulasi. A adalah gain kanal untuk AWGN bernilai = 1. yk ( y1k, s , yk2, p , yk3, p ,... ykq , p ) adalah simbol yang diterima. y1N ( y1 , y2 ,..., yN ) adalah satu frame dari simbol yang diterima.
Perbandingan log probabilitas posteriori dari uk pada sinyal yang diterima y didefinisikan sebagai: P(uk 1 y1N ) (2.4) L(uk ) log N P(uk 0 y1 ) Keputusan pendekodean u~ dibuat berdasarkan tanda dari L(u ) : k
k
16
u~k sign[ L(uk )]
(2.5)
L(uk) dihitung menggunakan tiga buah elemen yaitu L_apriori, L_channel dan Le(uk). L_apriori adalah informasi apriori yang berdasarkan pada bit masukan uk pada waktu k, yang diperoleh dari dekoder sebelumnya. L_channel adalah bit sistematik yang diterima pada waktu k. Sehingga persamaan (II.1) dapat ditulis sebagai : ~ ~k 1 ( s' ) k ( s) ke ( s' , s) L(uk ) Le (uk ) Lc y1k, s log u ~ ~ k 1 (s' ) k (s) ke (s' , s) u
L _ apriori L _ channel Le (uk )
(2.6)
( ) menandakan penjumlahan seluruh pasangan cabang transisi yang mungkin u
(sk-1,sk) pada waktu k untuk input uk =1 dan
( )
menandakan penjumlahan
u
seluruh pasangan cabang transisi yang mungkin (sk-1,sk) pada waktu k untuk input uk = 0. Lc adalah faktor reliabel kanal yang dihitung berdasaran :
Lc
4 A SNR _ b p
(2.7)
dimana A = 1 untuk kanal AWGN, SNR_b adalah perbandingan energi bit dan E noise b , p menandakan 1/rc dengan rc adalah laju enkoder kode turbo. N0
Le(uk) adalah informasi ekstrinsik berdasarkan pada semua informasi paritas dan sistematik kecuali nilai sistematik pada waktu k. Le(uk) dihitung menggunakan persamaan:
~ L (u ) log ~
k 1
u
e
~ ( s ' ) k ( s ) ke ( s ' , s )
~ e k 1 ( s ' ) k ( s ) k ( s ' , s )
k
u
(2.8)
dimana
i2 q
1 2
e ( s ' , s) exp Lc yki , p cki
(2.9)
17
~
~k ( s ), k 1 ( s ' ) dapat dihitung secara rekursive dengan kondisi awal menurut persamaan berikut :
~ ( s ' ) ( s' , s) ~ ( s) ~ (s' ) (s' , s) k 1
k
(2.10)
s'
k
k 1
s
k
s'
jika s 1 lainnya
1 0
~0 ( s )
~
~
k 1
( s' ) ( s' , s) ( s' ) ~ ( s' ) (s' , s) k 1
k
(2.11)
s'
k 2
s
1 0
~
N ( s)
k
s'
jika s 1 lainnya
1 1 1 k ( s ' , s ) exp Le (uk ) uk Lc y1k, s c1k exp Lc yki , p cki (2.12) 2
2
q
i2
2
Sebagai contoh, pada suatu iterasi tertentu, dekoder 1 L1(uk) dihitung dengan cara : e L1 (uk ) Lc y1k, s Le21 (uk ) L12 (uk )
(2.13)
u~k sign[ L1 (uk )]
(2.14)
dimana L1 (uk ) diperoleh dari persamaan (II.3). Le21 (uk ) adalah informasi e ekstrinsik untuk dekoder 1 diturunkan dari dekoder 2, dan L12 (uk ) adalah bagian
ketiga dari persamaan (II.3) dimana digunakan sebagai informasi ekstrinsik untuk dekoder 2 yang diturunkan dari dekoder 1. Kedua dekoder saling berbagi informasi satu dengan lain. Nilai L (u ) memutuskan derajat reliabilitas dari u~ . 1
k
k
2.5 INTERLEAVER
Interleaver diletakkan diantara dua komponen enkoder RSC dalam sistem enkoder kode turbo. Interleaver digunakan untuk menghasilkan sifat acak dari aliran input. Juga digunakan untuk menaikkan bobot dari codewords yang dihasilkan enkoder RSC.
18 kode sistematik
x
Enkoder RSC 1 kode bobot rendah Interleaver
c1 c2
c3
Enkoder RSC 2 kode bobot tinggi
Gambar 2.10 Interleaver menaikkan bobot kode c3 dibandingkan c2
Dari gambar 2.5 terlihat bahwa aliran input x menghasilkan urutan kode konvolusional rekursive c2 dengan bobot yang rendah untuk enkoder RSC 1. Untuk menghindari enkoder RSC 2 menghasilkan urutan kode dengan bobot yang rendah, interleaver melakukan permutasi urutan input x untuk memperoleh urutan yang berbeda dengan harapan akan menghasilkan urutan kode konvolusional rekursive c3 dengan bobot yang tinggi. Sehingga kode yang dihasilkan enkoder kode turbo akan mempunyai bobot yang moderat, hasil kombinasi dari bobot kode enkoder 1 yang rendah dan bobot kode enkoder 2 yang tinggi. Dengan menghindari bobot codewords yang rendah, BER kode turbo dapat meningkat secara signifikan. Ada beberapa macam interleaver yang digunakan dalam kode turbo antara lain : interleaver blok, interleaver random dan interleaver S-random (4).
2.5.1 BLOK INTERLEAVER
Interleaver blok merupakan interleaver yang paling banyak digunakan dalam sistem komunikasi. Cara penulisan dalam interleaver blok dimulai dari atas ke bawah dan kemudian dari kiri ke kanan, seperti memasukkan data berdasarkan kolom. Sedangkan pembacaan berdasarkan baris yaitu dari kiri ke kanan dan kemudian dari atas ke bawah. Baca
Tulis
0
1
0
1
0
1 0
1 0
0 1
1 0
1 1
Gambar 2.11 Interleaver blok
19
Dari gambar 2.10 diatas, ditunjukkan bahwa interleaver blok menuliskan data [010110001110011] dan membaca data [010101101100101]
2.6 MODULASI 2.6.1 PSK
Modulasi Phase Shift Keying merupakan modulasi digital yang mengubah bit-bit input menjadi level sinyal yang disimbolkan melalui perbedaan fasa. Pada QPSK terdapat empat buah level sinyal, yang merepresentasikan empat kode biner, yaitu ‘00’, ‘01’, ‘11’, ‘10’ yang disimbolkan dengan perbedaan fasa 900. Sedangkan pada 8PSK, terdapat 8 buah level sinyal yang disimbolkan dengan perbedaan fasa 45o. Setiap level sinyal 8PSK mempresentasikan 8 bit input. 2.6.2 QAM
Pada M-ary modulasi PSK, amplitudo dari sinyal yang ditransmisikan konstan, sehingga diperoleh diagram konstelasi yang berbentuk lingkaran. Dengan merubah amplitudo dan fasa dari sinyal pembawa maka akan diperoleh modulasi Quadratude Amplitude Modulation (QAM). Modulasi 16-QAM merupakan modulasi QAM dimana dalam satu simbolnya memiliki empat bit. Sedangkan modulasi 64-QAM merupakan modulasi QAM dimana dalam satu simbolnya memiliki enam bit.
2.7 KANAL 2.7.1 AWGN (Additive White Gaussian Noise)
Noise adalah suatu fenomena alami yang selalu terjadi tanpa bisa dihindari. Noise in terjadi karena adanya pengaruh dari luar, seperti komponen– komponen elektronik, penguat pada sistem komunikasi, serta kanal transmisi. Model matematis dari noise yang muncul pada kanal komunikasi dapat diwakili oleh noise kanal additive, yang memiliki distribusi probabilitas gaussian, serta merata pada semua band frekuensi dengan nilai yang relatif rendah. Fungsi pdf dari AWGN dinyatakan sebagai berikut : p ( x)
1 2
e ( x m x )
2
/ 2 2
(2.17)
dimana, mx merupakan rataan dan 2 merupakan variansi dari variabel acak.
20
2.7.2 RAYLEIGH FADING
Pada kanal komunikasi bergerak, distribusi Rayleigh biasa digunakan untuk menjelaskan perubahan waktu dari selubung sinyal fading yang diterima, atau selubung dari satu komponen multipath. Telah diketahui bahwa selubung dari jumlah antara dua sinyal derau gaussian membentuk distribusi Rayleigh. Distribusi Rayleigh mempunyai fungsi kerapatan probabilitas (probability density function - pdf) diberikan oleh : r r2 exp 2 2 p ( r ) 2 0
0 r
[2.18]
r 0
dimana adalah adalah nilai rms dari level sinyal yang diterima sebelum detektor, dan 2 adalah daya waktu rata-rata dari sinyal yang diterima sebelum detektor. Probabilitas bahwa selubung dari sinyal yang diterima tidak melebihi suatu harga R yang spesifik ditunjukkan dengan cumulative distribution function (CDF) atau fungsi distribusi kumulatif [3]: R2 P ( R) Pr (r R ) p (r ) dr 1 exp 2 2 o R
[2.19]
Nilai rata-rata rmean dari distribusi Rayleigh diberikan oleh:
rmean E r r p (r ) dr 0
2
1.2533
[2.20]
dan varian dari distribusi Rayleigh diberikan oleh 2 r , yang merepresentasikan daya ac dari sinyal selubung
2 r E r 2 E 2 r r 2 p(r ) dr 0
2 2
2 (2
2
) 0.4292 2
[2.21]
2.8 EFFEK DOPPLER
Sebuah mobile bergerak dengan kecepatan tetap v, sejauh d antara point A dan B, bilamana sinyal terima dari sumber remote S, seperti dilustrasikan pada Gambar 2.13 . perbedaan panjang path yang dilalui oleh gelombang dari sumber S sampai mobile pada point A dan B adalah d cos vt cos dimana
21
t adalah waktu yang diperlukan untuk mobile bergerak dari A sampai B, dan
adalah diasumsikan sudut datang jika sinyal datang dari jarak yang jauh. Perubahan fasa sinyal terima dikarenakan perbedaan panjang lintasan adalah
2 l
2 v l
cos
(2.15)
dan perubahan frekuensi atau doppler shift dinotasikan f d fd
1 v cos 2 t
(2.16)
dari persamaan diatas bahwa jika mobile bergerak mendekati arah gelombang, doppler shift akan bernilai positif, dan jika mobile bergerak menjauhi dari arah sinyal datang, doppler shift akan bernilai negatif.
Gambar 2.12 Efek doppler dalam sistem komunikasi mobile
BAB III METODE PENELITIAN
Pada Bab 3 ini akan dibahas mengenai parameter, blok rangkaian dan diagram alir sistem pengujian perbandingan BER dengan Eb/No pada Convolutional Code dan Convolutional Turbo Code. 3.1 PEMILIHAN PARAMETER Kinerja suatu system channel coding ditentukan oleh beberapa parameter yang juga berhubungan dengan pembangkitan sinyal channel coding itu sendiri. Parameter-parameter ini akan menentukan kualitas penerimaan, besar power yang dibutuhkan, kecepatan pengiriman data, dan keamanan data tersebut saat terkena oleh noise. Parameter – parameter utama dalam system convolutional & turbo code pada tugas akhir ini adalah sebagai berikut : 3.1.1 BIT INPUT Pada tugas akhir ini penulis menetapkan bit input yang digunakan sebesar 153600 bit. Penentuan ini didasari melalui serangkaian percobaan, sampai pada nilai sebesar 153600 bit dimana nilai ini yang terbukti memiliki kesesuaian dengan seluruh parameter-parameter yang akan diujikan nanti. Mengenai penentuan bilangan 0&1 pada bit-bit tersebut, pada program dilakukan perintah pengacakan angka 0&1 setiap program akan dimulai. 3.1.2 BLOK INTERLEAVER Besar blok Interleaver yang digunakan adalah 4 x 4. Besaran ini dipilih agar pengolahan data menjadi lebih cepat dengan blok yang tidak terlalu besar dan juga 4 x 4 merupakan blok yang akan memotong bit dengan jumlah genap, sehingga akan lebih mudah.
22
23
3.1.3 MODULASI Modulasi yang digunakan penulis pada system yang diuji adalah 4 PSK, 8 PSK, 16 QAM, 64 QAM. Pada Bab selanjutnya penulis akan membandingkan perbedaan penggunaan Modulasi, pada pengaruhnya terhadap kurva BER. 3.1.4 Eb/No Untuk Eb/No nilai nya dibuat tetap yaitu dari 0 dB sampai 60 dB. Rentang nilai ini sudah cukup untuk menunjukkan apakah daya yang dibutuhkan dalam system tersebut besar atau kecil untuk menghasilkan BER yang rendah. 3.1.5 PERGERAKAN USER Pada tugas akhir ini, penulis hanya membagi menjadi dua jenis pergerakan user. Pertama, User tidak bergerak atau diam, di simbolkan dengan kecepatan sama dengan nol. Kedua, User bergerak, disimbolkan dengan kecepatan sebesar 100 km/jam, kecepatan ini di analogikan user sedang bergerak menggunakan kendaraan. 3.2 BLOK DIAGRAM BIT
Data bit Input (N)
Symbol
Interleaver
Channel Encoder
Mapper / Modulasi
Symbol
Noise AWGN
Rayleigh Fading
BIT ERROR RATE
Data bit Output
BIT
BIT
Channel Decoder
BIT
Deinterleaver
Demapper / Demodulasi
Gambar 3.1 Block Diagram Pada simulasi yg dibuat untuk tugas akhir ini, block diagram terbagi menjadi tiga bagian besar, yaitu Blok pengirim, blok penerima, dan kanal. Untuk lebih jelasnya akan di terangkan dibawah ini.
24
3.2.1 BLOK DIAGRAM PENGIRIM Pada Blok pengirim, data input melalui tiga bagian, yaitu : Channel Encoder Perbedaan pada Channel Coding inilah alasan tugas akhir ini dibuat. Dua macam channel coding yang dibandingkan disini adalah Convolutional Codes dengan Convolutional Turbo Codes. Sistem Encoder yang digunakan oleh Convolutional Encoder dengan Convolutional Turbo Encoder hampir mirip, perbedaan utama nya terletak pada penggunaan Interleaver dan penggunaan RSC pada Convolutional Turbo Code. Untuk coding rate yang di gunakan pada Simulasi kali ini adalah, pada Convolutional digunakan dua buah data rate yaitu ½ dan 1/3. Hal ini dimaksudkan agar terlihat perbedaannya jika rate yg digunakan dinaikkan, maka akan ada hasil yg berbeda. Sedangkan pada Turbo code digunakan rate ½ saja.
Interleaver Blok interleaver yang dimaksud disini adalah interleaver selain interleaver
yang digunakan pada internal sistem Convolutional Turbo Code. Jadi fungsi utama Interleaver disini adalah agar data output dari Encoder di acak lagi dengan tujuan keamanan.
Modulator Modulator adalah suatu bagian yang digunakan untuk mengkonversi sinyal
dari suatu system menjadi sinyal yang bisa dilewatkan ke media transmisi. Pada simulasi ini terdapat empat jenis Modulasi atau bisa disebut Mapper yang bisa digunakan dan nantinya dibandingkan kinerjanya. Keempat modulasi tersebut adalah QPSK, 8PSK, 16QAM, 64QAM. Tujuan utama dari adanya empat buah modulasi ini adalah untuk mengetahui perbandingan pengaruh modulasi ini pada penggunaan channel coding yang berbeda.
25
3.2.2 BLOK DIAGRAM PENERIMA Pada Blok penerima, data yang telah melalui kanal masuk ke dalam tiga bagian blok penerima, yaitu :
De-Modulator Demodulator berfungsi mengubah kembali level symbol menjadi bit-bit
informasi. Demodulator yang digunakan pada simulasi adalah demodulator untuk 4PSK, 8PSK, 16QAM dan 64QAM.
De-Interleaver Deinterleaver merupakan bagian yang befungsi mengembalikan bit yang
teracak menjadi berurutan seperti sebagaimana mestinya. Jika pada pengirim menggunakan dimensi 4x4 bit, maka pada penerima pun dimensi yang digunakan juga 4x4.
Decoder Secara teori baik Convolutional code maupun Convolutional Turbo Code
bisa menggunakan teknik Algoritma Viterbi dalam melakukan Decoding. Namun seiring dengan adanya teknik max-logMAP, maka untuk Convolutional Turbo Code dianjurkan menggunakan teknik max-logMAP ini. 3.2.3 KANAL Kanal yang ada disimulasi ini dianalogikan sebagai Noise yang biasa terjadi pada pentransmisian data. Secara umum, Noise yang biasa terjadi adalah Noise yang muncul dari perangkat, kemudian Noise yang terjadi akibat pantulan sinyal yang berkali-kali atau jarak yang jauh. Noise yang muncul akibat perangkat diwakilkan dengan AWGN atau White Noise, sedangkan Noise akibat pantulan sinyal atau Multipath Fading digunakan jenis Rayleigh Fading. 3.3 DIAGRAM ALIR Pada gambar 3.3, diperlihatkan diagram alir dari simulasi yang dibuat. Secara garis besar simulasi dibagi menjadi dua bagian, yaitu bagian pengirim dan penerima. Sesuai penjelasan sebelumnya mengenai beberapa parameter di blok pengirim dan penerima, maka pada diagram alir di bawah dijelaskan lebih lanjut mengenai urutan proses suatu bit itu dari pengirim ke penerima sampai pada perbandingan kesalahan bit input dan bit output.
26 Mulai
De-Modulator Data Bit Input
QPSK
8PSK
16QAM
64QAM
Generate Random De-Interleaver 4x4 Blok
Tidak
Pakai Chanel Coding ?
Tidak
Ya
Pakai Chanel Coding ?
Channel Encoder Ya
Convolutional Code (Code Rate ½ & 1/3)
Convolutional Turbo Code (Code Rate ½)
Channel Decoder Algortima Viterbi (Convolutional Code)
Interleaver
Max Log-MAP (Convolutional Turbo Code)
4x4 Blok Data Bit Output Modulator QPSK
8PSK
16QAM
64QAM
Data Bit Output / Data Bit Input
Kanal AWGN
Bit Error Rate
AWGN & Rayleigh Fading
GRAFIK BER & Eb/No
Kecepatan 0 km/jam
100 km/jam Selesai
Gambar 3.2 Diagram Alir 3.3.1 PENGIRIM Simulasi dimulai dengan menentukan Bit Input yang akan masuk kedalam Channel Encoder. Yang ditentukan disini adalah Bit rate nya, bukan data 0 dan 1 nya. Data 0 & 1 yang digenerate dilakukan secara random menggunakan fungsi yang ada pada Matlab. Pada Channel Encoder, program melakukan tiga kali pengkodean, yaitu Convolutional code dengan coding rate ½, kemudian Convolutional Code dengan coding rate 1/3, lalu terakhir Convolutional Turbo Code dengan coding rate ½.
27
Ketiga pengkodean ini tidak dilakukan bersamaan, namun bergantian, sehingga prosesnya benar-benar dari awal sampai akhir lalu diulang kembali dengan channel coding yang berbeda. Selain menggunakan tiga kali pengkodean pada channel encoder, penulis juga menguji jika data input tidak melalui channel encoder, begitu pula nanti pada decodingnya. Dari grafik yang terbentuk maka akan terlihat perbedaannya yang cukup signifikan, dimana hal ini nanti akan dijelaskan di Bab IV. Pada interleaver, data keluaran encoder diacak secara vertikal dan horizontal dengan ukuran blok 4x4. Urutan pengacakannya yaitu bit dibaca vertikal, kemudian bit ditulis secara horisontal. Setelah proses pengacakan selesai, data langsung masuk ke dalam modulator dimana output dari modulator ini nantinya sudah tidak berupa bit-bit lagi, namun berubah menjadi sinyal yang dipresentasikan dengan simbol-simbol bilangan real maupun imajiner. Sama seperti Encoder, empat buah modulator yang ada bekerja secara bergantian. Jika modulator untuk 4PSK sudah selesai diproses sampai keluar Bit output nya maka, program mengulang dari awal bit input lalu menggunakan 8PSK sampai diproses keluar bit outputnya. Hal ini berulang sampai modulator 64QAM. Setelah terbentuk simbol-simbol, maka diberikan Noise berupa AWGN serta Fading berupa Rayleigh Fading pada bagian kanal. Dua hal ini dianalogikan sebagai pengganggu sinyal yang biasa terjadi pada media transmisi. Output kanal ini nantinya memiliki Error yang bisa membuat sistem channel decoder bekerja untuk menentukan mana data yang benar, sehingga proses koreksi errornya dapat terlihat berjalan. Adapun beberapa bit yang tidak bisa dikoreksi lagi itulah yang nanti nya jadi acuan penentuan rasio bit error antara bit output dengan bit input. 3.3.2 PENERIMA Sistem penerima dimulai dari blok de-modulator. Pada de-modulator cara kerjanya kebalikan dari modulator yaitu mengubah simbol-simbol menjadi bit-bit. Jika dilihat dari program, bit-bit yang muncul tentunya menjadi berantakan atau banyak errornya, dimana error ini tadi ditimbulkan dari noise dan fading pada kanal. Adapun cara kerja demodulator yaitu secara berurutan sesuai dengan modulator yang sedang digunakan. Jika modulator yang digunakan 16QAM, maka demodulatornya juga 16QAM.
28
Setelah muncul bit-bit output dari demodulator, maka tugas deinterleaver adalah untuk mengembalikan pengacakan bit-bit kembali ke urutan semula. Sama seperti Interleaver yaitu blok berukuran 4x4 bit. Urutan nya menjadi baca bit diurutkan vertikal, kemudian tulis bit diurutkan horisontal. Setelah bit berurutan seperti yang seharusnya, maka saatnya bit-bit tersebut dikoreksi errornya melalui chnnel decoder. Adapun bit yang tidak dikoreksi errornya, statusnya langsung sebagai bit Output yang langsung di bandingkan dengan Bit Input. Sesuai dengan Encoder nya yang berjumlah dua jenis. Maka decodernya pun ada dua tipe, dimana fungsinya menyesuaikan penggunaan Encodernya. Jika encodernya convolutional code maka decodernya menggunakan Viterbi decoding, sedangkan untuk Convo turbo code, decodernya menggunakan logMAP. LogMAP sendiri pada program Matlab nya mempunyai skrip yang cukup panjang, sehingga fungsi decoding di pisah dari program utama. Setelah muncul bit output yang telah dikoreksi dan dihilangkan bit paritinya, maka bit output langsung dibandingkan dengan data bit input. Rasio perbandingan bit output dan bit input ini kemudian masuk pada blok Bit Error Rate. Langkah selanjutnya dari bagian ini adalah membuat perbandingan Eb/No yang digunakan dengan kemampuan sistem channel coding dalam menghasilkan BER yang rendah. Output terakhir dari semua sistem yang telah dibuat adalah Grafik perbandingan BER dengan Eb/No. Dimana semakin rendah Eb/No yang digunakan, jika dapat menghasilkan BER yang rendah pula maka sistem channel coding tersebut dinilai sukses untuk menghantarkan data dari pengirim ke penerima secara aman dan akurat.
BAB IV ANALISA DATA DAN PEMBAHASAN
Analisa performansi Convolutional Code dan Convolutional Turbo Code akan dibedakan menjadi 3 bagian, yaitu : 1. Perbandingan performansi dengan penggunaan Modulasi yang berbeda yaitu QPSK,8PSK,16QAM,64QAM 2. Perbandingan performansi dengan perbedaan penggunaan kanal Rayleigh Fading dan AWGN. 3.
Perbandingan performansi dengan perbedaan kecepatan Perpindahan user, yaitu, saat user diam, dan saat user bergerak dgn kecepatan 100 km/jam Parameter kinerja dan performansi yang digunakan dalam analisa adalah
grafik BER terhadap Eb/No. Kinerja sistem akan semakin baik jika nilai BER kecil dengan Eb/No yg kecil pula, sebaliknya kinerja sistem akan semakin buruk jika nilai BER meningkat. 4.1
PERBANDINGAN
PERFORMANSI
DENGAN
PERBEDAAN
PENGGUNAAN MODULASI
Gambar 4.1. Kurva BER berbanding Eb/No dengan Modulasi QPSK, Input 153600 bit
29
30
Gambar 4.2 Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Input 153600 bit
Gambar 4.3 Kurva BER berbanding Eb/No dengan Modulasi 16QAM, Input 153600 bit
31
Gambar 4.4 Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Input 153600 bit Pada empat buah gambar diatas, masing-masing grafik menunjukkan kinerja modulasi QPSK, 8PSK, 16-QAM, 64-QAM. Modulasi dengan M-ary besar akan memerlukan Eb/No yang lebih besar untuk mencapai BER tertentu daripada modulasi dengan M-ary kecil. Sebagai contoh, pada Modulasi QPSK, untuk mencapai BER 10-4, suatu Convolutional Turbo Code (rate 1/2) membutuhkan Eb/No sebesar 4 dB, sedangkan dengan modulasi 8PSK dibutuhkan Eb/No sebesar 8 dB untuk mendapat BER sebesar 10-4.8, pada modulasi 16QAM, Eb/No yang dibutuhkan sebesar 12 dB untuk mencapai BER sebesar 10-5, pada modulasi 64QAM untuk mencapai BER 10-5.2 dibutuhkan Eb/No sebesar 16 dB. Sementara itu mengenai perbandingan kinerja channel coding, pada grafik menunjukkan bahwa performansi Convolutional Code (rate 1/3) memiliki kualitas yang mirip dengan Convolutional Turbo Code (rate ½), sedangkan Convolutional Code (rate ½) selalu berada di bawah kedua channel coding tersebut. Pada QPSK, Convolutional Codes (rate 1/3) unggul dari Convo Turbo Code (rate ½). Dengan Eb/No 4 dB, Convo Code (rate 1/3) menghasilkan BER 10-5, sedangkan Convo Turbo Code menghasilkan BER 10-4. Pada modulasi 8PSK,16QAM dan 64QAM, hasil ujicoba menunjukkan bahwa performansi Convo Code (rate 1/3) dengan Convo Turbo Code (rate ½)
32
seperti saling mendahului pada Eb/No tertentu, namun selalu diakhiri dengan hasil akhir BER tertinggi yang nilainya sama atau mendekati. 4.2
PERBANDINGAN PERFORMANSI DENGAN PERBEDAAN PENGGUNAAN KANAL
Gambar 4.5 Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Kanal AWGN, Input 153600 bit
Gambar 4.6 Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Kanal AWGN&Rayleigh Fading, Input 153600 bit
33
Gambar 4.7 Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Kanal AWGN, Input 153600 bit
Gambar 4.8 Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Kanal AWGN&Rayleigh Fading, Input 153600 bit Pada bagian kedua, penulis akan membandingkan pengaruh kinerja channel coding dengan adanya perbedaan kanal. Pada empat buah grafik diatas, dapat diambil suatu kesimpulan bahwa dengan adanya kanal Rayleigh Fading, kinerja channel coding menjadi jatuh. Kondisi kanal fading Rayleigh dimana sinyal yang
34
diterima merupakan sinyal superposisi dari sinyal pantul tanpa adanya komponen sinyal langsung sehingga menurunkan kinerja sistem secara drastis. Pada modulasi yang berbeda, yaitu PSK dan QAM (pada 4 grafik diatas penulis mengambil sample dengan modulasi 8PSK dan 64QAM), convolutional turbo codes menunjukkan kinerja yg lebih baik dari convolutional codes ketika melewati kanal Rayleigh Fading. Pada modulasi PSK, convolutional turbo codes mampu menggunakan Eb/No yang lebih efisien sekitar 8-10 dB dari convolutional code (rate ½&1/3). Sebagai contoh, untuk menghasilkan BER 10-5.2 convolutional turbo codes menggunakan Eb/No sebesar 18 dB, sementara convolutional codes (rate ½) menggunakan Eb/No sebesar 28 dB. Pengaruh Rayleigh Fading sendiri juga terlihat secara jelas pada grafik diatas. Pada modulasi PSK, Rayleigh fading memaksa channel coding untuk menaikan Eb/No sebesar 8-16 dB untuk mencapai BER 10-5. Sedangkan pada modulasi QAM terjadi selisih Eb/No yang lebih besar lagi, dengan adanya kanal Rayleigh Fading, suatu Convolutional Turbo Code membutuhkan Eb/No lebih besar 24 dB untuk mendapatkan BER 10-5 daripada tidak melewati kanal Rayleigh Fading. Pada perbandingan penggunaan channel coding, Convolutional Turbo Code disini membuktikan bahwa tekniknya memiliki kelebihan dari Convolutional Code biasa ketika melewati kanal Rayleigh Fading. Baik pada Modulasi PSK maupun QAM, Convolutional Turbo Code mampu menghemat Eb/No sampai 515 dB daripada Convolutional Code.
35
4.3
PERBANDINGAN
PERFORMANSI
DENGAN
PERBEDAAN
KECEPATAN USER
Gambar 4.9. Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Kanal AWGN&Rayleigh Fading, Kecepatan 0 km/jam, Input 153600 bit
Gambar 4.10. Kurva BER berbanding Eb/No dengan Modulasi 8PSK, Kanal AWGN&Rayleigh Fading, Kecepatan 100 km/jam, Input 153600 bit
36
Gambar 4.11. Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Kanal AWGN&Rayleigh Fading, Kecepatan 0 km/jam, Input 153600 bit
Gambar 4.12. Kurva BER berbanding Eb/No dengan Modulasi 64QAM, Kanal AWGN&Rayleigh Fading, Kecepatan 100 km/jam, Input 153600 bit Pada perbandingan yang ketiga, yaitu perbandingan saat user diam dengan saat user bergerak secepat 100 km/jam. Simulasi kecepatan user ini didampingkan dengan kanal Rayleigh Fading, karena setiap pergerakan user pastinya akan
37
membentuk suatu pola pantulan dan penerimaan sinyal secara superposisi, dimana kanal Rayleigh Fading akan membentuk Noise dari sini. Pada modulasi PSK, grafik menunjukkan kecepatan user cukup berpengaruh pada hasil akhir BER. Kurva BER yang dihasilkan memiliki nilai yang berbeda seperti hasil BER saat user diam. Pada kedua Channel coding, selisih Eb/No yang digunakan untuk mencapai BER 10-5 berkisar antara 2–8 dB. Hal yang berbeda terjadi pada modulasi QAM. Dari kedua channel coding yg digunakan, pengaruh kecepatan user menghasilkan nilai BER yang tidak berbeda jauh. Untuk menghasilkan BER 10-5, Eb/No yang digunakan sekitar 40 dB, baik ketika user diam maupun sedang bergerak 100 km/jam. Perbedaan modulasi PSK dan QAM sekali lagi membuktikan adanya perbedaan penggunaan Eb/No yang cukup besar. Pada Convolutional Turbo Code dengan modulasi 8PSK, Eb/No yang dibutuhkan sebesar 24 dB untuk mendapatkan BER senilai 10-5, sedangkan dengan modulasi 64QAM dibutuhkan Eb/No sebesar 40 dB untuk mendapatkan BER senilai 10-5. Namun semua kembali kepada kebutuhan dan kondisi pada saat pengaplikasian teknik-teknik diatas. Dengan selisih Eb/No sebesar 16 dB, tentunya sistem menjadi tidak efisien jika menggunakan modulasi QAM, namun dibalik hal tersebut QAM memiliki sistem yang mampu mengkonversi Bit menjadi simbol secara lebih efektif daripada PSK. Pada perbandingan penggunaan channel coding, kembali Convolutional Turbo Code memiliki performansi yang lebih baik dari Convolutional code meskipun user bergerak pada kecepatan 100 km/jam. Selisih konsumsi Eb/No yang digunakan dari perbedaan kedua Channel coding ini sekitar 5–15 dB saat user bergerak 100 km/jam.
DAFTAR PUSTAKA [1] Burr, Alister. 2001. “ Turbo-codes: the ultimate error control codes?”, Electronics & Communication Engineering Journal. [2] Castineira M, Jorge. Guy F, Patrick. 2006. “Essential of Error Control Coding”. John Wiley & Sons, Ltd. [3] Raymon, Chan. 2003. “Channel Prediction For Adaptive Modulation In Wireless Communications”. [4] Falahati S., Svensson A. 2001. “Adaptive Modulation Systems For Predicted Wireless Channels”, IEEE Transactions on Communications. [5] Langton, Charan. 1999. “Coding and decoding with Convolutional Codes”. http://www.complextoreal.com. [6] Proakis John G., Salehi, Masoud. 1994. “Communication System Engineering”, Prentice Hall. [7] Ramasamy, K. Umar S, Mohammad. 2006. “Performance comparison of convolutional and block turbo codes”. Journal IEICE Electronics Express, Vol,3, No.13.
40
LAMPIRAN Script MATLAB untuk Parameter&Grafik ,rate,Mary,mod,interleaver,fading,v,g db,delay); coding=0;rate=0;
function simulasi1 N=512*3; gdb=[0]; delay=[0]; v=30; fading=1; %0 = awgn 1=awgn+fading iterasi=100; interleaver=1; %0 tanpa int, 1 dg int Mary=64;mod='qam'; snrdb=0:4:60; % addpath turbomfile for i=1:iterasi coding=1;rate=1/2;
ber1(i,:)=programutama(N,snrdb,coding ,rate,Mary,mod,interleaver,fading,v,g db,delay); i save data1 end load data1 Ber1=mean(ber1,1); Ber2=mean(ber2,1); Ber3=mean(ber3,1); Ber4=mean(ber4,1); close all,
ber2(i,:)=programutama(N,snrdb,coding ,rate,Mary,mod,interleaver,fading,v,g db,delay); coding=1;rate=1/3;
semilogy(snrdb,Ber1,'ro','linewidth',2),grid on grid on,hold on semilogy(snrdb,Ber2,'b<','linewidth',2),grid on semilogy(snrdb,Ber3,'g>','linewidth',2),grid on semilogy(snrdb,Ber4,'m^','linewidth',2),grid on xlabel('Eb/N0 (dB)'),ylabel('BER') legend('Tanpa Coding','Coding Rate 1/2','Coding Rate 1/3','Turbo Coding')
ber3(i,:)=programutama(N,snrdb,coding ,rate,Mary,mod,interleaver,fading,v,g db,delay); coding=2;rate=1/3; ber4(i,:)=programutama(N,snrdb,coding
Script MATLAB untuk Program
gen_pol=poly2trellis(9,[557 663 711]);
Utama
output_conv=convenc(datapilot,gen_pol ); end elseif coding==0 output_conv=datapilot; elseif coding==2 bb=4;kk=4; cd('turbomfile') p=1/rate; %p:code rate. p=1/(code rate) G=[1 1 0 1;1 0 1 1]; %15/13 %g:RSC generator indeks=t_permute(N); %index:interleaver pattern
function ber=programutama(N,snrdb,coding,rate, Mary,... modtype,interleaver,fading,v,gdb,dela y) bb=4;kk=4; %bb=baris interleaver, kk=kolom interleaver awal=pwd; %back to folder before k=1; for snr=snrdb %%Data dan informasi yang dikirimkan datapilot=randint(1,N); %Convolutional Coding if coding==1 if rate==1/2
output_conv=encode(datapilot,G,p,inde ks); cd(awal) end %Interleaver if interleaver==1
gen_pol=poly2trellis(8,[255,162]); output_conv=convenc(datapilot,gen_pol ); elseif rate ==1/3
outint=interleavertx(output_conv,bb,k k);
viii
ix
m = K - 1; %shift register
else outint=output_conv; end %%%Rumus jarak % jarak=posisiawal+ ; %redaman= %Pilot agar bisa dibagi log2(Marray) n=log2(Mary); pilot=n-mod(size(outint,2),n); outpilot=[outint zeros(1,pilot)]; %%%Modulasi Baseband / Mapper dan Kontrol Daya
memory r=2*data_decoder-1; % input decoder setelah deint niter=1; %jumlah iterasi di penerima, optimal 2x output_decod_conv=decode(r,G,p,m,N,ni ter,indeks); %N sbg penentu jumlah bit outdecod cd(awal) end
outmap=mappertx(outpilot,Mary,modtype ); %%%Kanal MUltipath Fading
%%%%Perhitungan BER [p,ber(1,k)]=symerr(output_decod_conv ,datapilot);
[outchan,H]=channelizelama(1,1,outmap ,gdb,delay,v,fading);
k=k+1; end
% outchan=outmap; outawgn=awgn(outchan,snr+log2(Mary),' measured');
return
outawgn=outawgn./squeeze(H).'; %%%DeModulasi Baseband / DeMapper outdemapper=mapperrx(outawgn,Mary,mod type,datapilot); %%Hapus pilot outrempilot=outdemapper(1,1:endpilot);
%==================================== ===================================== = % De-interleaver %==================================== ===================================== = if interleaver==1 data_decoder=interleaverrx(outrempilo t,bb,kk); else data_decoder=outrempilot; end %Viterbi Decoding if coding==1 if rate ==1/2 traceback=(length(data_decoder)/2)-1; output_decod_conv=vitdec(data_decoder ,gen_pol,traceback, 'trunc', 'hard'); elseif rate ==1/3 traceback=34; output_decod_conv=vitdec(data_decoder ,gen_pol,traceback, 'trunc', 'hard'); end elseif coding==0 output_decod_conv=data_decoder; elseif coding==2 cd turbomfile [n,K] = size(G); %
function output_mapping=mappertx(interleave_ou t,Mary,map) M=log2(Mary); if mod(size(interleave_out,2),M)~=0 S=[interleave_out ones(1,Mmod(size(interleave_out,2),M))]; else S=interleave_out; end global maxt for m=1:size(S,1) out=zeros(1,size(S,2)/M); k=1; for i=1:M:size(S,2) out(1,k)=gbbin2dec(S(m,i:i+M1)); k=k+1; end if map=='psk' output_mapping1(m,:)=pskmod(out,Mary) ; elseif map=='qam' output_mapping1(m,:)=qammod(out,Mary) ; end % clear out end maxt=max(abs(output_mapping1)); output_mapping=output_mapping1; function outdemap=mapperrx(output_p2s_rx,Mary, map,outint) global maxt M=log2(Mary); % out=zeros(size(output_p2s_rx,1),M*siz e(output_p2s_rx,2)); maxr=max(abs(output_p2s_rx)); for k=1:size(output_p2s_rx,1) if map=='psk'
x
datademod1=pskdemod(output_p2s_rx(k,: ),Mary); elseif map=='qam' datademod1=qamdemod(output_p2s_rx(k,: )*maxt/maxr,Mary); end for i=1:size(datademod1,2) out(k,M*iM+1:M*i)=gbdec2bin(datademod1(1,i),M) ; end end if mod(size(outint,2),M)~=0 outdemap=out(1,1:endM+mod(size(outint,2),M)); else outdemap=out; end
function out=gbdec2bin(in,n) [f,e]=log2(max(in)); % How many digits do we need to represent the numbers? out=rem(floor(in*pow2(1max(n,e):0)),2); function out=gbbin2dec(in) out=sum(fliplr(in).*2.^(0:size(in,2)1),2);
function outint=interleavertx(sinyal_koding,ba ris,kolom) %Fungsi interleaver di Tx outint=ones(1,size(sinyal_koding,2)); for i=1:size(sinyal_koding,2)/(kolom*bari s) outint(1,kolom*baris*ikolom*baris+1:kolom*baris*i)=... matintrlv(sinyal_koding(1,kolom*baris *ikolom*baris+1:kolom*baris*i),kolom,ba ris); end function outdeint=interleaverrx(outdemapper,ba ris,kolom) %Fungsi Deinterleaver di Rx outdeint=ones(1,size(outdemapper,2)); for i=1:size(outdemapper,2)/(kolom*baris) outdeint(1,kolom*baris*ikolom*baris+1:kolom*baris*i)=... matdeintrlv(outdemapper(1,kolom*baris *ikolom*baris+1:kolom*baris*i),kolom,ba ris); end