• Tidak ada hasil yang ditemukan

Cara Kerja Rangkaian Dan Coding

Dalam dokumen Jam Digital (Halaman 44-73)

Bab III Perancangan Sistem

3.4 Cara Kerja Rangkaian Dan Coding

Detik Satuan dan Menit Satuan (GAL 16V8)

Name detsat; PartNo 00 ; Date 3/26/2008 ; Revision 01 ; Designer Engineer ; Company Atmel ; Assembly None ; Location ; Device G16V8 ; /* *************** INPUT PINS *********************/ PIN 1 = CLK ; /* */ /* *************** OUTPUT PINS *********************/ PIN [13..19] = [Q0..6] ; PIN 12 = Q7; field count = [Q0..6]; $define S0 'b'0001000 $define S1 'b'0111110 $define S2 'b'0010001 $define S3 'b'0010100 $define S4 'b'0100110 $define S5 'b'1000100 $define S6 'b'1000000 $define S7 'b'0011110

$define S8 'b'0000000 $define S9 'b'0000100 sequenced count { present S0 next S1; present S1 next S2; present S2 next S3; present S3 next S4; present S4 next S5; present S5 next S6; present S6 next S7; present S7 next S8; present S8 next S9;

present S9 next S0 out Q7; }

Cara kerja :

1) Penulis menggunakan nama file detsat

2) Device yang penulis pakai untuk Codingan ini merupakan G16V8 (Gal 16V8)

3) Pin 1 = Clk menunjukkan deklarasi pin input clock yang akan digunakan, dengan nama clk

4) Pin [13..19] = [Q0..6] serta Pin 12 = Q7 menunjukkan deklarasi pin output yang akan digunakan, artinya pin 13 memiliki nama Q0, pin 14 memiliki nama Q1, dst, sampai dengan pin 19 memiliki nama Q6, dan pin 12 memiliki nama Q7. Nama-nama tersebut akan digunakan pada coding selanjutnya untuk mewakili setiap pin.

5) Field count = [Q0..6] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama count.

6) $define S0 'b'0001000 merupakan define untuk menunjukan data angka nol pada seven segment.

$define S1 'b'0111110 merupakan define untuk menunjukan data angka satu pada seven segment.

$define S2 'b'0010001 merupakan define untuk menunjukan data angka dua pada seven segment.

$define S3 'b'0010100 merupakan define untuk menunjukan data angka tiga pada seven segment.

$define S4 'b'0100110 merupakan define untuk menunjukan data angka empat pada seven segment.

$define S5 'b'1000100 merupakan define untuk menunjukan data angka lima pada seven segment.

$define S6 'b'1000000 merupakan define untuk menunjukan data angka enam pada seven segment.

$define S7 'b'0011110 merupakan define untuk menunjukan data angka tujuh pada seven segment.

$define S8 'b'0000000 merupakan define untuk menunjukan data angka delapan pada seven segment.

$define S9 'b'0000100 merupakan define untuk menunjukan data angka sembilan pada seven segment.

7) sequenced count { present S0 next S1; present S1 next S2; present S2 next S3; present S3 next S4; present S4 next S5; present S5 next S6; present S6 next S7; present S7 next S8; present S8 next S9;

present S9 next S0 out Q7;

}

Sequenced Count digunakan untuk mendeklarasi alur program sekuensial dari program yang kita buat.

Clock 1  Maka state akan loncat ke S8 (default GAL ) dan menunjukkan angka 8. Dan next clock selanjutnya akan loncat ke S9.

Clock 2  Maka state akan loncat ke S9 dan menunjukkan angka 9. Dan next clock selanjutnya akan loncat ke S0.

Clock 3  Maka state akan loncat ke S0 dan menunjukkan angka 0 serta

mengeluarkan bit 1 pada Q7. Dan next clock selanjutnya akan loncat ke S1.

Clock 4  Maka state akan loncat ke S1 dan menunjukkan angka 1. Dan next clock selanjutnya akan loncat ke S2.

Clock 5  Maka state akan loncat ke S2 dan menunjukkan angka 2. Dan next clock selanjutnya akan loncat ke S3.

Clock 6  Maka state akan loncat ke S3 dan menunjukkan angka 3. Dan next clock selanjutnya akan loncat ke S4.

