Sunday, November 1, 2015

PENGKODEAN DATA DIGITAL (NRZ-L, MANCHESTER)

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

pengkodean data digital nrz-L nrz-I manchester d-manchester
Perbedaan NRZ-L dan NRZ-I
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 :
a2
 

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
Manchester
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:

Post a Comment