Laporan 2.docx

22
LAPORAN PRAKTIKUM KOMUNIKASI DATA PENGKODEAN DATA DIGITAL  (UNIPOLAR, RZ, AMI, B8ZS, NRZI) Disusun oleh : HILMI WIJAYANTI KELAS 2A / 09 / 1231130021 PRODI TEKNIK TELEKOMUNIKASI JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI MALANG 2014

Transcript of Laporan 2.docx

LAPORAN PRAKTIKUM KOMUNIKASI DATAPENGKODEAN DATA DIGITAL (UNIPOLAR, RZ, AMI, B8ZS, NRZI)

Disusun oleh :HILMI WIJAYANTIKELAS 2A / 09 / 1231130021

PRODI TEKNIK TELEKOMUNIKASIJURUSAN TEKNIK ELEKTROPOLITEKNIK NEGERI MALANG2014

1. Tujuan Dapat mengkonversikan data biner dari ke pengkodean data digital (UNIPOLAR, RZ, AMI, B8ZS, NRZI) Dapat membuat program untuk mensimulasikan karakteristik pengkodean data biner di komputer. Mampu membuat flow chart pengkodean data digital.

2. Alat dan bahan Program delphi versi 6 keatas Satu unit komputer

3. Dasar TeoriElemen sinyal adalah tiap pulsa dari sinyal digital. Data binary ditransmisikan dengan meng-encode -kan tiap bit data menjadi elemen-elemen sinyal. SinyalUnipolar adalah semua elemen sinyal yang mempunyai tanda yang sama, yaitu positif semua atau negatif semua. Sinyal polar adalah elemen-elemen sinyal dimana salah satu logic statenya diwakili oleh level tegangan positif dan yang lainnya oleh level tegangan negatif.Durasi atau lebar suatu bit adalah waktu yang diperlukan oleh transmitter untuk memancarkan bit tersebut.Modulation rate adalah kecepatan dimana level sinyal berubah, dinyatakan dalam bauds atau elemen sinyal per detik. Istilah mark dan space menyatakan digit binary '1' dan '0'.Tugas-tugas receiver dalam mengartikan sinyal-sinyal digital : receiver harus mengetahui timing dari tiap bit receiver harus menentukan apakah level sinyal dalam posisi bit high(1) ataulow(0)Tugas-tugas ini dilaksana kan dengan men-sampling tiap posisi bit pada tengah-tengah interval dan membandingkan nilainya dengan threshold.

Faktor yang menentukan sukses dari receiver dalam mengartikan sinyal yang datang : Data rate (kecepatan data) : peningkatan data rate akan meningkatkan bit error rate (kecepatan error dari bit). S/N : peningkatan S/N akan menurunkan bit error rate. Bandwidth : peningkatan bandwidth dapat meningkatkan data rate.

Lima faktor yang perlu dinilai atau dibandingkan dari berbagai teknik komunikasi: Spektrum sinyal : disain sinyal yang bagus harus mengkonsentrasikan kekuatan transmisinya pada daerah tengah dari bandwidth transmisi; untuk mengatasi distorsi dalam penerimaan sinyal digunakan disain kode yang sesuai dengan bentuk dari spektrum sinyal transmisi. Clocking : menentukan awal dan akhir dari tiap posisi bit dengan mekanisme synchronisasi yang berdasarkan pada sinyal transmisi. Deteksi error : dibentuk dalam skema fisik encoding sinyal. Interferensi sinyal dan Kekebalan terhadap noise Biaya dan kesulitan : semakin tinggi kecepatan pensinyalan untuk memenuhi data rate yang ada, semakin besar biayanya.

Gambar 1. Format encoding sinyal digital.