Clock 7  Maka state akan loncat ke S4 dan menunjukkan angka 4. Dan next clock selanjutnya akan loncat ke S5.

Clock 8  Maka state akan loncat ke S5 dan menunjukkan angka 5. Dan next clock selanjutnya akan loncat ke S6.

Clock 9  Maka state akan loncat ke S6 dan menunjukkan angka 6. Dan next clock selanjutnya akan loncat ke S7.

Clock 10  Maka state akan loncat ke S7 dan menunjukkan angka 7. Dan next clock selanjutnya akan loncat ke S8.

Clock 11  Maka state akan loncat ke S8 dan menunjukkan angka 8. Dan next clock selanjutnya akan loncat ke S9.

Untuk Clock selanjutnya akan berurut kembali ke clock 2, 3 ,4 ,5 dst...

Detik Puluhan dan Menit Puluhan (GAL 16V8)

Name detpul ;

PartNo 00 ;

Date 3/27/2008 ;

Revision 01 ;

Company Atmel ; Assembly None ; Location ; Device G16V8 ; /* *************** INPUT PINS *********************/ PIN 1 = CLK ; /* */ /* *************** OUTPUT PINS *********************/ PIN [13..19] = [Q0..6] ; PIN 12 = Q7; field count = [Q0..6]; $define S0 'b'0001000 $define S1 'b'0111110 $define S2 'b'0010001 $define S3 'b'0010100 $define S4 'b'0100110 $define S5 'b'1000100 $define S6 'b'0000000 sequenced count {

present S6 next S0 out Q7;

present S0 next S1;

present S1 next S2;

present S2 next S3;

present S3 next S4;

present S4 next S5;

present S5 next S0 out Q7; }

Cara kerja :

1) Penulis menggunakan nama file detpul

2) Device yang penulis pakai untuk Codingan ini merupakan G16V8 (Gal 16V8)

3) Pin 1 = Clk menunjukkan deklarasi pin input clock yang akan digunakan, dengan nama clk

4) Pin [13..19] = [Q0..6] serta Pin 12 = Q7 menunjukkan deklarasi pin output yang akan digunakan, artinya pin 13 memiliki nama Q0, pin 14 memiliki nama Q1, dst, sampai dengan pin 19 memiliki nama Q6, dan pin 12 memiliki nama Q7. Nama-nama tersebut akan digunakan pada coding selanjutnya untuk mewakili setiap pin.

5) Field count = [Q0..6] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama count.

6) $define S0 'b'0001000 merupakan define untuk menunjukan data angka nol pada seven segment.

$define S1 'b'0111110 merupakan define untuk menunjukan data angka satu pada seven segment.

$define S2 'b'0010001 merupakan define untuk menunjukan data angka dua pada seven segment.

$define S3 'b'0010100 merupakan define untuk menunjukan data angka tiga pada seven segment.

$define S4 'b'0100110 merupakan define untuk menunjukan data angka empat pada seven segment.

$define S5 'b'1000100 merupakan define untuk menunjukan data angka lima pada seven segment.

$define S6 'b'0000000 merupakan define untuk menunjukan data angka delapan pada seven segment State ini hanya akan berlaku pada awal melakukan pensettingan. 7) sequenced count {

present S6 next S0 out Q7;

present S0 next S1;

present S1 next S2;

present S2 next S3;

present S3 next S4;

present S4 next S5;

present S5 next S0 out Q7;

}

Sequenced Count digunakan untuk mendeklarasi alur program sekuensial dari program yang kita buat.

Clock 1  Maka state akan loncat ke S6 (default GAL) dan menunjukkan angka 8. Dan next clock selanjutnya akan loncat ke S0.

Clock 2  Maka state akan loncat ke S0 dan menunjukkan angka 0 serta

mengeluarkan bit 1 pada Q7. Dan next clock selanjutnya akan loncat ke S1.

Clock 3  Maka state akan loncat ke S1 dan menunjukkan angka 1. Dan next clock selanjutnya akan loncat ke S2.

Clock 4  Maka state akan loncat ke S2 dan menunjukkan angka 2. Dan next clock selanjutnya akan loncat ke S3.

Clock 5  Maka state akan loncat ke S3 dan menunjukkan angka 3. Dan next clock selanjutnya akan loncat ke S4.

