BAB IV HASIL DAN PEMBAHASAN
4.2 Perangkat Lunak Alat Penguji Kebenaran
4.2.3 Pengujian Gerbang Logika dan Rangkaian Logika
Perintah pada program untuk sub rutin pengujian gerbang logika dan rangkaian logika adalah: Pengujian: If R = 1 Then Goto Gnand End If If R = 2 Then Goto Gnor End If If R = 3 Then Goto Gnot End If If R = 4 Then Goto Enkoder End If If R = 5 Then Goto Adder End If If R = 6 Then Goto Jkff End If Gnand: I0 = 0 O = 1 For A = 1 To 4 Step 1
Msk = Lookup(i0 , Tpnand) : Klr = Lookup(o , Tpnand) : Gosub Kesini If Pind.2 = Klr.2 Then Incr B Else B = B End If Cls
Locate 1 , 1 : Lcd A : Locate 1 , 7 : Lcd "AB X" : Locate 1 , 16 : Lcd B Locate 2 , 7 : Lcd Porta.1 ; Porta.0 ; " " ; Pind.2
Wait 1 I0 = I0 + 2 O = O + 2 Next Return Gnor: I0 = 0 O = 1 For A = 1 To 4 Step 1
Msk = Lookup(i0 , Tpnor) : Klr = Lookup(o , Tpnor) : Gosub Kesini If Pind.2 = Klr.2 Then Incr B Else B = B End If Cls
Locate 1 , 1 : Lcd A : Locate 1 , 7 : Lcd "AB X" : Locate 1 , 16 : Lcd B Locate 2 , 7 : Lcd Porta.1 ; Porta.0 ; " " ; Pind.2
Wait 1 I0 = I0 + 2 O = O + 2 Next Return Gnot: I0 = 0 O = 1 For A = 1 To 2 Step 1
Msk = Lookup(i0 , Tpnot) : Klr = Lookup(o , Tpnot) : Gosub Kesini If Pind.2 = Klr.2 Then Incr B Else B = B End If Cls
Locate 1 , 1 : Lcd A : Locate 1 , 8 : Lcd "A X" : Locate 1 , 16 : Lcd B Locate 2 , 8 : Lcd Porta.0 ; " " ; Pind.2
Wait 1 I0 = I0 + 2 O = O + 2 Next Return Enkoder: I0 = 0 O = 1 For A = 1 To 15 Step 1
Msk = Lookup(i0 , Tpenkoder) : Klr = Lookup(o , Tpenkoder) : Gosub
Kesini
If Pind.6 = Klr.6 And Pind.5 = Klr.5 And Pind.4 = Klr.4 And Pind.3 =
Klr.3 And Pind.2 = Klr.2 Then
Incr B Else
B = B End If
Cls
Locate 1 , 1 : Lcd "I01234567 A210GO"
Locate 2 , 1 : Lcd Pinc.7 ; Pina.7 ; Pina.6 ; Pina.5 ; Pina.4 ; Pina.3 ;
Pina.2 ; Pina.1 ; Pina.0 ; " " ; Pind.6 ; Pind.5 ; Pind.4 ; Pind.3 ; Pind.2 Wait 1 I0 = I0 + 2 O = O + 2 Next Return Adder: I0 = 0 O = 1 For A = 1 To 10 Step 1
Msk = Lookup(i0 , Tpadder) : Klr = Lookup(o , Tpadder) : Gosub Kesini If Pind.6 = Klr.6 And Pind.5 = Klr.5 And Pind.4 = Klr.4 And Pind.3 =
Klr.3 And Pind.2 = Klr.2 Then
Incr B Else
End If
Cls
Locate 1 , 1 : Lcd "C43214321 C44321"
Locate 2 , 1 : Lcd Pinc.7 ; Pina.7 ; Pina.6 ; Pina.5 ; Pina.4 ; Pina.3 ;
Pina.2 ; Pina.1 ; Pina.0 ; " " ; Pind.6 ; Pind.5 ; Pind.4 ; Pind.3 ; Pind.2 Wait 1 I0 = I0 + 2 O = O + 2 Next Return Jkff: I0 = 0 O = 1 For A = 1 To 7 Step 1
Msk = Lookup(i0 , Tpjkff) : Klr = Lookup(o , Tpjkff) : Gosub Kesini Portc.7 = 1
Cls
Locate 1 , 1 : Lcd " Ck PC JK QQn"
Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1
; Pina.0 ; " " ; Pind.3 ; Pind.2 Wait 1
Portc.7 = 0 Cls
Locate 1 , 1 : Lcd " Ck PC JK QQn"
Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1
; Pina.0 ; " " ; Pind.3 ; Pind.2 Wait 1
If Pind.3 = Klr.3 And Pind.2 = Klr.2 Then
Incr B Else B = B End If I0 = I0 + 2 O = O + 2 Next Portc.7 = 1
Msk = &B00001101 : Klr = &B00001000 : Gosub Kesini Cls
Locate 1 , 1 : Lcd " Ck PC JK QQn"
Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1 ; Pina.0 ; " " ; Pind.3 ; Pind.2
Wait 1
If Pind.3 = Klr.3 And Pind.2 = Klr.2 Then Incr B Else B = B End If Incr A Portc.7 = 0
Msk = &B00001111 : Klr = &B00001000 : Gosub Kesini Cls
Locate 1 , 1 : Lcd " Ck PC JK QQn"
Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1 ; Pina.0 ; " " ; Pind.3 ; Pind.2
Wait 1
If Pind.3 = Klr.3 And Pind.2 = Klr.2 Then Incr B Else B = B End If Return Tpnand: ' AB|X
Data &B00000000 , &B00000100 '1; 00|1
Data &B00000010 , &B00000100 '3; 10|1
Data &B00000011 , &B00000000 '4; 11|0
Tpnor:
' AB|X
Data &B00000000 , &B00000100 '1; 00|1
Data &B00000001 , &B00000000 '2; 01|0
Data &B00000010 , &B00000000 '3; 10|0
Data &B00000011 , &B00000000 '4; 11|0
Tpnot:
' A|X
Data &B00000000 , &B00000100 '1; 0|1
Data &B00000001 , &B00000000 '2; 1|0
Tpenkoder:
' EI|01234567|A210|GS|EO
Data &B100000000 , &B01111100 '1 1|00000000| 111|1 |1
Data &B111111111 , &B01111100 '2 1|11111111| 111|1 |1
Data &B011111111 , &B01111000 '3 0|11111111| 111|1 |0
Data &B010101010 , &B00000100 '4 0|10101010| 000|0 |1
Data &B000111100 , &B00000100 '5 0|00111100| 000|0 |1
Data &B001010101 , &B00010100 '6 0|01010101| 001|0 |1
Data &B010011001 , &B00010100 '7 0|10011001| 001|0 |1
Data &B000110011 , &B00100100 '8 0|00110011| 010|0 |1
Data &B011000011 , &B00100100 '9 0|11000011| 010|0 |1
Data &B011100111 , &B00110100 '10 0|11100111| 011|0 |1
Data &B000010111 , &B00110100 '11 0|00010111| 011|0 |1
Data &B010101111 , &B01000100 '12 0|10101111| 100|0 |1
Data &B001011111 , &B01010100 '13 0|01011111| 101|0 |1
Data &B010111111 , &B01100100 '14 0|10111111| 110|0 |1
Data &B001111111 , &B01110100 '15 0|01111111| 111|0 |1
Tpadder:
' C0|A3210|B3210|C4|S3210
Data &B000001101 , &B00110100 '1 0| 0000| 1101|0 | 1101
Data &B000101100 , &B00111000 '2 0| 0010| 1100|0 | 1110
Data &B001001110 , &B01001000 '3 0| 0100| 1110|1 | 0010
Data &B001101011 , &B01000100 '4 0| 0110| 1011|1 | 0001
Data &B010001111 , &B01011100 '5 0| 1000| 1111|1 | 0111
Data &B100011010 , &B00110000 '6 1| 0001| 1010|0 | 1100
Data &B100111110 , &B01001000 '7 1| 0011| 1110|1 | 0010
Data &B101011011 , &B01000100 '8 1| 0101| 1011|1 | 0001
Data &B101111101 , &B01010100 '9 1| 0111| 1101|1 | 0101
Data &B110011100 , &B01011000 '10 1| 1001| 1100|1 | 0110
Tpjkff:
' Pr Clr|JK|Q Qn
Data &B00000111 , &B00001000 '1: 0 1 |11|1 0
Data &B00001011 , &B00000100 '2: 1 0 |11|0 1
Data &B00001100 , &B00000100 '3: 1 1 |00|0 1
Data &B00001101 , &B00000100 '4: 1 1 |01|0 1
Data &B00001110 , &B00001000 '5: 1 1 |10|1 0
Data &B00001111 , &B00000100 '6: 1 1 |11|0 1
Data &B00001111 , &B00001000 '7: 1 1 |11|1 0
Kesini: Porta.0 = Msk.0 Porta.1 = Msk.1 Porta.2 = Msk.2 Porta.3 = Msk.3 Porta.4 = Msk.4 Porta.5 = Msk.5 Porta.6 = Msk.6 Porta.7 = Msk.7 Return
Program untuk sub rutin pengujian gerbang logika dan rangkaian logika dapat dijelaskan sebagai berikut:
Pengujian dilakukan dengan cara membandingkan secara look-up table, sehingga setiap gerbang logika dan rangkaian logika memiliki tabel pengujian yang berbeda. Program diawali dengan mengecek nilai R untuk memulai pengujian sesuai gerbang logika atau rangkaian logika yang telah dipilih. Jika nilai R saat ini adalah 1, perintah pada program adalah “If R = 1 Then Goto Gnand End If” (user memilih untuk menguji gerbang NAND) maka eksekusi akan berpindah ke program di label “Gnand:”.
Pengujian tiap gerbang logika dan rangkaian logika diawali dengan memberikan nilai awal pada variabel I0 dan O. Variabel I0 berfungsi untuk menyimpan nilai yang memuat indeks data masukan dari tabel yang dituju. Variabel O berfungsi untuk menyimpan nilai yang memuat indeks data keluaran dari tabel yang dituju. Data masukan yang ditunjuk I0 kemudian disimpan dalam variabel Msk, sedangkan data keluaran yang ditunjuk O disimpan dalam variabel Klr. Pengujian dilakukan berulang sebanyak jumlah pengujian pada tabel pengujian. Perulangan pengujian pada program menggunakan perintah FOR-NEXT. Jumlah pengujian yang dilakukan disimpan dalam variabel A, sedangkan hasil perbandingan look-up table akan disimpan dalam variabel B.
Proses pengujian dimulai dengan memberi masukan ke papan untai digital, dan menyimpan keluaran dari tabel pengujian, perintah yang digunakan adalah “Msk =
Lookup(i0 , Tpnand) : Klr = Lookup(o , Tpnand) : Gosub Kesini”. Setelah memberikan masukan, proses pengujian dilanjutkan dengan membaca nilai keluaran dari papan untai digital kemudian membandingkan keluaran tersebut dengan keluaran tabel pengujian yang disimpan di variabel Klr. Setiap hasil perbandingan yang sama akan dihitung dan disimpan
dalam variabel B. Proses ini dijalankan menggunakan perintah “If Pind.2 = Klr.2 Then
Incr B Else B = B End If”. Sebelum pengujian selanjutnya diproses, nilai variabel I0 dan O diubah ke nilai yang berisi indeks data pengujian selanjutnya, perintah yang dijalankan adalah “I0 = I0 + 2 : O = O + 2”. I0 diberi nilai awal 0, dan O diberi nilai awal 1, karena nilai yang memuat indeks data dimulai dari 0. Gambar 4.7 memperlihatkan tabel pengujian gerbang NAND untuk look-up table pada program.Proses pengujian yang dijalankan pada setiap gerbang logika dan rangkaian logika sama, kecuali pada pengujian JK flip-flop.
Cara kerja JK flip-flop berbeda dengan rangkaian logika yang lain, sehingga proses pengujian yang dilakukan juga berbeda. Masukan clock tidak diberikan bersamaan dengan masukan lain, sehingga digunakan port mikrokontroler yang terpisah yaitu port C.7.
Masukan preset, clear, dan JK diberikan terlebih dahulu, kemudian clock diberi masukan.
Clock diberi masukan sebanyak dua kali, yaitu clock=1 kemudian clock=0. Perbandingan keluaran dilakukan setelah masukan clock.
Gambar 4.7. Tabel Pengujian Gerbang NAND untuk Look-Up Table Pada Program
Masukan dan keluaran papan untai digital selama proses pengujian ditampilkan pada layar LCD. Gambar 4.8 memperlihatkan tampilan LCD pada setiap proses pengujian gerbang logika dan rangkaian logika. Saat proses pengujian gerbang NAND, NOR, dan NOT, yang ditampilkan pada layar LCD adalah variabel A dan B, keterangan masukan dan keluaran, juga keadaan masukan dan keluaran saat itu. saat proses pengujian enkoder 8 ke 3, penjumlah biner 4-bit, dan JK flip-flop hanya keterangan masukan dan keluaran, serta keadaan masukan dan keluaran saat itu yang ditampilkan. Setelah proses eksekusi sub rutin pengujian gerbang logika dan rangkaian logika selesai, proses eksekusi akan kembali ke program utama dan melanjutkan ke sub rutin hasil akhir pengujian.
(a) (b) (c)
(d) (e) (f)
Gambar 4.8. Tampilan LCD pada Proses Pengujian (a) Gerbang NAND, (b) Gerbang NOR, (c) Gerbang NOT, (d) Enkoder 8 ke 3, (e) Penjumlah Biner 4-bit, (f) JK flip-flop
Tpnand:
' AB|X
Data &B00000000 , &B00000100 '1; 00|1
Data &B00000001 , &B00000100 '2; 01|1
Data &B00000010 , &B00000100 '3; 10|1
Data &B00000011 , &B00000000 '4; 11|0
MASUKAN KELUARAN 0 2 4 6 1 3 5 7