Konversi
Sinyal Digital ke Digital ”NRZ-L dan NRZ-I”
KONVERSI SINYAL DIGITAL KE DIGITAL NRZ-L DAN NRZ-I
· 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