Clock 6  Maka state akan loncat ke S4 dan menunjukkan angka 4. Dan next clock selanjutnya akan loncat ke S5.

Clock 7  Maka state akan loncat ke S5 dan menunjukkan angka 5. Dan next clock selanjutnya akan loncat ke S0.

Clock 8  Maka state akan loncat ke S0 dan menunjukkan angka 0 serta

mengeluarkan bit 1 pada Q7. Dan next clock selanjutnya akan loncat ke S1.

Untuk Clock selanjutnya akan berurut kembali ke clock 3 ,4 ,5 dst...

Jam Satuan (GAL 16V8)

Name jamsat ; PartNo 00 ; Date 3/27/2008 ; Revision 01 ; Designer Engineer ; Company Atmel ; Assembly None ; Location ; Device G16v8 ; /* *************** INPUT PINS *********************/ PIN 1 = CLK ; /* */

PIN 2 = RST ; /* *************** OUTPUT PINS *********************/ PIN [13..19] = [Q0..6] ; PIN 12 = Q7; field count = [Q0..6]; $define S0 'b'0001000 $define S1 'b'0111110 $define S2 'b'0010001 $define S3 'b'0010100 $define S4 'b'0100110 $define S5 'b'1000100 $define S6 'b'1000000 $define S7 'b'0011110 $define S8 'b'0000000 $define S9 'b'0000100 field mode = RST; go = mode:1; stop = mode:0; sequenced count { present S0 if go next S1; if stop next S1; present S1 if go next S2; if stop next S2; present S2 if go next S3; if stop next S3; present S3 if go next S4;

if stop next S0 out Q7; present S4 if go next S5; present S5 if go next S6; present S6 if go next S7; present S7 if go next S8; present S8 if go next S9 ; if stop next S9;

present S9 if go next S0 out Q7;

if stop next S0 out Q7;

}

Cara kerja :

1) Penulis menggunakan nama file jamsat

2) Device yang penulis pakai untuk Codingan ini merupakan G16V8 (Gal 16V8)

3) Pin 1 = Clk, Pin 2 =RST menunjukkan deklarasi pin 1 sebagai input clock yang akan digunakan dengan nama clk, dan pin 2 sebagai input dengan nama RST

4) Pin [13..19] = [Q0..6] serta Pin 12 = Q7 menunjukkan deklarasi pin output yang akan digunakan, artinya pin 13 memiliki nama Q0, pin 14 memiliki nama Q1, dst, sampai dengan pin 19 memiliki nama Q6, dan pin 12 memiliki nama Q7. Nama-nama tersebut akan digunakan pada coding selanjutnya untuk mewakili setiap pin.

5) Field count = [Q0..6] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama count.

6) $define S0 'b'0001000 merupakan define untuk menunjukan data angka nol pada seven segment

$define S1 'b'0111110 merupakan define untuk menunjukan data angka satu pada seven segment.

$define S2 'b'0010001 merupakan define untuk menunjukan data angka dua pada seven segment.

$define S3 'b'0010100 merupakan define untuk menunjukan data angka tiga pada seven segment.

$define S4 'b'0100110 merupakan define untuk menunjukan data angka empat pada seven segment.

$define S5 'b'1000100 merupakan define untuk menunjukan data angka lima pada seven segment.

$define S6 'b'1000000 merupakan define untuk menunjukan data angka enam pada seven segment.

$define S7 'b'0011110 merupakan define untuk menunjukan data angka tujuh pada seven segment.

$define S8 'b'0000000 merupakan define untuk menunjukan data angka delapan pada seven segment.

$define S9 'b'0000100 merupakan define untuk menunjukan data angka sembilan pada seven segment.

8) Go = mode : 1 menunjukkan jika di pin RST menunjukkan logik 1 maka kondisi go yang dipenuhi sedangkan untuk stop = mode:0 menunjukkan jika di pin RST menunjukkan logic 0 maka kondisi stop yang dipenuhi

9) sequenced count { present S0 if go next S1; if stop next S1; present S1 if go next S2; if stop next S2; present S2 if go next S3; if stop next S3; present S3 if go next S4;

if stop next S0 out Q7;

present S4 if go next S5;

present S5 if go next S6;

present S6 if go next S7;

present S7 if go next S8;

if stop next S9;

present S9 if go next S0 out Q7;

if stop next S0 out Q7; }

