Friday, October 30, 2015

KONVERSI SINYAL DIGITAL KE DIGITAL NRZ-L DAN NRZ-I

Konversi Sinyal Digital ke Digital ”NRZ-L dan NRZ-I”

KONVERSI SINYAL DIGITAL KE DIGITAL NRZ-L DAN NRZ-I

konversi sinyal digital ke nrz l dan nrz i
Konversi Sinyal Digital ke NRZ-L dan NRZ-I
1.      Tujuan:
·     Membuat program untuk mensimulasikan konversi Sinyal Digital ke Digital (NRZ-L dan NRZ-I).
·        Memahami algoritma program simulasi konversi sinyal.
·        Memahami konversi Sinyal Digital ke Digital.

2.      Script Program

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
  
var
    sumbuX,sumbuY,lebar,tinggi,p,l,bit: integer;

procedure tampil1(posisi:integer);
begin
    Form1.Image1.Canvas.Pen.Color:=clblue;
    Form1.Image1.Canvas.Pen.Style:=pssolid;
    Form1.Image1.Canvas.MoveTo(sumbuX+posisi,sumbuY-tinggi);
    Form1.Image1.Canvas.LineTo(sumbuX+posisi+lebar,sumbuY-tinggi);
end;

procedure tampil0(posisi:integer);
begin
    Form1.Image1.Canvas.Pen.Color:=clblue;
    Form1.Image1.Canvas.Pen.Style:=pssolid;
    Form1.Image1.Canvas.MoveTo(sumbuX+posisi,sumbuY+tinggi);
    Form1.Image1.Canvas.lineto(sumbuX+posisi+lebar,sumbuY+tinggi);
end;

procedure garis(posisi:integer);
begin
    Form1.Image1.Canvas.Pen.Color:=clblue;
    Form1.Image1.Canvas.Pen.Style:=pssolid;
    form1.Image1.Canvas.MoveTo(sumbuX+posisi,sumbuY+tinggi);
    form1.Image1.Canvas.lineto(sumbuX+posisi,sumbuY-tinggi);
end;

procedure sumbu(sumbuX,sumbuY,panjang,tinggi: integer);
begin
    Form1.Image1.Canvas.MoveTo(sumbuX,sumbuY);
    Form1.Image1.Canvas.LineTo(sumbuX+panjang,sumbuY);
    Form1.Image1.Canvas.MoveTo(sumbuX,sumbuY);
    Form1.Image1.Canvas.LineTo(sumbuX,sumbuY+tinggi);
    Form1.Image1.Canvas.MoveTo(sumbuX,sumbuY);
    Form1.Image1.Canvas.LineTo(sumbuX,sumbuY-tinggi);

    Form1.Image2.Canvas.MoveTo(sumbuX,sumbuY);
    Form1.Image2.Canvas.LineTo(sumbuX+panjang,sumbuY);
    Form1.Image2.Canvas.MoveTo(sumbuX,sumbuY);
    Form1.Image2.Canvas.LineTo(sumbuX,sumbuY+tinggi);
    Form1.Image2.Canvas.MoveTo(sumbuX,sumbuY);
    Form1.Image2.Canvas.LineTo(sumbuX,sumbuY-tinggi);
end;

procedure garisbawah(posisi:integer);
begin
    Form1.Image2.Canvas.Pen.Color:=clblue;
    Form1.Image2.Canvas.Pen.Style:=pssolid;
    Form1.Image2.Canvas.MoveTo(sumbuX+posisi,sumbuY+tinggi);
    Form1.Image2.Canvas.LineTo(sumbuX+posisi+lebar,sumbuY+tinggi);
end;

procedure garisatas(posisi:integer);
begin
    Form1.Image2.Canvas.Pen.Color:=clblue;
    Form1.Image2.Canvas.Pen.Style:=pssolid;
    Form1.Image2.Canvas.MoveTo(sumbuX+posisi,sumbuY-tinggi);
    Form1.Image2.Canvas.LineTo(sumbuX+posisi+lebar,sumbuY-tinggi);
end;

procedure garistegak(posisi:integer);
begin
    Form1.Image2.Canvas.Pen.Color:=clblue;
    Form1.Image2.Canvas.Pen.Style:=pssolid;
    form1.Image2.Canvas.MoveTo(sumbuX+posisi,sumbuY+tinggi);
    form1.Image2.Canvas.lineto(sumbuX+posisi,sumbuY-tinggi);
