Selasa, 02 November 2010

Mempelajari ALU | Arithmatic Logic Unit

Pada saat sekarang ini sebuah chip/IC dapat mempunyai beberapa ALU sekaligus yang memungkinkan untuk melakukan kalkulasi secara paralel. Salah satu chip ALU yang sederhana (terdiri dari 1 buah ALU) adalah IC 74LS382/HC382ALU (TTL). IC ini terdiri dari 20 kaki dan beroperasi dengan 4x2 pin data input (pinA dan pinB) dengan 4 pin keluaran (pinF).

A.) PENGERTIAN ALU
Arithmatic and Logic Unit (ALU), adalah salah satu bagian/komponen dalam dari sebuah mikroprosesor yang berfungsi melakukan operasi seperti penjumlahan, pengurangan dan beberapa logika lain). Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan, sedangkan contoh operasi untuk logika adalah logika AND dan OR. ALU bekerja besama-sama memori. Dimana hasil dari perhitungan di dalam ALU di simpan ke dalam memori.

Perhitungan dalam ALU menggunakan kode biner, yang merepresentasikan instruksi yang akan dieksekusi (opcode) dan data yang diolah (operand). ALU biasanya menggunakan sistem bilangan biner two’s complement.

ALU mendapat data dari register. Kemudian data tersebut diproses dan hasilnya akan disimpan dalam register tersendiri yaitu ALU output register, sebelum disimpan dalam memori.

B.) TUGAS ALU
Tugas utama dari ALU (Arithmetic And Logic Unit) adalah melakukan semua perhitungan aritmatika atau matematika yang terjadi sesuai dengan instruksi program. ALU melakukan operasi aritmatika yang lainnya. Seperti pengurangan, pengurangan, dan pembagian dilakukan dengan dasar penjumlahan. Sehingga sirkuit elektronik di ALU yang digunakan untuk melaksanakan operasi aritmatika ini disebut adder.


Selain melakukan perhitungan aritmethic ALU dapat pula berfungsi untuk melakukan keputusan dari operasi logika sesuai dengan instruksi program. Operasi logikanya ( logical operation ) meliputi perbandingan dua buah elemen logika dengan menggunakan operator lagika, yaitu :
a. sama dengan ( = )
b. tidak sama dengan ( <> )
c. kurang dari ( < ) d. kurang atau sama dengan dari ( < = ) e. lebih besar dari ( > )
f. lebih besar atau sama dengan dari ( > = )


C.) FUNGSI-FUNGSI PADA ALU
Fungsi-fungsi yang didefinisikan pada ALU adalah :
1.) Add (penjumlahan),
2.) Addu (penjumlahan tidak bertanda),
3.) Sub (pengurangan),
4.) Subu (pengurangan tidak bertanda),
5.) and, or, xor, sll (shift left logical),
6.) srl (shift right logical),
7.) sra (shift right arithmetic), dan lain-lain.


D.) RANGKAIAN-RANGKAIAN PADA ALU

* Adder
Adder adalah Rangkaian ALU (Arithmetic and Logic Unit) yang digunakan untuk menjumlahkan bilangan. Karena Adder digunakan untuk memproses operasi aritmetika, maka Adder juga sering disebut rangkaian kombinasional aritmetika. Ada 2 jenis Adder :



1. Rangkaian Adder yang hanya menjumlahkan dua bit disebut Half Adder.
2. Rangkaian Adder yang menjumlahkan tiga bit disebut Full Adder.
3. Rangkaian Adder yang menjumlahkan banyak bit disebut paralel Adder


* Half Adder
Rangkaian half adder merupakan dasar penjumlahan bilangan biner yang masingmasing
hanya terdiri dari satu bit, oleh karena itu dinamakan penjumlah tak lengkap.

1. Jika A=0 dan B=0 dijumlahkan, hasilnya S (Sum) = 0.
2. Jika A=0 dan B=1 dijumlahkan, hasilnya S (Sum) = 1.
3. Jika A=1 dan B=1 dijumlahkan, hasilnya S (Sum) = 0. dengan nilai pindahan
Cy(Carry Out) = 1.

Dengan demikian, half adder memiliki 2 masukan (A dan B) dan dua keluaran (S dan
Cy).


* Full Adder
Full adder berfungsi untuk mengolah penjumlahan untuk 3 bit bilangan atau lebih (bit tidak terbatas), oleh karena itu dinamakan rangkaian penjumlah lengkap


*Parallel Adder
Parallel Adder adalah rangkaian Full Adder yang disusun secara parallel dan berfungsi untuk menjumlah bilangan biner berapapun bitnya, tergantung jumlah Full Adder yang diparallelkan. Gambar berikut menunjukkan Parallel Adder yang terdiri dari 4 buah Full Adder yang tersusun parallel sehingga membentuk sebuah penjumlah 4 bit.




E.) CONTOH OPERASI DAN RANCANGAN ALU
Operasi ALU bergantung pada masukan ALU_sel sebagaimana ditunjukkan pada Tabel

ALU-SEL OPERASI
000 Alu_out = alu_inb
001 Alu_out = Alu_ina AND alu_inb
010 Alu_out = Alu_ina OR alu_inb
011 Alu_out = NOT Alu_ina
100 Alu_out = Alu_ina + alu_inb
101 Alu_out = Alu_ina – alu_inb
110 Alu_out = Alu_ina +1
111 Alu_out = Alu_ina -1


Dalam rancangan ALU dengan deskripsi VHDL digunakan pernyataan case untuk menentukan operasi yang dijalankan oleh ALU. Pernyataan case akan memeriksa masukan alu_sel, selanjutnya menjalankan operasi yang sesuai. Misal, masukan alu_sel adalah “001”, maka rancangan akan menjalankan operasi logika AND terhadap dua buah masukan data. Deskripsi VHDL-nya sebagai berikut:


library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity alu is port (
alu_sel: in std_logic_vector (2 downto 0);
alu_inb: in std_logic_vector (7 downto 0);
alu_ina: in std_logic_vector (7 downto 0);
alu_out: out std_logic_vector (7 downto 0));
end alu;
architecture behavior of alu is
begin
process(alu_sel,alu_ina,alu_inb)
begin
case alu_sel is
when "001" => alu_out <= alu_ina AND alu_inb; when "010" => alu_out <= alu_ina OR alu_inb; when "011" => alu_out <= NOT alu_ina; when "100" => alu_out <= alu_ina + alu_inb; when "101" => alu_out <= alu_ina - alu_inb; when "110" => alu_out <= alu_ina + 1; --inc when "111" => alu_out <= alu_ina - 1; --dec when others => alu_out <= alu_inb;
end case;
end process;
end behavior;

Tidak ada komentar:

Posting Komentar