Sequenced Count digunakan untuk mendeklarasi alur program sekuensial dari program yang kita buat.

Clock 1  Maka state akan loncat ke S8 (default GAL ) dan menunjukkan angka 8. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S9.

Clock 2  Maka state akan loncat ke S9 dan menunjukkan angka 9. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S0. Clock 3  Maka state akan loncat ke S0 dan menunjukkan angka 0 serta

mengeluarkan bit 1 pada Q7. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S1.

Clock 4  Maka state akan loncat ke S1 dan menunjukkan angka 1. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S2. Clock 5  Maka state akan loncat ke S2 dan menunjukkan angka 2. Dan next clock

selanjutnya baik untuk kondisi go maupun stop akan loncat ke S3. Clock 6  Maka state akan loncat ke S3 dan menunjukkan angka 3. Dan next clock

selanjutnya untuk kondisi go akan loncat ke S4, untuk kondisi stop akan loncat ke S0.

Clock 7a (Go)  Maka state akan loncat ke S4 dan menunjukkan angka 4. Dan next clock selanjutnya untuk kondisi go akan loncat ke S5.Untuk kondisi stop

pada sistem Jam Alarm digital tidak mungkin terjadi sehingga pada langkah ini tidak perlu didefine.

Clock 7b (stop)  Maka akan ke kondisi clock 3 dan seterusnya.

Clock 8  Maka state akan loncat ke S5 dan menunjukkan angka 5. Dan next clock selanjutnya untuk kondisi go akan loncat ke S6.Untuk kondisi stop pada sistem Jam Alarm digital tidak mungkin terjadi sehingga pada langkah ini tidak perlu didefine.

Clock 9  Maka state akan loncat ke S6 dan menunjukkan angka 6. Dan next clock selanjutnya untuk kondisi go akan loncat ke S7.Untuk kondisi stop pada sistem Jam Alarm digital tidak mungkin terjadi sehingga pada langkah ini tidak perlu didefine.

Clock 10  Maka state akan loncat ke S7 dan menunjukkan angka 7. Dan next clock selanjutnya untuk kondisi go akan loncat ke S8.Untuk kondisi stop pada sistem Jam Alarm digital tidak mungkin terjadi sehingga pada langkah ini tidak perlu didefine.

Clock 11  Maka state akan loncat ke S8 dan menunjukkan angka 8. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S9.

Untuk Clock selanjutnya akan berurut kembali ke clock 2, 3 ,4 ,5 dst...

Jam Puluhan (GAL 16V8)

Name jampul ;

PartNo 00 ;

Date 5/20/2008 ;

Designer Engineer ; Company Atmel ; Assembly None ; Location ; Device G16V8 ; /* *************** INPUT PINS *********************/ PIN 1 = CLK ; /* */ PIN [2..4] = [D0..2] ; /* */ /* *************** OUTPUT PINS *********************/ PIN [12..19] = [Q0..7] ; /* */ field count = [Q0..7]; $define S0 'b'00010001 $define S1 'b'01111101 $define S2 'b'00100010 $define S3 'b'00000000 field mode = [D0..2]; go = mode : [1,2,7]; stop = mode : [0,3,4,5,6]; sequenced count { present S0 if go next S1 ; if stop next S1; present S1 if go next S2 ; if stop next S0; present S2 if go next S0 ; if stop next S0; present S3 if go next S0 ;

if stop next S0; }

Cara kerja :

1) Penulis menggunakan nama file jampul

2) Device yang penulis pakai untuk Codingan ini merupakan G16V8 (Gal 16V8)

3) Pin 1 = Clk, Pin [2..4] =[D0..2] menunjukkan deklarasi pin 1 sebagai input clock yang akan digunakan dengan nama clk, dan pin 2 sebagai input dengan nama D0, pin 3 sebagai input dengan nama D1 dan pin 4 sebagai input dengan nama D2.

4) Pin [12..19] = [Q0..7] menunjukkan deklarasi pin output yang akan digunakan, artinya pin 12 memiliki nama Q0, pin 13 memiliki nama Q1, dst, sampai dengan pin 19 memiliki nama Q7. Nama-nama tersebut akan digunakan pada coding selanjutnya untuk mewakili setiap pin.

5) Field count = [Q0..7] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama count.

6) $define S0 'b'00010001 merupakan define untuk menunjukan data [Q7..1] angka 0 pada seven segment dan flag pada bit terakhir pada Q0 berlogic 1

$define S1 'b'01111101 merupakan define untuk menunjukan data [Q7..1] angka 1 pada seven segment dan flag pada bit terakhir pada Q0 berlogic 1

$define S2 'b'00100010 merupakan define untuk menunjukan data [Q7..1] angka 2 pada seven segment dan flag pada bit terakhir pada Q0 berlogic 0

$define S3 'b'00000000 merupakan define untuk menunjukan data angka delapan (default GAL yang harus didefine jika tidak akan hang) pada seven segment dan flag pada bit terakhir pada Q0 berlogic 0.

7) Field mode = [D0..2] menunjukkan pin [D0..2] digabungkan menjadi satu field bernama mode

8) Go = mode : [1,2,7] menunjukkan jika di pin [D0..2] menunjukkan logik 001(1) atau 010(2) atau 111(7) maka kondisi go yang dipenuhi sedangkan untuk stop = mode: [0,3,4,5,6] menunjukkan jika di pin [D0..2] menunjukkan logic 000 (0) atau 011 (3) atau 100(4) atau 101(5) atau 110(6) maka kondisi stop yang dipenuhi

9) sequenced count { present S0 if go next S1; if stop next S1; present S1 if go next S2; if stop next S0; present S2 if go next S0; if stop next S0; present S3 if go next S0; if stop next S0; }

Sequenced Count digunakan untuk mendeklarasi alur program sekuensial dari program yang kita buat.

Clock 1  Maka state akan loncat ke S3 (default GAL ) dan menunjukkan angka 8. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S0.

Clock 2  Maka state akan loncat ke S0 dan menunjukkan angka 0. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S1.

Clock 3  Maka state akan loncat ke S1 dan menunjukkan angka 1. Dan next clock selanjutnya untuk kondisi go akan loncat ke S2 sedangkan untuk kondisi stop akan loncat ke S0.

Clock 4a (go)  Maka state akan loncat ke S2 dan menunjukkan angka 2. Dan next clock selanjutnya baik untuk kondisi go maupun stop akan loncat ke S0. Clock 4b (stop) Maka akan kembali seperti clock 2

Untuk Clock selanjutnya akan berurut kembali ke clock 2, 3, dst...

Alarm 1 (GAL 16V8) Name Alarm1 ; PartNo 00 ; Date 4/1/2008 ; Revision 01 ; Designer Engineer ; Company Atmel ; Assembly None ; Location ; Device G16V8 ; /* *************** INPUT PINS *********************/ PIN [2..9] = [S0..7] ; /* */

/* *************** OUTPUT PINS *********************/

PIN [19..16] = [D0..3] ; /* */

FIELD SEL = [S0,S1];

FIELD OUTPUT = [D0,D1];

TABLE SEL => OUTPUT { 'b'00 => 'b'00; 'b'11 => 'b'01; 'b'10 => 'b'10; } D2=(!(S2$S4))&(!(S3$S5)); D3=S6&S7; Cara kerja :

1) Penulis menggunakan nama file Alarm1

2) Device yang penulis pakai untuk Codingan ini merupakan G16V8 (Gal 16V8)

3) Pin [2..9] = [S0..7] menunjukkan deklarasi pin 2 sebagai input dengan nama S0, pin 3 sebagai input dengan nama S1 dst sampai dengan pin 9 sebagai input dengan nama S7. 4) Pin [19..16] = [D0..3] menunjukkan deklarasi pin output yang akan digunakan, artinya

pin 19 memiliki nama D0, pin 18 memiliki nama D1, dst, sampai dengan pin 16 memiliki nama D3. Nama-nama tersebut akan digunakan pada coding selanjutnya untuk mewakili setiap pin.

5) Field SEL = [S0,S1] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama SEL.

6) Field OUTPUT = [D0,D1] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis

menggunakan nama OUTPUT. 7) TABLE SEL => OUTPUT {

'b'00 => 'b'00; 'b'11 => 'b'01; 'b'10 => 'b'10; }

Pada coding diatas artinya kita membuat sebuah rangkaian kombinasional sehingga ketika pin-pin SEL ( S1,S0 ) menunjukkan logic 0 dan 0 maka pin-pin OUTPUT ( D1,D0 ) menunjukkan logic 0 dan 0. Ketika pin-pin SEL ( S1,S0 ) menunjukkan logic 1 dan 1 maka pin-pin OUTPUT ( D1,D0 ) menunjukkan logic 0 dan 1. Ketika pin-pin SEL ( S1,S0 ) menunjukkan logic 1 dan 0 maka pin-pin OUTPUT ( D1,D0 ) menunjukkan logic 1 dan 0.

8) D2=(!(S2$S4))&(!(S3$S5)); D3=S6&S7;

Pada baris pertama coding diatas artinya input dari S2 akan diXOR dengan S4 lalu hasilnya dilakukan operasi NOT serta dilakukan operasi AND dengan input S3 yang di

XOR dengan S5 serta dilakukan operasi NOT terlebih dahulu. Dan hasilnya dikeluarkan pada pin D2.

Pada baris kedua coding diatas artinya input dari pin S6 dan S7 dilakukan operasi AND serta hasilnya dikeluarkan pada pin D3.

Alarm 2 (GAL 22V10) Name ALARM2 ; PartNo 00 ; Date 4/1/2008 ; Revision 01 ; Designer Engineer ; Company Atmel ; Assembly None ; Location ; Device G22V10 ; /* *************** INPUT PINS *********************/ PIN [8..2] = [S0..6] ; PIN [9..11] = [S7..9]; /* */ PIN [14..18] = [S10..14] ; /* */ /* *************** OUTPUT PINS *********************/ PIN [23..19] = [D0..4] ; /* */ FIELD SEL=[S0..6]; FIELD OUTPUT=[D0..3];

TABLE SEL => OUTPUT { 'b'0001000 => 'b'0000;

'b'0111110 => 'b'0001; 'b'0010001 => 'b'0010; 'b'0010100 => 'b'0011; 'b'0100110 => 'b'0100; 'b'1000100 => 'b'0101; 'b'1000000 => 'b'0110; 'b'0011110 => 'b'0111; 'b'0000000 => 'b'1000; 'b'0000100 => 'b'1001;}

D4 = (!(S14$S7))&(!(S13 $S8))&(!(S12 $S9 ))&(!(S11 $S10 ));

Cara kerja :

1) Penulis menggunakan nama file Alarm2

2) Device yang penulis pakai untuk Codingan ini merupakan G22V10 (Gal 22V10) 3) Pin [8..2] = [S0..6] menunjukkan deklarasi pin 8 sebagai input dengan nama S0, pin 7

sebagai input dengan nama S1 dst sampai dengan pin 2 sebagai input dengan nama S6. Pin [9..11] = [S7..9] menunjukkan deklarasi pin 9 sebagai input dengan nama S7, pin 10 sebagai input dengan nama S8 dan pin 11 sebagai input dengan nama S9.

Pin [14..18] = [S10..14] menunjukkan deklarasi pin 14 sebagai input dengan nama S10, pin 15 sebagai input dengan nama S11 dst sampai dengan pin 18 sebagai input dengan nama S14.

4) Pin [23..19] = [D0..4] menunjukkan deklarasi pin output yang akan digunakan, artinya pin 23 memiliki nama D0, pin 22 memiliki nama D1, dst, sampai dengan pin 19 memiliki nama D4. Nama-nama tersebut akan digunakan pada coding selanjutnya untuk mewakili setiap pin.

5) Field SEL = [S0..6] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama SEL.

6) Field OUTPUT = [D0..3] merupakan syntax yang digunakan untuk mengabungkan beberapa pin-pin menjadi satu nama field gabungan. Pada kondisi ini penulis menggunakan nama OUTPUT.

7) TABLE SEL => OUTPUT { 'b'0001000 => 'b'0000; 'b'0111110 => 'b'0001; 'b'0010001 => 'b'0010; 'b'0010100 => 'b'0011; 'b'0100110 => 'b'0100; 'b'1000100 => 'b'0101; 'b'1000000 => 'b'0110; 'b'0011110 => 'b'0111; 'b'0000000 => 'b'1000; 'b'0000100 => 'b'1001;}