NONRETURN TO ZERO (NRZ) Nonreturn-to-Zero-Level (NRZ-L) yaitu suatu kode dimana tegangan negative dipakai untuk mewakili suatu binary dan tegangan positif dipakai untuk mewakili binary lainnya. Nonreturn to Zero Inverted (NRZI) ya itu suatu kode dimana suatu transisi (low ke high atau high ke low) pada awal suatu bit time akan dikenal sebagai binary '1' untuk bit time tersebut; tidak ada transisi berarti binary '0'. Sehingga NRZI merupakan salah satu contoh dari differensial encoding.Keuntungan differensial encoding : lebih kebal noise, tidak dipengaruhi oleh level tegangan.Kelemahan dari NRZ-L maupun NRZI : keterbatasan dalam komponen dc dan kemampuan synchronisasi yang buruk

MULTILEVEL BINARYKode ini menggunakan lebih dari 2 level sinyal (contohnya : pada gambar 1, bipolar-AMI dan pseudoternary).Bipolar-AMI yaitu suatu kode dimana binary '0' diwakili dengan tidak adanya line sinyal dan binary '1' diwakili oleh suatu pulsa positif atau negatif.Pseudoternary yaitu suatu kode dimana binary '1' diwakili oleh ketiadaan line sinyal dan binary '0' oleh pergantian pulsa-pulsa positif dan negatif.Keunggulan multilevel binary terhadap NRZ : kemampuan synchronisasi yang baik, tidak menangkap komponen dc dan pemakaian bandwidth yang lebih kecil, dapat menampung bit informasi yang lebih.Kekurangannya dibanding NRZ : diperlukan receiver yang mampu membedakan 3 level (+A, -A, 0) sehingga membutuhkan lebih dari 3 db kekuatan sinyal dibandingkan NRZ untuk probabilitas bit error yang sama.

BIPHASEDua tekniknya yaitu : manchester dan differential manchester.Manchester yaitu suatu kode dimana ada suatu transisi pada setengah dari periode tiap bit : transisi low ke high mewakili '1' dan high ke low mewakili '0'.Differential manchester yaitu suatu kode dimana binary '0' diwakili oleh adanya transisi di awal periode suatu bit dan binary '1' diwakili oleh ketiadaan transisi di awal periode suatu bit.Keuntungan rancangan biphase :1. Synchronisasi : karena adanya transisi selama tiap bit time, receiver dapat men-synchron-kan pada transis tersebut atau dikenal sebagai self clocking codes.2. Tidak ada komponen dc.3. Deteksi terhadap error : ketiadaan dari transisi yang diharapkan, dapat dipakai untuk mendeteksi error.Kekurangannya : memakai bandwidth yang lebih lebar dari pada multilevel binary.

TEKNIK SCRAMBLINGTeknik biphase memerlukan kecepatan pensinyalan yang tinggi relatif terhadap data rate sehingga lebih mahal pada aplikasi jarak jauh sehingga digunakan teknik scrambling dimana serangkaian level tegangan yang tetap pada line digantikan dengan serangkaian pengisi yang akan melengkapi transisi yang cukup untuk clock receiver mempertahankan synchronisasi.Hasil dari disain ini : tidak ada komponen dc tidak ada serangkaian sinyal level nol yang panjang tidak terjadi reduksi pada data rate kemampuan deteksi error.

Bipolar with 8-Zeros Substitution (B8ZS) yaitu suatu kode dimana : jika terjadi oktaf dari semua nol dan pulsa tegangan terakhir yang mendahului oktaf ini adalah positif, maka 8 nol dari oktaf tersebut di-encode sebagai 000+ -0- + jika terjadi oktaf dari semua nol dan pulsa tegangan terakhir yang mendahului oktaf ini adalah negatif, maka 8 nol dari oktaf tersebut di-encode sebagai 000- +0+ -.

4. FlowchartTTL(unipolar)

RZ

NRZ-I

AMI

B8ZS

5. Program

