Gerbang XOR dengan 2 input merupakan gerbang yang akan menghasilkan output logic 1 hanya jika salah satu inputnya berlogic 1. Sedangkan pada gerbang XOR dengan input lebih dari 2, output akan menghasilkan logic 1 jika jumlah logic 1 pada inputnya adalah ganjil. Karena hal inilah, fungsi XOR dengan output lebih dari 2 disebt juga odd function.
Sedangkan untuk table kebenaran gerbang XOR 6 Input adalah sebagai berikut:
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE
Tabel diatas apabila diubah dalam bentuk minterm adalah sebagai berikut :
Karena bentuk diatas merupakan SOP (Sum of product), maka dalam pengaplikasian pada topologi jaringan Mc Culloch-Pitts akan dibutuhkan 32 gerbang AND 6 input dan 1 gerbang OR 32 input. Titik pada masing-masing gerbang AND 6 input di misalkan adalah sebuah variable X sebanyak 32 buah yang digunakan untuk mempermudah perhitungan pada program. Berikut ini topologi yang digunakan pada gerbang XOR 6 input :
0
Wa0 Wa1
X0
1
B X1 C
WX0 WX1
X2
3
WX2
Y
WX3
E X3 F
WX31
.
31
X31
Topologi gerbang OR
TOPOLOGI GERBANG AND Pada masing-masing titik X, bobot w tiap input adalah berbeda. Untuk menentukan nilai masing masing w pada tiap persamaan maka kita harus melihat persamaan Minterm dari gerbang XOR 6 Input . yakni :
, X1=
untuk masing-masing input adalah sebanding dengan persamaan minterm-nya dimana jika nilai input pada titik tersebut adalah tidak bar maka nilai w input tersebut diberi nilai 1 (excitatory) dan bila inputnya berupa bar diberi nilai -1(inhibitory). Misalkan mencari bobot w pada titik x0, berdasarkan persamaan mintermnya yakni : X0= , maka nilai wa0=-1, wb0=-1,wc0=-1,wd0=-1,we0=-1 dan wf0=1. Menggunakan persamaan ini maka nilai masing-masing w input ke-0 hingga ke31 dapat ditentukan. Pada topologi gerbang AND, besar nilai threshold adalah sebanyak nilai input berlogic high dikalikan dengan nilai w yang diberikan. Berdasarkan aturan diatas, nilai threshold pada x0 mengacu pada persamaan minterm X0= adalah 1, karena jumlah input yang tidak bar adalah 1 dan nilai w yang diberikan adalah 1 sehingga nilai threshold-nya adalah 1 x 1 =. Dengan ini maka dapat dicari nilai threshold dari titik X0 hingga X31. TOPOLOGI GERBANG OR Persamaan Minterm Output adalah sebagai berikut : Y= X0+X1+ X2+ X3+ X4+ X5+ X6+ X7+ X8+ X9+ X10+ X11+ X12+ X13+ X14+ X15+ X16+ X17+ X18+ X19+ X20+ X21+ X22+ X23+ X24+ X25+ X26+ X27+ X28+ X29+ X30+ X31. Untuk menentukan nilai bobot W digunakan aturan yang sama dengan gerbang AND yakni jika input berupa symbol tidak bar maka nilainya diberikan nilai 1, dan jika berupa symbol dengan bar maka nilainya diberi nilai -1.dikarenakan persamaan diatas tidak ada yang berupa symbol dengan bar maka seluruh bobot dari koneksi adalah sama yakni 1. Pada topologi gerbang OR, besar nilai threshold adalah sebesar salah satu nilai w pada input. Dikarenakan seluruh bobot nilai input adalah 1 maka nilai threshold untuk untuk output adalah 1.
Dengan ini maka keseluruhan nilai koneksi w dari masing-masing input A,B,C,D,E,F serta X dapat diketahui dan nilai threshold dapat dicari dalam program. Berikut ini table lengkap gerbang XOR 6 input beserta nilai koneksi w dan nilai threshold untuk gambar topologi diatas :
k 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 D 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 E 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 F 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE FALSE TRUE wa -1 -1 -1 wb -1 -1 -1 Wc -1 -1 -1 wd -1 -1 1 we -1 1 -1 wf 1 -1 -1 x 1 1 1 Wx 1 1 1 y
-1 -1
-1 -1
-1 1
1 -1
1 -1
1 -1
3 1
1 1
-1 -1 -1 -1
-1 -1 -1 1
1 1 1 -1
-1 1 1 -1
1 1 1 -1
1 -1 -1 -1
3 3 3 1
1 1 1 1
-1 -1 -1
1 1 1
-1 -1 -1
-1 1 1
1 -1 1
1 1 -1
3 3 3
1 1 1
-1 -1 -1
1 1 1
1 1 1
-1 -1 1
-1 1 -1
1 -1 -1
3 3 3
1 1 1
-1 1
1 -1
1 -1
1 -1
1 -1
1 -1
5 1
1 1
1 1 1
-1 -1 -1
-1 -1 -1
-1 1 1
1 -1 1
1 1 -1
3 3 3
1 1 1
-1
-1
-1
42 k 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
1 A 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 B
0 C 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 D 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 E 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 F 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
TRUE Y FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE
1 wa 1
-1 wb -1
1 Wc 1
-1 wd 1
1 we -1
-1 wf -1
3 x 3
1 Wx 1
1 1 1 1
-1 1 1 1
1 -1 -1 -1
1 -1 -1 1
1 -1 1 -1
1 1 -1 -1
5 3 3 3
1 1 1 1
1 1
1 1
-1 1
1 -1
1 -1
1 -1
5 3
1 1
1 1 1
1 1 1
1 1 1
-1 1 1
1 -1 1
1 1 -1
5 5 5
1 1 1
LISTING PROGRAM
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series; type TForm1 = class(TForm) BitBtn1: TBitBtn; Chart1: TChart; Chart2: TChart; Chart3: TChart; Chart4: TChart; Chart5: TChart; Chart6: TChart; Series1: TLineSeries; BarSeries1: TLineSeries; BarSeries2: TLineSeries; BarSeries3: TLineSeries; BarSeries4: TLineSeries; BarSeries5: TLineSeries; Panel1: TPanel; r: TChart; LineSeries1: TLineSeries; go: TSpeedButton; procedure goClick(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure delay(lama:real); procedure SpeedButton4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; a,b,c,d,e,f,y : array[0..64] of integer; x : array[0..31,0..64] of integer; q,t,wa,wb,wc,wd,we,wf : array[0..64] of integer; implementation
{$R *.dfm} {delay} procedure TFORM1.delay(lama:real); //prosedur delay var ref:longint; begin ref:=gettickcount; repeat application.processmessages; until ((gettickcount-ref)>=lama); end; procedure TForm1.goClick(Sender: TObject); var i, j : integer; wx, tx : integer; begin if go.Caption = 'STOP' then go.Caption:='RUN' else if go.Caption = 'RUN' then go.Caption:='STOP'; repeat series1.Clear; BarSeries1.Clear; BarSeries2.Clear; BarSeries3.Clear; BarSeries4.Clear; BarSeries5.Clear; LineSeries1.Clear; i:=0; //////////////////inisialisasi nilai input/////////////////////// repeat //inisialisasi A j:=0; for j:=0 to 31 do begin a[i]:=0; i:=i+1; end;
j:=0; for j:=0 to 31 do begin a[i]:=1; i:=i+1; end; until i>=63; i:=0; repeat //inisialisasi B j:=0; for j:=0 to 15 do begin b[i]:=0; i:=i+1; end; j:=0; for j:=0 to 15 do begin b[i]:=1; i:=i+1; end; until i>=63; i:=0; repeat //inisialisasi C j:=0; for j:=0 to 7 do begin c[i]:=0;ti i:=i+1; end; j:=0; for j:=0 to 7 do begin c[i]:=1; i:=i+1; end; until i>=63; i:=0; repeat //inisialisasi D j:=0; for j:=0 to 3 do begin d[i]:=0; i:=i+1; end; j:=0; for j:=0 to 3 do
begin d[i]:=1; i:=i+1; end; until i>=63; i:=0; repeat //inisialisasi E j:=0; for j:=0 to 1 do begin e[i]:=0; i:=i+1; end; j:=0; for j:=0 to 1 do begin e[i]:=1; i:=i+1; end; until i>=63; i:=0; repeat //inisialisasi F if i mod 2 =0 then f[i]:=0 else f[i]:=1; i:=i+1; until i>=64; ////////inisialisasi bobot w masing-masing input dan threshold/////////////// j:=0; i:=0; for i:=0 to 63 do begin q[i]:=(a[i]+b[i]+c[i]+d[i]+e[i]+f[i]); if q[i] mod 2 = 1 then begin if a[i]=0 then wa[j]:=-1 else wa[j]:=1; if b[i]=0 then wb[j]:=-1 else wb[j]:=1; if c[i]=0 then wc[j]:=-1 else wc[j]:=1; if d[i]=0 then wd[j]:=-1 else wd[j]:=1; if e[i]=0 then we[j]:=-1 else we[j]:=1; if f[i]=0 then wf[j]:=-1 else wf[j]:=1; t[j]:=q[i]; j:=j+1; end; end;
for i:=0 to 31 do begin for j:=0 to 63 do begin x[i,j]:=a[j]*wa[i]+b[j]*wb[i]+c[j]*wc[i]+d[j]*wd[i]+e[j]*we[i]+f[j]*wf[i]; if x[i,j]>=t[i] then x[i,j]:=1 else x[i,j]:=0; end; end; /////////////////Penghitungan nilai output///////////////////////// tx:=1; wx:=1; for j:=0 to 63 do begin for i:=0 to 31 do begin y[j+1]:=y[j+1]+x[i,j]; end; if y[j+1]>=tx then y[j+1]:=1 else y[j+1]:=0; y[0]:=y[64]; end; ///////////////////prosedur gambar////////////////// for i:=0 to 64 do begin series1.AddXY(i,a[i]); BarSeries1.AddXY(i,b[i]); BarSeries2.AddXY(i,c[i]); BarSeries3.AddXY(i,d[i]); BarSeries4.AddXY(i,e[i]); BarSeries5.AddXY(i,f[i]); LineSeries1.AddXY(i,y[i]); delay(100); end; Until go.Caption = 'STOP'; end; end.
Saat STOP
LAPORAN TUGAS
DASAR SISTEM ELEKTRONIKA CERDAS
PEMBUKTIAN PERHITUNGAN LOGIKA XOR 6 INPUT MENGGUNAKAN METODE Mc CULLOH - PITT
BIDANG STUDI ELEKTRONIKA JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA