pengkodean data digital, nrz-L, nrz-I, manchester, d-manchester, praktikum menggunakan delphi
LAPORAN
PRAKTIKUM KOMUNIKASI DATA
PENGKODEAN
DATA DIGITAL
(NRZ-L,
NRZ-I, RZ, MANCHESTER, D-MANCHESTER)
PRAKTIKUM II
I. JUDUL
: PENGKODEAN DATA DIGITAL (NRZ-L, NRZ-I, RZ, MANCHESTER, D-MANCHESTER)
II. TUJUAN KHUSUS
·
Memahami
macam-macam pengkodean data digital (NRZ-L, NRZ-I, MANCHESTER, D-MANCHESTER,
RZ)
·
Memahami teknik pengkodean
data digital
·
Mampu
melakukan simulasi pengkodean data digital
III. TUJUAN UMUM
·
Membuat program untuk
mensimulasikan karakteristik pengkodean data digital (NRZ-L, NRZ-I, RZ, MANCHESTER , D-MANCHESTER)
·
Membuat flowchart
teknik pengkodean data digital
IV. ALAT DAN BAHAN
a. Program
Borland Delphi 7
b. Satu
unit komputer
V. TEORI
PENUNJANG
A.
PENGKODEAN
SINYAL DIGITAL
Data
digital merupakan data yang memiliki deretan nilai yang berbeda dan memiliki
ciri-ciri tersendiri. Salah satu
contoh data digital adalah teks, bilangan bulat, dan karakter yang lain. Tetapi
permasalahannya adalah data dalam bentuk karakter yang dapat dipahami manusia
tersebut tidak dapat langsung ditransmisikan dalam sistem komunikasi. Data
terlebih dahulu harus diubah dalam bentuk biner. Jadi suatu data digital akan
ditransmisikan dalam deretan biner. Sedangkan sinyal digital merupakan sinyal
untuk menampilkan data digital. Salah satu contohnya adalah rangkaian tegangan
pulsa yang berbeda dan tidak terjadi secara terus-menerus yang dapat memberikan
sinyal digital melalui transmitter
digital.
Jenis-jenis pengkodean:
1.
NRZ
(Non-Return To Zero)
Format
yang paling mudah dalam mentransmisikan sinyal digital adalah dengan
menggunakan dua tingkat tegangan yang berlainan untuk dua digit biner.
Kode-kode yang mengikuti cara ini dibagi berdasarkan sifat-sifatnya. Tingkat
tegangan tetap konstan sepanjang interval bit yang ditransmisikan, yang dalam
hal ini tidak terdapat transisi (tidak kembali ke level tegangan nol).
Format
ini dibagi menjadi dua bagian, yaitu:
a.
Non-Return to Zero level (NRZ-L), yaitu suatu kode dimana tegangan negatif
dipakai untuk mewakili suatu nilai biner dan tegangan positif dipakai untuk
mewakili nilai biner lainnya.
b.
Non-Return to Zero Inverted (NRZ-I), yaitu suatu kode dimana suatu transisi (rendah
ke tinggi atau tinggi ke rendah) pada awal suatu bit akan dikenal sebagai biner
‘1’ dan berarti biner ‘0’ apabila tidak ada transmisi. NRZ-I merupakan salah
satu contoh dari differensial encoding
(penyandian encoding).
Gambar 1. Perbedaan NRZ-L dan NRZ-I
2.
Return
to Zero (Multilevel Binary)
Format
pengodean ini diarahkan untuk mengatasi ketidak-efisienan kode NRZ. Kode ini
menggunakan lebih dari 2 level sinyal (contohnya: AMI), yaitu suatu kode dimana
biner ‘0’ diwakili dengan tidak adanya garis sinyal dan biner ‘1’ diwakili oleh
suatu pulsa positif atau negatif. Adapun
keunggulan biner multilevel dibanding NRZ adalah:
·
kemampuan sinkronisasi
yang baik
·
Tidak
mengandung komponen dc dan pemakaian bandwidth
yang lebih kecil
·
Dapat
menampung bit informasi yang lebih banyak.
Gambar 2. AMI
3.
Biphase
Biphase
merupakan format pengkodean yang dkembangkan untuk mengatasi keterbatasan kode
NRZ. Pada biphase digunakan dua teknik, yaitu Manchester dan Differensial Manchester. Manchester yaitu suatu
kode dimana ada suatu transisi pada setengah dari periode tiap bit: transisi
rendah ke tinggi mewakili ‘1’ dan tinggi ke rendah mewakili ‘0’. Sedangkan
differensial manchester
adalah suatu kode dimana biner ‘0’ diwakili oleh adanya transisi diawal periode
suatu bit dan biner ‘1’ diwakili oleh ketiadaan transisi di awal periode suatu
bit. Keuntungan rancangan biphase adalah:
·
Sinkronisasi : karena
adanya transisi selama tiap bit, pesawat penerima dapat mensinkronkan transisi
tersebut atau dikenal sebagai self
clocking codes.
·
Tidak ada komponen dc
·
Deteksi terhadap
kesalahan : Ketiadaan dari transisi yang diharapkan dapat digunakan untuk
mendeteksi kesalahan
·
Kekurangan: Memakai bandwidth yang lebar daripada biner
multilevel
Gambar
3. Perbedaan Manchester dan D-Manchester
4.
HDB3
(High-Density Bipolar-3 Zero)
HDB3
adalah suatu kode yang menggantikan string-string dari 4 nol dengan rangkaian
yang mengandung satu atau dua pulsa, atau disebut violation code. Jika violasi terakhir positif maka violasi
berikutnya pasti negatif, begitu pula sebaliknya.
Tabel 1. Aturan Substitusi HDB3
Polaritas dari pulsa akhir
|
Jumlah dari
pulsa-pulsa bipolar karena substitusi terakhir
|
|
|
Genap
|
Ganjil
|
-
|
000-
|
+00+
|
+
|
000+
|
-00-
|
Kedua
kode ini didasarkan pada penggunaan pengkodean AMI dan cocok untuk transmisi
dengan kecepatan data tinggi. Ada
dua teknik yang umum digunakan dalam layanan transmisi jarak jauh dan keduanya
diilustrasikan pada Gambar 8. Pengkodean B8ZS dikenal sebagai pengkodean
bipolar dengan 8 nol tertukar sedangkan skema pengkodean didasarkan pada
bipolar-AMI. Kelemahan pengkodean ini adalah panjangnya string (deretan) nol
dapat menyebabkan hilangnya sinkronisasi saat transmisi data.
Gambar 4. Aturan pengkodean untuk B8ZS dan HDB3
VI.
TEKNIK PENGGAMBARAN PADA PEMROGRAMAN DELPHI
·
Menggambar
Sinyal RZ pada umumnya
Gambar
5. Penggambaran sinyal RZ pada umumnya
Untuk menggambarkan sinyal RZ, koordinat 0,0 terletak
pada perpotongan antara sumbu x dan sumbu y. Langkah pertama untuk menggambar
adalah melalui koordinat 0,0, sinyal RZ memiliki 2 kondisi sinyal yang ditandai
dengan adanya bit ‘1’ dan bit ‘0’. Dimana untuk bit ‘1’ di wakili oleh gambar
sebagai berikut :
|
Gambar 6. Kondisi
sinyal RZ pada posisi bit ‘1’
Pada gambar di atas dapat dilihat bahwa kondisi bit ‘1’
diwakili oleh 4 garis dimana terdapat 2 garis yang mempunyai panjang yang sama (a1=a2,
b1=b2). Sedangkan
untuk bit ‘0’ diwakili oleh gambar sebagai berikut :
Gambar 7. Kondisi
sinyal RZ pada posisi bit ‘0’
Sama halnya untuk menggambarkan sinyal RZ bit ‘1’, bit ‘0’ juga memiliki 4 garis dimana
terdapat 2 garis yang mempunyai panjang yang sama.
· Penggambaran
sinyal RZ di Komputer
Gambar 8. Penggambaran sinyal RZ di komputer
Untuk menggambarkan sinyal RZ di komputer sangat berbeda
dengan menggambarkan sinyal RZ pada
umumnya. Ini dikarenakan adanya perbedaan referensi koordinat (0,0), untuk
penggambaran di komputer koordinat (0,0) terletak di pojok kiri atas. Langkah
pertama penggambaran sinyal RZ adalah dengan menarik garis setinggi t menuju koordinat (0,0) pada
penggambaran sinyal RZ pada umumnya. Setelah itu dilihat kondisi dari bit yang
akan kita gambar, misalnya, bit ‘1’ maka penggambarannya sebagai berikut :
Gambar
9. Penggambaran bit ‘1’ pada komputer
Setelah menuju titik setinggi t dari koordinat (0,0) penggambaran sinyal RZ pada umumnya,
dilanjutkan dengan membuat garis sepanjang b1
ke arah sumbu (0,0) penggambaran sinyal RZ dengan komputer, setelah itu, dari
ujung garis b1, buat garis
sepanjang garis a1 ke arah
kanan, selanjutnya dari ujung garis a1
buat garis sepanjang b2 ke
arah bawah (berlawanan dengan arah garis b1
/ menuju koordinat (0,0) penggambaran sinyal RZ pada umumnya), setelah itu
tarik garis sepanjang a2
dengan arah sesuai dengan garis a1.
Untuk menggambarkan bit ‘0’ sinyal RZ pada komputer
mempunyai cara yang sama dengan penggambaran sinyal RZ dengan bit’1’. Yang
membedakan hanyalah bentuk dari sinyal RZ bit ‘0’ yang berlawanan arah dengan
bit ‘1’.
VII. LANGKAH-LANGKAH PRAKTIKUM
MEMBUAT PROGRAM UNTUK MENGGAMBARKAN
SINYAL RZ, NRZ-L, NRZ-I, DAN MANCHESTER
· Membuka
program Delphi
· Menambahkan pada form satu buah image dan dua buah
button. Selanjutnya mengatur tata letak komponen-komponen tersebut.
Gambar
10. Tata letak komponen
·
Mengubah
beberapa property form dan komponen menurut tabel berikut:
Komponen
|
Property
|
Setting
|
Form
|
Caption
|
(Nama)Veronica
|
Name
|
frmrz
|
|
Button1
|
Caption
|
RZ
|
Name
|
btrz
|
|
Button2
|
Caption
|
Exit
|
Name
|
btexit
|
|
Button 3
|
Caption
|
NRZ-L
|
Name
|
btnrz
|
|
Button 4
|
Caption
|
NRZ-I
|
Name
|
btnrzi
|
|
Button 5
|
Caption
|
Reset
|
Name
|
btreset
|
|
Button 6
|
Caption
|
|
Name
|
btmanc
|
|
Image1
|
Name
|
imgtampil
|
Edit1
|
Text
|
010011001
|
Edit2
|
Name
|
edsumbux
|
Text
|
40
|
|
Edit3
|
Name
|
edsumbuy
|
Text
|
125
|
|
Groupbox1
|
Caption
|
Image
|
Label1
|
Caption
|
sumbu x
|
Label2
|
Caption
|
sumbu y
|
- Mengetikkan kode program di bawah ini untuk
menggambarkan gelombang pengkodean RZ sebagai prosedur rz_1 dan rz_0
dengan cara melakukan double click pada button btrz sebagai event
on click.
procedure rz_1(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,150);
frmrz.imgtampil.Canvas.LineTo(40+x,100);
frmrz.imgtampil.Canvas.MoveTo(40+x,100);
frmrz.imgtampil.Canvas.LineTo(70+y,100);
frmrz.imgtampil.Canvas.MoveTo(70+y,100);
frmrz.imgtampil.Canvas.LineTo(70+y,150);
frmrz.imgtampil.Canvas.MoveTo(70+y,150);
frmrz.imgtampil.Canvas.LineTo(100+y,150);
frmrz.imgtampil.Canvas.Pen.Color:=clBlack;
end;
procedure
rz_0(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,150);
frmrz.imgtampil.Canvas.LineTo(40+x,200);
frmrz.imgtampil.Canvas.MoveTo(40+x,200);
frmrz.imgtampil.Canvas.LineTo(70+y,200);
frmrz.imgtampil.Canvas.MoveTo(70+y,200);
frmrz.imgtampil.Canvas.LineTo(70+y,150);
frmrz.imgtampil.Canvas.MoveTo(70+y,150);
frmrz.imgtampil.Canvas.LineTo(100+y,150);
frmrz.imgtampil.Canvas.Pen.Color:=clBlack;
end;
procedure
Tfrmrz.btrzClick(Sender: TObject);
var
i:integer;
data:string;
sx,sy,x,y:integer;
begin
data:=edit1.text;
x:=0;
y:=0;
for
i:=1 to length(data) do begin
if data[i]='1' then begin
rz_1(x,y);
end else if data[i]='0' then begin
rz_0(x,y);
end;
y:=y+60;
x:=x+60;
end;
x:=0;
y:=0;
x:=
strtoint(frmrz.edsumbux.Text);
y:=
strtoint(frmrz.edsumbuy.Text);
sumbu(40,150,500,y);
for
sx:=1 to 450 do
begin
sy:=y;
end;
end;
Keterangan procedure rz_1:
Gambar
11. Penggambaran gelombang RZ biner 1
Gambar 12. Penggambaran gelombang RZ biner 0
Nilai x = 60 pixel dan y = 60 pixel
VIII. TAMPILAN
HASIL PROGRAM
Gambar 13.Tampilan sinyal saat button RZ di-klik
Gambar 14. Tampilan
sinyal saat button NRZ-L di-klik
Gambar 15. Tampilan sinyal saat button NRZ-I di-klik
Gambar 16. Tampilan sinyal saat button Manchester di-klik
IX.
KESIMPULAN
Pengkodean data
digital ditujukan untuk membangun sinyal digital, yang meliputi : unipolar, polar,
dan bipolar. Macam-macam pengkodean data digital yaitu NRZ-L, NRZ-I, dan RZ.
Pengkodean NRZ (Non-Return to Zero) menggunakan dua tingkat tegangan yang
berlainan untuk biner ’0’ dan biner ’1’. Sedangkan pengkodean RZ (Return to
Zero) selalu menuju ke level nol pada setengah periodenya.
Dalam proses
penggambaran sinyal digital, menggunakan beberapa procedure dalam membentuk
kondisi sinyal yang ditandai dengan adanya bit ’1’ dan bit ’0’.
X.
LISTING PROGRAM
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
Tfrmrz = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
imgtampil: TImage;
btnrz: TButton;
btexit: TButton;
Edit1: TEdit;
edsumbux: TEdit;
edsumbuy:
TEdit;
Label1: TLabel;
Label2: TLabel;
btnrzi: TButton;
btreset: TButton;
btrz: TButton;
btmanc: TButton;
procedure
btnrzClick(Sender: TObject);
procedure btexitClick(Sender: TObject);
procedure btresetClick(Sender: TObject);
procedure btrzClick(Sender: TObject);
procedure btnrziClick(Sender: TObject);
procedure btmancClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmrz: Tfrmrz;
x0,y0,p,l,lbr,tggi,bnykbit:integer;
implementation
{$R *.dfm}
//NRZ-L
procedure sumbu
(ax,ay,b,c:integer);
Begin
frmrz.imgtampil.Canvas.MoveTo(ax,ay);
frmrz.imgtampil.Canvas.LineTo(ax+b,ay);
frmrz.imgtampil.Canvas.MoveTo(ax,ay);
frmrz.imgtampil.Canvas.LineTo(ax,ay-c);
frmrz.imgtampil.Canvas.MoveTo(ax,ay);
frmrz.imgtampil.Canvas.LineTo(ax,ay+c);
end;
procedure
garis0(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,100);
frmrz.imgtampil.Canvas.LineTo(100+y,100);
end;
procedure
garis1(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+y,200);
frmrz.imgtampil.Canvas.LineTo(100+y,200);
end;
procedure garistegak
(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,100);
frmrz.imgtampil.Canvas.LineTo(40+x,200);
end;
procedure
Tfrmrz.btnrzClick(Sender: TObject);
var i:integer;
data:string;
sx,sy,x,y:integer;
begin
data:=frmrz.Edit1.Text;
x:=0;
y:=0;
for i:=1 to
length(frmrz.Edit1.Text) do
begin
if data[i]='1' then
begin
garis1(x,y);
end;
if data[i]='0' then
begin
garis0(x,y);
end;
if data[i]<>data[i-1] then
begin
garistegak(x,y);
end;
y:=y+60;
x:=x+60;
end;
x:=0;
y:=0;
x:=
strtoint(frmrz.edsumbux.Text);
y:=
strtoint(frmrz.edsumbuy.Text);
sumbu(40,150,500,y);
for
sx:=1 to 500 do
begin
sy:=y;
end;
end;
//RZ
procedure
rz_1(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,150);
frmrz.imgtampil.Canvas.LineTo(40+x,100);
frmrz.imgtampil.Canvas.MoveTo(40+x,100);
frmrz.imgtampil.Canvas.LineTo(70+y,100);
frmrz.imgtampil.Canvas.MoveTo(70+y,100);
frmrz.imgtampil.Canvas.LineTo(70+y,150);
frmrz.imgtampil.Canvas.MoveTo(70+y,150);
frmrz.imgtampil.Canvas.LineTo(100+y,150);
frmrz.imgtampil.Canvas.Pen.Color:=clBlack;
end;
procedure
rz_0(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,150);
frmrz.imgtampil.Canvas.LineTo(40+x,200);
frmrz.imgtampil.Canvas.MoveTo(40+x,200);
frmrz.imgtampil.Canvas.LineTo(70+y,200);
frmrz.imgtampil.Canvas.MoveTo(70+y,200);
frmrz.imgtampil.Canvas.LineTo(70+y,150);
frmrz.imgtampil.Canvas.MoveTo(70+y,150);
frmrz.imgtampil.Canvas.LineTo(100+y,150);
frmrz.imgtampil.Canvas.Pen.Color:=clBlack;
end;
procedure
Tfrmrz.btrzClick(Sender: TObject);
var i:integer;
data:string;
sx,sy,x,y:integer;
begin
data:=edit1.text;
x:=0;
y:=0;
for i:=1 to length(data) do
begin
if data[i]='1' then begin
rz_1(x,y);
end else if data[i]='0' then begin
rz_0(x,y);
end;
y:=y+60;
x:=x+60;
end;
x:=0;
y:=0;
x:=
strtoint(frmrz.edsumbux.Text);
y:=
strtoint(frmrz.edsumbuy.Text);
sumbu(40,150,500,y);
for
sx:=1 to 450 do
begin
sy:=y;
end;
end;
//NRZ-I
procedure
grsbwh(poss:integer);
begin
with frmrz.imgtampil.Canvas do
begin
MoveTo(x0+poss,y0+tggi);
lineto(x0+poss+lbr,y0+tggi);
end;
end;
procedure
grsats(pos:integer);
begin
with frmrz.imgtampil.Canvas do
begin
MoveTo(x0+pos,y0-tggi);
LineTo(x0+pos+lbr,y0-tggi);
end;
end;
procedure grs(pos:integer);
begin
with frmrz.imgtampil.Canvas do
begin
MoveTo(x0+pos,y0+tggi);
LineTo(x0+pos,y0-tggi);
end;
end;
procedure
sumbui(ax,ay,b,c:integer);
begin
with frmrz.imgtampil.Canvas do
begin
MoveTo(ax,ay);
LineTo(ax+b,ay);
MoveTo(ax,ay);
LineTo(ax,ay-c);
MoveTo(ax,ay);
LineTo(ax,ay+c);
end;
end;
procedure
nrzi(biner:string);
var
i,count:integer;
pos:integer;
sbl:boolean;
begin
count:=0;
sbl:=false;
bnykbit:=length(biner);
lbr:=round(p/(bnykbit));
for i:=1 to bnykbit do
begin
pos:=round(p/(bnykbit))*count;
if biner[i]= '1' then
sbl:=not sbl;
if sbl=true then
grsbwh(pos)
else
grsats(pos);
if
biner[i]='1' then
grs(pos);
count:=count+1;
end;
end;
procedure
Tfrmrz.btnrziClick(Sender: TObject);
begin
frmrz.imgtampil.Canvas.Create;
y0:= round(Frmrz.imgtampil.Height/2);
x0:= round((imgtampil.Width-100)/20 );
p:= imgtampil.Width-100;
l:= round((imgtampil.Height/2)-25);
tggi:=l-25;
sumbu(x0,y0,p,l);
nrzi(Edit1.Text);
end;
//Manchester
procedure sumbumanc
(ax,ay,b,c:integer);
Begin
frmrz.imgtampil.Canvas.MoveTo(ax,ay);
frmrz.imgtampil.Canvas.LineTo(ax+b,ay);
frmrz.imgtampil.Canvas.MoveTo(ax,ay);
frmrz.imgtampil.Canvas.LineTo(ax,ay-c);
frmrz.imgtampil.Canvas.MoveTo(ax,ay);
frmrz.imgtampil.Canvas.LineTo(ax,ay+c);
end;
procedure
garismanc0(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,100);
frmrz.imgtampil.Canvas.LineTo(70+y,100);
frmrz.imgtampil.Canvas.MoveTo(70+y,100);
frmrz.imgtampil.Canvas.LineTo(70+y,150);
frmrz.imgtampil.Canvas.MoveTo(70+y,150);
frmrz.imgtampil.Canvas.LineTo(100+x,150);
end;
procedure garismanc1
(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,150);
frmrz.imgtampil.Canvas.LineTo(70+y,150);
frmrz.imgtampil.Canvas.MoveTo(70+y,150);
frmrz.imgtampil.Canvas.LineTo(70+y,100);
frmrz.imgtampil.Canvas.MoveTo(70+y,100);
frmrz.imgtampil.Canvas.LineTo(100+y,100);
end;
procedure garistegakmanc
(x,y:integer);
begin
frmrz.imgtampil.Canvas.Pen.Color:=clRed;
frmrz.imgtampil.Canvas.MoveTo(40+x,100);
frmrz.imgtampil.Canvas.LineTo(40+x,150);
end;
procedure
Tfrmrz.btmancClick(Sender: TObject);
var i:integer;
data:string;
sx,sy,x,y:integer;
begin
data:=frmrz.Edit1.Text;
x:=0;
y:=0;
for i:=1 to
length(frmrz.Edit1.Text) do
begin
if data[i]='1' then
begin
garismanc1(x,y);
end;
if data[i]='0' then
begin
garismanc0(x,y);
end;
if data[i]=data[i-1] then
begin
garistegakmanc(x,y);
end;
y:=y+60;
x:=x+60;
end;
x:=0;
y:=0;
x:=
strtoint(frmrz.edsumbux.Text);
y:=
strtoint(frmrz.edsumbuy.Text);
sumbu(40,150,500,y);
for
sx:=1 to 500 do
begin
sy:=y;
end;
end;
procedure
Tfrmrz.btresetClick(Sender: TObject);
begin
imgtampil.Picture:=nil;
imgtampil.Refresh;
end;
procedure
Tfrmrz.btexitClick(Sender: TObject);
begin
close
end;
end.
2 comments:
nggak ada analisa datanya?
lah ngatur
Post a Comment