unit Encoder;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;type Tform1 = class(TForm) isibiner: TLabel; Panel1: TPanel; btnb8: TButton; btnami: TButton; btnttl: TButton; btnall: TButton; btnrz: TButton; btnnrzi: TButton; btnexit: TButton; Label1: TLabel; btnnol: TButton; biner: TEdit; btnsatu: TButton; btndelete: TButton; Imgnrzi: TImage; Imgami: TImage; Imgrz: TImage; Imguni: TImage; Imgb8zs: TImage; procedure btnnolClick(Sender: TObject); procedure btnsatuClick(Sender: TObject); procedure btndeleteClick(Sender: TObject); procedure btnclearClick(Sender: TObject); procedure btnexitClick(Sender: TObject); procedure btnrzClick(Sender: TObject); procedure btnnrziClick(Sender: TObject); procedure btnttlClick(Sender: TObject); procedure btnamiClick(Sender: TObject); procedure btnb8Click(Sender: TObject); procedure btnallClick(Sender: TObject); private { Private declarations } public { Public declarations } end;

var form1: Tform1;

implementation{$R *.dfm}

//PROCEDURE SINYAL RZ procedure rz_1(ax,ay,a,b,n:integer);begin form1.imgrz.Canvas.Pen.Color:=clred; form1.imgrz.Canvas.Pen.Width:=2; form1.imgrz.Canvas.MoveTo(ax+(n-1)*(b+b),ay); form1.imgrz.Canvas.LineTo(ax+(n-1)*(b+b),ay-a); form1.imgrz.Canvas.LineTo(ax+b+(n-1)*(b+b),ay-a); form1.imgrz.Canvas.LineTo(ax+b+(n-1)*(b+b),ay); form1.imgrz.Canvas.LineTo(ax+b+b+(n-1)*(b+b),ay);end;

procedure rz_0(ax,ay,a,b,n:integer);begin form1.imgrz.Canvas.Pen.Color:=clred; form1.imgrz.Canvas.Pen.Width:=2; form1.imgrz.Canvas.MoveTo(ax+(n-1)*(b+b),ay); form1.imgrz.Canvas.LineTo(ax+(n-1)*(b+b),ay+a); form1.imgrz.Canvas.LineTo(ax+b+(n-1)*(b+b),ay+a); form1.imgrz.Canvas.LineTo(ax+b+(n-1)*(b+b),ay); form1.imgrz.Canvas.LineTo(ax+b+b+(n-1)*(b+b),ay);end;

//PROCEDURE SINYAL NRZI procedure satuNRZI(ax,ay,a,b,i:integer);begin form1.imgnrzi.Canvas.Pen.Color:=clred; form1.imgnrzi.Canvas.Pen.Width:=2; form1.imgnrzi.Canvas.MoveTo(ax+(i-1)*b,ay+a); form1.imgnrzi.Canvas.LineTo(ax+b+(i-1)*b,ay+a);end;procedure nolNRZI(ax,ay,a,b,i:integer);begin form1.imgnrzi.Canvas.Pen.Color:=clred; form1.imgnrzi.Canvas.Pen.Width:=2; form1.imgnrzi.Canvas.MoveTo(ax+(i-1)*b,ay-a); form1.imgnrzi.Canvas.LineTo(ax+b+(i-1)*b,ay-a);end;procedure tegakNRZI(ax,ay,a,b,i:integer);begin form1.imgnrzi.Canvas.Pen.Color:=clred; form1.imgnrzi.Canvas.Pen.Width:=2; form1.imgnrzi.Canvas.MoveTo(ax+(i-1)*b,ay+a); form1.imgnrzi.Canvas.LineTo(ax+(i-1)*b,ay-a);end;//PROCEDURE SINYAL TTL procedure satu(ax,ay,a,b,i:integer);begin form1.imguni.Canvas.Pen.Color:=clred; form1.imguni.Canvas.Pen.Width:=2; form1.imguni.Canvas.MoveTo(ax+(i-1)*b,ay-a); form1.imguni.Canvas.LineTo(ax+b+(i-1)*b,ay-a);end;procedure nol(ax,ay,a,b,i:integer);begin form1.imguni.Canvas.Pen.Color:=clred; form1.imguni.Canvas.Pen.Width:=2; form1.imguni.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imguni.Canvas.LineTo(ax+b+(i-1)*b,ay);end;procedure tegak(ax,ay,a,b,i:integer);begin form1.imguni.Canvas.Pen.Color:=clred; form1.imguni.Canvas.Pen.Width:=2; form1.imguni.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imguni.Canvas.LineTo(ax+(i-1)*b,ay-a);end;

