a. XOR, Parity generator/checker
Exclusive-OR atau XOR yang dinotasikan dengan symbol , adalah operator logika yang akan memberikan nilai 1 apabila x bernilai 1 atau apabila y bernilai 1, namun bukan saat keduanya, x dan y bernilai 1. XOR memiliki fungsi Boolean.
𝑥 ⨁𝑦 = 𝑥𝑦′+ 𝑥′𝑦
Komplemen dari XOR adalah XNOR, adalah operator logika yang akan memberikan nilai 1 apabila x dan y bernilai 0 atau bernilai 1. XNOR memiliki fungsi Boolean.
𝑥 ⨁𝑦 ′= 𝑥𝑦 + 𝑥′𝑦′
Gambar 4.10. Rangkaian POS dengan gerbang NOR
Simbol gerbang serta table kebenaran XOR dan XNOR ditunjukkan pada gambar 4.11
Gambar. 4.11. Tabel Kebenaran XOR dan XNOR
Dari table kebenaran XOR dan XNOR dapat dilihat bahwa operator XOR dan XNOR dapat digunakan untuk mengecek parity. XOR untuk mengecek parity ganjil, sedangkan XNOR untuk mengecek parity genap. Fungsi XOR mengecek parity ganjil apabila nilai binary memiliki jumlah angka 1 ganjil. Dan sebaliknya pada fungsi XNOR akan mengecek parity genap apabila nilai binary memiliki jumlah angka 1 genap. Sehingga fungsi XOR sangat membantu dalam error-detection dan pengkoreksian kode, karena kedua system tersebut menggunakan fungsi parity.
Parity bit adalah extra bit yang ditambahkan pada binary message untuk membuat jumlah angka 1 pada binary message ganjil atau genap. Pesan dan parity bit tersebut dikirim, kemudian di cek oleh receiver untuk mengetahui apakah terjadi error pada pesan atau tidak. Error akan terdeteksi apabila nilai parity tidak sesuai dengan yang diharapkan. Rangkaian yang membangkitkan nilai parity disebut parity generator, sedangkan rangkaian yang mengecek nilai parity disebut parity generator.
Contoh 4.1 :
Sebuah system even-parity-generator akan mengirim pesan 4-bit bersama dengan bit even parity-nya. Tabel kebenaran untuk parity generator ditunjukkan pada table 4.2
Tabel 4.2 even-parity-generator
Inputnya adalah 4-bit pesan (x,y,z) dan outputnya adalah bit parity. Pada pesan 4-bit yang bernilai ganjil, output akan bernilai 1, agar jumlah angka 1 bernilai genap (even-parity-generator). Maka fungsi outputnya adalah
𝑃 = 𝑥⨁𝑦⨁𝑧
Gambar 4.12. Implementasi rangkaian
Selanjutnya pesan 4-bit dan bit parity-nya dikirim, dan dicek oleh rangkaian parity checker, apakah ada error pada pesan yang telah dikirim. Error akan terjadi apabila 4-bit yang diterima, jumlah angka 1-nya tidak berjumlah genap. Rangkaian parity checker akan memberi nilai 1 pada output (C) apabila terjadi error atau angka 1 pada bit pesan bernilai ganjil. Table kebenaran untuk fungsi even-parity-checker ditunjukkan pada table 4.4
Tabel 4.4. Tabel kebenaran even-parity-checker
Maka fungsi outputnya adalah
𝐶 = 𝑥⨁𝑦⨁𝑧⨁𝑃
Implementasi rangkaian diunjukkan pada gambar 4.14
b. Hamming code (parity Code) generator / checker
Hamming Code adalah salah satu kode tunggal pengoreksi kesalahan (single error-correcting code) yang digunakan dalam RAM ditemukan oleh RW Hamming. Dalam kode Hamming, bit parity ditambahkan ke dalam bit-bit informasi, jika suatu saat ada perubahan bit-bit data ketika proses transmisi, maka bit-bit informasi asli masih bisa diselamatkan. Bit k parity ditambahkan ke word data n-bit, membentuk kata baru dari n + k bits. Posisi bit nomor berurutan dari 1 sampai n + k. Bit parity tambahan diberikan pada bit-bit informasi sebelum ditransmisikan, sedangkan pada sisi penerima dilakukan pengecekan dengan algoritma yang sama dengan pembangkitan bit parity tambahan. Cara pengisian bit tambahan pada bit-bit informasi x, adalah sebagai berikut :
Untuk bit data 4-bit, bit-bit data terletak pada posisi 4,5,6, dan 7. Bit pengisi terletak pada posisi 1,2,4 (2K) --> K = jumlah bitdata -1. Tabel Hamming untuk informasi 4 bit terlihat pada tabel 5.1.
Tabel 5.1. Tabel Hamming 4 bit
Data/bit 𝑎1 𝑎2 𝑎4 𝑎4 𝑎5 𝑎6 𝑎7 0000 0 0 0 0 0 0 0 0001 1 1 0 1 0 0 1 0010 0 1 0 1 0 1 0 0011 1 0 0 0 0 1 1 0100 1 0 0 1 1 0 0 0101 0 1 0 0 1 0 1 0110 1 1 0 0 1 1 0 𝑎1 𝑎2 𝑎4 𝑎4 𝑎5 𝑎6 𝑎7 x x 1 x 0 1 1 Bit data / Bit Pengisi informasi
0111 0 0 0 1 1 1 1 1000 1 1 1 0 0 0 0 1001 0 0 1 1 0 0 1 1010 1 0 1 1 0 1 0 1011 0 1 1 0 0 1 1 1100 0 1 1 1 1 0 0 1101 1 0 1 0 1 0 1 1110 0 0 1 0 1 1 0 1111 1 1 1 1 1 1 1
Nilai bit pengisi / cek : (untuk informasi 4 bit) diperoleh melalui rumus berikut ini :
𝑎1 = 𝑎4⨁ 𝑎5 ⨁𝑎7 𝑎2 = 𝑎4⨁ 𝑎6 ⨁𝑎7 𝑎4 = 𝑎5⨁ 𝑎6 ⨁𝑎7 Untuk informasi n-bit, nilai bit pengisi / cek adalah :
𝑎1 = 4,5,7,9,11,14,15,... 𝑎2 = 4,6,7,10,11,14,15,... 𝑎4 = 5,6,7,12,14,14,15,20,21,22,24, … 𝑎8 = 9 − 15, 24 − 41, 40 − 47, ... 𝑎16 = 17 − 41, 48 − 64, 80 − 95, … 𝑎42 = 44 − 64, 96 − 127, 160 − 191, … Dst..
Perhatikan, misalnya, data word 8-bit 11000100. Kami menyertakan 4 paritas bit dengan kata 8-bit dan 12 bit mengatur sebagai berikut:
Bit Position
1 2 4 4 5 6 7 8 9 10 11 12
𝑃1 𝑃2 1 𝑃4 1 0 0 𝑃8 0 1 0 0
4 bit parity 𝑃1, 𝑃2, 𝑃4, 𝑑𝑎𝑛 𝑃8 berada pada posisi 1,2,4, dan 8. 8 bit word data berada pada posisinya. Tiap bit parity dihitung berdasarkan rumus berikut ini :
𝑃1 = 𝑋𝑂𝑅 𝑏𝑖𝑡 4,5,7,9,11 =1 ⨁ 1 ⨁ 0 ⨁ 0 ⨁ 0 = 0 𝑃2 = 𝑋𝑂𝑅 𝑏𝑖𝑡 4,6,7,10,11 =1 ⨁ 0 ⨁ 0 ⨁ 1 ⨁ 0 = 0
𝑃8 = 𝑋𝑂𝑅 𝑏𝑖𝑡 9,10,11,12 =1 ⨁ 0 ⨁ 0 ⨁ 0 = 1
Operasi EXOR menampilkan fungsi ganjil, outputnya = 1 untuk jumlah variabel 1 yang jumlahnya ganjil. Dan outputnya = 0, untuk jumlah variabel bernilai 1 jumlahnya genap. Sehingga tiap bit parity diset pada jumlah keseluruhan variabel bernilai 1 pada posisi yang dicek termasuk didalamnya bit parity, akan selalu genap. 8 bit data word dimasukkan dalam memory secara bersama-sama dengan 4 bit parity sebagaimana 12 bit word composit. Penggantian 4 P bit pada posisi yang sesuai, maka diperoleh 12 bit composite word yang dimasukkan dalam memory : Bit
Position
0 0 1 1 1 0 0 1 0 1 0 0 1 2 4 4 5 6 7 8 9 10 11 12 Ketika 12 bit data dibaca dari memory, kemudian dicek kembali nilai errornya. Parity dicek keseluruhan dengan kombinasi bit yang sama termasuk bit parity. 4 bit yang dicek dievaluasi dengan cara berikut ini :
𝐶1 = 𝑋𝑂𝑅 𝑏𝑖𝑡 1,4,5,7,9,11 𝐶2 = 𝑋𝑂𝑅 𝑏𝑖𝑡 2,4,6,7,10,11
𝐶4 = 𝑋𝑂𝑅 𝑏𝑖𝑡 4,5,6,7,12 𝐶8 = 𝑋𝑂𝑅 𝑏𝑖𝑡 8,9,10,11,12
Hasil C = 𝐶8𝐶4𝐶2𝐶1 = 0000, mengindikasikan bahwa tidak ada error yang terjadi. Tetapi, jika C ≠ 0, sehingga 4 bit binary dibentuk dengan bit cek yang mengindikasikan bit error. Sebagai contoh, mengingat 4 kasus berikut :
Bit Position 1 2 4 4 5 6 7 8 9 10 11 12 0 0 1 1 1 0 0 1 0 1 0 0 No Error 1 0 1 1 1 0 0 1 0 1 0 0 Error in bit 1 0 0 1 1 0 0 0 1 0 1 0 0 Error in bit 5 Pada kasus pertama, tidak ada error pada 12 bit word. Pada kasus yang kedua, terjadi error pada posisi bit 1 karena berubah dari 0 ke 1. Kasus ketiga menunjukkan
adanya error pada posisi bit 5, dengan perubahan dari 1 ke 0. Pengevaluasian XOR dari bit yang berkorespondensi, menentukan 4 bit cek dengan cara :
𝐶8 𝐶4 𝐶2 𝐶1
For no error 0 0 0 0
With error in bit 1 0 0 0 1
With error in bit 5 0 1 0 1
C = 0000, dengan nilai error pada bit 1, diperoleh nilai C = 0001 dan nilai error pada bit 5, nilai C = 0101. Ketika binary number C tidak sama dengan 0000, memberikan posisi pada bit error. Error dapat diperbaiki dengan melengkapi bit yang berkorespondensi. Error dapat terjadi pada word data atau pada salah satu bit parity.
Hamming code terdiri dari k bit cek dan n bit data, untuk keseluruhan bit n + k. Nilai C terdiri dari k bit dan memiliki range 2𝑘, nilainya diantara 0 dan 2𝑘 − 1. Satu dari nilai ini, biasanya adalah 0, yang digunakan untuk mengindikasikan bahwa tidak ada error yang terdeteksi. Nilai 2𝑘 − 1 untuk mengindikasikan bit 𝑛 + 𝑘 telah error. Tiap nilai 2𝑘− 1 dapat digunakan secara unik untuk mendeskripsikan bit yang error. Oleh karena itu, rentang k harus sama dengan atau lebih besar dari 𝑛 + 𝑘, hubungan antar keduanya adalah :
2𝑘 − 1 ≥ 𝑛 + 𝑘
pemecahan untun pada bagian k, diperoleh :
2𝑘 − 1 − 𝑘 ≥ 𝑛
Hubungan ini memberikan formula untuk membangun sejumlah bit data yang dapat digunakan pada konjungsi dengan k bit cek. Sebagai contoh, ketika k = 4, jumlah bit data yang dapat digunakan 𝑛 ≤ 24− 1 − 4 = 4. Untuk k = 4, diperoleh
24− 1 − 4 = 11, diberikan 𝑛 ≤ 11. Word data paling tidak 11 bit, tetapi harus memiliki paling tidak 5 bit, sebaliknya hanya 4 bit cek yang dibutuhkan. Hal ini membenarkan penggunaan 4 bit cek untuk 8 bit data pada contoh sebelumnya. Rentang nilai n untuk variasi nilai k, terlihat pada tabel 5.2. Pengelompokkan bit untuk parity generation dan checking dapat ditentukan dari sederetan binary number 1,4,5,7 dan sebagainya. Bit Signifikan kedua adalah 1 pada binary number 2,4,6,7 dan sebagainya. Perbandingan jumlah ini dengan posisi bit yang digunakan
untuk men-generate dan checking bit parity pada hamming code, perlu dicatat hubungan
Tabel 5.2. Rentang Bit Data untuk k bit cek
Jumlah bit cek , k Rentang bit data, n
4 2 - 4
4 5 - 11
5 12 - 26
6 27 - 57
7 58 - 120
antara pengelompokkan bit pada code dan posisi bit - 1 pada urutan binary count. Tiap grup dari permulaan bit dimulai dengan angka 2:1,2,4,8,16,... Angka ini juga merupakan nomer posisi dari bit parity. Sehingga dapat dituliskan untuk informasi n-bit, cara pengecekkan adalah :
1. Tanda semua posisi bit yang merupakan pangkat dua sebagai bit parity (posisi 1, 2, 4, 8, 16, 42, 64, ...).
2. Posisiyang lain digunakan sebagai bit data yang akan dikodekan (posisi 4, 5, 6, 7, 9, 10, 11, 12, 14, ...).
3. Masing-masingbit pengecek menghitung bit setiap posisi dengan cara menge-cek dan melewati, sebagai berikut:
a. Posisi1 : cek 1 bit, lewat 1 bit, cek 1 bit, lewat 1 bit dsb (1,4,5,7,9,11,14,15…).
b. Posisi2 : cek 2 bit, lewat 2 bit, cek 2 bit, lewat 2 bit dsb (2,4,6,7,10,11,14,15,…).
c. Posisi4 : cek 4 bit, lewat 4 bit, cek 4 bit, lewat 4 bit dsb (4,5,6,7,12,14,14,15,20,21,22,24, …).
d. Posisi8 : cek 8 bit, lewat 8 bit, cek 8 bit, lewat 8 bit dsb (8-15,24-41,40-47,...)
e. Posisi42 : cek42 bit, lewat 42 bit, cek42 bit, lewat 42 bit, dsb (42-64,96-127,160-191,...).
Bernilai bit parity = 1, jika total bit "1" diposisi yang dicek adalah ganjil (odd) dan bernilai 0 jika total bit "1" adalah genap (Even).
Single-Error Correction, Double-Error Detection
Hamming Code dapat mendeteksi dan mengoreksi hanya untuk error tunggal. Dengan menambahkan parity lainnya pada code word, hamming code dapat digunakan untuk mengoreksi error tunggal dan mendeteksi error ganda. Jika tambahan bit parity, kemudian 12 bit code word sebelumnya menjadi 001110010100𝑃14, dimana 𝑃14 dievaluasi dari EXOR dari 12 bit lainnya. Hal ini memproduksi 14 bit word 0011100101001 (parity genap). Saat 14 bit word dibaca dari memory, bit cek di evaluasi, sebagaimana parity pada keseluruhan 14 bit. Jika P = 0, parity benar (parity genap), tetapi jika P = 1, kemudian keseluruhan 14 bit parity adalah incorrect (odd parity). Sehingga dapat disimpulkan :
a. Jika C = 0 dan P = 0, maka tidak ada error yang terjadi
b. Jika 𝐶 ≠ 0 dan P = 1, error tunggal yang terjadi dan dapat diperbaiki c. Jika 𝐶 ≠ 0 dan P = 0, error ganda yang terdeteksi, akan tetapi tidak dapat
diperbaiki.
d. Jika C = 0 dan P = 1, Error terjadi pada bit 𝑃14
Skema ini dapat mendeteksi lebih dari 2 error, akan tetapi tidak menggaransi untuk mendeteksi seluruh error.
Contoh Soal :
1. Bagaimana bentuk data yang ditransmisikan dengan kode Hamming, jika diketahui bit data = 1010 ?
Jawab :
𝑎1 = 𝑎4⨁𝑎5 ⨁𝑎7 → 𝑎1 = 1 + 0 + 0 = 1 𝑎2 = 𝑎4⨁𝑎6 ⨁𝑎7 → 𝑎2 = 1 + 1 + 0 = 0
𝑎4 = 𝑎5⨁𝑎6 ⨁𝑎7 → 𝑎4 = 0 + 1 + 0 = 1
sehingga bentuk data yang ditransmisikan menjadi : 1011010. 2. Sebuah urutan data diterima : 0010011
dengan nilai : e1 = 0
e2 = 1 e4 = 0
Tentukan bit diposisi mana yang salah?Berapa nilai data asli (sebelum ditambah bit parity)?
Jawab :
𝑒1 = 𝑎1⨁𝑎4⨁𝑎5 ⨁𝑎7 = 0 + 1 + 0 + 1 = 0 → 𝑏𝑒𝑛𝑎𝑟
𝑒2 = 𝑎2⨁𝑎4⨁𝑎6 ⨁𝑎7 = 0 + 1 + 1 + 1 = 1 → 𝑠𝑎𝑙𝑎ℎ 𝑒4 = 𝑎4⨁𝑎5⨁𝑎6 ⨁𝑎7 = 0 + 0 + 1 + 1 = 1 → 𝑏𝑒𝑛𝑎𝑟
𝑎1 = 𝑎4⨁𝑎5 ⨁𝑎7 → 𝑎1 = 1 + 0 + 1 = 0 → 𝑠𝑎𝑚𝑎 𝑑𝑒𝑛𝑔𝑎𝑛 𝑦𝑎𝑛𝑔 𝑑𝑖𝑘𝑖𝑟𝑖𝑚 𝑎2 = 𝑎4⨁𝑎6 ⨁𝑎7 → 𝑎2 = 1 + 1 + 1 = 1 → 𝑡𝑖𝑑𝑎𝑘 𝑠𝑎𝑚𝑎 𝑑𝑒𝑛𝑔𝑎𝑛 𝑦𝑎𝑛𝑔 𝑑𝑖𝑘𝑖𝑟𝑖𝑚
𝑎4 = 𝑎5⨁𝑎6 ⨁𝑎7 → 𝑎4 = 0 + 1 + 1 = 0 → 𝑠𝑎𝑚𝑎 𝑑𝑒𝑛𝑔𝑎𝑛 𝑦𝑎𝑛𝑔 𝑑𝑖𝑘𝑖𝑟𝑖𝑚
Berarti bit diposisi 2 yang salah, seharusnya yang diterima adalah : 0110011 nilai data asli = 𝑎4 𝑎5 𝑎6 𝑎7 = 1011.
Adder adalah rangkaian untuk melakukan operasi aritmatika penjumlahan. Pada bab ini akan dijelaskan 4 macam adder :
1. Half adder
Half adder adalah rangkaian adder yang hanya memiliki input untuk bilangan yang ingin dijumlahkan, tanpa ada carry sebagai input. Tabel kebenaran dan rangkaian half adder ditunjukkan pada gambar 4.14
Gambar 4.14 Tabel kebenaran dan Rangkaian
Selain itu, dari table kebenaran dapat dilihat bahwa Sum memiliki logika kebenaran yang sama dengan XOR, maka rangkaian pada gambar 4.15 dapat diganti dengan gambar 4.16.
Gambar 4.15. Rangkaian Half Adder dengan XOR 2. Full Adder
Full adder adalah rangkaian adder yang memiliki input untuk bilangan yang ingin dijumlahkan, carry input. Tabel kebenaran dan rangkaian full adder ditunjukkan pada gambar 4.16
Net 1 Net 2 A B CARR Y SUM
Gambar 4.16. Tabel Kebenaran dan Rangkaian Cin B A \Cin \ B \ A A B Cin SUM Cout
Disederhanakan menjadi
Sehingga rangkaian full adder menjadi seperti yang ditunjukkan pada gambar 4.17
Gambar 4.17. Rangkaian Full Adder
Selain itu, 1-bit full adder juga dapat disusun dari 2 half adder seperti yang ditunjukkan pada gambar 4.18.
4. Ripple Carry Adder dan Look Ahead Adder
Dari gambar 4.18 dimana 1-bit full adder dapat disusun dari 2 half adder, maka full adder dapat disusun secara seri untuk membuat n-bit full adder, dimana bit carry-out pada full adder sebelumnya menjadi input bit carry-in selanjutnya. Oleh karena itu, konfigurasi n-bit full adder yang disusun dari beberapa 1-bit full adder disebut Ripple-carry adder. Pada gambar 4.19 menujukkan blok diagram dari 4-bit Ripple-carry adder, dimana berfungsi untuk menjumlahkan 4 bit yaitu X4 X2 X1 X0
dengan Y4 Y2 Y1 Y0. Gambar 4.22 adalah rangkaian 16-bit riplle adder. Gambar 4.20
dan 4.21 menunjukkan look ahead carry. Pada look ahead adder carry digenerate secara pararel
Gambar 4.19 Ripple Carry Adder
Gambar 4.22 16 bit Ripple Adder d. Subtractor (HS, FS)
Substractor adalah rangkaian untuk melakukan operasi aritmatika pengurangan. Substractor juga bisa disusun dari adder dengan prinsipx bilangan pengurangan diubah menjadi bernilai negative, seperti fungsi X – Y = X + (-Y). Konsep dari substractor terlihat pada gambar 4.24. Pada bab ini akan dijelaskan 4 macam substractor :
1. Half substractor 2. Full substractor 3. Ripple substractor Half Substractor
Half substractor adalah rangkaian substractor yang hanya memiliki input untuk bilangan yang ingin dikurangkan, tanpa ada borrow sebagai input. Tabel
kebenaran dan rangkaian half substractor ditunjukkan pada gambar 4.24. Jika x ≥ y, maka ada 4 kemungkinan yakni 0 - 0 = 0, 1 - 0 = 1 dan 1 - 1 = 0. Jika x < y, maka diperoleh nilai 0 - 1, dan harus memnjam borrow (Bo --> borrow out ) 1 pada
kondisi setelahnya. Half substractor membutuhkan 2 output, output pertama adalah hasil dari pengurangan kedua input direpresentasikan sebagai nilai Di
(Difference). Output kedua adalah direpresentasikan sebagai nilai Bi (Borrow).
Gambar 2.24. Konsep substractor pada sistem digital
Nilai output Bi benilai 0 selama x ≥ y, dan bernilai 1 untuk x = 0 dan y = 1. dari tabel
kebenaran diperoleh persamaan sebagai berikut :
𝐷 = 𝑥′𝑦 + 𝑥𝑦′
𝐵 = 𝑥′𝑦
Full substractor
Full substractor adalah rangkaian substractor yang memiliki input untuk bilangan yang ingin dikurangkan, dan borrow input. Tabel kebenaran dan rangkaian full substractor ditunjukkan pada gambar 4.24 dan 4.25.
Gambar 4.24 menunjukkan map Fungsi Boolean untuk kedua output dari full substractor, menghasilkan nilai fungsi sebagai berikut :
𝐷𝑖 = 𝑥′𝑦′𝑧 + 𝑥′𝑦𝑧′+ 𝑥𝑦𝑧
𝐵𝑖 = 𝑥′𝑦 + 𝑥′𝑧 + 𝑦𝑧
Rangkaian full substractor terlihat pada gambar 4.26, Full substractor dapat dibangun dengan 2 half substractor.
Gambar 4.24. Map karnaugh full substractor
Ripple-carry substractor
Dari gambar 4.24(a) dimana 1-bit full substractor dapat disusun dari 2 half substractor, maka full substractor dapat disusun secara seri untuk membuat n-bit full substractor, dimana bit borrow-out pada full substractor sebelumnya menjadi input bit borrow-in selanjutnya. Oleh karena itu, konfigurasi n-bit full substractor yang disusun dari beberapa 1-bit full substractor disebut Ripple-carry substractor. Pada gambar 4.27 menujukkan blok diagram dari 4-bit Ripple-carry substractor, dimana berfungsi untuk mengurangkan 4 bit yaitu A4 A2 A1 A0 dengan B4 B2 B1 B0.
Gambar 4.25 (a) Binary substraction tables, (b) Tabel Kebenaran untuk half substractor, (c) Blok untuk half substractor, (d) Rangkaian logika untuk half
substractor. e. Multiplier
Multiplier adalah rangkaian untuk melakukan operasi aritmatika perkalian. Seperti :
Gambar 4.26. Full Substractor (a) Block symbol; (b) Full substractor yang dibangun dari 2 half adder; (c) Diagram logika
Pada perhitungan perkalian diatas, dapat dilihat masing-masing dikalikan dengan operator AND, kemudian hasil perkalian dijumlah, namun terlebih dahulu 0000, 1011, dan 1011 digeser ke kiri terlebih dahulu dengan bantuan shifter register. Cara lain yaitu dengan membuat table kebenaran untuk menemukan fungsi perkalian.Contoh akan dibuat rangkaian perkalian 2-bit perkalian. Tabel kebenaran untuk 2-bit perkalian A (A1,A0) dikali B (B1,B0), dan hasil perkalian P (P4,P2,P1,P0),
ditunjukkan pada table 4.4.
Dengan bantuan Kmap diperoleh fungsi untuk masing-masing perkaliannya P0 = A0.B0
P1 = A1’.A0.B1 + A1.A0.B0’ + A1.B1’.B0 + A1.A0’.B0
P2 = A1.B1.B0’ + A1.A0’.B1
P4 = A1.A0.B1.B0
f. Shifter combinational
Shifter combinational adalah rangkaian yang dapat menggeser nilai bit, baik dari kiri ke kanan, maupun dari kanan ke kiri. Saat bergeser, bit terakhir akan dibuang dan bit awal akan diisi dengan 0. Shifter kombinasional memiliki saklar control untuk memilih arah penggeseran.
Tabel kebenaran untuk rangkaian 2-bit shifter, dan implementasi pada rangkaiannya ditunjukkan pada gambar 4.28. S adalah sakalar control, dan D1, D0
adalah bit input. Apabila S bernilai 0, maka bit input akan digeser ke kiri, misalnya dari 01 menjadi 10. Sebaliknya apabila S bernilai 1, maka bit input akan digeser ke kanan, misalnya dari 10 menjadi 01. Gambar 4.29 untuk 4-bit shifter.
Pada gambar 4.40 menunjukkan rangkaian 8-bit Shifter kombinasional, dengan 8-bit input (D0 - D7), 8-bit output (S0 - S7), dan 1-bit saklar control (C). Saat C
bernilai 1, maka rangkaian akan menggeser bit ke kanan, contoh dari 11111111 menjadi 0111111. Sebaliknya saat C bernilai 0, maka rangkaian akan menggeser bit ke kiri, contoh dari 11111111 menjadi 11111110.
Gambar 4.28.Tabel Kebenaran shifter kombinasional g. Kompator dan Desain komparator, VHDL
Komparator adalah rangkaian yang membandingkan 2 binary input A dan B, dimana masing-masing bit inputnya dibandingkan apakah outputnya dapat berupa A = B, A > B, atau A < B. Berdasarkan table kebenaran dan disederhanakan dengan Kmap persamaan komparator untuk A (A0 A1 A2A4) dan B
(B0 B1 B2B4) adalah Dimana Xi = ai.bi + ai'.bi'
(A = B): X4.X2.X1.X0
(A > B): a4b4' + X4a2b2' + X4X2a1b1' + X4X2X1a0b0'
(A < B): a4'b4 + X4a2'b2 + X4X2a1'b1 + X4X2X1a0'b0
Gambar 4.40. 4 bit shifter kombinasional
Persamaan tersebut diimplementasikan pada rangkaian seperti yang ditunjukkan pada gambar 4.41.
Pada table kebenaran dapat dilihat rangkaian untuk A (A0 A1 A2A4) = B (B0 B1 B2B4),
dapat diganti dengan XNOR. XNOR dapat digunakan untuk mengecek apakan nilai dua bit tersebut sama atau tidak. Pada gambar 4.42 menunjukkan rangkaian comparator 4-bit, yang membandingkan apakah A (A0 A1 A2A4) = B (B0 B1 B2B4).
Gambar 4.41. Rangkaian Komparator
Comparator dapat dibentuk dengan VHDL, berikut kode program VHDl untuk komparator 1-bit: library ieee; use ieee.std_logic_1164.all; entity comparator is port(a : in std_logic; b : in std_logic;
aequab : out std_logic); end comparator; architecture RTL of comparator is begin process begin if a = b then aequab <= '1'; else aequab <= '0'; end if; end process; end RTL;
untuk komparator 2 bit, terlihat pada code vhdl berikut :
Library ieee;
use ieee.Std_Logic_1164.All; Entity Comparator is
Port( a,b : in Std_Logic_Vector(1 downto 0); amoreb,alessb,aequab : out Std_Logic); end Comparator; Architecture RTL of Comparator is begin process begin if a = b then aequab <= '1';
amoreb <= '0'; alessb <= '0'; else if a > b then amoreb <= '1'; aequab <= '0'; alessb <= '0'; else alessb <= '1'; aequab <= '0'; amoreb <= '0'; end if; end if; end process; end RTL;
h. Multiplexer dan Demultiplexer
Multiplexer adalah suatu rangkaian dimana memiliki banyak input namun hanya memiliki 1 output, dan ada saklar sebagai pemilih input untuk memilih input mana yang akan diteruskan ke output. Secara umum ada 2n jalur input dan n jalur selector. Cara kerjanya seperti system pada switch rel kereta api, dimana memilih jalur kereta mana yang akan diteruskan menuju satu jalur rel kereta api, seperti yang ditunjukkan pada gambar 4.44
Gambar 4.44. Ilustrasi multiplexer
Banyaknya saklar pemilih input bergantung pada jumlah input :
• 4 input mux membutuhkan 2 saklar pemilih
• 8 input mux membutuhkan 4 saklar pemilih
Contoh akan dibuat rangkaian multiplexer 2 input seperti ditunjukkan pada gambar 4.44
Gambar 4.44. Multiplexer
Table kebenaran multiplexer untuk 2 input, dengan 1 saklar pemilih ditunjukkan pada table 4.5.
Tabel 4.5. Tabel Kebenaran Multiplexer
Dari table kebenaran tersebut diperoleh persamaan yang optimal multiplexer 2 input adalah Z = S’.A + S.B. Implemenrtasi pada desain rangkaian ditunjukkan pada gambar 4.45.
Gambar 4.45 Rangkaian hasil logic function
Multiplexer 4 ke 1 terlihat pada gambar 4.46. Tiap inputnya terhubung dengan gerbang AND. Tabel kebenaran multiplexer terlihat pada tabel 4.6.
Tabel 4.6. Tabel Kebenaran Multiplexer dengan 2 Select Line Input Output S0 S1 D0 D1 D2 D4 X Ket 0 0 0 X X X 0 D0 0 0 1 X X X 1 0 1 X 0 X X 0 D1 0 1 X 1 X X 1 1 0 X X 0 X 0 D2 1 0 X X 1 X 1 1 1 X X X 0 0 D4 1 1 X X X 1 1
Tabel kebenaran multiplexer 2 input dan 4 bit wide (74x157), terlihat pada gambar 4.3.
Tabel 4.3 Tabel Kebenaran Multiplexer 2 input dan 4 bit wide
Contoh Soal :
Implementasikan fungsi berikut ini dengan multiplexer :
𝐹 𝐴, 𝐵, 𝐶, 𝐷 = (0,1,4,4,8,9,15)
Jawaban:
Karena terdapat 4 variabel maka dibutuhkan multiplexer dengan 4 jalur selector dan 8 input. Input A, B, C, D. Tabel kebenaran dan Implementasinya terlihat pada gambar 4.49.
Demultiplexer adalah rangkaian logika yang menerima satu input data dan mendistribusikan input tersebut ke beberapa output yang tersedia. Seleksi data-data input dilakukan oleh selector line, yang juga merupakan input dari demultiplekser tersebut. Blok diagram sebuah demultiplexer ditunjukan oleh gambar 4.40. Tabel kebenaran demultiplexer terlihat pada tabel 4.8.
Gambar 4.49. Rangkaian multiplexer 4 bit jalur 2 ke 1
Gambar 4.40. Block Diagram Demultiplexer
Tabel 4.8. Tabel Kebenaran Demultiplexer 2 jalur selector
Input Output S0 S1 Inp Oo O1 O2 O4 0 0 0 0 X X X 0 0 1 1 X X X 0 1 0 X 0 X X 0 1 1 X 1 X X 1 0 0 X X 0 X 1 0 1 X X 1 X 1 1 0 X X X 0 1 1 1 X X X 1
Gambar 4.41. Rangkaian demultiplexer 1 ke 4 h. Dekoder
Dekoder adlah rangkaian kombinasional yang mengubah (mengkonversikan) informasi biner dari n jalur input kepada 2n jalur output. Blok Diagram dekoder diberikan pada gambar 4.42. Beberapa rangkaian dekoder yang sering dijumpai adalah dekoder 4 x 8 (4 bit input dan 8 bit output), dekoder 4 x 16, dekoder BCD to Decimal (4 bit input dan 10 output line), dekoder BCD to 7 segment (4 bit input dan 8 output line). Sebagai contoh berikut adalah dekoder 4 ke 8, dimana 4 variabel input menghasilkan 8 variabel output. Rangkaian terlihat pada gambar 4.44.
Gambar 4.44. Rangkaian Dekoder 4 ke 8
Untuk setiap kombinasi input, menghasilkan 7 jalur output yang bernilai 0, dan hanya ada 1 output yang bernilai 1. Nilai output yang bernilai 1 merepresentasikan minterm dari binary number yang tersedia dalam jalur input.
Beberapa dekoder juga dapat dibentuk melalui gerbang NAND. Dekoder ini terdiri dari satu atau lebih jalur enable. Untuk mengontrol operasi pada rangkaian. dekoder 2 ke 4 dengan enable input dibangun dengan gerbang NAND, rangkaian beroperasi dengan output komplemen dan komplemen dari input enable. Dekoder akan aktif ketika E bernilai 0 (active low - enable). Rangkaian dan tabel kebenaran dekoder 2 ke 4 disajikan pada gambar 4.44.
Gambar 4.44. (a) logic diagram (b) tabel kebenaran dekoder 2 ke 4
i. Encoder
Encoder adalah rangkaian kombinasional yang menampilkan inversi dari operasi dekoder, enkoder memiliki 2n (lebih sedikit) jalur input dan n jalur output, hanya salah satu dari input-input tersebut yang diaktifkan pada waktu tertentu, yang selanjutnya akan menghasilkan kode output N-bit. Blok diagram encoder terlihat pada gambar 4.45.
Gambar 4.45. Blok Diagram Encoder
Enkoder dapat diimplementasikan dengan gerbang OR dimana input ditentukan secara langsung dari tabel kebenaran. Operasi enkoder terlihat pada fungsi logika berikut ini :
𝑧 = 𝐷1+ 𝐷4 + 𝐷5 + 𝐷7 𝑦 = 𝐷2 + 𝐷4 + 𝐷6 + 𝐷7
𝑥 = 𝐷4 + 𝐷5+ 𝐷6+ 𝐷7
Tabel 4.8 Tabel Kebenaran octal to binary Encoder
Rangkaian digital dari encoder 8 ke 3 disajikan pada Gambar 4.46.
Gambar 4.46. Rangkaian Dekoder 8 ke 3
Priority Encoder
Sebuah Priority Encoder adalah rangkaian Encoder yang mempunyai fungsi prioritas. Operasi dari rangkaian Priority Encoder adalah sebagai berikut : jika ada dua atau lebih input bernilai "1" pada saat yang sama, maka input yang mempunyai
prioritas tertinggi yang akan diambil. Tabel Kebenaran Priority Encoder diberikan pada tabel 4.9. Kondisi "x" adalah kondisi dont care, yang menyatakan nilai input bisa "1" dan "0". Input D3 mempunyai prioritas tertinggi, sehingga bila input ini bernilai "1" maka output X dan Y keduanya akan bernilai "1" (11 menyatakan biner dari 3). Input D2 mempunyai prioritas kedua, dengan output X dan Y bernilai 10 menyatakan biner 2, dimana input D2 = "1" dan D3 = "0". Input D1 adalah prioritas ketiga dengan output X dan Y bernilai 01 menyatakan biner 1, dimana input D1 = "1", sedangkan D2 = D3 = "0". Prioritas terendah adalah input D0, yang akan memberikan output X dan Y = 00 (menyatakan biner 0), jika input D1 bernilai "1", sedang ketiga input lainnya bernilai "0". Map Karnaugh dari priority encoder terlihat pada gambar 4.47.
Tabel 4.9. Tabel Kebenaran Priority Encoder
Dari Tabel Kebenaran dapat dibuat K-Map seperti gambar 4.47 untuk masing-masing output X, Y, dan V (V adalah nilai output Validitas, yang akan bernilai "1" jika satu atau lebih inputnya bernilai "1" dan bernilai "0" jika tidak ada inputnya yang bernilai "1").
Persamaan boolean dari fungsi logika pada tabel kebenaran (tabel 4.9) adalah sebagai berikut :
𝑥 = 𝐷2+ 𝐷3 𝑦 = 𝐷3+ 𝐷1𝐷2′
Gambar 4.47. Map Karnaugh priority encoder sehingga rangakaian priority encoder disajikan pada gambar 4.48.
Gambar 4.48. Rangkaian Priority Encoder j. Realisasi Rangkaian dengan dekoder
Rangkaian dasar dekoder 2 ke 4 ditunjukkan pada Gambar 4.49. Pada rangkaian lersebut dapat diperhatikan bagian keluaran yang aktif tergantung dengan konfigurasi masukan yang dibenkan pada masukan 11 dan 10, misal dengan dibenkan masukan '0' pada II dan 10 maka inverter akan membenkan nilai ' 1' pada gerbang AND yang terhubung dengan OO selnngga OO aktif. Dengan suatu konfigurasi masukan decoder tanpa pembahk akan mengaktifkan salah satu ujung keluaranma saja. sehmgga dengan menghubungkan beberapa keluaran dengan
sebuah gerbang OR akan sama artinya dengan memihh sederetaii konfigurasi yang di benkan pada masukannya dan berarti juga bahwa keluaran 1 adalah suatu fungsi mmterm dengan variable [M_A , M_B dan M_C. Misalnya implementasi fungsi mmterm F=( 0, 2. 3, 5 ).
Gambar 4.49. Realisasi rangkaian dekoder 2 ke 4 menggunakan gerbang AND Sedangkan implementasi decoder sebagai generator fungsi maxterm dapat dibuat menggunakan sebuah decoder dengan pembalik yang akan mengaktifkan semua keluaranya kecuali keluaran yang sesuai dengan konfigurasi masukan Misalnya implementasi dekoder sebagai generator fungsi maxterm F= (3,4,5,6.7) ditunjukkan pada Gambar 4.50.
Gambar 4.50. Generator fungsi maxterm menggunakan dekoder k. Realisasi Rangkaian dengan Multiplexer
Kasus I
Implementasikan fungsi minterm F= ∑XYZ(0, 3, 5, 6) menggunakan MUX 8 KE 1 Jika F adalah fungsi minterm maka F=1 pada fungsi-fungsi F=-X-Y-Z atau F=~XYZ atau F=X-YZ atau F=XY-Z, jadi untuk mengirnplementasikan fungsi mi sebuah MUX 8 KE 1 dapat di rangkai seperti pada Gambar 4.51.
Gambar 4.51. Implementasi Rangkaian MUX 8 ke 1 pada kasus 1 Kasus 2
Untuk tungsi maxterm F= ∑ XYZ (0, 3. 5. 6). F=0 hanya jika F= -X~Y~Z atau F = -XY7 atau F=X~YZ atau F=XY~X. jadi untuk mengimplementasikan fungsi ini sebuah MUX 8 ke 1 dapat di rangkai seperti pada Gambar 4.52.
Kasus 3
Implementasikan fungsi minterm F=∑ (0, 3, 5, 6) dengan sebuah MUX 4 ke 1. Dengan menggunakan aljabar Boolean secara langsung dapat di lakukan dengan cara memilih sinyal kendali. dalam hal ini nilai teilinggi Fungsi adalah 6 sehingga MUX yang tepat adalah MUX 8 Ke 1 yang memiliki 3 sinyal kendali misalnya X, Y dan Z, dan fungsi F = X-Y-Z + -XYX + X-YZ + XY~Z , dapat langsung di Implementasikan, sedangkan dengan menggunakan MUX 4 KE 1 maka dua sinyal pemilih harus ditentukan dari ketiga sinyal tersebut, misalkan dipilih dua hagian MSB yaitu X dan Y . sehingga fungsi dapat ditulis ulang sebagai berikut:
F=~X~Y(~Z)+ ~X Y( Z )+ X~Y( Z )+ X Y(~Z)
Cara lain dapat dilakukan dengan menggunakan label reduksi terlihat di Tabel 4.12. Tabel 4.12. Tabel Reduksi
X Y Z F 0 0 0 0 1 NOT_Z 1 0 0 1 0 2 0 1 0 0 NOT_Z 3 0 1 1 1 4 1 0 0 0 NOT_Z 5 1 0 1 1 6 1 1 0 1 NOT_Z 7 1 1 1 0
Kasus 4
Implememasikan fungsi minterm F = ∑(0,1,2,3,5,7) dengan sebuah MUX 8 ke 1. Pada kasus ini fungsi tidak dapat secara langsung diimplementasikan menggunakan MUX 8 KE 1 karena rentang masukannva tidak mencukupi. sehingga dibutuhkan tabel reduksi masukan seperti yang dltunjukkan pada Tabel 4.13.
Tabel 4.13. Tabel Reduksi masukan
W X Y Z F 0 0 0 0 0 1 1 1 0 0 0 1 1 2 0 0 1 0 1 1 3 0 0 1 1 1 4 0 1 0 0 0 Z 5 0 1 0 1 1 6 0 1 1 0 0 Z 7 0 1 1 1 1 8 1 0 0 0 0 0 9 1 0 0 1 0 10 1 0 1 0 0 Z 11 1 0 1 1 1 12 1 1 0 0 0 Z 13 1 1 0 1 1 14 1 1 1 0 0 0 15 1 1 1 1 0
Berdasarkan Tabel 4.13 maka dapat dibuat rangkaian MUX 8 ke 1 untuk mengimplementasikan fungsi F seperti ditunjukkan pada gambar 4.54.
KASUS 5
Implementasikan fungsi minterm F = ∑ (3,4,5,6,7,11,15) dengan menggunakan MUX 16 KE I pada kasus ini rentang masukan MUX mencukupi sehingga dapat langsung digunakan. Pada fungsi ini F=1 hanya jika F = ∑ WXYZ (3,4,5,6,7,11,15) Sehingga rangkaian dan fungsi dapat di buat seperti pada Gambar 4.55.
Gambar 4.55. Implementasi rangkaian MUX 8 16 ke 1 pada kasus 5 Kasus 6a
Implementasikan Fungsi minterm F=∑ABCD (3. 4. 5. 6, 7. 11, 15) dalam MUX 8 ke 1, kerena rentang raasukan MUX tidak mencukupi maka harus dilakukan reduksi seperti pada Tabel 4.14.
Tabel 4.14. tabel Reduksi Masukan
A B C D F Dec 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 2 0 0 1 0 0 D 3 0 0 1 1 1 2 4 0 1 0 0 1 1 5 0 1 0 1 1 3 6 0 1 1 0 1 1 7 0 1 1 1 1
Tabel 4.14. tabel Reduksi Masukan (Lanjutan) A B C D F Dec 4 8 1 0 0 0 0 0 9 1 0 0 1 0 5 10 1 0 1 0 0 0 11 1 0 1 1 1 6 12 1 1 0 0 0 0 13 1 1 0 1 1 7 14 1 1 1 0 0 D 15 1 1 1 1 0
Dari tabel reduksi tersebut diperoleh rangkaian implementasi fungsi seperti pada gambar 4.56.
Gambar 4.56. Rangkaian implementasi MUX ke 1 pada kasus 6 Kasus 6b
Implementasikan fungsi minterm = ∑ABCD(3,4,5,6,7,11,15) dalam MUX 8 ke 1 menggunakan teknik 2 MUX 8 ke 1 dengan Enable. Perhatikan table 4.15
Tabel 4.15. Tabel Reduksi Masukan MUX 8 ke 1
A B C D F 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 1 0 0 3 0 0 1 1 1 4 0 1 0 0 1 5 0 1 0 1 1 6 0 1 1 0 1 7 0 1 1 1 1
Tabel 4.15. tabel Reduksi Masukan (Lanjutan) A B C D F 0 1 0 0 0 0 1 1 0 0 1 0 2 1 0 1 0 0 3 1 0 1 1 1 4 1 1 0 0 0 5 1 1 0 1 0 6 1 1 1 0 0 7 1 1 1 1 1
Pada tabel 4.15. "A" sebagai MSB dapat digunakan sebagai pemilih salah satu dari kedua MUX 8 ke 1 yang dengan menghubungkannya dengan masukan EN (enable), karena harus salah satu yang bekerja maka ditambahkan inverting seperti pada gambar 4.57. dengan masukan terinversi adalah MUX 8 ke 1 untuk menerima masukan 4 bit.
Gambar 4.57. Rangkaian implementasi 2 MUX 8 ke 1 pada kasus 6b Kasus 7a
Implementasikan fungsi minterm F = ∑(3, 4, 5, 6, 7, 11, 15) dalam MUX 4 ke 1 dengan teknik dekomposisi. Masukan dan keluaran fungsi terlihat pada tabel 4.16,
Tabel 4.16. Tabel Kebenaran FUNGSI Asli (kiri) dan reduksi Dekomposisi I (kanan)
Setelah dilakukan reduksi dekomposisi ke mUX 8 ke 1 maka selanjutnya dapat dilakukan reduksi ke MUX 4 ke 1 seperti ditunjukkan pada Tabel 4.17.
Tabel 4.17.
Tabel Kebenaran Fungsi Dekomposisi II
Dari tabel 4.17 dapat diformasi masukan fungsi untuk MUX 4 ke 1 sehingga selanjutnya dapat dilakukan implementasi fungsi menggunakan MUX 4 ke 1 seperti ditunjukkan pada Gambar 4.58.
A B C D F Reduksi A B C D F Dec 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 2 0 0 1 0 0 1 2 0 0 1 0 1 D 3 0 0 1 1 1 3 0 0 1 1 1 4 0 1 0 0 1 2 4 0 1 0 0 0 1 5 0 1 0 1 1 5 0 1 0 1 1 6 0 1 1 0 1 3 6 0 1 1 0 0 1 7 0 1 1 1 1 7 0 1 1 1 1 8 1 0 0 0 0 4 8 1 0 0 0 0 0 9 1 0 0 1 0 9 1 0 0 1 0 10 1 0 1 0 0 5 10 1 0 1 0 0 0 11 1 0 1 1 1 11 1 0 1 1 1 12 1 1 0 0 0 6 12 1 1 0 0 0 0 13 1 1 0 1 1 13 1 1 0 1 1 14 1 1 1 0 0 7 14 1 1 1 0 0 D 15 1 1 1 1 1 15 1 1 1 1 0 Reduksi A B C F Dec 0 0 0 0 0 0 CD 1 0 0 1 D 1 2 0 1 0 1 1 3 0 1 1 1 2 4 1 0 0 0 CD 5 1 0 1 D 3 6 1 1 0 0 CD 7 1 1 1 D
Gambar 4.58. Rangkaian implementassi MUX 4 ke 1 pada kasus 7a Kasus 7b
Implementasikan fungsi minterm F = ∑ (3,4,5,6,7,11,15) dalam MUX 4 ke 1. Secara cepat fungsi tersebut dapat diimplementasikan menggunakan MUX 16 ke 1 jadi dengan MUX 4 ke 1. Masukan harus direduksi dengan cara dibagi 4 seperti ditunjukkan pada tabel 4.18.
Tabel. 4.18. Tabel Reduksi fungsi kasus 7b
A B C D F 0 0 0 0 0 0 1 0 0 0 1 0 2 0 0 1 0 0 3 0 0 1 1 1 4 0 1 0 0 1 5 0 1 0 1 1 6 0 1 1 0 1 7 0 1 1 1 1 8 1 0 0 0 0 9 1 0 0 1 0 10 1 0 1 0 0 11 1 0 1 1 1 12 1 1 0 0 0 13 1 1 0 1 0 14 1 1 1 0 0 15 1 1 1 1 1
Dari tabel 4.18. Masukan telah direduksi untuk dibagi menjadi empat agar mencukupi untuk diimplementasikan menggunakan MUX 4 ke 1, hasil implementasi seperti ditunjukkan pada Gambar 4.59.
Gambar 4.59. Rangkaian Implementasi MUX 4 ke 1 pada kasus 7b l. Memory (ALU, RAM, ROM)
l.1
ALU (Alogaritmik Logic Unit)
Logika aritmatika unit (ALU) adalah rangkaian digital yang melakukan aritmatika dan logis operasi. ALU adalah sebuah blok fundamental dari central processing unit (CPU) untuk melaksanakan operasi aritmatika dan operasi logika, bahkan mikroprosesor yang paling sederhana mengandung ALU yang digunakan sebagai timer. Gambar 4.60 menunjukkan blok diagram ALU.
ALU dapat bekerja secara langsung melalui Control Unit, ALU melakukan operasi seperti ADD, SUB, NOT, OR, AND, dan XOR. Data diinputkan dari dan dikeluarkan ke array register. Sinyal kontrol dari control unit menentukan tipe operasi yang ditampilkan. Input data terdiri dari 2 operand yakni operand A dan operand B yang dimasukkan ke register dan memiliki n bit data. Data output terdiri dari S. ALU juga menghasilkan ooutput sinyal status seperti :
a. Zero (ketika hasil operasi = 0) b. Negative (ketika hasil operasi < 0)
c. Carry (ketika operasi hasilnya adalah carry)
d. Overflow (Ketika hasilnya adalah sejumlah bit yang dialokasikan dalam media penyimpan).
Beberapa contoh operasi pada ALU : A. Ripple Carry Adder (RCA)
Minimalisasi sel dan implementasi RCA :
Tabel 4.19 menunjukkan tabel kebenaran dari RCA. Map Karnaugh
dari RCA dijelaksna sehingga menghasilkan persamaan boolean.
B.
Accumulator
Banyak perhitungan yang terdiri dari pengulangan penambahan
dan pengurangan yang ditampilkan hasilnya pada operasi sebelumnya.
Accumulator didedikasikan bagi register, yang digunakan untuk
menampilkan operasi perulangan ini seperti pada gambar .
C.
Multiplication
C.1. Binary Multiplication
Metode :
Perkalian dapat ditampilkan melalui multiplier unit sebagai
rangkaian kombinational, dengan multiplicand dan bit multiplier
sebagai input dan bit sebagai output.
Tabel 4.20. tabel kebenaran Binary Multiplication
Dari tabel tersebut dapat dibentuk map karnaughnya,
B1B0
A1A0
00
01
11
10
00
0
0
0
0
01
0
1
1
0
11
0
1
1
0
10
0
0
0
0
Sehingga dihasilkan P
0= A
0B
0C2. Add & Shift Multiplication
Multiplication ditampillkan oleh computer dengan perulangan
penambahan
Prinsipnya berdasarkan metode “pencil dan kertas” menyiapkan
komputasi per bagian dan menggesernya sebelum ditambahkan
untuk menghitung hasil akhirnya.
Contoh :
Perkalian positif number
15
10. 13
10= 1111
2. 1101
2Hasil verifikasinya adalah 11000011
2= 195
10Hal ini dapat dilakukan pula dengan metode lain, yakni
C.4. Multiplication Negative Number
Bit tanda yang menggambarkan bilangan positif dan negatif
adalah
0 - positif number
1 – negatif number
Product magnitude adalah hasil dari magnitude dari multiplicand
dan multiplier.
Implementasi
Tanda untuk product P
sbadalah :
Positif jika tanda dari multiplier (X
sb) dan multiplicand (Y
sb)
adalah sama
Negatif jika tandanya berbeda
C.5. Algoritma Booth untuk perkalian (2 komplemen)
Algoritmanya :
1.
Inisialisasi hasil register dengan 0, hal ini akan memasukkan
keduanya baik partiaal product dan hasil akhir
2.
Jika bit multiplier yang diujicobakan adalah “10” dikurangi dengan
multiplicand dari product partial.
3.
Jika bit multiplier yang diujikan adalah “01”,
menambahkan
multiplicand dari partial product.
4.
Jika bit multiplier yang diujikan adalah “00” atau “11”, maka
do
nothing.
5.
Secara aritmetika GESER KANAN pada partial product
6.
Penggunaan bit set yang berdekatan dari sebuah multiplier.
7.
Jika masih ada bit multiplier yang akan digunakan akan
dilanjutkan pada langkah (b).
Contoh :
Hasil verifikasi : 1111011111
2= -33
10C.5. Pembagian
Algoritma pembagian, adalah :
a)
Inisialisasi hasil register (Accumulator - A) dengan 0, hal ini akan
memasukkan keduanya baik remainder dan hasil setelah
pembagian.
b)
Mengcopy hasil pembagi pada least significant bagian A
c)
Jika hasil dari the most significant part (AH) lebih besar atau sama
dengan pembagi, kurangkan divisor dari AH dan menset hasil
selanjutnya dengan bit = 1.
d)
Jika hasil dari the most significant part (AH) lebih besar atau sama
dengan pembagi, jangan lakukan apapun dan menset hasil
selanjutnya dengan bit = 0.
e)
Geser ke kanan hasilnya, mengenalkan posisi least significant bit
yang ditentukan.
f)
Jika algoritma yang ditentukan, lebih sedikit jumlah bitnya maka
pembaginya, algoritma akan kembali ke langkah b.
Contoh :
35
10/7
10= 100011
2/000111
2Yang dibagi (A) = 100011 (35
10)
Pembagi (B) = 000111 (7
10)
Hasilnya
= 000101 (5
10)
I.2
ROM (Read Only Memory)
Read-Only Memory (ROM) pada dasarnya adalah sebuah perangkat memori di mana informasi biner secara permanen disimpan. Informasi biner harus ditentukan oleh perancang dankemudian tertanam di unit untuk membentuk pola interkoneksi yang diperlukan.
Sebuah diagram blok ROM terdiri dari k input dan n output ditunjukkan pada Gambar. 4.61. Masukan memberikan alamat untuk memori, dan output memberikan data bit disimpan dari kata yang dipilih oleh alamat. Jumlah word dalam ROM ditentukan dari fakta bahwa k jalur alamat input dibutuhkan untuk menspesifikasi 2𝑘 𝑤𝑜𝑟𝑑. ROM tidak memiliki input data, karena tidak memiliki operasi menulis. Sirkuit terpadu ROM chip memiliki satu atau lebih input dan kadang-kadang datang dengan tiga keadaan output untuk memfasilitasi pembangunan array besar ROM.
Gambar 4.61. Blok Diagram ROM
Perhatikan, misalnya, 32 * 8 ROM. Unit ini terdiri dari 32 word dari 8 bit masing-masing. Ada lima jalur input yang membentuk bilangan biner dari 0 sampai 31 untuk alamat. Gambar 4.61 menunjukkan konstruksi logika internal ROM ini. Kelima input yang diterjemahkan ke dalam 32 output yang berbeda dengan cara 5 x 32 decoder. Setiap output dari decoder merupakan alamat memori. 32 output dari decoder yang terhubung ke masing masing dari delapan gerbang OR. Diagram menunjukkan logika konvensi array yang digunakan dalam rangkaian kompleks. Setiap gerbang OR memiliki memiliki 32 input. masing-masing output decoder yang terhubung ke salah satu masukan dari masing-masing gerbang OR. Karena setiap OR gerbang memiliki 32 koneksi input dan ada 8 gerbang OR, ROM berisi 32 x 8 = 256 koneksi internal. Secara umum, 2𝑘𝑥 𝑛 ROM memiliki k x 2𝑘.
Penyimpanan biner internal ROM ditentukan oleh tabel kebenaran yang menunjukkan isi kata dalam setiap alamat. Sebagai contoh, isi 32 x 8 ROM mungkin ditentukan dengan tabel kebenaran yang sama dengan yang ditunjukkan pada Tabel
4.21. Tabel kebenaran menunjukkan lima input di mana tercantum 32 alamat. Setiap alamat menyimpan kata 8 bit, yang tercantum dalam output kolom. Tabel tersebut menunjukkan hanya empat pertama dan empat kata terakhir dalam ROM. Tabel 4.21 lengkap harus menyertakan daftar semua 32 kata.
Sebagai contoh, pemrograman ROM sesuai dengan tabel kebenaran diberikan oleh Tabel 4.21, hasil konfigurasi ditunjukkan pada Gambar. 4.62. Setiap nilai 0 tercantum dalam tabel kebenaran menentukan adanya sambungan, dan setiap 1 yang terdaftar menentukan jalan yang diperoleh oleh koneksi. Sebagai contoh, tabel menentukan word data delapan bit 10110010 untuk penyimpanan permanen di alamat 3. Keempat nilai 0 dalam word diprogram dengan menggabungkan antara output 3 dari decoder dan masukan dari gerbang OR terkait dengan output A6 , A3 , A2 , Dan A0 . Keempat 1 di kata ditandai dengan x untuk menunjukkan koneksi sementara, di tempat titik digunakan untuk koneksi permanen dalam diagram logika. Ketika masukan dari ROM adalah 00011, semua output dari decoder adalah 0 kecuali untuk output 3, yang pada logika 1. Sinyal setara dengan logika 1 pada output decoder 3 menyebar melalui koneksi ke gerbang OR output A7 , A5 , A4 , dan A1. Itu output empat lainnya tetap di 0. Hasilnya word disimpan 10110010 diterapkan untuk output data yang delapan. Setiap gerbang OR memiliki
2𝑘 input, yang terhubung ke masing-masing output decoder.
Tabel 7.3 ROM Truth Tabel Input Output 𝑰𝟒 𝑰𝟑 𝑰𝟐 𝑰𝟏 𝑰𝟎 𝑨𝟕 𝑨𝟔 𝑨𝟓 𝑨𝟒 𝑨𝟑 𝑨𝟐 𝑨𝟏 𝑨𝟎 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1
Implementasi Rangkaian Kombinasional
Operasi internal ROM dapat ditafsirkan dalam dua cara. Pertama interpretasi dari sebuah unit memori yang berisi pola tetap word yang tersimpan. Kedua interpretasi bahwa unit yang mengimplementasikan rangkaian kombinasional. Pada cara pandang ini, masing masing terminal output dipertimbangkan secara terpisah sebagai output dari Fungsi Boolean dinyatakan sebagai jumlah dari minterm. Sebagai contoh, ROM Gambar. 7.10 adalah rangkaian kombinasional dengan delapan output, masing-masing fungsi dari lima variabel masukan. Output A7 dapat dinyatakan dalam jumlah minterm berikut ini :
𝐴7 𝐼4, 𝐼3, 𝐼2, 𝐼1, 𝐼0 = (0, 2, 3, … ,29)
Hubungan ditandai dengan x pada gambar menghasilkan minterm untuk penjumlahan. Semua crosspoint tidak terhubung dan tidak termasuk dalam penjumlahan. Dalam prakteknya, ketika rangkaian kombinasional dirancang dengan cara ROM, tidak diperlukan merancang logika atau untuk menunjukkan koneksi gerbang internal didalam unit.
Langkah pertama adalah untuk mendapatkan tabel kebenaran dari rangkaian kombinasional. Tabel 4.22 adalah tabel kebenaran untuk sirkuit kombinasional. Tiga input dan enam output diperlukan untuk mengakomodasi semua bilangan biner yang mungkin. Output 𝐵0 selalu sama dengan masukan A0, Jadi tidak perlu untuk
menghasilkan 𝐵0 dengan ROM, karena itu sama dengan variabel masukan. Selain itu, Output 𝐵1selalu 0, sehingga output ini adalah sebuah konstanta yang dikenal. Kami benar-benar perlu untuk menghasilkan hanya empat output dengan ROM, dua lainnya dapat segera diperoleh. Ukuran minimum ROM diperlukan harus memiliki tiga input dan empat output. Tiga input menentukan delapan word, jadi ROM memiliki ukuran 8 x 4. Implementasi ROM ditunjukkan pada Gambar. 7.11. Tiga input menentukan delapan word dari empat bit masing-masing. Tabel kebenaran di Gambar. 4.63 (b) menentukan informasi yang diperlukan untuk pemrograman ROM. Blok diagram Gambar. 4.63 (a) menunjukkan koneksi yang diperlukan pada rangkaian kombinasional.
Tabel 7.22 Tabel Kebenaran Rangkaian
Input Output Decimal
𝐴2 𝐴1 𝐴0 𝐵5 𝐵4 𝐵3 𝐵2 𝐵1 𝐵0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 4 0 1 1 0 0 1 0 0 1 9 1 0 0 0 1 0 0 0 0 16 1 0 1 0 1 1 0 0 1 25 1 1 0 1 0 0 1 0 0 36 1 1 1 1 1 0 0 0 1 49
Jenis ROM
Jalur diperlukan dalam ROM dapat diprogram dalam empat cara yang berbeda. Cara pemograman pada ROM adalah sebagai berikut :
1. Mask Programming. Tabel kebenaran dapat disampaikan dalam bentuk khusus yang disediakan oleh produsen atau format yang ditentukan pada media output komputer. Pabrik membuat mask yang berkorespondensi pada tiap bagian untuk memproduksi nilai 0 dan 1.
2. Pro-grammable Read-Only Memory, atau PROM. unit PROM berisi semua sekering, memberikan semua nilai 1 dalam bit word yang tersimpan. Sekering di PROM ditiup oleh penerapan sebuah pulsa tegangan tinggi ke perangkat melalui pin khusus. Prosedur hardware untuk programmable ROM atau PROM tidak dapat diubah, dan sekali diprogram, pola tetap bersifat permanen dan tidak dapat diubah. Setelah pola bit telah ditetapkan, unit harus dibuang jika pola bit yang akan diubah.
3. Erasable PROM, atau EPROM, yang dapat direstrukturisasi dari keadaan awal meskipun telah diprogram sebelumnya. Ketika EPROM ditempatkan di bawah sinar ultraviolet khusus untuk panjang waktu tertentu, radiasi gelombang pendek pembuangan gerbang mengambang internal yang berfungsi sebagai koneksi diprogram. Setelah penghapusan, EPROM kembali ke keadaan awal dan dapat diprogram kembali untuk satu set nilai baru. Electrically Erasable PROM (EEPROM atau E2PROM). Perangkat ini seperti EPROM, kecuali bahwa koneksi diprogram sebelumnya bisa terhapus dengan sinyal listrik bukan sinar ultraviolet. Keuntungannya adalah bahwa perangkat dapat dihapus tanpa menghapusnya dari soketnya. Perangkat memori flash mirip dengan EEPROMs, tetapi memiliki tambahan built-in sirkuit untuk selektif memprogram dan menghapus perangkat di sirkuit, tanpa perlu khusus programmer.
m. PAL
PAL disebut pula sebagai programmable gate array. PAL memproduksi jalur memori monolitik yang dikarakteristikkan dengan 8 hingga 16 input, tersedia secara internal dalam bentuk asli dan komplemennya yakni 2 sampai 8 output dengan variasi jumlah product term. PAL berbeda dari PLA pada jumlah output yang ditetapkan. Sejumlah PAL tersedia dengan feedback dan output yang diregisterkan. Gambar 4.64. adalah PAL dengan 2 buah MUX 1 ke 8 dan 5 buah gerbang NOR.
Demux
b. K
Tambahan
1. A symbol is a graphical model of the input and output pins
A schematic is a functional model of how outputs are related to input values 2. Detecting all 0s, Use NOR
Detecting equality, Use XNOR
Detecting odd # of 1s, Use XOR, Useful for generating “parity” bit common for detecting errors
Lj’a
I nvert er
AND