rangkaian aritmatika digital
TRANSCRIPT
BAB VI
RANGKAIAN ARITMATIKA
6.1 Pendahuluan
Pada saat ini banyak dihasilkan mesin-mesin berteknologi tinggi seperti
komputer atau kalkulator yang mampu melakukan fungsi operasi aritmatik yang
cukup kompleks (misalnya penjumlahan, pengurangan, perkalian, pembagian
pembandingan dan sebagainya) atau operasi logika (misalnya Or, And, Not, Nor,
Nand, Exclusive-Or dan sebagainya), dengan ketelitian dan kecepatan yang sangat
luar biasa. Untuk itu pada bab ini akan dibahas beberapa rangkaian digital yang
dapat melakukan operasi aritmatika dalam bilangan biner.
6.2 Penjumlah Paruh (Half Adder)
Bilangan biner hanya mempunyai dua bilangan yaitu 0 dan 1, untuk itu
jika dua bilangan biner (masing-masing satu bit) yaitu antara yang dijumlahkan
(augend) dan penjumlah (addend) dijumlahkan, maka diperoleh hasil jumlah
(sum) dan luapan (overflow/carry) seperti ditunjukkan pada tabel 6.1 dibawah.
Tabel 6.1 Penjumlahan Dua Bit Bilangan Biner
AugendA
AddendB
Hasil JumlahS
Luapan (Overflow/Carry)C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Dari tabel 5.1 tersebut dapat diperoleh persamaan kedua keluaran, yaitu :
Hasil Jumlah : BABAS atau BAS
Luapan (Overflow/Carry) : C = AB
Sehingga dari persamaan tersebut didapatkan rangkaian sebagai berikut :
106HALF
ADDER
S
107
(a) Blok Diagram Penjumlah Paruh (Half Adder)
(b) Rangkaian Logika Penjumlah Paruh (Half Adder)
Gambar 6.1 Penjumlah Paruh (Half Adder)
6.3 Penjumlah Penuh (Full-Adder)
Penjumlah penuh (Full-Adder) merupakan rangkaian penjumlah yang 3 bit
bilangan biner A, B dan masukan luapan Cin dengan keluaran hasil jumlah (sum)
dan luapan (overflow/carry) Cout.
Tabel 6.2 Penjumlahan Tiga Bit Bilangan Biner
AugendA
AddendB
Carry inputCin
Hasil JumlahS
Luapan (Overflow/Carry)COut
0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1
Dari tabel 6.2 tersebut dapat diperoleh persamaan kedua keluaran, yaitu :
Hasil Jumlah
Luapan / Carry
Sehingga dari persamaan tersebut didapatkan rangkaian sebagai berikut :
A
B
MasukanC
Keluaran
108
(a) Blok Diagram Full Adder
A
B
C in
Sum
Carry
Masukan
Keluaran
(b) Rangkaian Logika Full Adder
Gambar 6.2 Penjumlah Penuh (Full Adder)
S 3 S 0S 1S 2
B 3 A 3 B 2 A 2 B 1 A 1 B 0 A 0
C 0C 1C 2C 3C 4
Masukan
Keluaran
FA 0FA 1FA 2FA 3
Untuk mendapatkan jumlah bit yang lebih banyak, maka beberapa
Penjumlah Penuh (FA) diparalel. Misalnya bilangan biner 4-bit (A0, A1, A2, A3)
ditambah 4-bit (B0, B1, B2, B3) dengan keluaran (S0, S1, S2, S3) dan luapan C4,
FULLADDER
A
B
Cin
S
CoutKeluaranMasukan
Gambar 6.3 Penjumlah Paralel 4-Bit
109
sehingga diperlukan 4 FA yang diparalel seperti ditunjukkan pada gambar 4.3,
yang menjumlahan tiap bit yang bersesuaian secara serentak relatif cepat, tetapi
dibatasi oleh luapan (carry) yang dihasilkan tiap bit, agar dapat dijumlahkan
dengan bit berikutnya dan diperoleh hasil penjumlahan yang benar, efek ini
dinamakan perambatan luapan (carry propagation atau carry ripple), yang
disebabkan oleh penundaan perambatan tiap FA. Contoh :
0 0 1 1 1
1 0 1 0 1 Yang dijumlah (Augend)
0 0 1 1 1 Penjumlah (Addend)
1 1 1 0 0 Hasil Jumlah
0 0 1 1 1 Luapan / Carry (ditambahkan ke posisi berikutnya)
Untuk mengatasinya, diperlukan rangkaian yang dapat mengetahui jika
terjadi luapan dan menjumlahkannya dengan bit berikutnya dengan waktu yang
lebih cepat dari penundaan perambatan tiap FA, yaitu Generator Look Ahead
Carry. Dalam penerapan penjumlahan menggunakan IC, biasanya sudah disertai
dengan Generator Look Ahead Carry, contohnya IC Penjumlah 4-bit adalah 7483.
6.4 Penjumlahan Sistem Komplemen Ke-2
Gambar 6.4 IC Penjumlah Paralel 4-Bit 7483
+
110
Pada sistem bilangan biner untuk menyatakan bilangan negatif atau
pengurangan digunakan sistem komplemen ke-2, yaitu (yaitu dengan cara
menambah nilai sebenarnya dengan komplemen –1 (diperoleh dari membalik nilai
sebenarnya) dan ditambah 1 pada bit yg bernialai paling rendah. Disini bit tanda
negatif menggunakan biner 1, sedangkan besarannya dibalik (komplemen ke-1)
lalu ditambah 1 pada bit yang bernilai paling rendah (Least Significant Bit / LSB)
untuk mendapatkan komplemen ke-2.
Contoh : - 6 = 1 0110 nilai sebenarnya (True Magnitude Form / TMF)
1 1001 komplemen ke-1
1
1 1010 komplemen ke-2
Gambar 6.5 dibawah adalah contoh rangkaian penjumlah atau pengurang
untuk bilangan positif pada tertambah / terkurang dan bilangan negatif pada
penambah / pengurang dalam sistem komplemen ke-2 beserta bit tandanya, untuk
operasi penjumlahan menggunakan bit 0 dan untuk operasi pengurangan
menggunakan bit 1. Bentuk komplemen ke-1 menggunakan Gate Ex-Or sebagai
pembalik. Apabila hasil penjumlahan / pengurangan adalah positif, maka hasil
jumlah yang ditampilkan sudah benar, sedangkan apabila hasil penjumlahan /
pengurangan adalah negatif, maka hasil jumlah yang ditampilkan masih dalam
bentuk komplemen ke-2, agar mendapatkan hasil yang sesungguhnya dijadikan ke
komplemen ke-1 (dibalik) lalu ditambah 1 pada LSBnya, untuk itu diperlukan
rangkaian tambahan pada keluaran hasil jumlah / selisih, demikian juga apabila
diinginkan pada masukan tertambah / terkurang untuk bilangan negatif.
+
111
FA 4-Bit
A 3 A 2
S 3 S 2
0 Penjumlahan1 Pengurangan
B 0B 1B 2B 3A 0A 1
C 4
S 0S 1
Bit tanda
Tertambah / Terkurang Penambah / Pengurang
C 0
Hasil Jumlah / Selisih
Luapan /Pinjaman
Gambar 6.5 Penjumlah Komplemen Ke-2
6.5 Penjumlahan Serial
Kecepatan dalam menjumlahkan dua bilangan biner pada Penjumlah
Paralel relatif tinggi, karena semua bit dijumlahkan secara serentak. Tetapi
kecepatannya dibatasi oleh waktu perambatan luapan (carry), yang dapat diatasi
dengan menggunakan Generator Look Ahead Carry, untuk itu diperlukan
rangkaian tambahan sebanding dengan banyaknya bit yang dijumlahkan.
Pada Penjumlah Serial, proses penjumlahannya dilakukan seperti diatas
kertas, yaitu dijumlahkan per bit, sehingga rangkaiannya lebih sederhana tetapi
kecepatannya lebih rendah. Gambar 6.6 menunjukkan rangkaian Penjumlah
(Adder) Serial 4 bit yang menggunakan FF-D sebagai Register, Register A untuk
data yang dijumlahkan (Augend) dan juga sebagai hasil penjumlahan (Sum) serta
Register B untuk data penjumlahnya (Addend). Proses penjumlahannya dilakukan
di FA dimulai dari LSB yaitu A0, B0 dan keluaran Q dari FF carry yang sudah
direset sebelumnya. FF carry digunakan untuk menyimpan luapan/carry dari FA,
sehingga dapat dijumlahkan dengan bit berikutnya pada kedua Register.
112
Gambar 6.6 Penjumlah Serial
Hasil jumlahnya (Sum) diberikan ke masukan D dari Register A3, dan
akan muncul pada keluaran A3 saat pemberian pulsa Clock. Demikian pula
keluaran B0 dihubungkan ke masukan D dari Register B3, dan akan muncul pada
keluaran B3 bersamaan dengan pemberian pulsa Clock. Dengan cara ini maka
Register B tetap setelah operasi pergeseran selesai.
Tabel 6.3 Proses Penjumlah Serial
Pulsa Clock
Register A Register B Carry in
(Keluaran Q)Keluaran
SumKeluaran
CarryA3 A2 A1 A0 B3 B2 B1 B0
Awal 0 1 1 1 0 0 1 0 0 1 0
Pertama 1 0 1 1 0 0 0 1 0 0 1
Kedua 0 1 0 1 1 0 0 0 1 0 1
Ketiga 0 0 1 0 0 1 0 0 1 1 0
Keempat 1 0 0 1 0 0 1 0 0 1 0
Hasil Jumlah akhir
113
Operasi Adder serial ini dapat dengan mudah dipahami dengan contoh
berikut, misalnya Augend = 0111 yang disimpan di Register A dan Addend =
0010 di Regsiter B, dengan mereset FF carry ke 0, sehingga Carry-in = 0 dan
urutan prosesnya ditunjukkan pada tabel 6.3 diatas.
Gambar 6.6 diatas juga bisa digunakan untuk pengurangan atau
penjumlahan dalam sistem komplemen ke-2, yaitu yang dikurangi (minuend)
disimpan di Register A dan pengurang (subtrachend) di Register B yang
menggunakan keluaran untuk dihubungkan ke FA agar diperoleh bentuk
komplemen ke-1 (kebalikannya) serta Carryin = 1 (bentuk komplemen ke-2)
sebelum dijumlahkan. Setelah itu dilakukan proses yang sama seperti
penjumlahan bilangan biner biasa.
6.6 Penjumlahan BCD (Binary Coded Decimal)
Pada sistem digital seringkali beroperasi dalam kode desimal yang
dikodekan dalam biner (Binary Coded Decimal/BCD) dari pada kode biner biasa.
Yang memerlukan 4 bit kode biner untuk menyatakan tiap digit desimal dalam
kode BCD. Misalnya desimal 478 dalam kode BCD adalah :
4 7 8 Kode Desimal
0100 0111 1000 Kode BCD
Ada beberapa prosedur dalam menjumlahkan dua bilangan BCD, yaitu :
Jumlahkan kelompok kode BCD untuk tiap posisi digit desimal
Apabila hasil jumlahnya (sum) 9 atau kurang, itu adalah hasil
penjumlahan bentuk BCD yang benar
tetapi apabila hasil jumlahnya lebih besar dari 9, maka perlu dikoreksi,
yaitu menambahkan faktor koreksi (0110) pada hasil penjumlahan
tersebut dan ini menghasilkan luapan (carry) untuk dijumlahkan
dengan kode BCD berikutnya.
114
Tabel 6.4 Hasil Penjumlahan Dua Bilangan BCD
Hasil Jumlah BCD Tanpa Koreksi
Heksa desimal
Hasil Jumlah BCD Terkoreksi BCD
C4 S3 S2 S1 S0 Cn 3 2 1 0
0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 1 1 0 0 0 0 1 10 0 0 1 0 2 0 0 0 1 0 20 0 0 1 1 3 0 0 0 1 1 30 0 1 0 0 4 0 0 1 0 0 40 0 1 0 1 5 0 0 1 0 1 50 0 1 1 0 6 0 0 1 1 0 60 0 1 1 1 7 0 0 1 1 1 70 1 0 0 0 8 0 1 0 0 0 80 1 0 0 1 9 0 1 0 0 1 90 1 0 1 0 A 1 0 0 0 0 100 1 0 1 1 B 1 0 0 0 1 110 1 1 0 0 C 1 0 0 1 0 120 1 1 0 1 D 1 0 0 1 1 130 1 1 1 0 E 1 0 1 0 0 140 1 1 1 1 F 1 0 1 0 1 151 0 0 0 0 10 1 0 1 1 0 161 0 0 0 1 11 1 0 1 1 1 171 0 0 1 0 12 1 1 0 0 0 181 0 0 1 1 13 1 1 0 0 1 19
S1S0
S3S2
00 01 11 10
00 0 0 0 0
01 0 0 0 0
11 1 1 1 1
10 0 0 1 1
Persamaan Koreksi = C4 + S2S3 + S1S3
= C4 + S3 (S1 + S2)
(a) K’map Untuk Persamaan Koreksi (Penambah 0110)
harus dikoreksi
tanpa koreksi
115
(b) Rangkaian Penjumlah BCD
Gambar 6.7 Penjumlah BCD
Rangkaian Adder BCD harus mampu mendeteksi hasil jumlahnya kurang
dari 9 (1001), lebih besar dari 9 atau lebih besar dari 15, untuk dikoreksi menjadi
bilangan BCD yang benar. Untuk mendapatkan rangkaian pengkoreksinya tabel
6.4 menunjukkan semua kemungkinan hasil penjumlahan dua bilangan BCD. Dari
Tabel 6.4 tersebut tampak bahwa yang harus dikoreksi adalah hasil penjumlahan
10, 11, 12, 13, 14, 15, 16, 17, 18, 19. Dari sini jika dimasukkan pada K’map
diperoleh rangkaian pengkoreksi seperti yang ditunjukkan pada gambar 6.7.b.
116
6.7 Perkalian Bilangan Biner
Perkalian dalam bilangan biner dikerjakan seperti menggunakan kertas
dan pensil, yaitu dengan melakukan penjumlahan dan penggeseran berturut-turut
seperti contoh berikut :
1011 Yang dikalikan (Multiplicand) = 111101 Pengali (Multiplier) = 131011
0000 1011 1011 10001111 Hasil Perkalian (Product) = 143
Proses pengulangan bit bilangan Pengali berturut-turut dimulai dari LSB.
Jika bit Pengali adalah 1, bilangan yang dikalikan ditulis, tetapi apabila bit
Pengali adalah 0, maka ditulis 0. Baris berikutnya digeser kekiri satu bit dari baris
sebelumnya. Apabila semua bit Pengali sudah habis lalu dijumlahkan untuk
memperoleh hasil perkalian akhir.
Pada sistem digital, proses penjumlahannya dilakukan tiap dua bilangan
dan hasil penjumlahan akhirnya ditempatkan pada Penyimpan (Register). Untuk
efisiensi, apabila bit Pengali bernilai 0 tidak diperlukan penulisan 0 sehingga
tidak berakibat pada hasil akhir. Contoh yang lalu dapat dituliskan sebagai berikut
:
Multiplicand : 1011
Multiplier : 1101
1011 Bit pertama Multiplier = 1, Multiplicand ditulis
Multiplicand digeser kekiri satu bit (10110)
1011 Bit kedua Multiplier = 0, hasil yang ditulis Multiplicand
yang baru digeser kekiri satu bit (101100)
+101100 Bit ketiga Multiplier = 1, tulis Multiplicand yang baru
101111 Jumlahkan
Multiplicand yang baru digeser kekiri satu bit (1011000)
+1011000 Bit keempat Multiplier = 1, tulis Multiplicand yang baru
10001111 Jumlahkan untuk mendapat Hasil Perkalian akhir
X
+
X
117
(Product) = 143
Proses perkalian ini dapat diterapkan seperti ditunjukkan pada gambar 6.8
dengan 3 Register, yaitu Register X digunakan untuk menyimpan bit-bit
Pengali/Multiplier yang merupakan Register geser kanan, Register B digunakan
untuk menyimpan bit-bit yang dikalikan / Multiplicand yang merupakan Register
geser kiri dan Register A / Accumulator digunakan untuk menyimpan Hasil
Perkalian (Product).
Operasi rangkaian Perkalian dapat dijelaskan dengan gambar 6.9 dibawah
yang menunjukkan isi semua Register dan keluaran Adder oleh setiap pemberian
pulsa Clock. Langkah-langkah prosesnya sebagai berikut :
1. Reset Register A (00000000), set yang dikali (Multiplicand) pada Register B
(00001011) dan Pengali (Multiplier) pada Register X (1101), sehingga
keluaran Adder adalah hasil penjumlahan isi Register A dan B yaitu 00001011,
yang ditunjukkan pada gambar 6.9(a).
2. Pada pulsa Clock pertama, LSB Pengali (keluaran X0) adalah 1, sehingga pulsa
Clock tersebut keluar pada Gate And dan sisi positifnya menyebabkan Register
A berisi data dari keluaran Adder yang berasal dari penjumlahan isi Register B
dengan isi Register A yaitu 00001011. Sedangkan sisi negatif pulsa Clock
menyebabkan isi Register B bergeser kekiri menjadi 00010110 dan isi Register
X bergeser kekanan menjadi 0110, sehingga keluaran Adder adalah hasil
penjumlahan isi Register A (00001011) dan isi Register B (00010110) yaitu
00100001. Kondisi ini ditunjukkan pada gambar 6.9(b).
3. Pulsa Clock kedua, LSB Pengali (keluaran X0) adalah 0, sehingga keluaran
Gate And juga 0 dan isi Register A tetap. Sedangkan sisi negatif pulsa Clock
menyebabkan isi Register B bergeser kekiri menjadi 00101100 dan isi Register
X bergeser kekanan menjadi 0011, keluaran Adder adalah hasil penjumlahan
isi Register A (00001011) dan isi Register B (00101100) yaitu 00110111, yaitu
gambar 6.9(c).
118
Gam
bar
6.8
Ran
gkai
an P
enga
li B
ilan
gan
Bin
er
119
4. Pulsa Clock ketiga, LSB Pengali (keluaran X0) adalah 1, sehingga sisi positif
pulsa Clock menyebabkan Register A berisi data dari keluaran Adder yang
berasal dari penjumlahan isi Multiplicand dengan isi Register A (Accumulator)
yaitu 00110111. Sedangkan pada sisi negatif pulsa Clock menyebabkan isi
Register B bergeser kekiri menjadi 01011000 dan isi Register X bergeser
kekanan menjadi 0001, menyebabkan keluaran Adder adalah hasil
penjumlahan isi Register A (00110111) dan isi Register B (01011000) yaitu
10001111. Kondisi ini ditunjukkan pada gambar 6.9(d).
5. Pulsa Clock ketiga, LSB Pengali (keluaran X0) adalah 1, sehingga sisi positif
pulsa Clock menyebabkan Register A berisi data dari keluaran Adder yaitu
penjumlahan isi Register B dengan isi Register A yaitu 100011111. Sedangkan
pada sisi negatif pulsa Clock menyebabkan isi Register B bergeser kekiri
menjadi 10110000 dan isi Register X bergeser kekanan menjadi 0000,
menyebabkan keluaran Adder adalah hasil penjumlahan isi Register A
(10001111) dan isi Register B (10110000) yaitu 00111111. Kondisi ini
ditunjukkan pada gambar 6.9(e). Jadi Hasil perkalian (product) disimpan di
Register A (Accumulator).
Register A Register B Register X
120
00000000 00001011 1101 Sebelum pulsaClock pertama
Hasil Jumlah00001011
(a)
Register A Register B Register X00000000 00001011 1101 Setelah pulsa
Clock pertamaHasil Jumlah
00001011
(b)
Register A Register B Register X00000000 00001011 1101 Setelah pulsa
Clock keduaHasil Jumlah
00001011
(c)
Register A Register B Register X00000000 00001011 1101 Setelah pulsa
Clock ketigaHasil Jumlah
00001011
(d)
Register A Register B Register X
00000000 00001011 1101 Setelah pulsaClock keempat
Hasil Jumlah
00001011
(e)
Gambar 6.9 Isi Register Pada Proses Perkalian 1011 Dengan 1101
6.8 Permasalahan
121
6.8.1 Tunjukkanlah bagaimana Full Adder disusun dari Half Adder !
6.8.2 Dari gambar 6.5, berapakah keluaran FA untuk menjumlahkan :
(a) 7 + (– 7) (b) 5 + 10 (c) 5 + (-10) (d) 10 + (-5)
6.8.3 Ubahlah gambar 6.5 sehingga dapat digunakan untuk menjumlahkan dua
bilangan negatif dan hasil jumlahnya dalam bentuk TMF !
6.8.4 Rancanglah rangkain Look Ahead Carry untuk Adder 4-bit yang membang-
kitkan Carry C3 agar bisa dijumlahkan dengan MSB FA yang didasarkan
oleh nilai A0, B0, A1, B1, A2 dan B2 (Petunjuk : mulai dengan menulis
ekspresi C1 dalam fungsi A0, B0 dan C0, lalu tuliskan ekspresi C2 dalam
fungsi A1, B1 dan C1, kemudian substitusilah C1 kedalam ekspresi C2.
Tulislah ekspresi C3 dalam fungsi A2, B2 dan C2, lalu substitusilah ekspresi
C2 kedalam C3. Sederhanakan ekspresi akhir C3 dalam bentuk hasil
penjumlahan dari hasil perkalian (Sum Of Product / SOP) dan buatlah
rangkaiannya !
6.8.5 Berapakah waktu penundaan perambatan maksimum untuk Adder 8-bit
yang tersusun dari Gate-Gate logika, apabila waktu penundaan perambatan
tiap Gate adalah 20 ndetik ?
6.8.6 Penjumlah serial gambar 6.6 mempunyai waktu penundaan propagasi FA
adalah 50 ndetik dan FF adalah 20 ndetik, hitunglah frekuensi maksimum
pulsa Clock !
6.8.7 Gambarkanlah urutan keadaan tiap FF dan keluaran FA pada Penjumlah
serial gambar 6.6 untuk menjumlahkan 10 dan 7 ! Serta bagaimanakah
caranya apabila digunakan untuk penjumlahan 10 dan – 7 ?
6.8.8 Rancanglah Penjumlah BCD 3 digit dan tentukanlah keluaran Sum untuk
menjumlahkan kode BCD 376 dan 469 !
6.8.9 Tunjukkanlah isi Register A, B dan X serta keluaran Adder S0 – S7 setelah
tiap pulsa setelah proses perkalian 0111 (Multiplicand) dan 1001
(Multiplier) dengan menggunakan rangkaian Pengali gambar 6.8 !