//PROCEDURE SINYAL AMI procedure ami1_1(ax,ay,a,b,i:integer);begin form1.imgami.Canvas.Pen.Color:=clred; form1.imgami.Canvas.Pen.Width:=2; form1.imgami.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imgami.Canvas.LineTo(ax+(i-1)*b,ay-a); form1.imgami.Canvas.LineTo(ax+b+(i-1)*b,ay-a); form1.imgami.Canvas.LineTo(ax+b+(i-1)*b,ay);end;

procedure ami1_2(ax,ay,a,b,i:integer);begin form1.imgami.Canvas.Pen.Color:=clred; form1.imgami.Canvas.Pen.Width:=2; form1.imgami.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imgami.Canvas.LineTo(ax+(i-1)*b,ay+a); form1.imgami.Canvas.LineTo(ax+b+(i-1)*b,ay+a); form1.imgami.Canvas.LineTo(ax+b+(i-1)*b,ay);end;

procedure ami0(ax,ay,a,b,i:integer);begin form1.imgami.Canvas.Pen.Color:=clred; form1.imgami.Canvas.Pen.Width:=2; form1.imgami.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imgami.Canvas.LineTo(ax+b+(i-1)*b,ay);end;

//PROCEDURE SINYAL B8ZS procedure btnb8plus(ax,ay,a,b,i:integer);begin form1.imgb8zs.Canvas.Pen.Color:=clred; form1.imgb8zs.Canvas.Pen.Width:=2; form1.imgb8zs.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imgb8zs.Canvas.LineTo(ax+(i-1)*b,ay-a); form1.imgb8zs.Canvas.LineTo(ax+b+(i-1)*b,ay-a); form1.imgb8zs.Canvas.LineTo(ax+b+(i-1)*b,ay);end;

procedure btnb8minus(ax,ay,a,b,i:integer);begin form1.imgb8zs.Canvas.Pen.Color:=clred; form1.imgb8zs.Canvas.Pen.Width:=2; form1.imgb8zs.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imgb8zs.Canvas.LineTo(ax+(i-1)*b,ay+a); form1.imgb8zs.Canvas.LineTo(ax+b+(i-1)*b,ay+a); form1.imgb8zs.Canvas.LineTo(ax+b+(i-1)*b,ay);end;

procedure btnb8nol(ax,ay,a,b,i:integer);begin form1.imgb8zs.Canvas.Pen.Color:=clred; form1.imgb8zs.Canvas.Pen.Width:=2; form1.imgb8zs.Canvas.MoveTo(ax+(i-1)*b,ay); form1.imgb8zs.Canvas.LineTo(ax+b+(i-1)*b,ay);end;

//PROCEDURE UTAMA DAN SUMBU procedure sumbu;var q,n:integer; biner:string;beginbiner:=form1.biner.Text;q:=length(biner);//REFRESH PICTURE form1.imgrz.Picture:=nil; form1.imgrz.Refresh; form1.imguni.Picture:=nil; form1.imguni.Refresh; form1.imgnrzi.Picture:=nil; form1.imgnrzi.Refresh; form1.imgami.Picture:=nil; form1.imgami.Refresh; form1.imgb8zs.Picture:=nil; form1.imgb8zs.Refresh;