Pada coding diatas artinya kita membuat sebuah rangkaian kombinasional sehingga  ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0001000 maka pin-pin

OUTPUT (D0..3) menunjukkan logic 0000.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0111110 maka pin-pin OUTPUT (D0..3) menunjukkan logic 0001.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0010001maka pin-pin OUTPUT (D0..3) menunjukkan logic 0010.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0010100 maka pin-pin OUTPUT (D0..3) menunjukkan logic 0011.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0100110 maka pin-pin OUTPUT (D0..3) menunjukkan logic 0100.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 1000100 maka pin-pin OUTPUT (D0..3) menunjukkan logic 0101.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 1000000 maka pin-pin OUTPUT (D0..3) menunjukkan logic 0110.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0011110 maka pin-pin OUTPUT (D0..3) menunjukkan logic 0111.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0000000 maka pin-pin OUTPUT (D0..3) menunjukkan logic 1000.

 ketika pin-pin SEL ( S0..6 ) mendapatkan input logic 0000100 maka pin-pin OUTPUT (D0..3) menunjukkan logic 1001.

8) D4 = (!(S14$S7))&(!(S13 $S8))&(!(S12 $S9 ))&(!(S11 $S10 ));

Pada baris coding diatas artinya input dari S14 akan di XOR dengan S7 lalu hasilnya dilakukan operasi NOT. input dari S13 akan di XOR dengan S8 lalu hasilnya

dilakukan operasi NOT. input dari S12 akan di XOR dengan S9 lalu hasilnya dilakukan operasi NOT. input dari S11 akan di XOR dengan S10 lalu hasilnya dilakukan operasi NOT. Dan keempat hasil operasi diatas akan dilakukan operasi AND. Dan hasilnya akan dikeluarkan pada pin D4.

Rangkaian Power DC

Power DC lewat adaptor 9V masuk ke dalam regulator 5V sehingga supply tegangan untuk rangkaian menjadi 5V. Clock pada rangkaian diambil dari rangkaian clock pada jam analog. Rangkaian tersebut diberi gerbang NOT agar didapatkan clock yang presisi yaitu 1 Hz. Jika tidak menambahkan gerbang NOT pada rangkaian, maka clock yang dihasilkan tidak mampu mengubah logika dari high ke low secara sempurna. Hal ini diketahui setelah penulis

melakukan percobaan.

GAL 16V8 dan Seven Segment

Clock yang berasal dari rangkaian clock 1 Hz masuk ke pin 1 dari GAL 16V8 yang digunakan

untuk detik satuan. Perlu diketahui bahwa pin 11 pada seluruh IC GAL yang dipakai pada rangkaian jam alarm digital ini dihubungkan ke ground agar clock yang masuk ke pin 1 berfungsi sebagai input clock. Pin 10 dihubungkan dengan ground sedangkan pin 20

dihubungkan ke VCC. Pin 13-19 pada seluruh GAL dihubungkan dengan seven segment. Pada pin 12 akan keluar clock untuk memberikan clock bagi GAL selanjutnya sesuai dengan

penjelasan coding di atas.

Sementara Seven segment yang penulis gunakan adalah seven segment jenis common anode dimana semua kaki anodenya dihubungkan dengan VCC dan dengan memberikan logika 0 pada kaki cathode dapat mengaktifkan atau menyalakan segment-segment yang ada. Konfigurasi seluruh pin GAL yang menuju seven segment adalah sebagai berikut: - Pin 13: c - Pin 17: f

- Pin 15: e - Pin 19: b

- Pin 16: g

Diantara pin-pin seven segment dan pin GAL 16V8 dipasangkan resistor 100Ohm, hal ini dimaksudkan agar pada saat sevensegment menyala arus yang berasal dari seven segment yang akan masuk ke GAL 16V8 tidak terlalu besar.

LM555

Pin 1 pada IC LM555 dihubungkan dengan ground dan pin 2 berfungsi untuk input trigger. Trigger ini berasal dari push button yang jika ditekan akan terhubung dengan ground, jika tidak ditekan maka trigger akan menerima logic high terus menerus (Vcc).

IC LM555 dioperasikan sebagai rangkaian monostable dengan RA= 56KΩ dan C1= 10µF.

Dalam dokumen Jam Digital (Halaman 44-73)

Dokumen terkait