repository.usd.ac.idrepository.usd.ac.id/28364/2/015114074_Full.pdf · HALAMAN MOTTO DAN...
Transcript of repository.usd.ac.idrepository.usd.ac.id/28364/2/015114074_Full.pdf · HALAMAN MOTTO DAN...
PROGRAM SIMULASI APLIKASI MMSE
PADA MULTIUSER DETECTION CDMA
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Oleh:
Nama : Jekson Sianipar
NIM : 015114074
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2007
i
SIMULATION PROGRAM OF MMSE APPLICATION FOR
CDMA MULTIUSER DETECTION.
FINAL PROJECT
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
By:
Name : Jekson Sianipar
Student Number : 015114074
ELECTRICAL ENGINEERING STUDY PROGRAM
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
ii
iii
iv
v
HALAMAN MOTTO DAN PERSEMBAHAN
Takut akan kegagalan seharusnya tidak menjadi alasan
untuk tidak mencoba sesuatu.
(Frederick Smith)
Yang terpenting dari kehidupan bukanlah kemenangan
namun bagaimana bertanding dengan baik.
(Baron Pierre de Coubertin)
Lebih baik bertempur dan kalah dari pada tidak pernah bertempur
sama sekali
Kupersembahkan karya tulis ini kepada :
Tuhan Yesus Kristus terkasih,
Bapak dan Ibu Tercinta,
Abang, kakak dan adikku Tersayang
Keluarga besar sianipar dan pardede tercinta,
Devi tersayang
Almamaterku Teknik Elektro USD, dan
untuk diriku sendiri
vi
INTISARI
Pada multiuser detection CDMA, satu penerima akan menerima sinyal yang
merupakan hasil penjumlahan sinyal dari beberapa pengguna lainnya. Penerima harus dapat memilih sinyal yang diinginkan dan menolak sinyal-sinyal lainnya. algoritma MMSE dapat digunakan sebagai multiuser detection pada CDMA.
Program simulasi aplikasi MMSE pada multiuser detection CDMA, akan menunjukkan bahwa estimasi bit-bit dari detektor MMSE di penerima sesuai dengan bit-bit input pada pengirim, dengan kesalahan hasil estimasi bit sangat kecil. Program akan mensimulasikan proses spreading sinyal informasi, modulasi QPSK, demodulasi QPSK, despreading pada matched filter dan proses estimasi bit pada detektor MMSE.
Kata kunci : multiuser detection, algoritma MMSE.
vii
ABSTRACT
At CDMA multiuser detection, one receiver will accept signal representing result of quantifying of signal from some other user. Receiver have to earn to chosen wanted signal and refuse other signal. Algorithm of MMSE serve the purpose of detection multiuser at CDMA Simulation application program of MMSE for CDMA multiuser detection, will indicate that bits estimation of MMSE detector in receiver as according to input bits transmitter with mistake of result estimate beet very small. Simulation program will process spreading of information signal, QPSK modulation, QPSK demodulation, despreading for matched filter and process estimate bit for detector of MMSE. Keyword: multiuser detection, Algorithm of MMSE.
viii
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Tuhan yang Maha Esa, karena atas
Anugerah-Nya penulis akhirnya dapat menyelesaikan tugas akhir ini dengan baik dan
lancar.
Dalam proses penulisan tugas akhir ini penulis menyadari bahwa ada begitu
banyak pihak yang telah memberikan perhatian dan bantuan dengan caranya masing-
masing sehingga tugas akhir ini dapat terselesaikan. Oleh karena itu penulis ingin
mengucapkan terima kasih antara lain kepada :
1. Tuhan Yesus atas penyertaan dan bimbingannya.
2. Bapak Ir. Greg. Heliarko, SJ., B.ST., MA., M.Sc, selaku dekan fakultas sains dan
teknologi Universitas Sanata Dharma.
3. Bapak Bayu Primawan, S.T., M.Eng dan Bapak Damar Wijaya, S.T., M.T.,
selaku pembimbing I dan Pembimbing II atas bimbingan, dukungan, saran dan
kesabaran bagi penulis dari awal sampai tugas akhir ini bisa selesai.
4. Seluruh dosen teknik elektro atas ilmu yang telah diberikan selama penulis
menimba ilmu di Universitas Sanata Dharma.
5. Bapak dan ibu tercinta atas semangat, doa serta dukungan secara moril maupun
materiil.
6. Kelima saudara Sianipar ku, Jansen, Herta, Roselina, Pestaria dan Bangun atas
perhatian, dukungan dan cinta serta bantuan yang sangat berguna.
7. Abang-abang sumber inspirasi dan motivasiku: Rismon Hasiolan Sianipar,
Jimmy Silalahi, Fader Siahaan, Albert Manik, mas Koko semoga aku bisa seperti
apa yang kalian harapkan.
ix
x
DAFTAR ISI
Halaman
JUDUL .......................................................................................................................... i
HALAMAN PERSETUJUAN .................................................................................... iii
HALAMAN PENGESAHAN ...................................................................................... iv
HALAMAN PERNYATAAN KEASLIAN KARYA ................................................ v
HALAMAN MOTTO DAN PERSEMBAHAN......................................................... vi
INTISARI ..................................................................................................................... vii
ABSTRACT .................................................................................................................. viii
KATA PENGANTAR .................................................................................................. ix
DAFTAR ISI................................................................................................................. xi
DAFTAR GAMBAR .................................................................................................... xiii
DAFTAR TABEL ........................................................................................................ xv
DAFTAR CONTOH .................................................................................................... xvi
BAB I PENDAHULUAN ......................................................................................... 1
1.1 Latar Belakang Masalah........................................................................... 1
1.2 Tujuan dan Manfaat Penelitian ................................................................ 2
1.3 Batasan Masalah .................................................................................... 2
1.4 Metodologi Penelitian ............................................................................ 3
1.5 Sistematika Penulisan ............................................................................. 3
BAB II DASAR TEORI ............................................................................................. 5
2.1 Model Multiuser CDMA ........................................................................ 5
2.2 Spreading codes (kode penyebar)............................................................ 7
2.2.1 Pembentukan Matriks Spreading Codes ....................................... 8
2.2.2 Proses Spreading (Penyebaran)..................................................... 10
2.3 Modulasi QPSK (Quadrature Phase Shift Keying) ............................... 12
2.4 Additive White Gaussian Noise (AWGN) ............................................ 17
2.5 Demodulasi QPSK................................................................................. 20
2.6 Matched Filter (MF).....….. ................................................................... 23
xi
2.7 Detektor MMSE.................................................................................... 26
BAB III PERANCANGAN PROGRAM SIMULASI.............................................. 29
3.1 Algoritma Perancangan Program............................................................ 29
3.2 Proses Pemeriksaan bit Input Pengguna ................................................ 30
3.3 Perancangan Sub Program Spreading..................................................... 32
3.4 Perancangan Sub Program Modulasi QPSK........................................... 33
3.5 Perancangan Sub Program Demodulasi QPSK ...................................... 35
3.6 Perancangan Matched Filter (MF) ......................................................... 36
3.7 Proses Estimasi pada Detektor MMSE................................................... 37
3.8 Layout Program Simulasi ....................................................................... 38
3.8.1 Tampilan Awal Program ................................................................. 38
3.8.2 Layout Program Utama ................................................................... 39
BAB IV HASIL DAN PEMBAHASAN .................................................................. 44
4.1 Tampilan Awal Program ........................................................................ 44
4.2 Tampilan Program Utama....................................................................... 45
4.3 Tampilan Input Program......................................................................... 47
4.4 Hubungan antara Proses Spreading dengan Bit-bit Input....................... 48
4.5 Hasil Modulasi QPSK............................................................................. 53
4.6 Pengaruh AWGN pada Modulasi QPSK ................................................ 57
4.7 Pengaruh Frekuensi Carrier Terhadap Modulasi QPSK......................... 61
4.8 Hasil Demodulasi QPSK ........................................................................ 63
4.9 Proses Despreading pada Matched Filter............................................... 64
4.10 Hasil Estimasi pada Detektor MMSE................................................... 66
BAB V PENUTUP ..................................................................................................... 69
A. Kesimpulan................................................................................................. 69
B. Saran........................................................................................................... 69
DAFTAR PUSTAKA
LAMPIRAN
xii
DAFTAR GAMBAR
Halaman
Gambar 2.1 Konfigurasi multiuser CDMA bagian pengirim ................................... 5
Gambar 2.2 Konfigurasi multiuser CDMA bagian penerima................................... 6
Gambar 2.3 Konstruksi Modulator QPSK ................................................................ 12
Gambar 2.4 Konstruksi Demodulator QPSK............................................................. 20
Gambar 2.5 Matched Filter (MF) ............................................................................. 23
Gambar 2.6 Detektor MMSE .................................................................................... 26
Gambar 3.1 Algoritma perancangan program simulasi aplikasi MMSE pada
multiuser detection CDMA .................................................................. 29
Gambar 3.2 Diagram alir proses pemeriksaan bit-bit input ....................................... 31
Gambar 3.3 Diagram alir penyebaran (spreading) .................................................... 32
Gambar 3.4 Diagram alir sub program modulasi QPSK ........................................... 34
Gambar 3.5 Diagram demodulasi QPSK ................................................................... 35
Gambar 3.6 Diagram alir Matched Filter .................................................................. 36
Gambar 3.7 Diagram alir detektor MMSE................................................................. 37
Gambar 3.8 Perancangan tampilan awal program ..................................................... 38
Gambar 3.9 Layout program bagian pengirm (transmitter)....................................... 40
Gambar 3.10 Layout program bagian penerima (receiver).......................................... 40 Gambar 4.1 Tampilan awal program simulasi ........................................................... 44
Gambar 4.2 Tampilan program bagian Transmitter .................................................. 45
Gambar 4.3 Tampilan program bagian Receiver ....................................................... 46
Gambar 4.4 Tampilan menu Help ............................................................................. 46
xiii
Gambar 4.5 Tampilan input program........................................................................ 47
Gambar 4.6 Tampilan grafik sinyal masukan bit-bit pengguna................................ 48
Gambar 4.7 Tampilan masukan sub program spreading .......................................... 49
Gambar 4.8 Tampilan hasil sub program spreading.................................................. 50
Gambar 4.9 Grafik sinyal hasil proses spreading ...................................................... 52
Gambar 4.10 Tampilan nilai hasil modulasi QPSK.................................................... 54
Gambar 4.11 Tampilan grafik sinyal modulasi QPSK ketiga pengguna ..................... 54
Gambar 4.12 Grafik grafik sinyal modulasi QPSK ketiga pengguna .......................... 55
Gambar 4.13 Tampilan hasil modulasi QPSK total..................................................... 57
Gambar 4.14 Tampilan grafik sinyal superposisi modulasi QPSK ............................. 58
Gambar 4.15 Tampilan input frekuensi carrier ........................................................... 61
Gambar 4.16 Tampilan hasil modulasi QPSK dengan frekuensi carrier =10 Hz....... 61
Gambar 4.17 Tampilan hasil modulasi QPSK dengan frekuensi carrier =100 Hz..... 62
Gambar 4.18 Tampilan hasil modulasi QPSK dengan frekuensi carrier =200 Hz..... 62
Gambar 4.19 Tampilan hasil demodulasi QPSK total ................................................. 63
Gambar 4.20 Tampilan grafik sinyal hasil demodulasi QPSK total ............................ 63
Gambar 4.21 Tampilan hasil despreading ................................................................... 64
Gambar 4.22 Tampilan grafik sinyal hasil despreading ketiga pengguna................... 65
Gambar 4.23 Tampilan hasil Detektor MMSE ............................................................ 66
xiv
DAFTAR TABEL
Halaman
Tabel 2.1 Logika XOR.............................................................................................. 11
Tabel 2.2 Tabel fasa sinyal output modulasi QPSK.................................................. 13
Tabel 4.1 Input program simulasi ............................................................................ 48
Tabel 4.2 Input sub program spreading .................................................................... 49
Tabel 4.3 Input modulasi QPSK masing-masing pengguna ..................................... 53
Tabel 4.4 Hasil modulasi QPSK ketiga pengguna .................................................... 56
Tabel 4.5 Input sub program modulasi total QPSK .................................................. 57
Tabel 4.6 Hasil modulasi QPSK total ....................................................................... 59
Tabel 4.7 Perbandingan nilai modulasi QPSK total dengan SNR = 0 dB,
SNR = 8 dB dan SNR = 16.6 dB.............................................................. 59
Tabel 4.8 Perbandingan dari beberapa modulasi digital ......................................... 60
Tabel 4.9 Hasil demodulasi QPSK total ................................................................. 64
Tabel 4.10 Perbandingan hasil spreading dan despreading ...................................... 65
Tabel 4.11 Hasil detektor MMSE .............................................................................. 67
xv
DAFTAR CONTOH
Halaman
Contoh 2.1 Proses spreading......................................................................................... 11
Contoh 2.2 Modulasi QPSK......................................................................................... 14
Contoh 2.3 Demodulasi QPSK...................................................................................... 21
xvi
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Salah satu metode akses untuk sistem komunikasi bergerak yang
banyak digunakan saat ini selain GSM adalah CDMA (Code Division Multiple
Acces). Dengan CDMA maka setiap pengguna menggunakan frekuensi carrier
pada saat bersamaan. Pengguna yang satu dengan pengguna lainnya dibedakan
berdasarkan kode unik yang dimiliki tiap-tiap pengguna dan kode-kode
tersebut harus saling ortogonal [1].
Penerima akan menerima semua sinyal yang ditransmisikan oleh
beberapa pengguna karena sinyal tersebut menggunakan frekuensi carrier
yang sama. Proses deteksi isyarat CDMA dari pengguna yang dikehendaki
dipengaruhi oleh kondisi kanal transmisi seperti adanya multipath fading yang
menyebabkan interferensi antar simbol yang dapat menyebabkan informasi
yang dikirimkan tidak sesuai dengan yang diterima pada bagian penerima.
Oleh karena itu, pada penerima diperlukan suatu detektor yang dapat
menyeleksi sinyal-sinyal yang ditujukan kepada penerima tertentu secara tepat
dan akurat. Berbagai algoritma yang digunakan untuk menyeleksi sinyal-
sinyal yang diinginkan oleh penerima telah dikembangkan atau dimodifikasi.
Dalam tugas akhir ini algoritma MMSE (Minimum Mean Square Error) yang
digunakan sebagai detektor sinyal pada CDMA akan disimulasikan.
1
2
1.2 Tujuan dan Manfaat Penelitian
Tugas akhir ini bertujuan untuk menghasilkan program simulasi
multiuser detection pada CDMA dengan menggunakan algoritma MMSE
sebagai detektor bit.
Beberapa manfaat yang diharapkan dapat diperoleh dari penelitian ini
adalah sebagai berikut :
1. Dapat menambah pengetahuan tentang sistem komunikasi CDMA
dengan aplikasinya yaitu membuat simulasi aplikasi MMSE pada
multiuser detection CDMA.
2. Dapat dijadikan sebagai acuan dalam perancangan pada sistem
komunikasi CDMA khususnya bagian penerima.
1.3 Batasan Masalah
Pada penelitian ini dilakukan pembatasan masalah terhadap program
simulasi yang akan dibuat. Batasan masalah penelitian ini adalah sebagai
berikut :
1. Banyaknya pengguna pada multiuser CDMA akan dibatasi sebanyak
tiga dengan jumlah bit sebanyak dua untuk masing-masing pengguna.
2. Sinyal tidak mengalami multipath fading untuk menyederhanakan
pembahasan .
3. Proses sinkronisasi dianggap berhasil.
4. Spreading codes yang digunakan diambil dari matriks Hadamard
berorde 4 (H4).
3
5. Simulasi akan dibuat dengan program MATLAB.
1.4 Metodologi Penelitian
Pada penelitian ini, penulis menggunakan langkah-langkah sebagai berikut :
1. Perumusan masalah, yaitu bagaimana mengimplementasikan algoritma
MMSE sebagai multiuser detector pada sistem komunikasi CDMA.
2. Pengumpulan dokumen pendukung berupa buku-buku dan artikel-
artikel yang berhubungan dengan teori sistem komunikasi CDMA.
3. Perancangan untuk menyelesaikan masalah, berupa perhitungan
matematis, penentuan parameter-parameter yang digunakan serta
membentuk diagram alir simulasi .
4. Menguji program simulasi yang telah dibuat.
5. Membahas dan menganalisis hasil rancangan yang diperoleh dari
program simulasi.
6. Membuat kesimpulan dari hasil pembahasan dan analisis.
1.5 Sistematika Penulisan
Keseluruhan tugas akhir ini mencakup lima bab yang disusun dalam
sistematika sebagai berikut :
BAB I : Pendahuluan
Berisi penjelasan singkat tentang latar belakang, pembatasan
masalah tujuan, manfaat, metodologi penelitian pada tugas
akhir ini.
4
BAB II : Dasar Teori
Berisi teori dasar yang digunakan untuk menyelesaikan tugas
akhir ini.
BAB III : Perancangan Program Simulasi
Berisi konsep dan langkah-langkah perancangan program
simulasi aplikasi MMSE pada multiuser detection CDMA
BAB IV : Hasil dan Pembahasan
Berisi hasil simulasi dan pembahasan dari program simulasi
aplikasi MMSE pada multiuser detection CDMA.
BAB V : Kesimpulan
Berisi kesimpulan dari hasil penelitian dan saran yang
mungkin berguna untuk pengembangan program lebih lanjut.
BAB II
DASAR TEORI
2.1 Model Multiuser CDMA
Code Division Multiple Acces (CDMA) merupakan salah satu sistem
komunikasi yang banyak digunakan pada komunikasi seluler. Salah satu
keuntungan utama CDMA adalah akses bagi beberapa pengguna (multiple acces)
pada saat bersamaan dan menggunakan bandwidth yang sama. Gambar 2.1
menunjukkan konfigurasi multiuser CDMA pada bagian pengirim (transmitter)
[1].
Pada bagian pengirim seperti yang ditunjukkan Gambar 2.1, bit-bit
informasi bk(t) tiap-tiap pengguna akan dikalikan dengan spreading code sk(t)
yang telah dipilih sebelumnya. Proses perkalian ini disebut dengan proses
Sk(t)
S1(t)
b1(t)
+b2(t)
bk(t)
S2(t)
ytotal( t)
y1(t)
y2(t)
yk(t)
Modulasi
Modulasi
Modulasi
n(t)
Gambar 2.1 Konfigurasi multiuser CDMA bagian pengirim [1].
5
6
spreading. Hasil proses spreading masing-masing pengguna akan dimodulasi RF
dengan amplitudo Ak dan frekuensi pembawa fc yang sama. Sehingga sinyal yang
dikirimkan oleh pengirim adalah [2]
(2-1) )()()()( tstbtAty kkkk =
Sinyal hasil modulasi masing-masing pengguna tersebut kemudian
dijumlahkan dan ditambah dengan AWGN n(t). Sinyal modulasi yang terganggu
AWGN inilah yang kemudian dikirim ke penerima. Sinyal yang terganggu
AWGN dinyatakan dengan
)()()( tntyty ktotal += (2-2)
atau
)()()()()( tntstbtAty kkktotal += (2-3)
Gambar 2.2 menunjukkan konfigurasi multiuser CDMA pada bagian
penerima. Sinyal dari beberapa pengguna ytotal(t) yang terganggu AWGN dapat
diterima sekaligus oleh penerima.
Demodulasi
∫Tb
0
s1(t)
b1(t)
Demodulasi
∫Tb
0
s2(t)
b2(t)
Demodulasi sk(t)
bk(t)
ytotal( t)
ytotal( t)
ytotal( t) ∫Tb
0
Gambar 2.2 Konfigurasi multiuser CDMA bagian penerima [2].
7
Pada penerima, sinyal yang terganggu AWGN akan didemodulasi oleh
masing-masing pengguna untuk mendapatkan besar tegangan maksimumnya.
Hasil demodulasi kemudian dikalikan dengan spreading codes seperti yang
digunakan pada proses spreading bagian pengirim. Proses perkalian antara hasil
demodulasi dengan spreading codes pada penerima disebut dengan despreading.
Despreading bertujuan untuk mendapatkan kembali bentuk sinyal yang
diinginkan oleh tiap-tiap pengguna pada penerima.
Pada detektor bit, hasil proses despreading ini digunakan sebagai acuan
dalam menentukan bentuk bit yang diterima. Bit yang diterima tersebut setelah
dikonversi akan berbentuk kode biner (0 atau 1).
2.2 Spreading Codes (Kode Penyebar)
Spreading codes merupakan kode yang digunakan sebagai kode penyebar
data informasi dalam sistem komunikasi CDMA. Kode ini sangat penting untuk
mengurangi pengaruh interferensi sehingga pengguna yang satu tidak akan
mengganggu pengguna yang lain, walaupun menggunakan frekuensi yang sama.
Kemampuan spreading codes ini didasarkan pada sifatnya yang ortogonal.
Suatu kode dikatakan ortogonal dengan kode yang lain apabila kedua kode
tersebut memiliki korelasi-silang (cross-correlation) sama dengan nol. Spreading
codes dibentuk menggunakan matriks Hadamard yang merupakan matriks yang
ortogonal atau saling tegak lurus [2].
8
2.2.1. Pembentukan Matriks Spreading Codes
Secara sederhana matriks spreading codes dihasilkan dengan memulai
sebuah matriks dengan nilai 0, mengulang nilai 0 secara horisontal dan vertikal
serta membalik nilai 0 menjadi 1 secara diagonal. Proses ini akan dilanjutkan
dengan membuat blok-blok baru sehingga menghasilkan spreading codes dengan
panjang kode yang diinginkan. Spreading codes dibentuk dengan cara [2] :
H2N = ⎥
⎦
⎤⎢⎣
⎡NN
NN
HHHH
(2-4)
dengan notasi 2N adalah besar orde dan NH adalah invers matriks dari . Bila
N =1, maka mempunyai 2 kemungkinan, yaitu
NH
NH
H2 = (2-5) ⎥⎦
⎤⎢⎣
⎡0111
atau
H2 = ⎥ (2-6) ⎦
⎤⎢⎣
⎡1000
Pembentukan spreading codes untuk besar orde sama dengan 4 ( 2N = 4 ) menjadi
H4 = ⎥⎦
⎤⎢⎣
⎡22
22
HHHH
(2-7)
Dari persamaan (2-4), pembentukan spreading codes dengan orde sama dengan 4
(H4) dapat dituliskan sebagai
H4 = (2-8)
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
1001001101011111
9
atau H4 = (2-9)
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
0110110010100000
Empat set spreading codes yang saling ortogonal seperti yang ditunjukkan
persamaan (2-8) dan persamaan (2-9) dapat dituliskan sebagai
[ ]11111 =w atau [ ]00001 =w
[ ]01012 =w atau [ ]10102 =w (2-10)
[ ]00113 =w atau [ ]11003 =w
[ ]10014 =w atau [ ]01104 =w
Spreading codes pada persamaan (2-10) yang berbentuk sinyal biner dapat
dikonversi menjadi sinyal bipolar dengan mengubah bit 0 menjadi -1 dan bit 1
tetap 1 seperti berikut:
[ ]11111 =w atau [ ]11111 −−−−=w
[ ]11112 −−=w atau [ ]11112 −−=w (2-11)
[ ]11113 −−=w atau [ ]11113 −−=w
[ ]11114 −−=w atau [ ]11114 −−=w
Spreading codes dikatakan bersifat ortogonal apabila memenuhi syarat-syarat
seperti berikut [2]:
1. Dot product bit satu pada satu set kode harus sama dengan satu.
2. Korelasi antara satu spreading code dengan spreading code lain pada satu
matriks Hadamard harus sama dengan nol.
3. Setiap set dari harga w mempunyai besar bit 0 dan 1 yang sama.
10
Dari persamaan (2-10) dan persamaan (2-11), sifat ortogonal matriks
Hadamard berorde 4 dapat ditunjukkan melalui contoh pembuktian w1 dan w2
yang diambil pada HN = 1.
Syarat (1): R11 = ( )( ) ( )( ) ( )( ) ( )( )[ ]4
11111111 +++
R11 = 1
Syarat (2): R12 = ( )( ) ( )( ) ( )( ) ( )( )11111111 −++−+
R12 = 0
Syarat (3): Dari matriks H4 pada persamaan (2-9), seluruh harga spreading
codes, kecuali w1, memiliki jumlah bit 1 dan bit 0 yang sama.
Untuk HN = 1, semua elemen berisi bit 1 dan untuk HN = 0, semua
elemen berisi bit 0. Karena w1 tidak memenuhi syarat ketiga,
sehingga w1 tidak digunakan sebagai spreading codes untuk
menyebarkan bit-bit informasi. Namun w1 tetap digunakan agar
ukuran matriks menjadi n x n walaupun tidak berpengaruh pada
spreading bit-bit informasi pengguna.
2.2.2. Proses Spreading (Penyebaran)
Bit-bit input bk(t) dari tiap pengguna akan disebarkan sesuai dengan
spreading code sk(t) yang dipilih untuk tiap pengguna. Operasi XOR antara bit-bit
input dengan spreading codes dilakukan untuk mendapatkan hasil spreading.
Hasil operasi XOR tersebut akan dikonversi menjadi bentuk bipolar (+1 dan -1).
Tabel 2.1 menunjukkan tabel kebenaran logika XOR yang digunakan sebagai
dasar proses spreading.
11
Tabel 2.1 Logika XOR A B XOR0 0 01 0 10 1 11 1 0
Berdasarkan Tabel 2.1, jika A dan B bernilai sama, maka hasil operasi
XOR adalah 0 dan sebaliknya. Proses spreading masing-masing pengguna dapat
dilihat pada contoh 2.1
XOR
Hasil spreading yang berbentuk kode biner dikonversi ke dalam bentuk
bipolar sehingga menjadi y2(t): [1 1 -1 -1 -1 -1 1 1]
operasi XOR : 0 0 0 0 1 1 1 1 1 1 0 0 1 1 0 0
hasil spreading y2(t) : 1 1 0 0 0 0 1 1 XOR
bit input b2(t) : 0 1
spreading code s2(t) : 1 1 0 0
2. Pengguna 2
Hasil spreading yang berbentuk kode biner dikonversi ke dalam bentuk
bipolar sehingga menjadi y1(t): [-1 1 -1 1 1 -1 1 -1]
operasi XOR : 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0
hasil spreading y1(t) : 0 1 0 1 1 0 1 0
bit input b1(t) : 1 0
spreading code s1(t) : 1 0 1 0
1. Pengguna 1
Ada tiga pengguna dengan masing-masing pengguna diberikan input sebanyak dua
bit. Spreading codes yang digunakan adalah matriks Hadamard dengan orde empat
(H4). Proses spreading adalah
Contoh 2.1
12
3. Pengguna 3
bit input b3(t) : 1 1
spreading code s3(t) : 1 0 0 1
operasi XOR : 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1
hasil spreading y3(t) : 0 1 1 0 0 1 1 0
Hasil spreading yang berbentuk kode biner dikonversi ke dalam bentuk
bipolar sehingga menjadi y3(t): [-1 1 1 -1 -1 1 1 -1]
XOR
2.3 Modulasi QPSK (Quadrature Phase Shift Keying)
Sinyal hasil proses spreading akan dimodulasi dengan modulasi Quadrature
Phase Shift Keying (QPSK) pada masing-masing pengguna. Hasil modulasi QPSK
masing-masing pengguna adalah sinyal u(t). Gambar 2.4 memperlihatkan
kontruksi modulator QPSK yang merupakan kombinasi dua buah modulator
BPSK (Binary Phase Shift Keying) yang ortogonal atau saling tegak lurus [3].
Kanal I
Kanal Q
Input yk(t) Serial to Parallel
Cos(2Π fct)
Output u(t) Parallel to Serial
Sin(2Π fct)
Gambar 2.3 Konstruksi Modulator QPSK [4].
Dalam modulasi QPSK, sinyal mempunyai dua komponen, yaitu In-Phase
(I) dan Quadrature (Q). Komponen I dan Q ini tidak saling berkorelasi atau saling
ortogonal karena I adalah fungsi sinus dan Q adalah fungsi cosinus. Pembuktian
13
ortogonalitas atau saling tidak berkorelasi antara I dengan Q adalah sebagai
berikut [3]:
( )dtftftfk
ππμ 2sin)2cos(0∫= (2-11)
,.......3,2,1,0=k n
=μ 0
Karena terdiri dari dua komponen, sehingga pada suatu saat sinyal QPSK dapat
memodulasi dua bit pada satu periode simbol. Persamaan matematis modulasi
QPSK dinyatakan dengan [3]:
(2-12) jQItu +=)(
Persamaan (2-12) dapat dituliskan kembali sebagai
)4
2sin()4
2cos()( ππππ +++= tfcVtfcVtu mm (2-13)
dengan Vm adalah tegangan maksimum sebesar 2 Volt, fc adalah frekuensi
pembawa (carrier frequency), t adalah perioda sinyal dan 4π fase sinyal modulasi.
Tabel 2.2 Tabel fasa sinyal output modulasi QPSK
Bit ganjil Bit genap Output kanal I Output kanal Q Fasa sinyal output
1 1 Vm cos (2πft + 4π
) Vm sin (2πft + 4π
) 450
-1 1 - Vm cos (2πft + 4π
) Vm sin (2πft + 4π
) 1350
-1 -1 - Vm cos (2πft + 4π
) - Vm sin (2πft + 4π
) 2250
1 -1 Vm cos (2πft + 4π
) - Vm sin (2πft + 4π
) 3150
14
Dalam teknik modulasi QPSK, sinyal memiliki 4 kemungkinan nilai fasa
[4]. Tabel 2.2 adalah tabel fasa sinyal output modulasi QPSK yang menunjukkan
nilai fasa masing-masing deretan bit pada masing-masing kanal. Bit-bit hasil
proses spreading akan dimodulasi oleh masing-masing pengguna. Bit–bit tersebut
akan dibedakan berdasarkan urutannya. Bit-bit urutan ganjil masuk ke kanal I dan
dimodulasi dengan sinyal Vm cos (2πft + 4π ). Sedangkan bit-bit urutan genap
masuk ke kanal Q dan dimodulasi dengan sinyal Vm sin (2πft + 4π ). Hasil
modulasi pada kedua kanal (kanal I dan Q) kemudian akan dijumlahkan. Proses
modulasi QPSK secara matematis dapat dilihat pada Contoh 2.2.
I1(t) = - Vm cos (2πft + 4π ) Q1(t) = + Vm sin (2πft +
4π )
I2 (t) = -Vm cos (2πft + 4π ) Q2 (t) = + Vm sin (2πft +
4π )
I3(t) = + Vm cos (2πft + 4π ) Q3 (t) = - Vm sin (2πft +
4π )
I4(t) = + Vm cos (2πft + 4π ) Q4 (t) = - Vm sin (2πft +
4π )
Bit_genap1 = [ 1 1 -1 -1 ]
Modulasi pada kanal I (Ik(t)) Modulasi pada kanal Q (Qk(t))
Bit_ganjil1 = [ -1 -1 1 1 ]
Hasil spreading pengguna 1 y1(t) : [ -1 1 -1 1 1 -1 1 -1 ]
Dengan mengambil input hasil proses spreading pada Contoh 2.1, modulasi
QPSK masing-masing pengguna adalah
1. Modulasi QPSK Pengguna 1
Contoh 2.2
15
Dengan amplitudo (Vm) sinyal = Volt2 , maka u(t) :
untuk t = 0 < t <T
u(t) = - 2 cos (2πft + 4π ) + 2 sin (2πft +
4π )
untuk t = T < t <2T
u(t) = - 2 cos (2πft + 4π ) + 2 sin (2πft +
4π )
untuk t = 2T <t < 3T
u(t) = 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
untuk t = T < t <2T
u(t) = 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
2. Modulasi QPSK pengguna 2
Hasil spreading pengguna 2 y2(t) : [1 1 -1 -1 -1 -1 1 1]
Bit_genap2 = [ 1 -1 -1 1 ]
Bit_ganjil2 = [ 1 -1 -1 1 ]
Modulasi pada kanal I (Ik(t)) Modulasi pada kanal Q (Qk(t))
I1(t) = Vm cos (2πft + 4π ) Q1(t) = Vm sin (2πft +
4π )
I2 (t) = -Vm cos (2πft + 4π ) Q2 (t) = -Vm sin (2πft +
4π )
I3(t) = -Vm cos (2πft + 4π ) Q3 (t) = - Vm sin (2πft +
4π )
I4(t) = Vm cos (2πft + 4π ) Q4 (t) = Vm sin (2πft +
4π )
Dengan amplitudo (Vm) sinyal = Volt2 , maka u(t) :
Untuk t = 0 < t <T
u(t) = 2 cos (2πft + 4π ) + 2 sin (2πft +
4π )
Untuk t = T < t <2T
u(t) = - 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
16
u(t) = 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
Untuk t = T < t <2T
u(t) = 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
Untuk t = 2T <t < 3T
u(t) = - 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
Untuk t = T < t <2T
u(t) = 2 cos (2πft + 4π ) + 2 sin (2πft +
4π )
3. Modulasi QPSK pengguna 3
Hasil spreading pengguna 3 y3 (t) : [ -1 1 1 - 1 -1 1 1 -1 ]
Bit_genap3 = [ -1 -1 1 1 ]
Bit_ganjil3 = [ 1 1 -1 -1 ]
Modulasi pada kanal I (Ik(t)) Modulasi pada kanal Q (Qk(t))
I1(t) = - 2 cos (2πft + 4π ) Q1(t) = + 2 sin (2πft +
4π )
I2 (t) = - 2 cos (2πft + 4π ) Q2 (t) = + 2 sin (2πft +
4π )
I3(t) = + 2 cos (2πft + 4π ) Q3 (t) = - 2 sin (2πft +
4π )
I4(t) = + 2 cos (2πft + 4π ) Q4 (t) = - 2 sin (2πft +
4π )
Dengan amplitudo (Vm) sinyal = Volt2 , maka u(t) :
Untuk t = 0 < t <T
u(t) = - 2 cos (2πft + 4π ) + 2 sin (2πft +
4π )
Untuk t = T < t <2T
u(t) = - 2 cos (2πft + 4π ) + 2 sin (2πft +
4π )
Untuk t = 2T <t < 3T
17
2.4 Additive White Gaussian Noise (AWGN)
Additive White Gaussian Noise adalah noise yang memiliki spektrum
frekuensi yang kontinyu dan uniform pada seluruh band frekuensi dengan
kepadatan daya tiap hertz adalah sama di seluruh pita frekuensi. AWGN memiliki
sifat Additive, White, dan Gausssian [4]. Sifat additive artinya sinyal dijumlahkan
dengan noise, sifat white artinya tidak tergantung dari frekuensi operasi sistem
dan memiliki rapat daya yang konstan, dan sifat Gausssian artinya besar tegangan
noise memiliki rapat peluang terdistribusi secara Gaussian.
Sinyal dengan persamaan (2-2 ) akan dilewatkan pada matched filter. Pada
matched filter, sinyal tersebut akan dikorelasikan dengan spreading codes yang
berkesesuaian dengan masing-masing pengguna.Sinyal tersebut dapat dinyatakan
dengan
(2-14) [ ] dttstntytsty k
T
kk
T
total )()()()()(00∫∫ +=
dengan
(2-15) kkktotal nyy +=
dan
, k = 1, 2,3, …, N (2-16) dttstyy k
T
kkk )()(0∫=
, k = 1, 2,3, .., N (2-17) dttstnn k
T
k )()(0∫=
Sinyal pada persamaan (2-16) dan persamaan (2-17) dapat dibuat dalam bentuk
vektor dengan komponen . Sedangkan merupakan random variabel totaly kky kn
18
yang timbul dari white noise. Dengan demikian sinyal yang diterima dalam
interval waktu dapat dinyatakan sebagai
totaly
Tt ≤≤0
(2-18) )(')()()(11
tnttt k
N
x
k
N
k
kkktotal snsyy ++= ∑∑==
(2-19) )(')()()(1
tntstt k
N
k
ktotaltotal yy += ∑=
dengan
)()()('1
tsntntn k
N
xk∑
=
−= (2-20)
Sinyal pada persamaan (2-20) muncul karena tidak adanya
ortogonalitas spreading codes yang digunakan. Karena spreading codes yang
digunakan berasal dari matriks Hadamard yang telah terbukti ortogonalitasnya,
maka sinyal noise tersebut bernilai nol. Komponen dari white noise tersebut
adalah Gaussian (distribusi normal), sehingga nilai rata-rata (u) adalah nol.
Dengan demikian variansi white noise adalah sebagai berikut :
)(' tn
)(' tn
; u = 0
(2-20)
22 )( unE −=σ
22 )(nE=σ
dengan merupakan nilai ekspektasi dari noise tersebut. Dengan demikian
variansi dari noise tersebut dapat dicari dengan perhitungan sebagai berikut :
2)(nE
(2-21) [ ]∫ ∫=T
kk
T
kk dtdstsntnEnnE0 0
)()()()()( τττ
∫ ∫ −=T
kk
T
Okk dtdststNnnE0 0
)()()(21)( τττδ (2-22)
19
dengan n(t) adalah proses stokastik, yaitu proses acak elemen-elemen diskrit yang
peluang munculnya merupakan fungsi waktu. )( τδ −t merupakan fungsi delta
yang akan bernilai satu jika τ=t dan nol jika τ≠t sehingga persamaan (2-22)
dapat disederhanakan menjadi :
∫=T
kkOkk dttstsNnnE0
)()(21)( (2-23)
uOkk NnnE δ21)( = ; uδ = 1 (2-24)
sehingga variansi dari noise adalah sebagai berikut : )( 2σ )(tn
Okk NnnE21)( 2 == σ (2-25)
Karena nilai rata-rata )(μ dari white noise sama dengan nol, maka dapat di-
simpulkan bahwa:
kkkkktotal ynyuyu =+= )()( (2-26)
Nilai rata-rata dari sinyal total ( )( )totalyu pada persamaan (2-26) adalah
sama dengan nilai rata-rata sinyal yang dikirim. Karena setiap dari elemen dari
white noise tersebut saling lepas, maka probabilitas total dari elemen-elemen
tersebut merupakan hasil kali dari setiap elemennya, sehingga dapat ditulis:
( ) ( ) NkyypyypN
kkktotalktotal ......,,2,1;||
1
==∏=
(2-27)
Adapun Probabilitas distribusi normal dari elemen tunggal white noise tersebut
adalah [4] :
P(ytotal | ykk) = ONπ
1 exp ⎥⎦
⎤⎢⎣
⎡ −−
Nokktotal yy 2)(
k = 1,2,…..N (2-28)
20
sehingga probabilitas total dituliskan sebagai berikut :
P(ytotal | ykk) = )(
12ONN
πexp ⎥
⎦
⎤⎢⎣
⎡ −−∑
=
N
k
kktotal
Noyy
1
2)( ; k = 1, 2,…N (2-29)
2.5 Demodulasi QPSK
Pada demodulasi QPSK, sinyal yang diterima akan dikalikan dengan
sinyal pembawa (carrier) yang sama seperti pada pengirim (transmitter). Gambar
2.5 menunjukkan konstruksi demodulator QPSK [4].
∫+ Tt
t
2
∫+ Tt
t
2
X
X
utotal (t)
ganjilaaaa ,.....,, 420
Vm cos (2πft + 4π
)
Vm sin (2πft + 4π
)
ganjil
_
4
_
2,
_
0
_a,.......aa,a
genap
_
5
_
3,
_
1
_a,.......aa,a
genapaaaa ,.....,, 531
Kanal I
Kanal Q
Gambar 2.4 Konstruksi Demodulator QPSK [4]
Pada kanal I, sinyal yang diterima dikalikan dengan gelombang cosinus
dan pada kanal Q, sinyal yang diterima dikalikan dengan gelombang sinus seperti
pada modulasi QPSK. Kemudian sinyal tersebut diintegralkan sehingga diperoleh
besar tegangan maksimum. Besar tegangan maksimum ini setelah proses sampling
21
akan menjadi input dari matched filter. Hasil modulasi QPSK yang diterima dari
pengirim pada persamaan (2-13) akan didemodulasi dan dinyatakan dengan
dttyTt
t
)4
tf(2sin Vm) 4
+t f(2sin Vm + ) 4
+t f(2 cos Vm)(2 ππππππ +
⎭⎬⎫
⎩⎨⎧= ∫
+
(2-30)
karena
(2-31) =)(ty 0)2(sin)2cos(2
=∫+
dtftftTt
t
ππ
maka
=)(ty ∫+ Tt
tm dtV
222 )
4 +ft (2 sin ππ (2-32)
Asumsi bahwa t = 0 dan t + 2T =1, maka hasil demodulasi QPSK adalah
=)(ty ∫1
0
22 )dt 4
+ft (2 sin ππmV
2
)(2
mVty = (2-33)
Karena nilai Vm = 2 volt, maka hasil = 1 untuk bit 1 dan = -1 untuk
bit 0. Dari perhitungan ini terlihat bahwa output demodulasi adalah logika 0 (-1)
atau logika 1 (+1). Sinyal yang diterima pada penerima merupakan sinyal
superposisi dari beberapa pengguna. Proses demodulasi QPSK dapat ditunjukkan
melalui Contoh 2.3.
)(ty )(ty
Contoh 2.3
Sinyal superposisi dari ketiga penggguna pada Contoh 2.1 adalah
sebagai berikut
untuk t = 0 < t <T
u(t) = - 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
22
untuk t = T < t <2T
u(t) = - 2 cos (2πft + 4π ) + 3 2 sin (2πft +
4π )
untuk t = 2T < t < 3T
u(t) = - 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
untuk t = 3T < t < 4T
u(t) = 3 2 cos (2πft + 4π ) - 2 sin (2πft +
4π )
Sinyal superposisi tersebut kemudian dibedakan menurut kanalnya.
sinyal superposisi pada kanal I sinyal superposisi pada kanal Q
I1(t) = - 2 cos (2πft + 4π ) Q1(t) = - 2 sin (2πft +
4π )
I2 (t) = - 2 cos (2πft + 4π ) Q2 (t) = 3 2 sin (2πft +
4π )
I3(t) = - 2 cos (2πft + 4π ) Q3 (t) = - 2 sin (2πft +
4π )
I4(t) = 3 2 cos (2πft + 4π ) Q4 (t) = - 2 sin (2πft +
4π )
Hasil demodulasi QPSK ketiga pengguna tersebut adalah
Demod I (1) = dtftft )4
2(cos2*)4
2cos(21
0
ππππ ++−∫
Demod I (1) = -1
Demod Q (1) = dtftft )4
2(sin2*)4
2sin(21
0
ππππ ++−∫
Demod Q (1) = -1
Demod I (2) = dtftft )4
2(cos2*)4
2cos(21
0
ππππ ++−∫
Demod I (2) = 3
Demod Q (2) = dtftft )4
2(sin2*)4
2sin(231
0
ππππ ++∫
Demod Q (2) = -1
Demod I (3) = dtftft )4
2(cos2*)4
2cos(21
0
ππππ ++−∫
Demod I (3) = -1
23
Demod Q (3) = dtftft )2(sin2*)2sin(21 ππππ ++−
440∫
Demod Q (3) = -1
Demod I (4) = dtftft )4
2(cos2*)4
2cos(231
0
ππππ ++∫
Demod I (4) = 3
Demod Q (4) = dtftft )4
2(sin2*)4
2sin(21
0
ππππ ++−∫
Demod Q (4) = -1
Deretan hasil demodulasi QPSK adalah sebagai berikut:
Demod Total = [-1 -1 3 -1 -1 3 -1]
2.6 Matched Filter (MF)
Matched filter merupakan filter linear yang digunakan untuk
mengoptimalkan perbandingan daya sinyal dengan daya noise (SNR). Matched
filter memaksimalkan probabilitas kemiripan pada bit-bit yang diterima untuk
transmisi digital melalui kanal AWGN ideal. Matched filter dapat
diimplementasikan jika bentuk pulsa dan waktu pengiriman sinyal diketahui oleh
penerima [5].
ytotal(t)
Matched Filter User 1
Matched Filter User 2
Matched Filter User K
y2[i]
y1[i]
yk [i]
Sync k
Sync 1
Sync 2
Gambar 2.5 Matched filter [5]
24
Didalam matched filter, sinyal yang masuk ke dalam setiap filter
kemudian dikalikan dengan spreading code. Persamaan sinyal gabungan yang
diterima oleh matched filter seperti yang ditunjukkan pada Gambar 2.5 adalah :
∑ (2-34) += )()( xnsbAt kkktotaly
dengan Ak adalah amplitudo pengguna ke-k, bk bit input pengguna ke-k, adalah
spreading code, n additive white gaussian noise, dan x urutan pengguna.
ks
Jika sinyal gabungan seperti pada persamaan (2-34) dikorelasikan dengan
spreading code pada filter yang berkesesuaian, maka diperoleh korelasi silang
(cross-correlations) yang telah dinormalisasi dari spreading codes dapat
dinyatakan sebagai
(2-35) ∑=
=N
x
kjjk xx ss1
)()(ρ
dengan cross-correlations berbentuk matriks :
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
=
MMM
M
M
R
ρρ
ρρ
ρρ
ρρ
.............
.
...
1
2
1
22
12
21
11
(2-36)
Adapun kriteria dari matriks yang digunakan adalah :
• Matriks harus merupakan matriks yang simetris
• Merupakan matriks Toeplizt dengan elemen-elemen pada diagonal = 1
(normalisasi)
(2-37) ∑=
=N
x
jtotalj xx syy1
)()(
25
)()()()(11 1
xxxxkk j
N
x
N
kk
N
xjj snssbAy ∑∑ ∑
== =
+⎟⎠
⎞⎜⎝
⎛=
(2-38) ∑=
+=N
k
jkkkj jnbAy1
ρ
Persamaan (2-38) dapat ditulis menjadi lebih sederhana
= (2-39) jy jj nr Ab +
dengan
1. rj = [ ],,.......3,2,1 jmjjj ρρρρ T merupakan cross-correlations dari pengguna
ke-j dan dengan pengguna lainnya
2. A = diag (A1, A2, A3,……. AM) merupakan amplitudo dari sinyal yang
diterima.
3. bk = [ b1, b2, b3, b4,……….]T merupakan vektor bit yang diterima.
Bila persamaan output dari setiap pengguna disusun menjadi satu, maka akan
didapat :
⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜
⎝
⎛
My
y
.
.
.1
=
⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜
⎝
⎛
MMM
M
M
ρρρ
ρρρρρρ
11
22221
11211
............
..
..
+ (2-40)
⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜
⎝
⎛
MA
AA
..00.............000.0
2
1
⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜
⎝
⎛
Mb
bb
.
.2
1
⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜
⎝
⎛
Mn
nn
.
.2
1
Persamaan (2-39) dapat disajikan ke dalam notasi matriks yang lebih sederhana
dan dinyatakan dengan
nRAby += (2-41)
Estimasi vektor bit yang dikirim dapat diketahui dari sinyal output dari matched
filter seperti pada persamaan (2-40).
26
2.7 Detektor MMSE (Minimum Mean Square Error)
Output dari matched filter kemudian akan diproses oleh detektor MMSE.
Detektor MMSE berfungsi untuk menentukan nilai estimasi output dari matched
filter.
^1b
Gambar 2.6 menunjukkan konfigurasi detektor MMSE. Output dari matched filter
masing-masing pengguna, setelah proses sinkronisasi, kemudian dimasukkan ke
dalam detektor MMSE. Hasil yang diperoleh dari detektor ini berupa nilai bit
dalam bentuk bipolar (1 atau -1).
Minimum mean square error (MMSE) adalah suatu algoritma yang
digunakan untuk memperkirakan (estimasi) suatu model parameter. Dalam
algoritma MMSE, error diperoleh dengan cara meminimalkan selisih kuadrat
rata-rata antara input dengan output. Jika w merupakan input, adalah output
dan z adalah fungsi observasi, maka persamaan algoritma MMSE dapat
dinyatakan dengan [6]
( )∧
zw
(2-42) ( )⎥⎥⎦
⎤
⎢⎢⎣
⎡⎟⎠⎞
⎜⎝⎛ −
∧ 2
zwwE
y(t)
Gambar 2.6 Detektor MMSE [6]
Sync k
Matched Filter pengguna 1
Matched Filter pengguna 2 ( ) 122 −−+= ARM δ
Matched Filter pengguna ke-k
^2b
^kb
Sync 2
Sync 1
27
Dari persamaan (2-41), y = RAb+n merupakan output dari matched filter
pengguna ke-k. Hasil output dari matched filter bergantung pada bit-bit yang
dikirim, cross-correlations dan noise. Untuk menentukan nilai estimasi output
dari matched filter, maka diperlukan suatu metode pengambilan keputusan.
Metode pengambilan keputusan ini bertujuan untuk menentukan nilai estimasi
yang diterima tersebut bernilai 1 atau -1.
Proses pengambilan keputusan pada algoritma MMSE diimplementasikan
dalam dua tahap, yaitu:
1. Menyatakan = My sebagai estimasi linear output dari matched filter.
merupakan vektor bit yang diterima dan y adalah output dari matched filter. M
adalah transformasi linear yang diperoleh dengan meminimalkan jarak antara
vektor bit yang diterima dengan vektor bit b dikirim. Hasil tranformasi
linear dinyatakan dengan persamaan (2-43).
^b
^b
^b
(2-43) ⎥⎥⎦
⎤
⎢⎢⎣
⎡⎟⎠⎞
⎜⎝⎛ −⎟
⎠⎞
⎜⎝⎛ −
∧∧
∧bbbbE
T
bmin
yang ekuivalen dengan
[ ]2min MybEM
− (2-44)
dengan
{ }Txxtracex =2 (2-45)
Dapat dilihat bahwa
[ ] [ ]{ }122 minmin −−+Ι=− ARAtraceMybEMM
δ (2-46)
28
sehingga output dari detektor MMSE dinyatakan dengan
[ ]( )k
yARA
bk
k ⎥⎦
⎤⎢⎣
⎡+=
−−∧ 1221sgn δ (2-47)
Persamaan (2-47) dapat disederhanakan menjadi
[ ]( )(( kyARbk122sgn −−
∧
+= δ ) ) (2-48)
dan
⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧
=−2
2
21
222 ,......,
kAAdiagA δδδ (2-50)
2. Untuk menentukan nilai estimasi apakah bernilai -1 atau 1, diperoleh
dengan cara membandingkan hasil estimasi tersebut terhadap level 0. Hasil
estimasi bit akhir dinyatakan dengan signum function
(2-51)
^b
)(∧
bsgn
⎪⎪
⎩
⎪⎪
⎨
⎧
>
=
<−
=∧
1untuk,1
0untuk,0
0untuk,1
)(^
^
^
b
b
b
bsgn
Dari persamaan (2-51), maka nilai hasil estimasi dapat diperoleh. Jika hasil
estimasi < 0, maka bit bernilai -1 dan sebaliknya. Sedangkan untuk = 0,
bit bernilai 0.
^b
^b
Nilai hasil estimasi kemudian akan dikonversi ke dalam bentuk biner. Bit bernilai
1 akan tetap 1 sedangkan bit bernilai -1 akan diterjemahkan sebagai 0.
BAB III
PERANCANGAN PROGRAM SIMULASI
Program simulasi ini dibuat menggunakan Graphical User Interface (GUI) yang
disediakan oleh MATLAB®.
3.1 Algoritma Perancangan Program
Algoritma perancangan program simulasi aplikasi MMSE pada multiuser
detection CDMA dapat dilihat pada Gambar 3.1.
Pembentukan hasil penyebaran (spreading)
Penjumlahan semua sinyal pengguna dengan AWGN
Modulasi QPSK masing-masing pengguna
Pemeriksaan bit-bit input
Demodulasi QPSK
masing-masing pengguna
Proses pada detektor MMSE untuk mendapatkan estimasi
bit–bit yang terkirim
Proses despreading pada matched filter
Gambar 3.1. Algoritma perancangan program simulasi aplikasi MMSE pada multiuser detection CDMA.
29
30
Input dari pengguna terlebih dahulu diperiksa. Apabila input program tidak
sesuai dengan yang diinginkan, maka pengguna diminta memasukkan input lagi.
Input dari pengguna adalah sinyal biner yang mempunyai nilai 0 atau 1 kemudian
akan disebarkan (spreading) oleh spreading code sesuai dengan pilihan masing-
masing pengguna. Hasil penyebaran masing-masing pengguna akan dimodulasi
QPSK (Quadrature Phase Shift Keying) dan dijumlahkan dengan AWGN (Additive
White Gaussian Noise).
Pada penerima, sinyal hasil modulasi QPSK dari tiap-tiap pengguna yang
terkena AWGN tersebut didemodulasi QPSK untuk mendapatkan besar tegangan
maksimum sebagai input pada matched filter. Proses pemisahan sinyal pada matched
filter adalah dengan cara mengalikan kembali (despreading) sinyal hasil demodulasi
QPSK dengan spreading code masing-masing pengguna. Output dari matched filter
kemudian diproses oleh detektor MMSE untuk memperoleh estimasi bit-bit masing-
masing pengguna. Hasil estimasi output dari detektor MMSE digunakan untuk
menentukan bit yang terkirim.
3.2 Proses Pemeriksaan Bit Input Pengguna
Input dari beberapa pengguna adalah bit-bit berupa kode biner (bk) dan
sampling frequency (fs). Jumlah pengguna dalam rancangan program simulasi ini
sebanyak tiga. Masing-masing pengguna harus memasukkan kode biner sebanyak dua
bit. Proses pemeriksaan input ditunjukkan dengan diagram alir pada Gambar 3.2.
31
Mulai
Masukkan bk, fs
bk =0 atau bk =1 ?
Konversi bk menjadi bipolar
Plot grafik sinyal bk
Selesai
ya
Tidak
Gambar 3.2. Diagram alir proses pemeriksaan bit-bit input.
Syarat yang harus dipenuhi untuk bit input bk masing-masing pengguna adalah
bk = 0 (3-1)
atau
bk = 1 (3-2)
Selain bit input, pengguna juga harus memasukkan nilai sampling frequency
pada program. Bentuk sinyal input yang disebarkan sangat bergantung pada nilai
sampling frequency. Semakin besar nilai sampling frequency, bentuk sinyal input
yang akan disebarkan juga semakin baik. Setelah semua syarat diatas terpenuhi,
sinyal input kemudian dikonversi menjadi sinyal berbentuk bipolar. Hasil konversi
tersebut kemudian ditampilkan dalam bentuk grafik.
32
3.3 Perancangan Sub Program Spreading
Diagram alir perancangan sub program spreading ditunjukkan pada Gambar
3.3.
Mulai
Tampilkan nilai hsl_xor_total
hasil xor <1 ?
Ambil matriks sk dan bk
Selesai
ya
Tidak
Pembentukan matriks sk dan bk
Operasi xor antara sk dengan bk
Masukkan bk, sk, dan fs
Bit 0 hasil xor di ubah menjadi -1
Bit 1 hasil xor tetap 1
hasil pengubahan disimpan sebagai
hsl_xor_total
Plot nilai grafik hsl_xor_total
Gambar 3.3. Diagram alir sub program penyebaran (spreading).
33
Sinyal input ke matched filter adalah sinyal superposisi dari beberapa pengguna
yang didemodulasi QPSK. Untuk membentuk sinyal superposisi tersebut, diperlukan
beberapa input yaitu:
1. Spreading codes
Spreading codes sk yang digunakan pada simulasi tugas akhir ini dibentuk dari
matriks Hadamard dengan ordo 4x 4 (H4). Spreading code dari tiap-tiap
pengguna akan menentukan bentuk bit yang akan disebarkan.
2. Bit input bk dari tiap pengguna.
Jumlah pengguna ditentukan sebanyak tiga dengan jumlah bit masing-masing
pengguna adalah sebanyak dua bit. Bit input dari setiap pengguna yang
dimasukkan, akan diestimasi oleh detektor MMSE sebagai hasil akhir output.
Untuk mendapatkan hasil penyebaran, dilakukan operasi logika XOR antara bit
input dengan spreading code. Bit input kemudian akan disebar sesuai dengan
spreading code yang dipilih oleh masing-masing pengguna. Hasil penyebaran
kemudian akan ditampilkan sebagai hsl_xor_total.
3.4 Perancangan Sub Program Modulasi QPSK
Input Sub program modulasi QPSK adalah hasil penyebaran masing-masing
pengguna (hsl_xor_total), amplitudo sinyal (A), frekuensi carrier (fc), kanal I dan
34
kanal Q. Diagram alir perancangan sub program modulasi QPSK ditunjukkan pada
Gambar 3.4 .
Ambil hsl_xor_total, fc
Mulai
Selesai
A x kanal I
Urutan bit ganjil
?
Inisialisasi hsl_xor_total, kanal I, kanal Q, A, fc
A x kanal Q
ya
Tidak
Modulasi QPSK Total
Tampilkan hasil modulasi QPSK total yang terganggu AWGN
Tampilkan grafik hasil modulasi total yang terganggu AWGN
Tampilkan modulasi dan grafik kanal I
Tampilkan modulasi dan grafik kanal Q
Modulasi QPSK Total terganggu AWGN
Gambar 3.4. Diagram alir sub program modulasi QPSK.
35
Proses penyebaran akan dibedakan berdasarkan urutannya. Bit dengan urutan
ganjil akan dimodulasi dengan sinyal berbentuk cosinus dan masuk ke kanal I dan
untuk bit genap akan dimodulasi dengan sinyal berbentuk sinus dan masuk pada
kanal Q. Hasil modulasi QPSK pengguna pada masing-masing kanal kemudian akan
dijumlahkan dan ditambah dengan AWGN. Hasil modulasi QPSK masing-masing
pengguna dan hasil modulasi QPSK total kemudian akan ditampilkan bersama
dengan grafik.
3.5 Perancangan Sub Program Demodulasi QPSK
Diagram alir sub program demodulasi QPSK ditunjukkan pada Gambar 3.5.
Mulai
Masukkan hasil modulasi total yang terganggu AWGN dan fc
Demodulasi QPSK
Sinyal superposisi yang terganggu AWGN
Selesai
Tampilkan nilai hasil demodulasi QPSK
Tampilkan grafik hasil demodulasi QPSK
Gambar 3.5. Diagram demodulasi QPSK.
36
Input sub program ini adalah sinyal hasil modulasi QPSK yang terkena AWGN dan
frekuensi pembawa (fc). Pada demodulasi QPSK, sinyal tersebut dikalikan dengan
frekuensi pembawa (fc). Hasil yang ditampilkan oleh sub program ini terdiri dari nilai
demodulasi QPSK dan grafik.
3.6 Perancangan Matched filter (MF)
Gambar 3.6 menunjukkan diagram alir program untuk matched filter.
Mulai
Selesai
Tampilkan hasil despreading
Proses pengalian sinyal demodulasi dengan setiap spreading codes
Ubah spreading code menjadi bentuk bipolar
Masukkan hasil demodulasi QPSK dan spreading code
Tampilkan grafik sinyal hasil despreading
Gambar 3.6. Diagram alir Matched Filter.
37
Pada matched filter, sinyal demodulasi QPSK kemudian dikalikan (despreading)
dengan spreading code masing-masing pengguna. Hasil despreading ditampilkan
dalam bentuk tampilan nilai dan grafiik.
3.7 Proses Estimasi pada Detektor MMSE
Gambar 3.7 menunjukkan diagram alir detektor MMSE.
Tampilkan hasil proses estimasi
Selesai
Mulai
Proses estimasi untuk mendapatkan nilai bit yang
terkirim.
Bit diterjemahkan sebagai 1
Baca output Matched Filter
Tidak
Ya
Estimasi bit > 0 ?
Konversi bit output dari bentuk polar menjadi sandi biner
Tampilkan hasil konversi
Bit diterjemahkan sebagai -1
Gambar 3.7. Diagram alir detektor MMSE.
38
Pada detektor MMSE, sinyal output dari matched filter akan diproses untuk
memperoleh nilai estimasi bit-bit yang terkirim. Jika nilai estimasi lebih besar dari
nol, maka diterjemahkan sebagai bit 1. Sedangkan jika nilai estimasi lebih kecil dari
nol , maka akan diterjemahkan sebagai bit -1. Hasil terjemahan bit tersebut kemudian
akan dikonversi ke dalam bentuk sandi biner.
3.8 Layout Program Simulasi
Program ini menggunakan sistem operasi Microsoft Windows XP dengan
MATLAB® sebagai bahasa pemrograman. Layout program simulasi terdiri dari dua
buah tampilan, yaitu tampilan awal program dan program utama.
3.8.1 Tampilan Awal Program
Gambar 3.8 merupakan rancangan tampilan awal program simulasi.
Push button Static text Axes
Gambar 3.8. Perancangan tampilan awal program.
39
Gambar 3.8 memperlihatkan sebuah form, atau dalam MATLAB biasa disebut
dengan figure. Form tersebut terdiri dari beberapa komponen, yaitu:
1. Static text, digunakan untuk menghasilkan teks berisi judul tugas akhir, nama
penulis dan universitas yang bersifat statis (tetap).
2. Axes, digunakan untuk menampilkan logo universitas dan logo MATLAB.
3. Pushbutton, terdiri dari tombol Start dan tombol Exit. Jika tombol Start
ditekan, maka program akan menampilkan rancangan tampilan program
utama seperti pada Gambar 3.9. Sedangkan jika tombol Exit ditekan, maka
program akan keluar dari seluruh operasi sistem.
3.8.2 Layout Program Utama
Layout program utama merupakan rancangan secara visual untuk
implementasi program simulasi aplikasi MMSE pada multiuser detection CDMA.
Layout pada Gambar 3.8 menggunakan beberapa komponen visual yang disediakan
oleh program aplikasi MATLAB®. Layout program utama terdiri dari dua bagian,
yaitu bagian pengirim (transmitter) dan bagian penerima (receiver) seperti yang
ditunjukkan pada Gambar 3.9 dan Gambar 3.10. Gambar 3.9 adalah tampilan
program bagian pengirim (transmitter). Sedangkan Gambar 3.10 merupakan tampilan
program bagian penerima (receiver). Apabila tombol Next pada Gambar 3.9 ditekan,
maka program akan menampilkan rancangan tampilan bagian penerima seperti pada
Gambar 3.10.
40
Static text uipanel Edit text
Radio button
Pop-up Menu figure 1 Push button Axes Gambar 3.9. Layout program bagian pengirm (transmitter).
List box figure 2
Gambar 3.10. Layout program bagian penerima (receiver).
41
Komponen-komponen visual pada layout program utama tersebut adalah:
1. Figure
Figure adalah objek yang digunakan sebagai tempat untuk merancang
program simulasi dan dapat diisi dengan komponen. Figure disebut sebagai
layout area.
2. Edit text
Edit text adalah area yang dapat digunakan sebagai tempat untuk
menuliskan satu baris text input. Pada program simulasi ini, edit text
digunakan sebagai tempat memasukkan nilai bit input, frekuensi sampling
dan frekuensi carrier. Selain sebagai input, edit text digunakan sebagai output
nilai waktu sampling, perioda sinyal, bitrate, spreading codes, hasil proses
spreading, hasil modulasi QPSK, hasil modulasi QPSK total, hasil
demodulasi QPSK total, hasil despreading sinyal, estimasi output, dan hasil
konversi bit.
3. Static text
Static text adalah area yang digunakan sebagai tempat untuk
menampilkan text informasi. Text informasi pada static text tidak dapat
diubah oleh pengguna. Pada program simulasi ini, static text digunakan untuk
menampilkan keterangan input dan tipe spreading codes (tipe 1 dan tipe 2).
4. Radio button
Radio button adalah tombol yang digunakan untuk memilih satu pilihan
42
banyak pilihan pada suatu waktu. Pada program simulasi ini radio button
digunakan untuk memilih spreading code yang akan digunakan.
5. Pop-up menu
Pop-up menu digunakan untuk menampilkan daftar pilihan yang dapat
dipilih oleh pengguna. Pada program simulasi ini, pop-up menu digunakan
untuk memilih besarnya (AWGN) sebagai salah satu input modulasi QPSK.
6. List box
List box digunakan untuk menampilkan daftar informasi. Pada program
simulasi ini list box digunakan untuk menampilkan besarnya BER (bit error
rate) dan MMSE.
7. Axes
Axes digunakan untuk menampilkan grafik atau kurva. Pada program
simulasi ini axes digunakan sebagai tempat untuk menampilkan grafik sinyal
data informasi, hasil spreading, hasil modulasi QPSK, hasil modulasi QPSK
total, hasil demodulasi QPSK total, dan hasil despreading.
8. Push button
Push button merupakan tombol yang digunakan untuk mengeksekusi
sebuah perintah. Pada Gambar 3.9 dan Gambar 3.10 terdapat beberapa
tombol, yaitu
a. Tombol plot data yang digunakan untuk menjalankan program dengan
menampilkan bentuk sinyal bit input yang diberikan.
43
b. Tombol Spread yang digunakan untuk menjalankan program spreading.
Tombol ini akan menampilkan dua tampilan, yaitu hasil spreading dan
grafik sinyal spreading.
c. Tombol Modulasi yang digunakan untuk menjalankan program
modulasi. Tombol ini akan menampilkan dua tampilan, yaitu hasil
modulasi dan grafik modulasi QPSK.
d. Tombol Mod Total yang digunakan untuk menjalankan program
modulasi QPSK total sekaligus menampilkan hasil dan grafik sinyal.
e. Tombol Plot Kanal I dan Plot Kanal Q yang digunakan untuk
menampilkan grafik sinyal pada kanal I dan kanan Q
f. Tombol Next yang digunakan untuk pindah ke figure 2.
g. Tombol Demod Total yang digunakan untuk menjalankan program
demodulasi QPSK total sekaligus menampilkan hasil dan grafik sinyal.
h. Tombol Despread yang digunakan untuk menjalankan program
despreading, menampilkan hasil dan grafik sinyal.
i. Tombol Konversi Bit yang digunakan untuk menjalankan program
detektor MMSE dan menampilkan hasilnya.
j. Tombol Back yang digunakan untuk kembali ke figure 1
k. Tombol Close yang digunakan untuk keluar dari program simulasi.
BAB IV
HASIL DAN PEMBAHASAN
Bab ini menjelaskan hasil yang diperoleh dari progam simulasi aplikasi MMSE
pada multiuser detection CDMA yang telah dibuat menggunakan software aplikasi
Matlab 7. Perbandingan antara perhitungan secara teori dan simulasi juga akan
dibahas.
4.1. Tampilan Awal Program Simulasi
Saat pertama kali menjalankan program simulasi, pengguna akan melihat
tampilan halaman pembuka program. Halaman pembuka berisi judul, logo dan nama
pembuat program. Tampilan halaman pembuka dapat dilihat pada Gambar 4.1.
Gambar 4.1 Tampilan awal program simulasi
Pada tampilan awal program terdapat dua tombol yang dapat digunakan oleh
pengguna, yaitu tombol Start dan tombol Exit. Tombol Start digunakan untuk masuk
44
45
ke program utama, sedangkan tombol Exit digunakan untuk keluar dari program
simulasi.
4.2. Tampilan Program Utama
Program utama simulasi terdiri dari dua tampilan, yaitu tampilan program
bagian pengirim (transmitter) dan bagian penerima (receiver). Tampilan program
untuk bagian pengirim, ditunjukkan pada Gambar 4.2, terdiri dari empat sub
program, yaitu pemeriksaan bit-bit input, proses penyebaran (spreading), modulasi
QPSK dan superposisi sinyal QPSK yang terganggu AWGN. Data hasil masing-
masing proses akan ditampilkan dengan grafik.
Gambar 4.2 Tampilan program bagian Transmitter.
Sedangkan tampilan program bagian penerima (receiver), seperti yang
ditunjukkan pada Gambar 4.3, juga terdiri dari beberapa sub program yaitu
demodulasi sinyal superposisi modulasi QPSK, despreading pada matched filter,
46
detektor MMSE dan tampilan grafik hasil masing-masing proses. Tampilan program
ini akan muncul jika tombol Next pada program simulasi ditekan.
Gambar 4.3 Tampilan program bagian Receiver.
(a) (b)
Gambar 4.4. Tampilan menu Help. (a) Tampilan submenu Help_MMSE. (b) Tampilan submenu Help_ProgMMSE.
47
Pada bagian atas program utama terdapat menu program yang berisi menu File
dan menu Help. Menu File berisi Save yang berfungsi untuk menyimpan data seluruh
hasil simulasi. Menu Help terbagi menjadi dua, yaitu submenu Help_MMSE yang
berisi dasar teori dari program simulasi ini. Sedangkan submenu Help_ProgMMSE
yang berfungsi untuk menuntun pengguna bagaimana cara memakai program ini.
Tampilan sub menu Help_MMSE dan Help_ProgMMSE dapat dilihat pada Gambar
4.4.
4.3. Tampilan Input Program
Tahal awal program simulasi ini adalah pemberian input pada sistem yang akan
diproses. Input program simulasi terdiri bit-bit dalam bentuk kode biner yaitu berupa
“0” atau “1” untuk ketiga pengguna, spreading codes, perioda sampling, perioda
sinyal, kecepatan data (bit rate).
Gambar 4.5 menunjukkan tampilan input program simulasi. Input bit-bit biner,
spreading codes dan frekuensi sampling, dimasukkan secara langsung pada tampilan
program, sedangkan perioda sampling, perioda sinyal dan bit rate akan ditampilkan
secara otomatis yang merupakan hasil matematis dari input yang diberikan pada
Gambar 4.5. Tampilan input program.
48
program. Jika tombol plot data ditekan maka program akan menampilkan tampilan
seperti pada Gambar 4.6.
Gambar 4.6 menunjukkan tampilan grafik sinyal input yang diberikan oleh
pengguna seperti ditunjukkan pada Tabel 4.1.
Tabel 4.1. Input program simulasi.
Gambar 4.6. Tampilan grafik sinyal input bit-bit pengguna.
Bit input Pengguna 1 1 0
Bit input Pengguna 2 0 1
Bit input Pengguna 3 1 1
sampling frequency (fs) 5000 Hz
sampling perioda (1/fs) 0.0002 second
signal perioda (T) 0.5 second
Jumlah bit tiap detik (bitrate) 2 bps
4.4. Hubungan antara Proses Spreading dengan Bit-bit Input
Bit-bit input tiap-tiap pengguna akan disebarkan sesuai dengan spreading code
yang telah dipilih. Hasil spreading antara bit–bit input dengan spreading code
dilakukan melalui operasi logika XOR. Pada program simulasi ini spreading codes
49
terdiri dari dua tipe, yaitu tipe 1 dan tipe 2. Bentuk bit yang akan disebarkan sangat
bergantung pada jenis spreading code yang dipilih masing-masing pengguna.
Gambar 4.7 Tampilan input proses spreading.
Gambar 4.7 menunjukkan tampilan input proses spreading. Spreading codes
yang dipilih pengguna pada program simulasi ini adalah spreading codes tipe 1.
Input sub program spreading secara lengkap ditunjukkan pada Tabel 4.2.
Tabel 4.2 Input sub program spreading Spreading code pengguna 1 1 0 1 0
Spreading code pengguna 2 1 1 0 0
Spreading code pengguna 3 1 0 0 1
sampling frequency (fs) 5000 Hz
sampling perioda (1/fs) 0.0002 second
signal perioda (T) 0.125 second
Jumlah bit tiap detik (bitrate) 8 bps
50
Setelah semua input dimasukkan, langkah selanjutnya adalah memulai proses
spreading masing-masing pengguna. Jika tombol Spread ditekan, maka program
akan memberikan tiga tampilan sekaligus seperti yang ditunjukkan pada Gambar 4.8.
(a)
(b)
(c)
Gambar 4.8. Tampilan sub program spreading. (a) Tampilan data spreading ketiga pengguna. (b) Grafik sinyal spreading (c) Grafik sinyal spreading total
Gambar 4.8a menunjukkan tampilan data hasil spreading masing-masing
pengguna yang merupakan hasil operasi logika XOR yang kemudian dikonversi ke
51
dalam bentuk bipolar dengan bit “0” dikonversi menjadi “-1” dan bit “1” akan tetap
“1”. Data hasil spreading masing-masing pengguna tersebut kemudian ditampilkan
dalam bentuk grafik sinyal seperti yang ditunjukkan pada Gambar 4.8b. Sedangkan
Gambar 4.8c menunjukkan hasil penjumlahan proses spreading dari ketiga
pengguna.
Berdasarkan Gambar 4.6, Gambar 4.8b, Tabel 4.1 dan Tabel 4.2, terlihat bahwa
perubahan bit-bit input pengguna terjadi sebagai hasil spreading yang telah
dilakukan. Perubahan-perubahan tersebut dapat dijelaskan seperti yang ditunjukkan
pada Gambar 4.9 dengan penjelasan sebagai berikut:
• Bit-bit input yang semula berjumlah 2 bit meningkat menjadi 8 bit. Hal ini
berarti bahwa terjadi peningkatan kecepatan bit (bit rate) input pengguna dari
2 bps (bit per second) menjadi 8 bps.
• Bentuk sinyal input pengguna sebagai hasil proses spreading mengalami
perubahan. Perubahan tersebut dapat dilihat dengan membandingkan bentuk
grafik sinyal input pengguna pada Gambar 4.6 dan grafik sinyal hasil spreading
yang telah diubah ke dalam bentuk bipolar (-1 dan +1) pada Gambar 4.8b.
• Perioda (Tb) sinyal bit input pengguna mengalami perubahan dari Tb = 0.5 detik
menjadi Tb = 0.125 detik. Hal tersebut disebabkan karena peningkatan jumlah
bit pengguna akibat proses spreading.
• Bandwidth (Bw) sinyal input juga semakin lebar setelah proses spreading yang
semula 1 Hz menjadi 4 Hz. Bandwidth dapat dihitung melalui persamaan
bTBw
21
= .
52
-2
1
2
-1 0.125 0.25 0.375 0.50 0.625 0.75 0.875 1
1 1 1 1
-1 -1 -1 -1
-2
1
2
-1
A (Volt)
t (detik)0.125 0.25 0.375 0.50 0.625 0.75 0.875 1
1 1 1 1
-1 -1 -1 -1
Deretan bit input pengguna 1
Deretan bit spreading pengguna 1
(a)
-2
1
2
-1 0.125 0.25 0.375 0.50 0.625 0.75 0.875 1
-2
1
2
-1 0.125 0.25 0.375 0.50 0.625 0.75 0.875 1
1 1 1 1
1 1 1 1
-1 -1 -1 -1
-1 -1 -1 -1
Deretan bit input pengguna 2
Deretan bit spreading pengguna 2
(b)
-2
1
2
-1 0.125 0.375 0.50 0.625 0.75 0.875 10.25
-2
1
2
-1 0.125 0.375 0.50 0.625 0.75 0.875 10.25
1 1 1 1 1 1 1 1
1 1 1 1
-1 -1 -1 -1
Deretan bit input pengguna 3
(c)
A (Volt)
t (detik)
A (Volt)
A (Volt)
t (detik)
A (Volt)
t (detik)
A (Volt)
t
(detik)
Gambar 4.9. Grafik sinyal hasil proses spreading .(a) Grafik sinyal Pengguna 1 (b) Grafik sinyal Pengguna 2. (c) Grafik sinyal Pengguna 3.
53
Berdasarkan hasil yang diperoleh dari sub program spreading, dapat
disimpulkan bahwa hasil yang diperoleh sesuai dengan teori dan perancangan yang
telah dibuat. Dengan demikian dapat dikatakan bahwa hasil tersebut adalah hasil
yang diharapkan oleh penulis.
4.5. Hasil Modulasi QPSK
Input sub program simulasi untuk modulasi QPSK ditunjukkan pada Tabel 4.3.
Input hasil spreading ketiga pengguna diambil dari sub program spreading pada
Gambar 4.8a, sedangkan input frekuensi pembawa (carrier frequency), amplitudo
sinyal, frekuensi sampling, modulasi kanal I dan Q diberikan secara otomatis di
dalam program.
Tabel 4.3. Input modulasi QPSK masing-masing pengguna Hasil spreading pengguna 1 [ 1 -1 1 -1 -1 1 -1 1]
Hasil spreading pengguna 2 [-1 -1 1 1 1 1 -1 -1]
Hasil spreading pengguna 3 [ 1 -1 -1 1 1 -1 -1 1]
signal amplitude (Vm) 2 volt
carrier frequency (fc) 10 Hz
sampling frequency (fs) 5000 Hz
sampling perioda (1/fs) 0.0002 second
signal perioda (T) 0.125 second
Kanal I ⎟⎠⎞
⎜⎝⎛ +
42cos ππ cf
Kanal Q ⎟⎠⎞
⎜⎝⎛ +
42sin ππ cf
Jumlah bit tiap detik (bit rate) 8 bps
54
Nilai frekuensi carrier dan frekuensi sampling pada Tabel 4.3 dimasukkan secara
langsung pada program. Nilai-nilai tersebut merupakan contoh input percobaan yang
diberikan pada program simulasi ini. Semakin besar nilai frekuensi sampling, maka
kualitas sinyal yang dihasilkan akan semakin baik.
Gambar 4.10 menunjukkan contoh tampilan nilai hasil modulasi QPSK masing-
masing pengguna dan Gambar 4.11 menunjukkan tampilan grafik sinyal modulasi
QPSK ketiga pengguna. Tampilan ini akan muncul jika tombol Modulasi pada
program ditekan.
Gambar 4.10 Tampilan nilai hasil modulasi QPSK
Gambar 4.11 Tampilan grafik sinyal modulasi QPSK ketiga pengguna
Hasil proses spreading seperti yang ditunjukkan pada Gambar 4.8a akan
dibedakan berdasarkan urutannya. Bit dengan urutan ganjil akan dikelompokkan ke
dalam kanal I dan dimodulasi oleh sinyal berbentuk cosinus sedangkan bit urutan
55
genap akan dikelompokkan ke dalam kanal Q dan dimodulasi oleh sinyal berbentuk
sinus. Hasil proses modulasi pada masing-masing kanal dijumlahkan dan
ditampilkan seperti yang ditunjukkan pada Gambar 4.10 dan Gambar 4.11.
Dari Gambar 4.10 dan Gambar 4.11 deretan output modulasi QPSK dalam satu
satuan waktu dapat dijelaskan seperti pada Gambar 4.12 dan Tabel 4.4.
-11
10.1 0.2 0.40.3 0.5 0.6 0.7 0.8 0.90
-1 1 -1 1 1 -1A (Volt)
-1.4142
1.4142
1 -11 -1 -1 1-1 1
0
-1.4142
1.4142
0.2 0.40.3 0.5 0.6 0.7 0.8 0.9 10.1
-1.4142
0.1 0.2 0.40.3 0.5 0.6 0.7 0.8 0.9 10
1 1-1-1-11 1 -11.4142
t (detik)
A (Volt)
t (detik)
A (Volt)
t (detik)
Gambar 4.12 Grafik sinyal modulasi QPSK ketiga pengguna
Garis putus-putus pada Gambar 4.12 menunjukkan bahwa tiap perioda sinyal
(Tb=0,125 detik) mewakili satu bit dengan amplitudo maksimum (Vm) sebesar
2 Volt dan pergeseran fase sinyal sebesar 2250 untuk masing-masing bit. Nilai
modulasi QPSK pada Tabel 4.4 merupakan hasil perkalian antara nilai proses
56
spreading masing-masing pengguna dengan sinyal berbentuk ⎟⎠⎞
⎜⎝⎛ +
42cos ππfcVm
pada kanal I dan ⎟⎠⎞
⎜⎝⎛ +
42sin ππfcVm pada kanal Q. Besarnya nilai modulasi tersebut
sangat ditentukan oleh fase dan amplitudo sinyal input program. Oleh karena hasil
perkalian antara amplitudo maksimum (Vm) dengan ⎟⎠⎞
⎜⎝⎛ +
42cos ππfc
atau ⎟⎠⎞
⎜⎝⎛ +
42sin ππfc bernilai satu, maka nilai modulasi QPSK adalah sama dengan
nilai proses spreading pada ketiga pengguna tersebut. Hal ini dapat dilihat dengan
membandingkan nilai proses spreading pada Gambar 4.8a dengan nilai hasil
modulasi QPSK pada Gambar 4.11.
Tabel 4.4 Hasil modulasi QPSK ketiga pengguna
Kanal Modulasi QPSK Pengguna
I11 Q11 I12 Q12 I21 Q21 I22 Q22 Pengguna 1 -1 1 -1 1 1 -1 1 -1
Pengguna 2 1 1 -1 -1 -1 -1 1 1
Pengguna 3 -1 1 1 -1 -1 1 1 -1
Perioda sinyal (Tb)
0.125 detik
0.25 detik
0.375 detik
0.5 detik
0.625 detik
0.75 detik
0.875 detik
1 detik
Pergeseran Fase sinyal
2250 2250 2250 2250 2250 2250 2250 2250
Berdasarkan Gambar 4.12 dan Tabel 4.4 dapat disimpulkan bahwa hasil yang
diperoleh pada modulasi QPSK sesuai dengan teori dan perancangan pada Bab II dan
Bab III. Hasil ini juga sesuai dengan yang diharapkan oleh penulis.
57
4.6. Pengaruh AWGN pada Modulasi QPSK
Input sub program modulasi QPSK total ditunjukkan pada Tabel 4.5. Tabel 4.5
merupakan input sub program modulasi QPSK total yang diambil dari nilai hasil sub
program modulasi QPSK pada Gambar 4.10.
Tabel 4.5. Input sub program modulasi total QPSK.
Jika nilai-nilai seperti pada Tabel 4.5 dimasukkan dan menekan tombol Mod
Total pada program, maka akan ditampilkan dua tampilan sekaligus seperti pada
Gambar 4.13 dan Gambar 4.14.
kanalI11
kanalQ11
kanalI12
kanal Q12
kanal I21
kanal Q21
kanal kanal I22 Q22
Hasil modulasi QPSK pengguna 1
-1.00 1.00 -1.00 1.00 1.00 -1.00 1.00 -1.00
Hasil modulasi QPSK pengguna 2
1.00 1.00 -1.00 -1.00 -1.00 -1.00 1.00 1.00
Hasil modulasi QPSK pengguna 3
-1.00 1.00 1.00 -1.00 -1.00 1.00 1.00 -1.00
Modulasi QPSK total ketiga pengguna
-1.00 3.00 -1.00 -1.00 -1.00 -1.00 3.00 -1.00
Signal to Noise Ratio
(SNR )
0 dB, 8 dB dan 16.6 dB
Gambar 4.13. Tampilan hasil modulasi QPSK total.
58
Gambar 4.14. Tampilan grafik sinyal superposisi modulasi QPSK.
Sinyal yang dikirimkan melalui kanal transmisi merupakan hasil penjumlahan
(superposisi) ketiga sinyal modulasi yang terganggu AWGN (Additive White
Gaussian Noise). Gambar 4.13 menunjukan tampilan nilai hasil modulasi QPSK dan
Gambar 4.14 menunjukkan tampilan grafik sinyal superposisi modulasi QPSK untuk
ketiga pengguna. Gambar yang ditampilkan program simulasi pada Gambar 4.13
adalah nilai acak (random) yang disebabkan oleh penambahan AWGN pada sistem.
Nilai tersebut akan berubah secara terus-menerus secara fluktuatif jika tombol Mod
Total program ditekan. Nilainya juga tidak akan pernah sama walaupun program
simulasi diulang dari awal.
Penambahan AWGN pada sistem juga mempengaruhi bentuk sinyal yang
dihasilkan. Penambahan AWGN pada sistem akan menyebabkan sinyal mengalami
perubahan atau terdistorsi. Pengaruh ini dapat dilihat dengan membandingkan nilai
modulasi QPSK total ketiga pengguna pada Tabel 4.5 dengan nilai yang ditampilkan
program pada Gambar 4.13. Sebagai contoh nilai modulasi QPSK total kanal I11,
Tabel 4.5 yang semula bernilai -1.00 menjadi -1.749 pada Gambar 4.12.
59
Tabel 4.6. Hasil modulasi QPSK total. Bit 1 Bit 2 Input
pengguna Kanal
I11 Kanal Q11
Kanal I12
Kanal Q12
Kanal I21
Kanal Q21
Kanal I22
Kanal Q22
SNR
1 0 0 1 1 1
-1.749
3.217
-2.986
1.060
-3.885
-0.502
5.063
-1.065
0 dB
1 0 0 1 1 1
-0.774
2.871
-1.406
-1.094
-0.880
-0.500
4.505
-0.921
8 dB
1 0 0 1 1 1
-0.727
2.975
-0.925
-0.817
-0.985
-1.213
2.658
-0.584
16.6 dB
Besar SNR (Signal to Noise Ratio) sangat mempengaruhi kinerja sistem
komunikasi. Semakin besar nilai SNR, maka sistem komunikasi bekerja secara baik
dan lebih mendekati spesifikasi yang diharapkan. Hal tersebut bisa dilihat dari nilai
persentase galat rata–rata yang diperoleh pada Tabel 4.7. Nilai galat rata–rata pada
SNR = 16.6 dB jauh lebih kecil dibandingkan dengan pada SNR = 0 dan SNR= 8 dB.
Tabel 4.7 Perbandingan nilai modulasi QPSK total dengan SNR = 0 dB, SNR = 8 dB dan SNR = 16.6 dB
Modulasi QPSK total dengan AWGN
Modulasi QPSK total tanpa
AWGN SNR = 0 dB
SNR = 8 dB
SNR = 16.6 dB
Galat dengan SNR = 0 dB
(%)
Galat dengan SNR = 8 dB
(%)
Galat dengan SNR = 16.6 dB
(%)
-1.00
-1.749 -0.774 -0.727
74.9 22.6 27.3
3.00
3.217 2.871 2.975
7.23 4.3 0.8
-1.00
-2.986 -1.406 -0.925
198.6 40.6 7.5
-1.00
1.060 -1.094 -0.817
6 9.4 18.1
-1.00
-3.885 -0.880 -0.985
288.5 12 1.5
-1.00
-0.502 -0.500 -1.213
49.8 50 21.3
3.00 5.063 4.505 2.658
68.7 34.8 11.4
-1.00 -1.065 -0.921 -0.584 6.5 7.9 41.6
Galat rata-rata 87.5 22.7 16.2
60
Nilai persentase galat pada Tabel 4.7 diperoleh dengan membandingkan data
modulasi QPSK total ketiga pengguna pada Tabel 4.5 dan hasil modulasi QPSK total
pada Tabel 4.6. Persentase galat dapat dihitung dengan menggunakan persamaan :
%100AWGN tanpamodulasi Nilai
AWGNdengan modulasi Nilai - AWGN tanpamodulasi NilaiGalat ×=
Nilai SNR = 16.6 dB adalah nilai real atau nyata yang merupakan batas
maksimum yang diijinkan dalam teknik modulasi QPSK. Tabel 4.8 menunjukkan
perbandingan dari beberapa teknik modulasi digital.
Tabel 4.8 Perbandingan dari beberapa modulasi digital Signal to noise ratio for BER
= 10 -4 (dB) Information Designation
system
Information Density (bps/Hz)
Eb/No on the Channel
SNR at Decision CKT
Peak to Average
Ratio (dB)
2.PSK 1 10.6 13.6 0.0
4.PSK 4.QAM 2 10.6 16.6 0.0
QPR 2* 12.6 16.6 2.0
8.PSK 3 14.0 18.6 0.0
16.QAM 4 14.5 20.5 2.55
16.QPR 4* 16.5 24.5 4.55
16.PSK 4 18.3 24.3 0.0
32.QAM 5 17.4 24.4 2.3
64.QAM 6 18.8 26.6 3.08
Berdasarkan hasil yang diperoleh dari sub program modulasi dapat
disimpulkan bahwa hasil tersebut sesuai dengan teori dan perancangan yang telah
dibuat oleh penulis. Semakin besar nilai SNR, maka AWGN yang dihasilkan akan
semakin kecil. Dengan AWGN yang kecil, sistem akan bekerja secara baik.
61
4.7. Pengaruh Frekuensi Carrier Terhadap Modulasi QPSK
Sinyal pembawa (carrier) adalah sinyal yang digunakan untuk memodulasi
sinyal informasi. Besar ferkuensi carrier yang digunakan dalam program simulasi ini
dibuat secara variabel. Gambar 4.15 menunjukkan tampilan input frekuensi carrier.
Gambar 4.15. Tampilan input frekuensi carrier.
Jika nilai fekuensi carrier yang diberikan adalah sebesar 10 Hz, maka program akan
menunjukkan tampilan grafik sinyal seperti pada Gambar 4.16.
(a) ( b)
Gambar 4.16. Tampilan hasil modulasi QPSK. (a) Grafik sinyal modulasi masing-masing penguna (b) Grafik sinyal modulasi ketiga pengguna
Gambar 4.16a menunjukkan contoh tampilan grafik sinyal hasil modulasi QPSK
masing-masing pengguna dan Gambar 4.16b menunjukkan tampilan grafik sinyal
modulasi QPSK total ketiga pengguna. Jika besar frekuensi carrier yang dimasukkan
adalah sebesar 100 Hz dan 200 Hz , maka program akan menampilkan seperti yang
ditunjukkan Gambar 4.17 dan Gambar 4.18.
62
(a) (b)
Gambar 4.17. Tampilan hasil modulasi QPSK dengan frekuensi carrier = 100 Hz. (a) Tampilan grafik sinyal modulasi masing-masing penguna (b) Tampilan nilai modulasi masing-masing pengguna.
(a) (b)
Gambar 4.18. Tampilan hasil modulasi QPSK dengan frekuensi carrier = 200 Hz. (a) Tampilan grafik sinyal modulasi masing-masing penguna (b) Tampilan nilai modulasi masing-masing pengguna.
Berdasarkan Gambar 4.16, Gambar 4.17 dan Gambar 4.18 terlihat bahwa
besarnya frekuensi carrier yang dimasukkan dalam program tidak berpengaruh terhadap
nilai modulasi QPSK masing-masing pengguna. Nilai modulasi pada masing-masing
pengguna adalah sama dengan frekuensi carrier yang berbeda. Hal tersebut dapat dilihat
dengan membandingkan nilai modulasi QPSK masing-masing pengguna pada Gambar
4.16b, Gambar 4.17b dan Gambar 4.18b. Dalam tugas akhir ini besarnya nilai frekuensi
carrier tidak diperhitungkan dan hanya digunakan untuk menampilkan grafik sinyal hasil
modulasi QPSK saja. Dengan demikian berapapun besar nilai frekuensi carrier yang
dimasukkan tidak akan mempengaruhi nilai estimasi output pada detektor MMSE.
63
4.8. Hasil Demodulasi QPSK
Sinyal superposisi hasil modulasi QPSK total yang dikirim oleh pengirim akan
diterima dan didemodulasi QPSK oleh masing-masing pengguna. Pada demodulasi,
sinyal didapatkan kembali dengan cara mengalikan sinyal tersebut dengan frekuensi
pembawa (carrier) seperti pada pengirim. Gambar 4.19 menunjukkan tampilan nilai
hasil demodulasi QPSK total, sedangkan Gambar 4.20 menunjukkan tampilan grafik
sinyal hasil demodulasi QPSK total. Tampilan seperti Gambar 4.19 dan Gambar 4.20
akan ditampilkan dengan menekan tombol Demod Total pada program.
Gambar 4.19. Tampilan hasil demodulasi QPSK total.
Gambar 4.20. Tampilan grafik sinyal hasil demodulasi QPSK total.
Berdasarkan Gambar 4.19 dan Gambar 4.20 terlihat bahwa nilai yang diperoleh
dari hasil simulasi modulasi QPSK dan demodulasi QPSK adalah sama. Nilai dan
64
sinyal hasil modulasi dan demodulasi harus sama, dengan catatan sinyal yang dikirim
tidak mengalami gangguan-gangguan seperti multipath fading yang dapat
menyebabkan sinyal mengalami kerusakan atau terdistorsi.
Tabel 4.9 adalah tabel hasil percobaan sub program demodulasi QPSK dengan
jumlah bit input pengguna sebanyak dua bit dan SNR sebesar 0 dB, 8 dB dan 16.6
dB. SNR sebesar 0 dB merupakan batas bawah dan 16.6 dB merupakan batas atas
yang diberikan pada program simulasi ini.
Tabel 4.9 Hasil demodulasi QPSK total. Bit 1 Bit 2 Input
pengguna Kanal
I11 Kanal Q11
Kanal I12
Kanal Q12
Kanal I21
Kanal Q21
Kanal I22
Kanal Q22
SNR
1 0 0 1 1 1
-1.749
3.217
-2.986
1.060
-3.885
-0.502
5.063
-1.065
0 dB
1 0 0 1 1 1
-0.774
2.871
-1.406
-1.094
-0.880
-0.500
4.505
-0.921
8 dB
1 0 0 1 1 1
-0.727
2.975
-0.925
-0.817
-0.985
-1.213
2.658
-0.584
16.6 dB
4.9. Hasil Proses Despreading pada Matched Filter (MF)
Hasil yang diperoleh pada sub program simulasi QPSK total pada Gambar 4.19
kemudian akan diproses lebih lanjut oleh matched filter masing-masing pengguna.
Hasil pemrosesan pada matched filter yang disebut dengan despreading ditampilkan
oleh program seperti pada Gambar 4.21 dan Gambar 4.22.
Gambar 4.21 Tampilan hasil despreading.
65
Tampilan hasil despreading seperti Gambar 4.21 dan Gambar 4.22 akan
ditampilkan dengan menekan tombol Despread pada program simulasi. Hasil yang
ditunjukkan seperti pada Gambar 4.21 dan Gambar 4.22 diperoleh dengan cara
mengalikan hasil demodulasi QPSK seperti pada Gambar 4.19 dengan spreading
code masing-masing pengguna yang telah ditentukan sebelumnya
Gambar 4.22. Tampilan grafik sinyal hasil despreading ketiga pengguna.
Tabel 4.10. Perbandingan hasil spreading dan dispreading.
Bit input Bit 1 Bit 2
Hasil spreading Hasil despreading
SNR
1
0 [ -1 1 -1 1 1 -1 1 -1]
[-3.88 0.50 5.06 1.06 -1.75 -3.22 -2.99 -1.06]
0
1
[1 1 -1 -1 -1 -1 1 1]
[-3.88 -0.50 -5.06 1.06 -1.75 3.22 2.99 -1.06 ]
1
[-3.88 0.50 -5.06 -1.06 -1.75 -3.22 2.99 1.06]
0 dB
1 [-1 1 1 -1 -1 1 1 -1]
1
0 [ -1 1 -1 1 1 -1 1 -1]
[-0.88 -0.50 4.50 0.92 -0.77 -2.87 -1.41 -1.09]
0
1
[1 1 -1 -1 -1 -1 1 1]
[-0.88 0.50 -4.50 0.92 -0.77 2.87 1.41 -1.09]
1
[-0.88 -0.50 -4.50 -0.92 -0.77 -2.87 1.41 1.09]
8 dB
1 [-1 1 1 -1 -1 1 1 -1]
1
0 [ -1 1 -1 1 1 -1 1 -1]
[-0.98 1.21 2.66 0.58 -0.73 -2.98 -0.93 0.82]
0
1 [1 1 -1 -1 -1 -1 1 1]
[-0.98 -1.21 -2.66 0.58 -0.73 2.98 0.93 0.82]
1
[-0.98 1.21 -2.66 -0.58 -0.73 -2.98 0.93 -0.82]
16.6 dB
1 [-1 1 1 -1 -1 1 1 -1]
66
Perbandingan antara data hasil spreading dan despreading dapat dilihat pada
Tabel 4.10. Berdasarkan Tabel 4.10 terlihat bahwa hasil despreading adalah berbeda
dengan hasil spreading. Hal ini disebabkan oleh adanya penambahan AWGN pada
saat pengiriman sinyal dari pengirim ke penerima. Besarnya AWGN yang
ditambahkan sangat mempengaruhi kinerja sistem yang terlihat dari hasil yang
diperoleh pada hasil simulasi
4.10. Hasil Estimasi pada Detektor MMSE
Hasil yang diperoleh dari proses despreading pada matched filter seperti yang
ditunjukkan Gambar 4.23 kemudian akan diterima oleh detektor MMSE. Sub
program detektor MMSE akan menampilkan hasil seperti Gambar 4.19 jika tombol
Konversi pada program ditekan.
Gambar 4.23 Tampilan hasil Detektor MMSE
Gambar 4.23 terdiri dari tiga tampilan, ketiga tampilan tersebut adalah sebagai
berikut :
1. Estimasi Output
Estimasi output berisi tampilan estimasi bit-bit yang diterima oleh ketiga
pengguna. Estimasi bit-bit pengguna tersebut merupakan hasil perkalian
67
antara nilai hasil demodulasi QPSK dengan spreading code masing-masing
pengguna.
2. Bit yang diterima
Bit yang diterima adalah tampilan bit-bit yang diterima oleh ketiga pengguna
yang merupakan hasil pembulatan estimasi output.
3. Hasil konversi
Hasil konversi merupakan tampilan konversi bit-bit yang diterima dari
estimasi output. Jika nilai bit yang diterima lebih besar dari nol, maka
diterjemahkan sebagai bit “1” dan jika nilai bit lebih kecil dari nol, maka
diterjemahkan sebagai bit “0”.
Tabel 4.11 Hasil detektor MMSE Bit awal Estimasi output Bit yang diterima Hasil
konversi
Bit 1 Bit 2 Bit 1 Bit 2 Bit 1 Bit 2 Bit 1 Bit 2
SNR
1 0 0.253 -0.686 1 -1 1 0 0 1 -0.849 2.096 -1 1 0 1 1 1 0.230 2.378 0 1 0 1
0 dB
1 0 0.989 -1.262 1 -1 1 0 0 1 -1.149 1.241 -1 1 0 1 1 1 0.833 1.452 1 1 1 1
8 dB
1 0 0.952 -0.868 1 -1 1 0 0 1 -0.998 1.068 -1 1 0 1 1 1 0.899 0.753 1 1 1 1
16.6 dB
Tabel 4.10 menunjukkan hasil yang diperoleh pada detektor MMSE. Hasil
estimasi output pada SNR = 16.6 dB terlihat lebih mendekati hasil sesungguhnya
dibandingkan dengan SNR = 0 dB dan 8 dB. Hal tersebut dapat dibuktikan dari
perbandingan antara nilai estimasi output dengan nilai bit yang diterima. Sebagai
contoh, estimasi output pada SNR = 16.6 dB untuk pengguna 1 pada bit 1 dan bit 2
adalah 0.952 dan - 0.868 sedangkan bit yang diterima adalah 1 dan -1. Dari hasil
68
tersebut terlihat bahwa nilai estimasi 0.952 mendekati 1 dan nilai estimasi - 0.868
mendekati nilai -1. Bit yang diterima tersebut akan dikonversi menjadi bentuk biner
( 0 atau 1) yang kemudian dibandingkan dengan bit dikirimkan oleh pengirim.
Apabila bit yang dikirimkan tersebut sama dengan hasil konversi bit, maka dapat
dikatakan bahwa bit yang dikirimkan sesuai dengan bit yang diterima. Tetapi apabila
bit yang dikirimkan tidak sesuai dengan hasil konversi bit, maka sistem tersebut
terdapat error seperti yang ditunjukkan Tabel 4.11 pada SNR = 0 dB.
Dari hasil yang diperoleh pada detektor MMSE dapat disimpulkan bahwa hasil
estimasi output sangat dipengaruhi oleh besarnya SNR yang diberikan pada sistem.
Semakin besar nilai SNR, maka estimasi output akan semakin mendekati nilai
sebenarnya. Dengan SNR yang besar, maka noise yang dihasilkan akan semakin
kecil. Hal tersebut sesuai dengan dasar teori yang diperoleh dan dibuat oleh penulis.
BAB V
PENUTUP
A. Kesimpulan
Berdasarkan perancangan dan pengamatan yang telah dilakukan, maka
diperoleh beberapa kesimpulan sebagai berikut :
1. Hasil yang diperoleh proses spreading dan modulasi QPSK pada program
simulasi sesuai dengan teori yang dibuat oleh penulis.
2. Pada demodulasi QPSK total (sinyal superposisi), hasil yang diperoleh
sama dengan hasil modulasi QPSK total sesuai dengan dasar teori.
3. Hasil estimasi output bit-bit pengguna pada detektor MMSE yang
diperoleh dari program simulasi sangat dipengaruhi oleh besarnya SNR
yang diberikan pada sistem.
4. Semakin besar nilai SNR yang diberikan pada sistem, maka hasil estimasi
output akan mendekati hasil sebenarnya.
B. Saran
Untuk pengembangan selanjutnya dapat disarankan untuk menambahkan
jumlah bit yang disimulasi, input yang berupa suara (voice), memasukkan unsur
multifath fading dan algoritma lain sebagai detektor bit.
67
DAFTAR PUSTAKA
[1] Gatot Santoso, “Sistem Selular CDMA”, Penerbit Graha Ilmu, 2004
[2] Piya Kovintavewat and Tom A Kiranantawat, “MMSE Linear Multiuser
Detection for a DS-CDMA System”, ECE 6604, Personal and Mobile
Communication, Spring 2000.
[3] Telkom Traning ,“Dasar Komunikasi Radio Digital”, Makalah Presentasi.
[4] Yinhua Wang, Michael Chow and Sheng-Mou Yu , “QPSK Modulation and
Demodulation”, ELE 791 Softaware Radio Design, Department of Electrical
Engineering, Syracuse University, Desember 2004.
[5] Simulasi Kinerja Kanal AWGN dan Kanal Fading pada Komunikasi Jaringan
Wireless , Muh Arrief Nugroho ,Tugas ET5005 Sistem Komunikasi Seluler.
[6] H.Vincet Poor, “Probability of Error in MMSE Detection”, IEEE Transaction
on Information Theory, Vol. 43, No. 3 May 1997.
[7] Yong Liu, “Simulation Comparison of Multiuser Receiver in DS/CDMA
Systems”, EEL6503, Spread Spectrum and Code Division Multiple Acces,
Nov.30 th.
[8] http://www.elektroindonesia.com/elektro/telkom10.html
[9] http://digilib.its.ac.id
[10] http://onno.vlsm.org/v11/ref-ind-1/physical/wireless/spread-spectrum-
teknologi-komunikasi-digital-masa-mendatang-1.rtf
LAMPIRAN
A
LISTING PROGRAM
function varargout = MMSEprogram(varargin) % MMSEPROGRAM M-file for MMSEprogram.fig % MMSEPROGRAM, by itself, creates a new MMSEPROGRAM or raises the existing % singleton*. % % H = MMSEPROGRAM returns the handle to a new MMSEPROGRAM or the handle to % the existing singleton*. % % MMSEPROGRAM('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MMSEPROGRAM.M with the given input arguments. % % MMSEPROGRAM('Property','Value',...) creates a new MMSEPROGRAM or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before MMSEprogram_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to MMSEprogram_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to file_help MMSEprogram % Last Modified by GUIDE v2.5 29-Jul-2007 03:15:16 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @MMSEprogram_OpeningFcn, ... 'gui_OutputFcn', @MMSEprogram_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before MMSEprogram is made visible. function MMSEprogram_OpeningFcn(hObject, eventdata, handles, varargin) set(handles.uipanel48,'visible','off'); set(handles.uipanel85,'visible','off'); set(handles.uipanel50,'visible','off'); set(handles.uipanel68,'visible','off');
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) myform=guidata(GCBO); % Inisialisasi spreading codes n1_1=str2double(get(myform.text25,'string')); n1_2=str2double(get(myform.text26,'string')); n1_3=str2double(get(myform.text27,'string')); n1_4=str2double(get(myform.text28,'string')); n2_1=str2double(get(myform.text29,'string')); n2_2=str2double(get(myform.text30,'string')); n2_3=str2double(get(myform.text31,'string')); n2_4=str2double(get(myform.text32,'string')); n3_1=str2double(get(myform.text33,'string')); n3_2=str2double(get(myform.text34,'string')); n3_3=str2double(get(myform.text35,'string')); n3_4=str2double(get(myform.text36,'string')); % Inisialisasi bit-bit pengguna input11=str2double(get(myform.edit1,'string')); input12=str2double(get(myform.edit4,'string')); input21=str2double(get(myform.edit2,'string')); input22=str2double(get(myform.edit5,'string')); input31=str2double(get(myform.edit3,'string')); input32=str2double(get(myform.edit6,'string')); handles.fs=str2double(get(handles.edit223,'string')); % Sampling frequency %check input if isnan(input11)| input11>1 | input11<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input12)| input12>1 |input12<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input21)| input21>1 |input21<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input22)| input22>1 |input22<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input31)| input31>1 |input31<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input32)| input31>1 |input32<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(handles.fs) errordlg('frekuensi sampling belum dimasukkan','Input salah','modal'); else spread=[n1_1,n1_2,n1_3,n1_4;n2_1,n2_2,n2_3,n2_4;n3_1,n3_2,n3_3,n3_4]; input=[input11,input12;input21,input22;input31,input32]; kolom_input=size(input,2); baris_input=size(input,1); L=baris_input; for y=1:kolom_input for o=1:baris_input b=[input(o,y),input(o,y),input(o,y),input(o,y)]; codes=[spread(o,:)]; % spreading codes untuk pengguna ke-x,yang diambil adalah nilai baris dari matriks spread yang berisi full matriks hadamard hsl_xor=xor(b,codes); for j=1:3 for m=1:4 if hsl_xor(1,m)<1 hsl_xor_total(m)=-1; else
hsl_xor_total(m)=1; end hsl_xor_ubah(o,m)=hsl_xor_total(:,m); if spread(j,m)<1 spread_total(j,m)=-1; else spread_total (j,m)=1; end spread_ubah(j,m)=spread_total(j,m); end % untuk m end % untuk j end %untuk o if y==1 hsl_xor_simbol1=hsl_xor_ubah; else hsl_xor_simbol2=hsl_xor_ubah; end end %untuk y % bit 1 a1=hsl_xor_simbol1(1,1);set(myform.ed_spread11,'string',num2str(a1)); b1=hsl_xor_simbol1(1,2);set(myform.ed_spread12,'string',num2str(b1)); c1=hsl_xor_simbol1(1,3);set(myform.ed_spread13,'string',num2str(c1)); d1=hsl_xor_simbol1(1,4);set(myform.ed_spread14,'string',num2str(d1)); e1=hsl_xor_simbol1(2,1);set(myform.ed_spread21,'string',num2str(e1)); f1=hsl_xor_simbol1(2,2);set(myform.ed_spread22,'string',num2str(f1)); g1=hsl_xor_simbol1(2,3);set(myform.ed_spread23,'string',num2str(g1)); h1=hsl_xor_simbol1(2,4);set(myform.ed_spread24,'string',num2str(h1)); i1=hsl_xor_simbol1(3,1);set(myform.ed_spread31,'string',num2str(i1)); j1=hsl_xor_simbol1(3,2);set(myform.ed_spread32,'string',num2str(j1)); k1=hsl_xor_simbol1(3,3);set(myform.ed_spread33,'string',num2str(k1)); l1=hsl_xor_simbol1(3,4);set(myform.ed_spread34,'string',num2str(l1)); % bit 2 a2=hsl_xor_simbol2(1,1);set(myform.edit11,'string',num2str(a2)); b2=hsl_xor_simbol2(1,2);set(myform.edit12,'string',num2str(b2)); c2=hsl_xor_simbol2(1,3);set(myform.edit13,'string',num2str(c2)); d2=hsl_xor_simbol2(1,4);set(myform.edit14,'string',num2str(d2)); e2=hsl_xor_simbol2(2,1);set(myform.edit19,'string',num2str(e2)); f2=hsl_xor_simbol2(2,2);set(myform.edit20,'string',num2str(f2)); g2=hsl_xor_simbol2(2,3);set(myform.edit21,'string',num2str(g2)); h2=hsl_xor_simbol2(2,4);set(myform.edit22,'string',num2str(h2)); i2=hsl_xor_simbol2(3,1);set(myform.edit27,'string',num2str(i2)); j2=hsl_xor_simbol2(3,2);set(myform.edit28,'string',num2str(j2)); k2=hsl_xor_simbol2(3,3);set(myform.edit29,'string',num2str(k2)); l2=hsl_xor_simbol2(3,4);set(myform.edit30,'string',num2str(l2)); handles.user1=[a1,b1,c1,d1,a2,b2,c2,d2]; handles.user2=[e1,f1,g1,h1,e2,f2,g2,h2]; handles.user3=[i1,j1,k1,l1,i2,j2,k2,l2]; handles.N=length(handles.user1); % jumlah bit(bit rate) handles.Ts=1/handles.fs; % Sampling time = 1/fs handles.T=1/handles.N; td=[0:handles.Ts:(handles.N*handles.T)-handles.Ts]';% Time vector(data)(transpose) set(handles.edit224,'string',handles.Ts); set(handles.edit225,'string',handles.N); set(handles.edit226,'string',handles.T); % plot spread user 1
spread1=ones(handles.T/handles.Ts,1)*handles.user1; data1=spread1(:);axes(handles.axes16) plot(td,data1),grid on,xlabel(' Time') ylabel('Amplitude'),title('User 1') axis([0 1 -2 2]); % plot spread user 2 spread2=ones(handles.T/handles.Ts,1)*handles.user2; data2=spread2(:); axes(handles.axes17) plot(td,data2),grid on,xlabel(' Time') ylabel('Amplitude'),title('User 2') axis([0 1 -2 2]); % plot spread user 3 spread3=ones(handles.T/handles.Ts,1)*handles.user3; data3=spread3(:); axes(handles.axes18) plot(td,data3),grid on,xlabel(' Time') ylabel('Amplitude'),title('User 3') axis([0 1 -2 2]); % plot spread total handles.user_all=[handles.user1+handles.user2+handles.user3]; spread_total=ones(handles.T/handles.Ts,1)*handles.user_all; data_total=spread_total(:); axes(handles.axes19) plot(td,data_total),grid on,xlabel(' Time') ylabel('Amplitude'),title('All user') axis([0 1 -4 4]); text1=get(handles.pushbutton1,'value'); if text1==1; set(handles.text275,'string','Sinyal Hasil Spreading','position',[1.2 21.46 25 1]); set(handles.text276,'string','Sinyal Spreading Total','position',[4 22.66 25 1]); end end % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in radiobutton1. function radiobutton1_Callback(hObject, eventdata, handles) myform=guidata(GCBO); set(handles.radiobutton2,'value',0) n1_1=str2double(get(myform.text1,'string')); n1_2=str2double(get(myform.text2,'string')); n1_3=str2double(get(myform.text3,'string')); n1_4=str2double(get(myform.text4,'string')); n2_1=str2double(get(myform.text5,'string')); n2_2=str2double(get(myform.text6,'string')); n2_3=str2double(get(myform.text7,'string')); n2_4=str2double(get(myform.text8,'string')); n3_1=str2double(get(myform.text9,'string')); n3_2=str2double(get(myform.text10,'string')); n3_3=str2double(get(myform.text11,'string')); n3_4=str2double(get(myform.text12,'string'));
% pindahkan spreading code tipe 1 set(myform.text25,'string',num2str(n1_1)); set(myform.text26,'string',num2str(n1_2)); set(myform.text27,'string',num2str(n1_3)); set(myform.text28,'string',num2str(n1_4)); set(myform.text29,'string',num2str(n2_1)); set(myform.text30,'string',num2str(n2_2)); set(myform.text31,'string',num2str(n2_3)); set(myform.text32,'string',num2str(n2_4)); set(myform.text33,'string',num2str(n3_1)); set(myform.text34,'string',num2str(n3_2)); set(myform.text35,'string',num2str(n3_3)); set(myform.text36,'string',num2str(n3_4)); % --- Executes on button press in radiobutton2. function radiobutton2_Callback(hObject, eventdata, handles) myform=guidata(GCBO); set(handles.radiobutton1,'value',0) n1_a=str2double(get(myform.text13,'string')); n1_b=str2double(get(myform.text14,'string')); n1_c=str2double(get(myform.text15,'string')); n1_d=str2double(get(myform.text16,'string')); n2_a=str2double(get(myform.text17,'string')); n2_b=str2double(get(myform.text18,'string')); n2_c=str2double(get(myform.text19,'string')); n2_d=str2double(get(myform.text20,'string')); n3_a=str2double(get(myform.text21,'string')); n3_b=str2double(get(myform.text22,'string')); n3_c=str2double(get(myform.text23,'string')); n3_d=str2double(get(myform.text24,'string')); % pindahkan spreading code tipe 2 set(myform.text25,'string',num2str(n1_a)); set(myform.text26,'string',num2str(n1_b)); set(myform.text27,'string',num2str(n1_c)); set(myform.text28,'string',num2str(n1_d)); set(myform.text29,'string',num2str(n2_a)); set(myform.text30,'string',num2str(n2_b)); set(myform.text31,'string',num2str(n2_c)); set(myform.text32,'string',num2str(n2_d)); set(myform.text33,'string',num2str(n3_a)); set(myform.text34,'string',num2str(n3_b)); set(myform.text35,'string',num2str(n3_c)); set(myform.text36,'string',num2str(n3_d)); % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % z=str2num(get(myform.ed_spread11,'MMSEprogram.fig','string')); % set(myform.spread1,'string','modqpsk.fig',num2str(z)); % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
function edit1_Callback(hObject, eventdata, handles) c = str2double(get(hObject,'string')); if c>1 | c<0 errordlg('Anda harus mengisikan nilai biner 1 atau 0 ','Input salah','modal') end % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double % --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit2_Callback(hObject, eventdata, handles) c = str2double(get(hObject,'string')); if c>1 | c<0 errordlg('Anda harus mengisikan nilai biner 1 atau 0 ','Input salah','modal') end % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit2 as text % str2double(get(hObject,'String')) returns contents of edit2 as a double % --- Executes during object creation, after setting all properties. function edit2_CreateFcn(hObject, eventdata, handles) % hObject handle to edit2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end
function edit3_Callback(hObject, eventdata, handles) c = str2double(get(hObject,'string')); if c>1 | c<0 errordlg('Anda harus mengisikan nilai biner " 1 " atau " 0 " ','Input salah','modal') end % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit3 as text % str2double(get(hObject,'String')) returns contents of edit3 as a double % --- Executes during object creation, after setting all properties. function edit3_CreateFcn(hObject, eventdata, handles) % hObject handle to edit3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit4_Callback(hObject, eventdata, handles) c = str2double(get(hObject,'string')); if c>1 | c<0 errordlg('Anda harus mengisikan nilai biner 1 atau 0 ','Input salah','modal') end % hObject handle to edit4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit4 as text % str2double(get(hObject,'String')) returns contents of edit4 as a double end function edit5_Callback(hObject, eventdata, handles) c = str2double(get(hObject,'string')); if c>1 | c<0 errordlg('Anda harus mengisikan nilai biner 1 atau 0 ','Input salah','modal') end % hObject handle to edit5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit6_Callback(hObject, eventdata, handles) c = str2double(get(hObject,'string')); if c>1 | c<0 errordlg('Anda harus mengisikan nilai biner 1 atau 0 ','Input salah','modal') end % hObject handle to edit6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. end % -------------------------------------------------------------------- function file_Callback(hObject, eventdata, handles) % hObject handle to file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function file_reset_Callback(hObject, eventdata, handles) set(handles.text25,'string','');set(handles.text26,'string',''); set(handles.text27,'string','');set(handles.text28,'string',''); set(handles.text29,'string','');set(handles.text30,'string',''); set(handles.text31,'string','');set(handles.text32,'string',''); set(handles.text33,'string','');set(handles.text34,'string',''); set(handles.text35,'string','');set(handles.text36,'string',''); % clear input set(handles.edit1,'string','');set(handles.edit222,'string',''); set(handles.edit2,'string','');set(handles.edit223,'string',''); set(handles.edit3,'string','');set(handles.edit224,'string',''); set(handles.edit4,'string','');set(handles.edit225,'string',''); set(handles.edit5,'string','');set(handles.edit226,'string',''); set(handles.edit6,'string',''); %clear hasil spreading set(handles.ed_spread11,'string','');set(handles.ed_spread12,'string',''); set(handles.ed_spread13,'string','');set(handles.ed_spread14,'string',''); set(handles.ed_spread21,'string','');set(handles.ed_spread22,'string',''); set(handles.ed_spread23,'string','');set(handles.ed_spread24,'string',''); set(handles.ed_spread31,'string','');set(handles.ed_spread32,'string',''); set(handles.ed_spread33,'string','');set(handles.ed_spread34,'string',''); set(handles.edit11,'string','');set(handles.edit12,'string',''); set(handles.edit13,'string','');set(handles.edit14,'string',''); set(handles.edit19,'string','');set(handles.edit20,'string',''); set(handles.edit21,'string','');set(handles.edit22,'string','');
set(handles.edit27,'string','');set(handles.edit28,'string',''); set(handles.edit29,'string','');set(handles.edit30,'string',''); %clear hasil modulasi set(handles.edit70,'string',''); set(handles.edit71,'string',''); set(handles.edit72,'string',''); set(handles.edit73,'string',''); set(handles.edit74,'string',''); set(handles.edit75,'string',''); set(handles.edit76,'string',''); set(handles.edit77,'string',''); set(handles.edit78,'string',''); set(handles.edit79,'string',''); set(handles.edit80,'string',''); set(handles.edit81,'string',''); set(handles.edit82,'string',''); set(handles.edit83,'string',''); set(handles.edit84,'string',''); set(handles.edit85,'string',''); set(handles.edit86,'string',''); set(handles.edit87,'string',''); set(handles.edit88,'string',''); set(handles.edit89,'string',''); set(handles.edit90,'string',''); set(handles.edit91,'string',''); set(handles.edit92,'string',''); set(handles.edit93,'string',''); %clear modulasi total set(handles.edit94,'string',''); set(handles.edit96,'string',''); set(handles.edit98,'string',''); set(handles.edit100,'string',''); set(handles.edit95,'string',''); set(handles.edit97,'string',''); set(handles.edit99,'string',''); set(handles.edit101,'string',''); %clear radiobutton set(handles.radiobutton1,'value',0); set(handles.radiobutton2,'value',0); %clear text grafik set(handles.text275,'string','','position',[0.6 21.46 0.5 0.5]);set(handles.text276,'string','','position',[5.8 24 0.5 0.5]); %clear gambar axes(handles.axes16) handles.user1=0; plot(handles.user1),grid on axes(handles.axes17) handles.user2=0; plot(handles.user2),grid on axes(handles.axes18) handles.user3=0; plot(handles.user3),grid on axes(handles.axes19) handles.user_all=0; plot(handles.user_all),grid on guidata(hObject,handles); % hObject handle to file_reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function file_help_Callback(hObject, eventdata, handles) % hObject handle to file_help (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % --- Executes on button press in pushbutton8. function pushbutton8_Callback(hObject, eventdata, handles) myform=guidata(GCBO); b1_1=str2double(get(myform.ed_spread11,'string')); b1_2=str2double(get(myform.ed_spread12,'string')); b1_3=str2double(get(myform.ed_spread13,'string'));
b1_4=str2double(get(myform.ed_spread14,'string')); c1_1=str2double(get(myform.ed_spread21,'string')); c1_2=str2double(get(myform.ed_spread22,'string')); c1_3=str2double(get(myform.ed_spread23,'string')); c1_4=str2double(get(myform.ed_spread24,'string')); d1_1=str2double(get(myform.ed_spread31,'string')); d1_2=str2double(get(myform.ed_spread32,'string')); d1_3=str2double(get(myform.ed_spread33,'string')); d1_4=str2double(get(myform.ed_spread34,'string')); hsl_xor_simbol1=[b1_1,b1_2,b1_3,b1_4;c1_1,c1_2,c1_3,c1_4;d1_1,d1_2,d1_3,d1_4]; b2_1=str2double(get(myform.edit11,'string')); b2_2=str2double(get(myform.edit12,'string')); b2_3=str2double(get(myform.edit13,'string')); b2_4=str2double(get(myform.edit14,'string')); c2_1=str2double(get(myform.edit19,'string')); c2_2=str2double(get(myform.edit20,'string')); c2_3=str2double(get(myform.edit21,'string')); c2_4=str2double(get(myform.edit22,'string')); d2_1=str2double(get(myform.edit27,'string')); d2_2=str2double(get(myform.edit28,'string')); d2_3=str2double(get(myform.edit29,'string')); d2_4=str2double(get(myform.edit30,'string')); hsl_xor_simbol2=[b2_1,b2_2,b2_3,b2_4;c2_1,c2_2,c2_3,c2_4;d2_1,d2_2,d2_3,d2_4]; if isnan(hsl_xor_simbol1) errordlg('Proses spreading belum dikerjakan','input salah','modal') elseif isnan(hsl_xor_simbol2) errordlg('Proses spreading belum dikerjakan','input salah','modal') else a=2*pi; % modulasi QPSK bit 1 modulasi_I_n1a=hsl_xor_simbol1(:,1)*1.4142*cos(a+pi/4); modulasi_I_n1b=hsl_xor_simbol1(:,3)*1.4142*cos(a+pi/4); modulasi_Q_n1a=hsl_xor_simbol1(:,2)*1.4142*sin(a+pi/4); modulasi_Q_n1b=hsl_xor_simbol1(:,4)*1.4142*sin(a+pi/4); handles.hasil1=[modulasi_I_n1a,modulasi_Q_n1a, modulasi_I_n1b, modulasi_Q_n1b]; set(myform.edit70,'string',sprintf('%0.2f',(handles.hasil1(1,1)))); set(myform.edit71,'string',sprintf('%0.2f',(handles.hasil1(2,1)))); set(myform.edit72,'string',sprintf('%0.2f',(handles.hasil1(3,1)))); set(myform.edit73,'string',sprintf('%0.2f',(handles.hasil1(1,2)))); set(myform.edit74,'string',sprintf('%0.2f',(handles.hasil1(2,2)))); set(myform.edit75,'string',sprintf('%0.2f',(handles.hasil1(3,2)))); set(myform.edit76,'string',sprintf('%0.2f',(handles.hasil1(1,3)))); set(myform.edit77,'string',sprintf('%0.2f',(handles.hasil1(2,3)))); set(myform.edit78,'string',sprintf('%0.2f',(handles.hasil1(3,3)))); set(myform.edit79,'string',sprintf('%0.2f',(handles.hasil1(1,4)))); set(myform.edit80,'string',sprintf('%0.2f',(handles.hasil1(2,4)))); set(myform.edit81,'string',sprintf('%0.2f',(handles.hasil1(3,4)))); % modulasi QPSK bit 1 modulasi_I_n2a=hsl_xor_simbol2(:,1)*1.4142*cos(a+pi/4); modulasi_I_n2b=hsl_xor_simbol2(:,3)*1.4142*cos(a+pi/4); modulasi_Q_n2a=hsl_xor_simbol2(:,2)*1.4142*sin(a+pi/4); modulasi_Q_n2b=hsl_xor_simbol2(:,4)*1.4142*sin(a+pi/4); handles.hasil2=[modulasi_I_n2a,modulasi_Q_n2a,modulasi_I_n2b,modulasi_Q_n2b]; set(myform.edit82,'string',sprintf('%0.2f',(handles.hasil2(1,1)))); set(myform.edit83,'string',sprintf('%0.2f',(handles.hasil2(2,1)))); set(myform.edit84,'string',sprintf('%0.2f',(handles.hasil2(3,1))));
set(myform.edit85,'string',sprintf('%0.2f',(handles.hasil2(1,2)))); set(myform.edit86,'string',sprintf('%0.2f',(handles.hasil2(2,2)))); set(myform.edit87,'string',sprintf('%0.2f',(handles.hasil2(3,2)))); set(myform.edit88,'string',sprintf('%0.2f',(handles.hasil2(1,3)))); set(myform.edit89,'string',sprintf('%0.2f',(handles.hasil2(2,3)))); set(myform.edit90,'string',sprintf('%0.2f',(handles.hasil2(3,3)))); set(myform.edit91,'string',sprintf('%0.2f',(handles.hasil2(1,4)))); set(myform.edit92,'string',sprintf('%0.2f',(handles.hasil2(2,4)))); set(myform.edit93,'string',sprintf('%0.2f',(handles.hasil2(3,4)))); % Plot Sinyal Modulasi QPSK handles.fs=str2double(get(handles.edit223,'string')); % Sampling frequency handles.N=8; % jumlah bit(bit rate) handles.Ts=1/handles.fs; % Sampling time = 1/fs handles.T=1/handles.N; handles.fcarr=str2double(get(handles.edit222,'string')); % Carrier frequency(Hz) handles.tiq = [0:handles.Ts*2:(handles.N*handles.T)-handles.Ts]';% Time vector for I and Q symbols (transpose) handles.a=sqrt(2);% amplitudo sinyal handles.phi=pi/4;% phase sinyal %===========================================% % Modulasi QPSK untuk user 1 % %===========================================% user1=[b1_1,b1_2,b1_3,b1_4,b2_1,b2_2,b2_3,b2_4]; % data hasil spreading user 1 %untuk kanal I bs11=user1(1:2:length(user1));% bit ganjil symbols11=ones(handles.T/handles.Ts,1)*bs11; Isymbols11=symbols11(:);%I_waveform %untuk kanal Q bs12=user1(2:2:length(user1));%bit genap symbols12=ones(handles.T/handles.Ts,1)*bs12; Qsymbols12=symbols12(:);%Q_waveform %2 pi fc t twopi_fc_t=(1:handles.fs/2)*2*pi*handles.fcarr/handles.fs; cs_t1 = handles.a * cos(twopi_fc_t + handles.phi); sn_t1 = handles.a * sin(twopi_fc_t + handles.phi); cs_t1=cs_t1';%transpose sn_t1=sn_t1';%transpose handles.si1=cs_t1.*Isymbols11; handles.sq1=sn_t1.*Qsymbols12; handles.sumiq11=handles.si1+handles.sq1; handles.sumiq1=.7*handles.sumiq11;%reduce gain to keep output at +/- one axes(handles.axes16) plot(handles.tiq,handles.sumiq1) axis([0 1 -2 2]);grid on xlabel(' Time') ylabel('Amplitude'),title('User 1') %===========================================% %Modulasi QPSK untuk user 2 %===========================================% user2=[c1_1,c1_2,c1_3,c1_4,c2_1,c2_2,c2_3,c2_4]; % untuk kanal I bs21=user2(1:2:length(user2));% bit ganjil symbols21=ones(handles.T/handles.Ts,1)*bs21; Isymbols21=symbols21(:);%I_waveform % untuk kanal Q bs22=user2(2:2:length(user2));%bit genap
symbols22=ones(handles.T/handles.Ts,1)*bs22; Qsymbols22=symbols22(:);%Q_waveform %2 pi fc t twopi_fc_t=(1:handles.fs/2)*2*pi*handles.fcarr/handles.fs; cs_t2 = handles.a * cos(twopi_fc_t + handles.phi); sn_t2 = handles.a * sin(twopi_fc_t + handles.phi); cs_t2=cs_t2';%transpose sn_t2=sn_t2';%transpose handles.si2=cs_t2.*Isymbols21; handles.sq2=sn_t2.*Qsymbols22; sumiq22=handles.si2+handles.sq2; sumiq2=.7*sumiq22;%reduce gain to keep output at +/- one axes(handles.axes17) plot(handles.tiq,sumiq2) axis([0 1 -2 2]);grid on xlabel(' Time') ylabel('Amplitude'),title('User 2') %===========================================% %Modulasi QPSK untuk user 3 %===========================================% user3=[d1_1,d1_2,d1_3,d1_4,d2_1,d2_2,d2_3,d2_4]; bs31=user3(1:2:length(user3));% bit ganjil symbols31=ones(handles.T/handles.Ts,1)*bs31; Isymbols31=symbols31(:);%I_waveform %untuk kanal Q bs32=user3(2:2:length(user3));%bit genap symbols32=ones(handles.T/handles.Ts,1)*bs32; Qsymbols32=symbols32(:);%Q_waveform %2 pi fc t twopi_fc_t=(1:handles.fs/2)*2*pi*handles.fcarr/handles.fs; cs_t3 = handles.a * cos(twopi_fc_t + handles.phi); sn_t3 = handles.a * sin(twopi_fc_t + handles.phi); cs_t3=cs_t3';%transpose sn_t3=sn_t3';%transpose handles.si3=cs_t3.*Isymbols31; handles.sq3=sn_t3.*Qsymbols32; sumiq32=handles.si3+handles.sq3; sumiq3=.7*sumiq32;%reduce gain to keep output at +/- one axes(handles.axes18) plot(handles.tiq,sumiq3) axis([0 1 -2 2]);grid on xlabel(' Time') ylabel('Amplitude'),title('User 3') text2=get(handles.pushbutton8,'value'); if text2==1; set(handles.text275,'string','Sinyal Hasil Modulasi QPSK','position',[0.6 21.4 30 1]) set(handles.text276,'string','','position',[0.6 21.4 1 1]) end axes(handles.axes19) handles.user_all=0; plot(handles.user_all),grid on guidata(hObject,handles); end
% hObject handle to pushbutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton9. function pushbutton9_Callback(hObject, eventdata, handles) myform=guidata(GCBO); % ambil data modulasi QPSK bit 1 b1_1=str2double(get(myform.edit70,'string')); b1_2=str2double(get(myform.edit73,'string')); b1_3=str2double(get(myform.edit76,'string')); b1_4=str2double(get(myform.edit79,'string')); c1_1=str2double(get(myform.edit71,'string')); c1_2=str2double(get(myform.edit74,'string')); c1_3=str2double(get(myform.edit77,'string')); c1_4=str2double(get(myform.edit80,'string')); d1_1=str2double(get(myform.edit72,'string')); d1_2=str2double(get(myform.edit75,'string')); d1_3=str2double(get(myform.edit78,'string')); d1_4=str2double(get(myform.edit81,'string')); hsl_xor_simbol1=[b1_1,b1_2,b1_3,b1_4;c1_1,c1_2,c1_3,c1_4;d1_1,d1_2,d1_3,d1_4]; % ambil data modulasi QPSK bit 2 b2_1=str2double(get(myform.edit82,'string')); b2_2=str2double(get(myform.edit85,'string')); b2_3=str2double(get(myform.edit88,'string')); b2_4=str2double(get(myform.edit91,'string')); c2_1=str2double(get(myform.edit83,'string')); c2_2=str2double(get(myform.edit86,'string')); c2_3=str2double(get(myform.edit89,'string')); c2_4=str2double(get(myform.edit92,'string')); d2_1=str2double(get(myform.edit84,'string')); d2_2=str2double(get(myform.edit87,'string')); d2_3=str2double(get(myform.edit90,'string')); d2_4=str2double(get(myform.edit93,'string')); hsl_xor_simbol2=[b2_1,b2_2,b2_3,b2_4;c2_1,c2_2,c2_3,c2_4;d2_1,d2_2,d2_3,d2_4]; % pembentukan modulasi total bit 1 if isnan(hsl_xor_simbol1) errordlg('hasil modulasi belum dikerjakan','input salah') elseif isnan(hsl_xor_simbol2) errordlg('hasil modulasi belum dikerjakan','input salah') else % pembentukan modulasi total bit 1 besar_modulasi_I_total_n11=hsl_xor_simbol1(1,1)+hsl_xor_simbol1(2,1)+hsl_xor_simbol1(3,1); besar_modulasi_I_total_n12=hsl_xor_simbol1(1,3)+hsl_xor_simbol1(2,3)+hsl_xor_simbol1(3,3); besar_modulasi_Q_total_n11=hsl_xor_simbol1(1,2)+hsl_xor_simbol1(2,2)+hsl_xor_simbol1(3,2); besar_modulasi_Q_total_n12=hsl_xor_simbol1(1,4)+hsl_xor_simbol1(2,4)+hsl_xor_simbol1(3,4); % pembentukan modulasi total bit 2 besar_modulasi_I_total_n21=hsl_xor_simbol2(1,1)+hsl_xor_simbol2(2,1)+hsl_xor_simbol2(3,1); besar_modulasi_I_total_n22=hsl_xor_simbol2(1,3)+hsl_xor_simbol2(2,3)+hsl_xor_simbol2(3,3); besar_modulasi_Q_total_n21=hsl_xor_simbol2(1,2)+hsl_xor_simbol2(2,2)+hsl_xor_simbol2(3,2); besar_modulasi_Q_total_n22=hsl_xor_simbol2(1,4)+hsl_xor_simbol2(2,4)+hsl_xor_simbol2(3,4); transmisi=zeros(2,4); transmisi(1,1)=besar_modulasi_I_total_n11; transmisi(1,2)=besar_modulasi_Q_total_n11; transmisi(1,3)=besar_modulasi_I_total_n12;
transmisi(1,4)=besar_modulasi_Q_total_n12; transmisi(2,1)=besar_modulasi_I_total_n21; transmisi(2,2)=besar_modulasi_Q_total_n21; transmisi(2,3)=besar_modulasi_I_total_n22; transmisi(2,4)=besar_modulasi_Q_total_n22; SNR=str2double(get(myform.edit225,'string')); transmisi=awgn(transmisi,SNR,'measured'); besar_modulasi_I_total_n11=transmisi(1,1); besar_modulasi_Q_total_n11=transmisi(1,2); besar_modulasi_I_total_n12=transmisi(1,3); besar_modulasi_Q_total_n12=transmisi(1,4); besar_modulasi_I_total_n21=transmisi(2,1); besar_modulasi_Q_total_n21=transmisi(2,2); besar_modulasi_I_total_n22=transmisi(2,3); besar_modulasi_Q_total_n22=transmisi(2,4); modulasi_total=[besar_modulasi_I_total_n11,besar_modulasi_Q_total_n11,besar_modulasi_I_total_n12,... besar_modulasi_Q_total_n12,besar_modulasi_I_total_n21,besar_modulasi_Q_total_n21,... besar_modulasi_I_total_n22,besar_modulasi_Q_total_n22] set(myform.edit94,'string',sprintf('%0.3f',(modulasi_total(1,1)))); set(myform.edit96,'string',sprintf('%0.3f',(modulasi_total(1,2)))); set(myform.edit98,'string',sprintf('%0.3f',(modulasi_total(1,3)))); set(myform.edit100,'string',sprintf('%0.3f',(modulasi_total(1,4)))); set(myform.edit95,'string',sprintf('%0.3f',(modulasi_total(1,5)))); set(myform.edit97,'string',sprintf('%0.3f',(modulasi_total(1,6)))); set(myform.edit99,'string',sprintf('%0.3f',(modulasi_total(1,7)))); set(myform.edit101,'string',sprintf('%0.3f',(modulasi_total(1,8)))); % plot grafik modulasi % untuk kanal I mod_total1=modulasi_total(1:2:length(modulasi_total));% bit ganjil kanalI=ones(handles.T/handles.Ts,1)*mod_total1; Isymbols=kanalI(:);%I_waveform % untuk kanal Q mod_total2=modulasi_total(2:2:length(modulasi_total));%bit genap kanalQ=ones(handles.T/handles.Ts,1)*mod_total2; Qsymbols=kanalQ(:);%Q_waveform %2 pi fc t twopi_fc_t=(1:handles.fs/2)*2*pi*handles.fcarr/handles.fs; cs_t = handles.a * cos(twopi_fc_t + handles.phi); sn_t = handles.a * sin(twopi_fc_t + handles.phi); cs_t=cs_t';%transpose sn_t=sn_t';%transpose si=cs_t.*Isymbols; sq=sn_t.*Qsymbols; sumiq1=si+sq; sumiq=.7*sumiq1;%reduce gain to keep output at +/- one axes(handles.axes19) plot(handles.tiq,sumiq) % axis([0 1 -5 5]); grid on xlabel(' Time')
ylabel('Amplitude') title(' All User ') text2=get(handles.pushbutton9,'value'); if text2==1; set(handles.text276,'string','Sinyal Superposisi Modulasi QPSK','position',[4 22.66 40 1]) end end % hObject handle to pushbutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton12. function pushbutton12_Callback(hObject, eventdata, handles) pilihan = questdlg(['Keluar ',get(handles.figure1,'Name') ' ?'],... ['Keluar ',get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(pilihan,'Tidak') return; end delete(handles.figure1) % hObject handle to pushbutton12 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton13. function pushbutton13_Callback(hObject, eventdata, handles) set(handles.uipanel38,'visible','off'); set(handles.uipanel39,'visible','off'); set(handles.uipanel40,'visible','off'); set(handles.uipanel1,'visible','off'); set(handles.uipanel42,'visible','off'); set(handles.uipanel69,'visible','on'); set(handles.uipanel48,'visible','on'); set(handles.uipanel85,'visible','on'); set(handles.uipanel50,'visible','on'); set(handles.uipanel68,'visible','on'); % hObject handle to pushbutton13 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in tom_dtotal. function tom_dtotal_Callback(hObject, eventdata, handles) % FILE DEMODULASI QPSK besar_modulasi_I_total_n11=str2double(get(handles.edit94,'string')); besar_modulasi_Q_total_n11=str2double(get(handles.edit96,'string')); besar_modulasi_I_total_n12=str2double(get(handles.edit98,'string')); besar_modulasi_Q_total_n12=str2double(get(handles.edit100,'string')); besar_modulasi_I_total_n21=str2double(get(handles.edit95,'string')); besar_modulasi_Q_total_n21=str2double(get(handles.edit97,'string')); besar_modulasi_I_total_n22=str2double(get(handles.edit99,'string'));
besar_modulasi_Q_total_n22=str2double(get(handles.edit101,'string')); mod_total=[besar_modulasi_I_total_n11,besar_modulasi_Q_total_n11,besar_modulasi_I_total_n12,... besar_modulasi_Q_total_n12,besar_modulasi_I_total_n21,besar_modulasi_Q_total_n21,... besar_modulasi_I_total_n22,besar_modulasi_Q_total_n22]; if isnan(mod_total) errordlg('Proses Modulasi belum dikerjakan','input salah','modal') else %batas bawah dan atas integral b=0; c=1; %Demodulasi masing-masing pengguna data_input(1,1)=besar_modulasi_I_total_n11*2*(-1/2*(- 2*cos(c*pi)^3*sin(c*pi)+sin(c*pi)*cos(c*pi)-c*pi+ 2*cos(b*pi)^3*sin(b*pi)-sin(b*pi)*cos(b*pi)+b*pi)/pi); data_input(1,2)=besar_modulasi_Q_total_n11*2*(1/2*(-cos(c*pi)^4+cos(c*pi)^2+sin(c*pi)^2*cos(c*pi)^2+c*pi+. cos(b*pi)^4-cos(b*pi)^2-sin(b*pi)^2*cos(b*pi)^2-b*pi)/pi); data_input(1,3)=besar_modulasi_I_total_n12*2*(-1/2* (-2*cos(c*pi)^3*sin(c*pi)+sin(c*pi)*cos(c*pi)-c*pi+ 2*cos(b*pi)^3*sin(b*pi)-sin(b*pi)*cos(b*pi)+b*pi)/pi); data_input(1,4)=besar_modulasi_Q_total_n12*2*(1/2*(-cos(c*pi)^4+cos(c*pi)^2+sin(c*pi)^2*cos(c*pi)^2+c*pi+ cos(b*pi)^4-cos(b*pi)^2-sin(b*pi)^2*cos(b*pi)^2-b*pi)/pi); data_input(2,1)=besar_modulasi_I_total_n21*2*(-1/2*(- 2*cos(c*pi)^3*sin(c*pi)+sin(c*pi)*cos(c*pi)-c*pi+2*cos(b*pi)^3*sin(b*pi)-sin(b*pi)*cos(b*pi)+b*pi)/pi); data_input(2,2)=besar_modulasi_Q_total_n21*2*(1/2*(-cos(c*pi)^4+cos(c*pi)^2+sin(c*pi)^2*cos(c*pi)^2+c*pi+ cos(b*pi)^4-cos(b*pi)^2-sin(b*pi)^2*cos(b*pi)^2-b*pi)/pi); data_input(2,3)=besar_modulasi_I_total_n22*2*(-1/2*(- 2*cos(c*pi)^3*sin(c*pi)+sin(c*pi)*cos(c*pi)-c*pi+2*cos(b*pi)^3*sin(b*pi)-sin(b*pi)*cos(b*pi)+b*pi)/pi); data_input(2,4)=besar_modulasi_Q_total_n22*2*(1/2*(-cos(c*pi)^4+cos(c*pi)^2+sin(c*pi)^2*cos(c*pi)^2+c*pi+ cos(b*pi)^4-cos(b*pi)^2-sin(b*pi)^2*cos(b*pi)^2-b*pi)/pi); daftar_data=data_input; demodulasi_total=[data_input(1,1),data_input(1,3),data_input(2,1),data_input(2,3);... data_input(1,2),data_input(1,4),data_input(2,2),data_input(2,4)]; set(handles.edit134,'string',sprintf('%0.3f',(demodulasi_total(1,1)))); set(handles.edit138,'string',sprintf('%0.3f',(demodulasi_total(2,1)))); set(handles.edit136,'string',sprintf('%0.3f',(demodulasi_total(1,2)))); set(handles.edit141,'string',sprintf('%0.3f',(demodulasi_total(2,2))));
set(handles.edit135,'string',sprintf('%0.3f',(demodulasi_total(1,3)))); set(handles.edit139,'string',sprintf('%0.3f',(demodulasi_total(2,3)))); set(handles.edit137,'string',sprintf('%0.3f',(demodulasi_total(1,4)))); set(handles.edit140,'string',sprintf('%0.3f',(demodulasi_total(2,4)))); % Plot Channel I sinyalI1a=data_input(1,1); sinyalI1b=data_input(1,3); sinyalI1c=data_input(2,1); sinyalI1d=data_input(2,3); % Plot Channel Q sinyalQ1a=data_input(1,2); sinyalQ1b=data_input(1,4); sinyalQ1c=data_input(2,2); sinyalQ1d=data_input(2,4); IQ_total=[sinyalI1a,sinyalQ1a,sinyalI1b,sinyalQ1b,sinyalI1c,sinyalQ1c,sinyalI1d,sinyalQ1d]; % untuk kanal I mod_total1=IQ_total(1:2:length(IQ_total));% bit ganjil kanalI=ones(handles.T/handles.Ts,1)*mod_total1; Isymbols=kanalI(:);%I_waveform % untuk kanal Q mod_total2=IQ_total(2:2:length(IQ_total));%bit genap kanalQ=ones(handles.T/handles.Ts,1)*mod_total2; Qsymbols=kanalQ(:);%Q_waveform %2 pi fc t twopi_fc_t=(1:handles.fs/2)*2*pi*handles.fcarr/handles.fs; cs_t = handles.a * cos(twopi_fc_t + handles.phi); sn_t = handles.a * sin(twopi_fc_t + handles.phi); cs_t=cs_t';%transpose sn_t=sn_t';%transpose si=cs_t.*Isymbols; sq=sn_t.*Qsymbols; sumiq1=si+sq; sumiq=.7*sumiq1;%reduce gain to keep output at +/- one axes(handles.axes23) plot(handles.tiq,sumiq) % axis([0 1 -5 5]); grid on xlabel(' Time') ylabel('Amplitude') title(' All User ') text2=get(handles.pushbutton9,'value'); function tom_demod_Callback(hObject, eventdata, handles) % hObject handle to tom_demod (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton19. function pushbutton19_Callback(hObject, eventdata, handles) %Ambil spreading code n1_1=str2double(get(handles.text25,'string')); n1_2=str2double(get(handles.text26,'string')); n1_3=str2double(get(handles.text27,'string')); n1_4=str2double(get(handles.text28,'string'));
n2_1=str2double(get(handles.text29,'string')); n2_2=str2double(get(handles.text30,'string')); n2_3=str2double(get(handles.text31,'string')); n2_4=str2double(get(handles.text32,'string')); n3_1=str2double(get(handles.text33,'string')); n3_2=str2double(get(handles.text34,'string')); n3_3=str2double(get(handles.text35,'string')); n3_4=str2double(get(handles.text36,'string')); spread_ubah=[n1_1,n1_2,n1_3,n1_4;n2_1,n2_2,n2_3,n2_4;n3_1,n3_2,n3_3,n3_4]; for l=1:3 for k=1:4 if spread_ubah(l,k)<1 spread_ubah(l,k)=-1; else spread_ubah(l,k)=1; end end end demod_kanalI11=str2double(get(handles.edit134,'string')); demod_kanalQ11=str2double(get(handles.edit138,'string')); demod_kanalI12=str2double(get(handles.edit136,'string')); demod_kanalQ12=str2double(get(handles.edit141,'string')); demod_kanalI21=str2double(get(handles.edit135,'string')); demod_kanalQ21=str2double(get(handles.edit139,'string')); demod_kanalI22=str2double(get(handles.edit137,'string')); demod_kanalQ22=str2double(get(handles.edit140,'string')); transmisi=[demod_kanalI11,demod_kanalQ11,demod_kanalI12,demod_kanalQ12;... demod_kanalI21,demod_kanalQ21,demod_kanalI22,demod_kanalQ22] data_proses=-1*transmisi' nUsers=3; b_kluaran_MF=zeros(nUsers,2); for index=1:nUsers b_kluaran_MF(index,:)=(spread_ubah(index,:)*data_proses)/length(spread_ubah) end R=zeros(nUsers,1); for index=1:nUsers R(index) = sum(spread_ubah(1,:).*spread_ubah(index,:)) end R=R/max(R); R=toeplitz(R); b=b_kluaran_MF; y=R*b; Q=R; q=y; estimasi_output=y; set(handles.edit178,'string',sprintf('%0.3f',(estimasi_output(1,1)))); set(handles.edit181,'string',sprintf('%0.3f',(estimasi_output(1,2)))); set(handles.edit179,'string',sprintf('%0.3f',(estimasi_output(2,1)))); set(handles.edit182,'string',sprintf('%0.3f',(estimasi_output(2,2)))); set(handles.edit180,'string',sprintf('%0.3f',(estimasi_output(3,1)))); set(handles.edit183,'string',sprintf('%0.3f',(estimasi_output(3,2)))); for l=1:3 for m=1:2 if (y(l,m)<-0.5) decis(l,m)=-1 elseif(y(l,m)>0.5)
decis(l,m)=1 else decis(l,m)=0 end end end set(handles.edit166,'string',decis(1,1)); set(handles.edit169,'string',decis(1,2)); set(handles.edit167,'string',decis(2,1)); set(handles.edit170,'string',decis(2,2)); set(handles.edit168,'string',decis(3,1)); set(handles.edit171,'string',decis(3,2)); for i=1:3 for j=1:2 if estimasi_output(i,j)>0 konversi_bit(i,j)=1; else konversi_bit(i,j)=0; end end end set(handles.edit184,'string',konversi_bit(1,1)); set(handles.edit187,'string',konversi_bit(1,2)); set(handles.edit185,'string',konversi_bit(2,1)); set(handles.edit188,'string',konversi_bit(2,2)); set(handles.edit186,'string',konversi_bit(3,1)); set(handles.edit189,'string',konversi_bit(3,2)); % hObject handle to pushbutton19 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton20. function pushbutton20_Callback(hObject, eventdata, handles) set(handles.uipanel48,'visible','off');set(handles.uipanel42,'visible','on'); set(handles.uipanel85,'visible','off');set(handles.uipanel38,'visible','on'); set(handles.uipanel69,'visible','off');set(handles.uipanel39,'visible','on'); set(handles.uipanel68,'visible','off');set(handles.uipanel40,'visible','on'); set(handles.uipanel50,'visible','off');set(handles.uipanel1,'visible','on'); % hObject handle to pushbutton20 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) function edit166_Callback(hObject, eventdata, handles) % hObject handle to edit166 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit166 as text % str2double(get(hObject,'String')) returns contents of edit166 as a double % --- Executes during object creation, after setting all properties. function edit166_CreateFcn(hObject, eventdata, handles) % hObject handle to edit166 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit167_Callback(hObject, eventdata, handles) % hObject handle to edit167 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit167 as text % str2double(get(hObject,'String')) returns contents of edit167 as a double % --- Executes during object creation, after setting all properties. function edit167_CreateFcn(hObject, eventdata, handles) % hObject handle to edit167 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit168_Callback(hObject, eventdata, handles) % hObject handle to edit168 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit168 as text % str2double(get(hObject,'String')) returns contents of edit168 as a double % --- Executes during object creation, after setting all properties. function edit168_CreateFcn(hObject, eventdata, handles) % hObject handle to edit168 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit169_Callback(hObject, eventdata, handles) % hObject handle to edit169 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit169 as text % str2double(get(hObject,'String')) returns contents of edit169 as a double % --- Executes during object creation, after setting all properties. function edit169_CreateFcn(hObject, eventdata, handles) % hObject handle to edit169 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit170_Callback(hObject, eventdata, handles) % hObject handle to edit170 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit170 as text % str2double(get(hObject,'String')) returns contents of edit170 as a double % --- Executes during object creation, after setting all properties. function edit170_CreateFcn(hObject, eventdata, handles) % hObject handle to edit170 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit171_Callback(hObject, eventdata, handles) % hObject handle to edit171 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit171 as text % str2double(get(hObject,'String')) returns contents of edit171 as a double % --- Executes during object creation, after setting all properties. function edit171_CreateFcn(hObject, eventdata, handles) % hObject handle to edit171 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes during object creation, after setting all properties. function uipanel38_CreateFcn(hObject, eventdata, handles) % hObject handle to uipanel38 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called function edit178_Callback(hObject, eventdata, handles) % hObject handle to edit178 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit178 as text % str2double(get(hObject,'String')) returns contents of edit178 as a double % --- Executes during object creation, after setting all properties. function edit178_CreateFcn(hObject, eventdata, handles) % hObject handle to edit178 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit179_Callback(hObject, eventdata, handles) % hObject handle to edit179 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit179 as text % str2double(get(hObject,'String')) returns contents of edit179 as a double % --- Executes during object creation, after setting all properties. function edit179_CreateFcn(hObject, eventdata, handles) % hObject handle to edit179 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); end function edit180_Callback(hObject, eventdata, handles) % hObject handle to edit180 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit180 as text % str2double(get(hObject,'String')) returns contents of edit180 as a double % --- Executes during object creation, after setting all properties. function edit180_CreateFcn(hObject, eventdata, handles) % hObject handle to edit180 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit181_Callback(hObject, eventdata, handles) % hObject handle to edit181 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit181 as text % str2double(get(hObject,'String')) returns contents of edit181 as a double % --- Executes during object creation, after setting all properties. function edit181_CreateFcn(hObject, eventdata, handles) % hObject handle to edit181 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit183_Callback(hObject, eventdata, handles) % hObject handle to edit183 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit183 as text % str2double(get(hObject,'String')) returns contents of edit183 as a double
% --- Executes during object creation, after setting all properties. function edit183_CreateFcn(hObject, eventdata, handles) % hObject handle to edit183 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit184_Callback(hObject, eventdata, handles) % hObject handle to edit184 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit184 as text % str2double(get(hObject,'String')) returns contents of edit184 as a double % --- Executes during object creation, after setting all properties. function edit184_CreateFcn(hObject, eventdata, handles) % hObject handle to edit184 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit185_Callback(hObject, eventdata, handles) % hObject handle to edit185 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit185 as text % str2double(get(hObject,'String')) returns contents of edit185 as a double % --- Executes during object creation, after setting all properties. function edit185_CreateFcn(hObject, eventdata, handles) % hObject handle to edit185 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit186_Callback(hObject, eventdata, handles) % hObject handle to edit186 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit186 as text % str2double(get(hObject,'String')) returns contents of edit186 as a double % --- Executes during object creation, after setting all properties. function edit186_CreateFcn(hObject, eventdata, handles) % hObject handle to edit186 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit187_Callback(hObject, eventdata, handles) % hObject handle to edit187 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit187 as text % str2double(get(hObject,'String')) returns contents of edit187 as a double % --- Executes during object creation, after setting all properties. function edit187_CreateFcn(hObject, eventdata, handles) % hObject handle to edit187 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit188_Callback(hObject, eventdata, handles) % hObject handle to edit188 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit188 as text % str2double(get(hObject,'String')) returns contents of edit188 as a double
% --- Executes during object creation, after setting all properties. function edit188_CreateFcn(hObject, eventdata, handles) % hObject handle to edit188 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit189_Callback(hObject, eventdata, handles) % hObject handle to edit189 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit189 as text % str2double(get(hObject,'String')) returns contents of edit189 as a double % --- Executes during object creation, after setting all properties. function edit189_CreateFcn(hObject, eventdata, handles) % hObject handle to edit189 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in tom_despread. function tom_despread_Callback(hObject, eventdata, handles) % Ambil spreading code spc1a=str2double(get(handles.text25,'string')); spc1b=str2double(get(handles.text26,'string')); spc1c=str2double(get(handles.text27,'string')); spc1d=str2double(get(handles.text28,'string')); spc2a=str2double(get(handles.text29,'string')); spc2b=str2double(get(handles.text30,'string')); spc2c=str2double(get(handles.text31,'string')); spc2d=str2double(get(handles.text32,'string')); spc3a=str2double(get(handles.text33,'string')); spc3b=str2double(get(handles.text34,'string')); spc3c=str2double(get(handles.text35,'string')); spc3d=str2double(get(handles.text36,'string')); % Ambil data demodulasi demod_kanalI11=str2double(get(handles.edit134,'string')); demod_kanalQ11=str2double(get(handles.edit138,'string')); demod_kanalI12=str2double(get(handles.edit136,'string')); demod_kanalQ12=str2double(get(handles.edit141,'string')); demod_kanalI21=str2double(get(handles.edit135,'string')); demod_kanalQ21=str2double(get(handles.edit139,'string')); demod_kanalI22=str2double(get(handles.edit137,'string')); demod_kanalQ22=str2double(get(handles.edit140,'string')); %Ubah spreading code spc=[spc1a,spc1b,spc1c,spc1d;spc2a,spc2b,spc2c,spc2d;spc3a,spc3b,spc3c,spc3d]; for i=1:3 for j=1:4 if spc(i,j)<1 spcd(i,j)=-1; else spcd(i,j)=1; end end end spreading_code=[spcd(1,:);spcd(2,:);spcd(3,:)]; data_demod=[ demod_kanalI21,demod_kanalQ21,demod_kanalI22,demod_kanalQ22,... demod_kanalI11,demod_kanalQ11,demod_kanalI12,demod_kanalQ12]; if isnan(data_demod) errordlg('Proses Demodulasi belum dikerjakan','input salah','modal') else for m=1:3 for n=1:8 if n>4 col=mod(n,5)+1; else col=n; end hasil_despread(m,n)=spreading_code(m,col)*data_demod(1,n); end
end set(handles.text247,'string',sprintf('%0.2f',(hasil_despread(1,1)))); set(handles.text250,'string',sprintf('%0.2f',(hasil_despread(1,2)))); set(handles.text253,'string',sprintf('%0.2f',(hasil_despread(1,3)))); set(handles.text256,'string',sprintf('%0.2f',(hasil_despread(1,4)))); set(handles.text268,'string',sprintf('%0.2f',(hasil_despread(1,5)))); set(handles.text259,'string',sprintf('%0.2f',(hasil_despread(1,6)))); set(handles.text260,'string',sprintf('%0.2f',(hasil_despread(1,7)))); set(handles.text261,'string',sprintf('%0.2f',(hasil_despread(1,8)))); set(handles.text248,'string',sprintf('%0.2f',(hasil_despread(2,1)))); set(handles.text251,'string',sprintf('%0.2f',(hasil_despread(2,2)))); set(handles.text254,'string',sprintf('%0.2f',(hasil_despread(2,3)))); set(handles.text257,'string',sprintf('%0.2f',(hasil_despread(2,4)))); set(handles.text262,'string',sprintf('%0.2f',(hasil_despread(2,5)))); set(handles.text263,'string',sprintf('%0.2f',(hasil_despread(2,6)))); set(handles.text264,'string',sprintf('%0.2f',(hasil_despread(2,7)))); set(handles.text269,'string',sprintf('%0.2f',(hasil_despread(2,8)))); set(handles.text249,'string',sprintf('%0.2f',(hasil_despread(3,1)))); set(handles.text252,'string',sprintf('%0.2f',(hasil_despread(3,2)))); set(handles.text255,'string',sprintf('%0.2f',(hasil_despread(3,3)))); set(handles.text258,'string',sprintf('%0.2f',(hasil_despread(3,4)))); set(handles.text265,'string',sprintf('%0.2f',(hasil_despread(3,5)))); set(handles.text266,'string',sprintf('%0.2f',(hasil_despread(3,6)))); set(handles.text267,'string',sprintf('%0.2f',(hasil_despread(3,7)))); set(handles.text270,'string',sprintf('%0.2f',(hasil_despread(3,8)))); user1=[hasil_despread(1,1),hasil_despread(1,2),hasil_despread(1,3),hasil_despread(1,4),... hasil_despread(1,5),hasil_despread(1,6),hasil_despread(1,7),hasil_despread(1,8)]; spread1=ones(handles.T/handles.Ts,1)*user1; data1=spread1(:); user2=[hasil_despread(2,1),hasil_despread(2,2),hasil_despread(2,3),hasil_despread(2,4),... hasil_despread(2,5),hasil_despread(2,6),hasil_despread(2,7),hasil_despread(2,8)]; spread2=ones(handles.T/handles.Ts,1)*user2; data2=spread2(:); user3=[hasil_despread(3,1),hasil_despread(3,2),hasil_despread(3,3),hasil_despread(3,4),... hasil_despread(3,5),hasil_despread(3,6),hasil_despread(3,7),hasil_despread(3,8)]; spread3=ones(handles.T/handles.Ts,1)*user3; td=[0:handles.Ts:(handles.N*handles.T)-handles.Ts]'; data3=spread3(:); % plot spread user 1 axes(handles.axes32); plot(td,data1),grid on,xlabel(' Time') ylabel('Amplitude'),title('User 1') % plot spread user 2 axes(handles.axes33); plot(td,data2),grid on,xlabel(' Time') ylabel('Amplitude'),title('User 2') % plot spread user 3 axes(handles.axes34); plot(td,data3),grid on,xlabel(' Time') ylabel('Amplitude'),title('User 3') end % hObject handle to tom_despread (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton25. function pushbutton25_Callback(hObject, eventdata, handles) b1_1=str2double(get(handles.ed_spread11,'string'));b1_2=str2double(get(handles.ed_spread12,'string')); b1_3=str2double(get(handles.ed_spread13,'string'));b1_4=str2double(get(handles.ed_spread14,'string')); c1_1=str2double(get(handles.ed_spread21,'string'));c1_2=str2double(get(handles.ed_spread22,'string')); c1_3=str2double(get(handles.ed_spread23,'string'));c1_4=str2double(get(handles.ed_spread24,'string')); d1_1=str2double(get(handles.ed_spread31,'string'));d1_2=str2double(get(handles.ed_spread32,'string')); d1_3=str2double(get(handles.ed_spread33,'string'));d1_4=str2double(get(handles.ed_spread34,'string')); b2_1=str2double(get(handles.edit11,'string'));b2_2=str2double(get(handles.edit12,'string')); b2_3=str2double(get(handles.edit13,'string'));b2_4=str2double(get(handles.edit14,'string')); c2_1=str2double(get(handles.edit19,'string'));c2_2=str2double(get(handles.edit20,'string')); c2_3=str2double(get(handles.edit21,'string'));c2_4=str2double(get(handles.edit22,'string')); d2_1=str2double(get(handles.edit27,'string'));d2_2=str2double(get(handles.edit28,'string')); d2_3=str2double(get(handles.edit29,'string'));d2_4=str2double(get(handles.edit30,'string')); hsl_spread_total=[b1_1,b1_2,b1_3,b1_4,b2_1,b2_2,b2_3,b2_4;c1_1,c1_2,c1_3,c1_4,c2_1,c2_2,c2_3,c2_4;d1_1,d1_2,d1_3,d1_4,d2_1,d2_2,d2_3,d2_4]; des11=str2double(get(handles.text247,'string'));des12=str2double(get(handles.text250,'string')); des13=str2double(get(handles.text253,'string'));des14=str2double(get(handles.text256,'string')); des15=str2double(get(handles.text268,'string'));des16=str2double(get(handles.text259,'string')); des17=str2double(get(handles.text260,'string'));des18=str2double(get(handles.text261,'string')); des21=str2double(get(handles.text248,'string'));des22=str2double(get(handles.text251,'string')); des23=str2double(get(handles.text254,'string'));des24=str2double(get(handles.text257,'string')); des25=str2double(get(handles.text262,'string'));des26=str2double(get(handles.text263,'string')); des27=str2double(get(handles.text264,'string'));des28=str2double(get(handles.text269,'string')); des31=str2double(get(handles.text249,'string'));des32=str2double(get(handles.text252,'string')); des33=str2double(get(handles.text255,'string'));des34=str2double(get(handles.text258,'string')); des35=str2double(get(handles.text265,'string'));des36=str2double(get(handles.text266,'string')); des37=str2double(get(handles.text267,'string'));des38=str2double(get(handles.text270,'string')); hsl_despread_total=[des11,des12,des13,des14,des15,des16,des17,des18;des21,des22,des23,des24,des25,des26,des27,des28;des31,des32,des33,des34,des35,des36,des37,des38]; siglen = 1000; numerrmin = 5; numerr = 0; while (numerr<numerrmin) [Num,Rat,Ind]=symerr(hsl_spread_total,hsl_despread_total); numerr=numerr+1; end [ber,intv1] = berconfint(Num,siglen,.98); g={['User1'],[num2str(Ind(1,1)) ' errror'],[num2str(Ind(1,2)) ' errror'],[num2str(Ind(1,3)) ' errror'],[num2str(Ind(1,4)) ' errror'],... [num2str(Ind(1,5)) ' errror'],[num2str(Ind(1,6)) ' errror'],[num2str(Ind(1,7)) ' errror'],[num2str(Ind(1,8)) ' errror'],... ['jumlah Error= ',num2str(Ind(1,1)+Ind(1,2)+Ind(1,3)+Ind(1,4)+Ind(1,5)+Ind(1,6)+Ind(1,7)+Ind(1,8))],... ['User2'],[num2str(Ind(2,1)) ' errror'],[num2str(Ind(2,2)) ' errror'],[num2str(Ind(2,3)) ' errror'],[num2str(Ind(2,4)) ' errror'],...
[num2str(Ind(2,5)) ' errror'],[num2str(Ind(2,6)) ' errror'],[num2str(Ind(2,7)) ' errror'],[num2str(Ind(2,8)) ' errror'],... ['jumlah Error= ',num2str(Ind(2,1)+Ind(2,2)+Ind(2,3)+Ind(2,4)+Ind(2,5)+Ind(2,6)+Ind(2,7)+Ind(2,8))],... ['User3'],[num2str(Ind(3,1)) ' errror'],[num2str(Ind(3,2)) ' errror'],[num2str(Ind(3,3)) ' errror'],[num2str(Ind(3,4)) ' errror'],... [num2str(Ind(3,5)) ' errror'],[num2str(Ind(3,6)) ' errror'],[num2str(Ind(3,7)) ' errror'],[num2str(Ind(3,8)) ' errror'],... ['jumlah Error= ',num2str(Ind(3,1)+Ind(3,2)+Ind(3,3)+Ind(3,4)+Ind(3,5)+Ind(3,6)+Ind(3,7)+Ind(3,8))],... ['Total Error = ',num2str(Num)],['BER = ',num2str(ber)],['Ratio = ',num2str(Rat)]}; set(handles.listbox2,'string',g) % -------------------------------------------------------------------- function File_save_Callback(hObject, eventdata, handles) % hObject handle to File_save (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) uisave; % -------------------------------------------------------------------- function file_close_Callback(hObject, eventdata, handles) pilihan = questdlg(['Keluar ',get(handles.figure1,'Name') ' ?'],... ['Keluar ',get(handles.figure1,'Name') '...'],... 'Ya','Tidak','Ya'); if strcmp(pilihan,'Tidak') return; end delete(handles.figure1) % hObject handle to file_close (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function file_mmse_Callback(hObject, eventdata, handles) % hObject handle to file_mmse (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) About_mmse % -------------------------------------------------------------------- function File_me_Callback(hObject, eventdata, handles) % hObject handle to File_me (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function Untitled_4_Callback(hObject, eventdata, handles) % hObject handle to Untitled_4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton31. function pushbutton31_Callback(hObject, eventdata, handles)
input11=str2double(get(handles.edit1,'string')); input12=str2double(get(handles.edit4,'string')); input21=str2double(get(handles.edit2,'string')); input22=str2double(get(handles.edit5,'string')); input31=str2double(get(handles.edit3,'string')); input32=str2double(get(handles.edit6,'string')); input_total=[input11,input12;input21,input22;input31,input32]; for i=1:3 for j=1:2 if input_total(i,j)<1 input_total(i,j)=-1; else input_total(i,j)=1; end end end data1=input_total(1,:); data2=input_total(2,:); data3=input_total(3,:); N=length(data1); % jumlah bit (bit rate) fs=str2double(get(handles.edit223,'string')); % frekuensi sampling Ts=1/fs; % Sampling time = 1/fs T=1/N; % Bit time td=[0:Ts:(N*T)-Ts]';% Time vector(data)(transpose) if isnan(input11)| input11>1 | input11<0 errordlg('Data input user belum dimasukkan','Input salah','modal'); elseif isnan(input12)| input12>1 |input12<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input21)| input21>1 |input21<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input22)| input22>1 |input22<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input31)| input31>1 |input31<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(input32)| input31>1 |input32<0 errordlg('Anda harus mengisikan angka biner 1 atau 0','Input salah','modal'); elseif isnan(fs) errordlg('frekuensi sampling belum dimasukkan','Input salah','modal'); else %data user 1 data11=ones(T/Ts,1)*data1; data21=data11(:);axes(handles.axes16) plot(td,data21),grid on,xlabel(' Time') ylabel('Amplitude');title('User 1');axis([0 1 -2 2]); % data user 2 data12=ones(T/Ts,1)*data2; data22=data12(:);axes(handles.axes17) plot(td,data22),grid on,xlabel(' Time') ylabel('Amplitude');title('User 2');axis([0 1 -2 2]); % data user 3 data13=ones(T/Ts,1)*data3; data23=data13(:);axes(handles.axes18) plot(td,data23),grid on,xlabel(' Time')
ylabel('Amplitude');title('User 3');axis([0 1 -2 2]); % clear grafik total axes(handles.axes19) handles.user_all=0; plot(handles.user_all),grid on end text5=get(handles.pushbutton31,'value'); if text5==1; set(handles.text275,'string','Data input user','position',[0.6 21.46 18 1]); set(handles.text276,'string','','position',[0.6 21.46 1 1]); set(handles.edit224,'string',Ts); set(handles.edit225,'string',N); set(handles.edit226,'string',T); end % hObject handle to pushbutton31 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) function edit222_Callback(hObject, eventdata, handles) % hObject handle to edit222 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit222 as text % str2double(get(hObject,'String')) returns contents of edit222 as a double % --- Executes during object creation, after setting all properties. function edit222_CreateFcn(hObject, eventdata, handles) % hObject handle to edit222 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit223_Callback(hObject, eventdata, handles) % hObject handle to edit223 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit223 as text % str2double(get(hObject,'String')) returns contents of edit223 as a double % --- Executes during object creation, after setting all properties. function edit223_CreateFcn(hObject, eventdata, handles) % hObject handle to edit223 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit224_Callback(hObject, eventdata, handles) % hObject handle to edit224 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit224 as text % str2double(get(hObject,'String')) returns contents of edit224 as a double % --- Executes during object creation, after setting all properties. function edit224_CreateFcn(hObject, eventdata, handles) % hObject handle to edit224 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit225_Callback(hObject, eventdata, handles) % hObject handle to edit225 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit225 as text % str2double(get(hObject,'String')) returns contents of edit225 as a double % --- Executes during object creation, after setting all properties. function edit225_CreateFcn(hObject, eventdata, handles) % hObject handle to edit225 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in pushbutton32. function pushbutton32_Callback(hObject, eventdata, handles) % hObject handle to pushbutton32 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) pan function edit226_Callback(hObject, eventdata, handles) % hObject handle to edit226 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit226 as text % str2double(get(hObject,'String')) returns contents of edit226 as a double % --- Executes during object creation, after setting all properties. function edit226_CreateFcn(hObject, eventdata, handles) % hObject handle to edit226 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in pushbutton33. function pushbutton33_Callback(hObject, eventdata, handles) axes(handles.axes16) plot(handles.tiq,handles.si1),grid on axes(handles.axes17) plot(handles.tiq,handles.si2),grid on axes(handles.axes18) plot(handles.tiq,handles.si3),grid on % axes(handles.axes19) % plot(handles.tiq,handles.si),grid on % hObject handle to pushbutton33 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton34. function pushbutton34_Callback(hObject, eventdata, handles) % hObject handle to pushbutton34 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton35. function pushbutton35_Callback(hObject, eventdata, handles) axes(handles.axes16) plot(handles.tiq,handles.sq1),grid on axes(handles.axes17) plot(handles.tiq,handles.sq2),grid on axes(handles.axes18) plot(handles.tiq,handles.sq3),grid on % hObject handle to pushbutton35 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in pushbutton36.
B
HASIL PENGAMATAN
Hasil Pengamatan
1. Hasil proses spreading (penyebaran)
a. Saat bit-bit masukan pengguna : 0 0 , 0 1, 1 0, 1 1
spreading code tipe 1 : 1 0 1 0
1 1 0 0
1 0 0 1
Input
Bit 1 Bit 2
Spreading code
Hasil spreading masing–masing pengguna
Spreading total ketiga pengguna
Bit rate
0 0 1 0 1 0 [-1 1 -1 1 -1 1 -1 1]
0 0 1 1 0 0 [-1 -1 1 1 -1 -1 1 1]
0 0 1 0 0 1 [-1 1 1 -1 -1 1 1 -1]
[-3 1 1 1 -3 1 1 1]
8 bps
0 1 1 0 1 0 [-1 1 -1 1 1 -1 1 -1]
0 1 1 1 0 0 [-1 -1 1 1 1 1 -1 -1]
0 1 1 0 0 1 [-1 1 1 -1 1 -1 -1 1]
[-3 1 1 1 3 -1 -1 -1]
8 bps
1 0 1 0 1 0 [ 1 -1 1 -1 -1 1 -1 1]
1 0 1 1 0 0 [ 1 1 -1 -1 -1 -1 1 1]
1 0
1 0 0 1 [ 1 -1 -1 1 -1 1 1 -1]
[3 -1 -1 -1 -3 1 1 1]
8 bps
1 1
1 0 1 0 [ 1 -1 1 -1 1 -1 1 -1]
1 1 1 1 0 0 [ 1 1 -1 -1 1 1 -1 -1]
1 1 1 0 0 1 [ 1 -1 -1 1 1 -1 -1 1]
[3 -1 -1 -1 3 -1 -1 -1]
8 bps
b. Saat bit-bit masukan pengguna : 0 0, 0 1, 1 0,1 1
spreading code tipe 2 : 1 0 1 0
1 1 0 0
1 0 0 1
Input
Bit 1 Bit 2
Spreading code
Hasil spreading masing–masing pengguna
Spreading total ketiga pengguna
Bitrate
0 0 0 1 0 1 [1 -1 1 -1 1 -1 1 -1]
0 0 0 0 1 1 [1 1 -1 -1 1 1 -1 -1]
0 0 0 1 1 0 [1 -1 -1 1 1 -1 -1 1]
[3 -1 -1 -1 3 -1 -1 -1]
8 bps
0 1 0 1 0 1 [1 -1 1 -1 -1 1 -1 1]
0 1 0 0 1 1 [1 1 -1 -1 -1 -1 1 1]
0 1 0 1 1 0 [1 -1 -1 1 -1 1 1 1]
[3 -1 -1 -1 -3 1 1 1]
8 bps
1 0 0 1 0 1 [-1 1 -1 1 1 -1 1 -1]
1 0 0 0 1 1 [-1 -1 1 1 1 1 -1 -1]
[-3 1 1 1 3 -1 -1 -1]
8 bps
1 0 0 1 1 0 [-1 1 1 -1 1 -1 -1 1]
1 1 0 1 0 1 [-1 1 -1 1 -1 1 -1 1]
1 1 0 0 1 1 [-1 -1 1 1 -1 -1 1 1]
1 1 0 1 1 0 [-1 1 1 -1 -1 1 1 -1]
[-3 1 1 1 -3 1 1 1] 8 bps
2. Hasil proses modulasi QPSK
a. Saat menggunakan spreading codes tipe 1
Input
Bit 1 Bit 2
Hasil spreading (Hs) masing–masing pengguna
Kanal I
⎟⎠⎞
⎜⎝⎛
+4
2cos2π
πfxHs
Kanal Q
⎟⎠⎞
⎜⎝⎛
+4
2sin2π
πfxHs
0 0 [1 -1 1 -1 1 -1 1 -1] [ 1.00 1.00 1.00 1.00] [-1.00 -1.00 -1.00 -1.00]
0 0 [1 1 -1 -1 1 1 -1 -1] [ 1.00 -1.00 1.00 -1.00]
[ 1.00 -1.00 1.00 -1.00]
0 0 [1 -1 -1 1 1 -1 -1 1] [ 1.00 -1.00 1.00 -1.00]
[-1.00 1.00 -1.00 1.00]
0 1 [1 -1 1 -1 -1 1 -1 1] [ 1.00 1.00 -1.00 -1.00]
[-1.00 -1.00 1.00 1.00]
0 1 [1 1 -1 -1 -1 -1 1 1] [1.00 -1.00 -1.00 1.00]
[ 1.00 -1.00 -1.00 1.00]
0 1 [1 -1 -1 1 -1 1 1 1] [ 1.00 -1.00 -1.00 1.00] [-1.00 1.00 1.00 1.00]
1 0 [-1 1 -1 1 1 -1 1 -1] [-1.00 -1.00 1.00 1.00]
[ 1.00 1.00 -1.00 -1.00]
1 0 [-1 -1 1 1 1 1 -1 -1] [-1.00 1.00 1.00 -100]
[ -1.00 1.00 1.00 -1.00]
1 0 [-1 1 1 -1 1 -1 -1 1] [-1.00 1.00 1.00 -1.00]
[ 1.00 -1.00 -1.00 1.00]
1 1 [-1 1 -1 1 -1 1 -1 1] [-1.00 -1.00 -1.00 -1.00]
[ 1.00 1.00 1.00 1.00]
1 1 [-1 -1 1 1 -1 -1 1 1] [-1.00 1.00 -1.00 1.00] [-1.00 1.00 -1.00 1.00]
1 1 [-1 1 1 -1 -1 1 1 -1] [-1.00 1.00 -1.00 1.00] [ 1.00 -1.00 1.00 -1.00]
b. Saat menggunakan spreading codes tipe 2
Input
Bit 1 Bit 2
Hasil spreading masing–masing pengguna
Kanal I
⎟⎠⎞
⎜⎝⎛
+4
2cos2π
πfxHs
Kanal Q
⎟⎠⎞
⎜⎝⎛
+4
2sin2π
πfxHs
0
0
[-1 1 -1 1 -1 1 -1 1] [-1.00 -1.00 -1.00 -1.00]
[ 1.00 1.00 1.00 1.00]
0
0
[-1 -1 1 1 -1 -1 1 1] [-1.00 1.00 -1.00 1.00]
[-1.00 1.00 -1.00 1.00]
0 0 [-1 1 1 -1 -1 1 1 - 1] [-1.00 1.00 -1.00 1.00]
[1.00 -1.00 1.00 -1.00]
0
1 [-1 1 -1 1 1 -1 1 -1] [-1.00 -1.00 1.00 1.00]
[1.00 1.00 -1.00 -1.00]
0
1
[-1 -1 1 1 1 1 -1 -1] [-1.00 1.00 1.00 -1.00]
[-1.00 1.00 1.00 -1.00]
0 1 [-1 1 1 -1 1 -1 -1 1] [-1.00 1.00 1.00 -1.00]
[1.00 -1.00 -1.00 1.00]
1
0 [ 1 - 1 1 -1 -1 1 -1 1]
[ 1.00 1.00 -1.00 -1.00]
[-1.00 -1.00 1.00 1.00]
1
0
[ 1 1 -1 -1 -1 -1 1 1] [ 1.00 -1.00 -1.00 1.00]
[1.00 -1.00 -1.00 1.00]
1 0 [ 1 -1 -1 1 -1 1 1 -1] [ 1.00 -1.00 -1.00 1.00]
[-1.00 1.00 1.00 -1.00]
1
1 [ 1 -1 1 -1 1 -1 1 -1]
[ 1.00 1.00 1.00 1.00]
[-1.00 -1.00 -1.00 -1.00]
1
1
[ 1 1 -1 -1 1 1 -1 -1] [ 1.00 -1.00 1.00 -1.00]
[1.00 -1.00 1.00 -1.00]
1 1 [ 1 -1 -1 1 1 -1 -1 1] [ 1.00 -1.00 1.00 -1.00]
[-1.00 1.00 -1.00 1.00]
3. Hasil proses modulasi QPSK total Input Bit 1 Bit 2
Bit 1
Bit 2
Kanal I
Kanal Q
Kanal I
Kanal Q
Kanal I
Kanal Q
Kanal I
Kanal Q
SNR
3.607 -0.084 -0.793 -1.982 3.778 -1.966 -0.768 -1.723 0 dB 0 0 0
0 0 0 3.081 -1.067 -1.062 -1.014 3.003 -1.002 -1.074 -0.948 16.6 dB
4.054 -0.620 -1.619 -0.568 -3.128 1.086 0.455 0.075 0 dB 0 0 0
1 1 1 3.007 -1.064 -1.014 -1.072 -2.964 0.975 0.934 1.051 16.6 dB
-2.239 0.200 -0.157 1.961 3.554 -1.259 -3.145 -1.505 0 dB 1 1 1
0 0 0 -2.999
1.044 0.946 1.016 2.965 -0.987 -0.927 -0.919 16.6 dB
-2.681 1.021 0.077 -0.155 -2.772 0.022 0.635 -0.028 0 dB 1 1 1
1 1 1
-2.938 0.929 0.982 1.027 -3.037 0.996 0.954 1.082 16.6 dB
-1.534 2.987
1.081 -2.373 -0.746 -1.565 2.749 0.724 0 dB 1 0 1
0 1 1 -0.982 3.034 -1.049 -1.008 -1.061 -0.930 3.007 -1.064 16.6 dB
4. Hasil proses demodulasi QPSK total
Input Bit 1 Bit 2
Bit 1
Bit 2
Kanal I
Kanal Q
Kanal I
Kanal Q
Kanal I
Kanal Q
Kanal I
Kanal Q
SNR
3.607 -0.084 -0.793 -1.982 3.778 -1.966 -0.768 -1.723 0 dB 0 0 0
0 0 0 3.081 -1.067 -1.062 -1.014 3.003 -1.002 -1.074 -0.948 16.6 dB
4.054 -0.620 -1.619 -0.568 -3.128 1.086 0.455 0.075 0 dB 0 0 0
1 1 1
3.007 -1.064 -1.014 -1.072 -2.964 0.975 0.934 1.051 16.6 dB
-2.239 0.200 -0.157 1.961 3.554 -1.259 -3.145 -1.505 0 dB 1 1 1
0 0 0
-2.999
1.044 0.946 1.016 2.965 -0.987 -0.927 -0.919 16.6 dB
-2.681 1.021 0.077 -0.155 -2.772 0.022 0.635 -0.028 0 dB 1 1 1
1 1 1 -2.938 0.929 0.982 1.027 -3.037 0.996 0.954 1.082 16.6 dB
-1.534 2.987
1.081 -2.373 -0.746 -1.565 2.749 0.724 0 dB 1 0 1
0 1 1 -0.982 3.034 -1.049 -1.008 -1.061 -0.930 3.007 -1.064 16.6 dB
5. Hasil proses despreading pada matched filter
Bit input Hasil Despreading Pengguna Bit 1 Bit 2 Bit 1 Bit 2
SNR
3.78
1.97
-0.77
1.72
3.61
0.08
-0.79
1.98
-3.13
-1.09
0.46
-0.07
4.05
0.62
-1.62
0.57
3.55
1.26
-3.15
1.50
-2.24
-0.20
-0.16
-1.96
-2.77
-0.02
0.64
0.03
-2.68
-1.02
0.08
0.16
0 dB
3.00
1.00
-1.07
0.95
3.08
1.07
-1.06
1.01
-2.96
-0.97
Pengguna 1
0
0.93
-1.05
3.01
1.06
-1.01
1.07
2.96
0.99
0.93
0.92
-3.00
-1.04
0.95
-1.02
0
1
1
0
1
0
1
3.04
-1.00
0.95
-1.08
-2.94
-0.93
0.98
-1.03
16.6 dB
3.78
1.97
-0.77
1.72
3.61
0.08
-0.79
1.98
-3.13
-1.09
-0.46
-0.07
4.05
-0.62
1.62
0.57
3.55
-1.26
3.15
1.50
-2.24
0.20
0.16
-1.96
-2.77
0.02
-0.64
0.03
-2.68
1.02
-0.08
0.16
0 dB
3.00
-1.00
1.07
0.95
3.08
-1.07
-1.06
Pengguna 2
0
1.01
-2.96
0.97
-0.93
-1.05
3.01
-1.06
1.01
1.07
2.96
-0.99
0.93
0.92
-3.00
1.04
-0.95
-1.02
0
1
1
0
1
0
1
3.04
0.95
-1.08
-2.94
-0.93
0.98 -1.00
-1.03
16.6 dB
3.78
1.97
-0.77
1.72
3.61
0.08
-0.79
1.98
-3.13
-1.09
-0.46
0.07
4.05
0.62
1.62
-0.57
3.55
1.26
3.15
-1.50
-2.24
-.020
0.16
1.96
-2.77
-0.02
0.64
0.03
-2.68
-1.02
-0.08
-0.16
0 dB
3.00
1.00
1.07
-0.95
3.08
1.07
1.06
-1.01
Pengguna 3
0
0
-2.96
-0.97
-0.93
1.05
3.01
1.06
1.01
-1.07
2.96
0.99
0.93
-0.92
-3.00
-1.04
-0.95
1.02
0
1
0
1
1
1
-3.04
-1.00
-0.95
1.08
-2.94
-0.93
-0.98
1.03
16.6 dB
6. Hasil estimasi pada detektor MMSE
Bit awal Estimasi output
Bit yang diterima
Hasil koneversi
Pengguna
Bit 1 Bit 2 Bit 1 Bit 2 Bit 1 Bit 2 Bit 1 Bit 2
SNR
Error
0
0
-1.220
-1.675
-1
-1
0
0
0
1
-0.906
0.959
-1
1
0
1
1
0
1.139
-0.793
1
-1
1
0
1
1
0.868
0.533
1
1
1
0 dB
1
0
0
-1.025
-0.970
-1
-1
0
0
0
1
-1.032
1.014
-1
1
0
1
1
0
1.028
-0.986
1
-1
1
0
Pengguna 1
1
1
0.978
1.040
1
1
1
1
16.6 dB
0
0
-1.575
-1.076
-1
-1
0
0
0
1
-1.405
0.643
-1
1
0
1
1
0
0.961
-1.736
1
-1
1
0
1
0.396
0.839
0
1
1
1
0 dB
1
0 0
-1.023
-1.006
-1
-1
0
0
0
1
-1.007
0.994
-1
1
0
1
1
0
0.979
-0.956
1
-1
1
0
Pengguna 2
1
1
1.005
1.019
1
1
1
1
16.6 dB
0
0
-0.625
-1.197
-1
-1
0
0
0
1
-1.431
1.149
-1
1
0
1
1
0
0.080
-1.613
1
-1
1
0
1
1
0.983
0.864
1
1
1
1
0 dB
0
0
-1.049
-1.033
-1
-1
0
0
Pengguna 3
0
1
-1.003
0.956
-1
1
1
0
16.6 dB
1 0 0.993 -0.990 1 -1 1 0
1 1 0.956 0.976 1 1 1 1