//SUMBU RZ form1.imgrz.Canvas.Pen.Color:=clBlack; form1.imgrz.Canvas.Pen.Style:=pssolid; form1.imgrz.Canvas.MoveTo(10,160); form1.imgrz.Canvas.LineTo(10,160-145); form1.imgrz.Canvas.TextOut(10,160-155,'Amplitudo'); form1.imgrz.Canvas.TextOut(10+150,160-155,'RZ'); form1.imgrz.Canvas.MoveTo(10,100); form1.imgrz.Canvas.LineTo(10+1070,100); form1.imgrz.Canvas.TextOut(10+1070,100+5,'Time'); form1.imgrz.Canvas.Pen.Color:=clBlue; form1.imgrz.Canvas.Pen.Style:=psDot; for n:=1 to q do

begin form1.imgrz.Canvas.MoveTo(10+(30*n),160-130); form1.imgrz.Canvas.LineTo(10+(30*n),160); form1.imgrz.Canvas.TextOut((30*n)-5,160-130,biner[n]); end;

//SUMBU NRZI form1.imgnrzi.Canvas.Pen.Color:=clBlack; form1.imgnrzi.Canvas.Pen.Style:=pssolid; form1.imgnrzi.Canvas.MoveTo(10,160); form1.imgnrzi.Canvas.LineTo(10,160-145); form1.imgnrzi.Canvas.TextOut(10,160-155,'Amplitudo'); form1.imgnrzi.Canvas.TextOut(10+150,160-155,'NRZI'); form1.imgnrzi.Canvas.MoveTo(10,100); form1.imgnrzi.Canvas.LineTo(10+1070,100); form1.imgnrzi.Canvas.TextOut(10+1070,100+5,'Time'); form1.imgnrzi.Canvas.Pen.Color:=clBlue; form1.imgnrzi.Canvas.Pen.Style:=psDot; for n:=1 to q do begin form1.imgnrzi.Canvas.MoveTo(10+(30*n),160-130); form1.imgnrzi.Canvas.LineTo(10+(30*n),160); form1.imgnrzi.Canvas.TextOut((30*n)-5,160-130,biner[n]); end;//SUMBU TTL form1.imguni.Canvas.Pen.Color:=clBlack; form1.imguni.Canvas.Pen.Style:=pssolid; form1.imguni.Canvas.MoveTo(10,160); form1.imguni.Canvas.LineTo(10,160-145); form1.imguni.Canvas.TextOut(10,160-155,'Amplitudo'); form1.imguni.Canvas.TextOut(10+150,160-155,'Unipolar'); form1.imguni.Canvas.MoveTo(10,100); form1.imguni.Canvas.LineTo(10+1070,100); form1.imguni.Canvas.TextOut(10+1070,100+5,'Time'); form1.imguni.Canvas.Pen.Color:=clBlue; form1.imguni.Canvas.Pen.Style:=psDot; for n:=1 to q do begin form1.imguni.Canvas.MoveTo(10+(30*n),160-130); form1.imguni.Canvas.LineTo(10+(30*n),160); form1.imguni.Canvas.TextOut(10+(30*n)-15,160-130,biner[n]); end;

//SUMBU AMI form1.imgami.Canvas.Pen.Color:=clBlack; form1.imgami.Canvas.Pen.Style:=pssolid; form1.imgami.Canvas.MoveTo(10,160); form1.imgami.Canvas.LineTo(10,160-145); form1.imgami.Canvas.TextOut(10,160-155,'Amplitudo'); form1.imgami.Canvas.TextOut(10+150,160-155,'AMI'); form1.imgami.Canvas.MoveTo(10,100); form1.imgami.Canvas.LineTo(10+1070,100); form1.imgami.Canvas.TextOut(10+1070,100+5,'Time'); form1.imgami.Canvas.Pen.Color:=clBlue; form1.imgami.Canvas.Pen.Style:=psDot; for n:=1 to q do begin form1.imgami.Canvas.MoveTo(10+(30*n),160-130); form1.imgami.Canvas.LineTo(10+(30*n),160); form1.imgami.Canvas.TextOut(10+(30*n)-15,160-130,biner[n]); end;