end;

procedure NRZL(biner:string);
var
  i,bit,c : integer;
  sbl : string;
begin
  c :=0;
  bit := length(form1.Edit1.Text);
  lebar := p div length(form1.Edit1.Text);
  sbl:= '0';
  for i:=1 to bit do
    begin
    if biner[i] = '1' then
       tampil0(lebar*c)
    else
       tampil1(lebar*c);
    if sbl <> biner[i] then
        garis(lebar*c);
    sbl :=biner[i];
    c := c+1
    end;
end;

procedure NRZI(biner:string);
var
  i,n,posisi:integer;
  sbl : boolean;
  tanda : string;
begin
   tanda :='0';
   n :=0;
   sbl :=false;
   bit :=length(biner);
   lebar :=round(p/(bit));
      for i:=1 to bit do
        begin
          posisi :=round(p/(bit))*n;
          if biner[i]='1'then
            sbl :=not sbl;
          if sbl = true then
            garisbawah(posisi)
          else
            garisatas(posisi);
          if tanda <>biner[i]then
            garistegak(posisi);
          n := n+1;
        end;
end;

procedure hapus;
var
  i,j : integer;
begin
  for i:=0 to form1.Image1.Width do
  for j:=0 to form1.Image1.Height do
  begin
    form1.Image1.Canvas.Pixels[i,j] := clwhite;
    form1.Image2.Canvas.Pixels[i,j] := clwhite;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
      sumbuY := round(form1.Image1.height / 2);
      sumbuX := round((image1.Width-100)/20 );
      p := image1.Width-50;
      l:= round((image1.Height/2)-25);
      tinggi := l-20;
      tinggi:=l-25;
      sumbu(sumbuX,sumbuY,p,l);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  NRZL(Form1.Edit1.Text);
  NRZI(Form1.Edit1.Text);
  Form1.Button1.Visible :=true;
  Form1.Button2.Visible :=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  hapus;
  sumbu(sumbuX,sumbuY,p,l);
end;

end.

3.      Pembahasan
Program diatas merupakan program untuk simulasi konversi sinyal digital ke digital khususnya konversi NRZ-L dan NRZ-I secara dua dimensi. Input dari program ini minimal 20 bit atau lebih baik untuk NRZ-L maupun untuk NRZ-I. Untuk NRZ-L, biner ’0’ adalah positif, sedangkan untuk biner ’1’ adalah negatif. Untuk NRZ-I telah ditetapkan bahwa bit pertama bernilai positif, biner ’0’ bernilai tetap dan jika bit selanjutnya benilai biner ’1’ maka akan terjadi proses transisi.
Pada script program terdapat program utama (FormCreate)  yang digunakan untuk menampilkan tampilan pada saat awal program di play. Sebelum program utama (FormCreate) terdapat procedure-procedure yang digunakan untuk menampilkan gelombang sesuai dengan keinginan kita. Procedure-procedure untuk menampilkan gelombang NRZ-L seperti procedure tampil1, procedure tampil0, procedure garis, procedure sumbu, procedure NRZ-L dan procedure hapus. Sedangkan untuk menampilkan gelombang NRZ-I procedure-procedurenya terdiri dari procedure garisatas, procedure garisbawah, procedure garistegak, procedure sumbu, procedure NRZ-I dan procedure hapus. Untuk procedure sumbu dan procedure hapus programnya sama baik untuk NRZ-L maupun untuk NRZ-I.
Pada form aplikasi terdapat dua image yang digunakan untuk menampilkan gelombang NRZ-L dan NRZ-I. Kedua image tersebut akan muncul dua-duanya pada saat button play di klik karena input biner yang dituliskan sama, dan tidak adanya button untuk memilih apakah NRZ-L atau NRZ-I yang akan ditampilkan dan juga   untuk mempermudah mengetahui perbedaan antara NRZ-L dan NRZ-I.  

4.      Kesimpulan
·        Pada form aplikasi terdapat dua image yang digunakan untuk menampilkan gelombang NRZ-L dan NRZ-I, yang kedua image tersebut akan menampilkan gelombang NRZ-L dan NRZ-I secara bersamaan pada saat button play di klik.
·        Input biner untuk kedua program tersebut minimal 20 bit atau lebih.



0 comments:

Post a Comment