//SUMBU B8ZS form1.imgb8zs.Canvas.Pen.Color:=clBlack; form1.imgb8zs.Canvas.Pen.Style:=pssolid; form1.imgb8zs.Canvas.MoveTo(10,160); form1.imgb8zs.Canvas.LineTo(10,160-145); form1.imgb8zs.Canvas.TextOut(10,160-155,'Amplitudo'); form1.imgb8zs.Canvas.TextOut(10+150,160-155,'B8ZS'); form1.imgb8zs.Canvas.MoveTo(10,100); form1.imgb8zs.Canvas.LineTo(10+1070,100); form1.imgb8zs.Canvas.TextOut(10+1070,100+5,'Time'); form1.imgb8zs.Canvas.Pen.Color:=clBlue; form1.imgb8zs.Canvas.Pen.Style:=psDot; for n:=1 to q do begin form1.imgb8zs.Canvas.MoveTo(10+(30*n),160-130); form1.imgb8zs.Canvas.LineTo(10+(30*n),160); form1.imgb8zs.Canvas.TextOut(10+(30*n)-15,160-130,biner[n]); end; end;//PROGRAM RZ procedure rz;var ax,ay,a,b,n,q:integer; biner:string;beginbiner:=form1.biner.Text;q:=length(biner);ax:=10; ay:=100; a:=15; b:=15;for n:=1 to q doif biner[n]='1' then begin rz_1(ax,ay,b,a,n); end else if biner[n]='0' then begin rz_0(ax,ay,b,a,n); end;

end;//PROGRAM NRZI procedure nrzi;var tnd,ax,ay,a,b,n:integer; biner:string;beginbiner:=form1.biner.Text;ax:=10; ay:=100; a:=30; b:=15;tnd:=0; for n:=1 to length(biner) do if biner[n]='1' then if tnd=0 then begin satuNRZI(ax,ay,b,a,n); tegakNRZI(ax,ay,b,a,n); tnd:=1; end else satuNRZI(ax,ay,b,a,n) else if tnd=1 then begin nolNRZI(ax,ay,b,a,n); tegakNRZI(ax,ay,b,a,n); tnd:=0; end else nolNRZI(ax,ay,b,a,n);end;//PROGRAM TTL procedure ttl;var tnd,ax,ay,a,b,n:integer; biner:string;beginbiner:=form1.biner.Text;ax:=10; ay:=100; a:=30; b:=15;tnd:=0; for n:=1 to length(biner) do if biner[n]='1' then if tnd=0 then begin tegak(ax,ay,b,a,n); satu (ax,ay,b,a,n); tnd:=1; end else satu(ax,ay,b,a,n) else if tnd=1 then begin tegak(ax,ay,b,a,n); nol (ax,ay,b,a,n); tnd:=0; end else nol(ax,ay,b,a,n);end;//PROGRAM AMI procedure ami;var tnd,ax,ay,a,b,n:integer; biner,start:string;beginbiner:=form1.biner.Text;ax:=10; ay:=100; a:=30; b:=15;tnd:=0;start:='atas'; if start='bawah' then tnd:=0 else if start='atas' then tnd:=1; for n:=1 to length(biner) do if biner[n]='1' then if tnd=1 then begin ami1_1(ax,ay,b,a,n); tnd:=0; end else begin ami1_2(ax,ay,b,a,n); tnd:=1; end else ami0(ax,ay,b,a,n);end;

//PROGRAM B8ZS procedure b8zs;var tnd,ax,ay,a,b,n,u:integer; biner,start,tipe:string;beginbiner:=form1.biner.Text;ax:=10; ay:=100; a:=30; b:=15;tnd:=0; start:='false'; tipe:='genap'; u:=0; for n:=1 to length(biner) do begin if start='true' then if n