Anda di halaman 1dari 34

KEMENTRIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA


ELECTRONIC ENGINERING POLYTECHNIC INSTITUTE OF SURABAYA
(EEPIS)
JL. RAYA ITS KEPUTIH SUKOLILO SURABAYA 60111 INDONESIA
TELP.(031) 5947280 FAX. (031) 5946114

PRAKTIKUM PIRANTI TERPROGRAM

LAPORAN

JUDUL : Perancangan ALU dan Shifter

PERCOBAAN : 4

NAMA : Made Wira Narendra Wirsuyana

KELAS : 2 D3 EB

NRP : 1103191043

DOSEN : Pak Arif Irwansyah

TANGGAL : 19 Maret 2021


Percobaan 4
Perancangan ALU dan Shifter
1.1.Tujuan :
• Mampu merancang dan mendemonstrasikan rangkaian ALU dan shifter sederhana pada
FPGA serta melaporkan hasil percobaannya.

1.2. Landasan Teori


Arithmatic Logical Unit (ALU), adalah salah satu bagian/komponen dalam sistem di
dalam sistem komputer yang berfungsi melakukan operasi/perhitungan aritmatika dan
logika (Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan, sedangkan
contoh operasi logika adalah logika AND dan OR. ALU bekerja besama-sama memori, di
mana 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.
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 4×2 pin data input (pinA dan pinB) dengan 4 pin keluaran
(pinF).
Arithmatic Logical Unit (ALU), fungsi unit ini adalah untuk melakukan suatu proses data
yang berbentuk angka dan logika, seperti data matematika dan statistika. ALU terdiri
dari register-register untuk menyimpan informasi.Tugas utama dari ALU adalah melakukan
perhitungan aritmatika (matematika) yang terjadi sesuai dengan instruksi program. Rangkaian
pada ALU (Arithmetic and Logic Unit) yang digunakan untuk menjumlahkan bilangan
dinamakan dengan Adder. Adder digunakan untuk memproses operasi aritmetika, Adder juga
disebut rangkaian kombinasional aritmatika.

Ada 3 jenis adder:

1) Rangkaian Adder dengan menjumlahkan dua bit disebut Half Adder.

2) Rangkaian Adder dengan menjumlahkan tiga bit disebut Full Adder.

3) Rangkain Adder dengan menjumlahkan banyak bit disebut Paralel Adder


1. HALF ADDER
Rangkaian Half Adder merupakan dasar penjumlahan bilangan Biner yang terdiri dari
satu bit, oleh karena itu dinamai 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
4. 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).

2. FULL ADDER
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 4×2 pin data input (pinA dan pinB) dengan 4
pin keluaran (pinF).
Arithmatic Logical Unit (ALU), fungsi unit ini adalah untuk melakukan suatu proses
data yang berbentuk angka dan logika, seperti data matematika dan statistika. ALU terdiri
dari register-register untuk menyimpan informasi.Tugas utama dari ALU adalah
melakukan perhitungan aritmatika (matematika) yang terjadi sesuai dengan instruksi
program. Rangkaian pada ALU (Arithmetic and Logic Unit) yang digunakan untuk
menjumlahkan bilangan dinamakan deACE=”Verdana, sans-serif”>Sebuah Full
Adder menjumlahkan dua bilangan yang telah dikonversikan menjadi bilangan-bilangan
biner. Masing-masing bit pada posisi yang sama saling dijumlahkan. Full Adder sebagai
penjumlah pada bit-bit selain yang terendah. Full Adder menjumlahkan dua bit input
ditambah dengan nilai Carry-Out dari penjumlahan bit sebelumnya. Output dari Full
Adder adalah hasil penjumlahan (Sum) dan bit kelebihannya (carry-out).

3. PARALEL ADDER
Rangkaian Parallel Adder adalah rangkaian penjumlah dari dua bilangan yang telah
dikonversikan ke dalam bentuk biner. Anggap ada dua buah register A dan B, masing-
masing register terdiri dari 4 bit biner : A3A2A1A0 dan B3B2B1B0.
Rangkaian Parallel Adder terdiri dari Sebuah Half Adder (HA) pada Least Significant
Bit (LSB) dari masing-masing input dan beberapa Full Adder pada bit-bit berikutnya.
Prinsip kerja dari Parallel Adder adalah sebagai berikut : penjumlahan dilakukan mulai
dari LSB-nya. Jika hasil penjumlahan adalah bilangan desimal “2” atau lebih, maka bit
kelebihannya disimpan pada Cout, sedangkan bit di bawahnya akan dikeluarkan pada Σ.
Begitu seterusnya menuju ke Most Significant Bit (MSB)nya.
Tugas lain dari ALU adalah melakukan keputusan dari operasi sesuai dengan instruksi
program yaitu operasi logika (logical operation). Operasi logika meliputi perbandingan
dua buah elemen logika dengan menggunakan operator logika.
• Arithmatic Logical Unit (ALU):

Bertugas membentuk fungsi – fungsi pengolahan data komputer. ALU sering disebut
mesin bahasa (machine language) karena bagian ini mengerjakan instruksi – instruksi
bahasa mesin yang diberikan%”> .

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 4×2 pin data input (pinA dan pinB) dengan 4
pin keluaran (pinF).

Arithmatic Logical Unit (ALU), fungsi unit ini adalah untuk melakukan suatu proses
data yang berbentuk angka dan logika, seperti data matematika dan statistika. ALU terdiri
dari register-register untuk menyimpan informasi.Tugas utama dari ALU adalah
melakukan perhitungan aritmatika (matematika) yang terjadi sesuai dengan instruksi
program. Rangkaian pada ALU (Arithmetic and Logic Unit) yang digunakan untuk
menjumlahkan bilangan dinamakan de padanya.

ALU terdiri dari dua bagian, yaitu unit arithmetika dan unit logika boolean, yang
masing – masing memiliki spesifikasi dan tugas tersendiri. Fungsi-fungsi yang
didefinisikan pada ALU adalah Add (penjumlahan), Addu (penjumlahan tidak bertanda),
Sub (pengurangan), Subu(pengurangan tidak bertanda), and, or,xor, sll (shift left logical),
srl (shift right logical), sra (shift right arithmetic), dan lain-lain.

Arithmetic Logical Unit (ALU) merupakan unit penalaran secara logic. ALU ini
merupakan Sirkuit CPU berkecepatan tinggi yang bertugas menghitung dan
membandingkan. Angka-angka dikirim dari memori ke ALU untuk dikalkulasi dan
kemudian dikirim kembali ke memori. Jika CPU diasumsikan sebagai otaknya komputer,
maka ada suatu alat lain di dalam CPU tersebut yang kenal dengan nama Arithmetic
Logical Unit (ALU), ALU inilah yang berfikir untuk menjalankan perintah yang
diberikan kepada CPU tersebut.

ALU sendiri merupakan suatu kesatuan alat yang terdiri dari berbagai komponen
perangkat elektronika termasuk di dalamnya sekelompok transistor, yang dikenal dengan
nama logic gate, dimana logic gate ini berfungsi untuk melaksanakan perintah dasar
matematika dan operasi logika. Kumpulan susunan dari logic gate inilah yang dapat
melakukan perintah perhitungan matematika yang lebih komplit seperti perintah “add”
untuk menambahkan bilangan, atau “devide” atau pembagian dari suatu bilangan. Selain
perintah matematika yang lebih komplit, kumpulan dari logic gate ini juga mampu untuk
melaksanakan perintah yang berhubungan dengan logika, seperti hasil perbandingan dua
buah bilangan.

Instruksi yang dapat dilaksanakan oleh ALU disebut dengan instruction set. Perintah
yang ada pada masing-masing CPU belum tentu sama, terutama CPU yang dibuat oleh
pembuat yang berbeda, katakanlah misalnya perintah yang dilaksanakan oleh CPU
buatan Intel belum tentu sama dengan CPU yang dibuat oleh Sun atau perusahaan
pembuat mikroprosesor lainnya. Jika perintah yang dijalankan oleh suatu CPU dengan
CPU lainnya adalah sama, maka pada level inilah suatu sistem dikatakan compatible.
Sehingga sebuah program atau perangkat lunak atau software yang dibuat berdasarkan
perintah yang ada pada Intel tidak akan bisa dijalankan untuk semua jenis
prosesor,kecuali untuk prosesor yang compatible dengannya.

HIERARCHICAL DESIGN yaitu perancangan circuit yang terdiri atas beberapa


submodule, dilakukan dengan cara membuat module-module terkecil terlebih dahulu
kemudian diintegrasikan menjadi module utama dalam TOP LEVEL.

TOP LEVEL dan LEVEL dibawahnya bisa berupa kombinasi VHDL-VHDL atau
SCHEMATIC-SCHEMATIC atau campuran/mix dari SCHEMATIC dan VHDL.
Pada percobaan ini akan dirancang Aritmatic Logic Unit (ALU) 4-bit yang terdiri atas
beberapa level module dan akan diselesaikan dengan pendekatan HIERARCHICAL
DESIGN serta perpaduan SCHEMATIC-VHDL. Langkah penyelesaian yang dilakukan
adalah dengan cara membuat semua sub-module yang ada dengan VHDL , setelah
dipastikan rancangan sub-module telah benar maka digenerate schematic simbolnya.
Langkah berikutnya dengan cara membuat TOP LEVEL berupa schematic, pada top level
ini semua sub-module yang telah dibuat diintegrasi menjadi satu sistem.

Mode kalkulasi dipilih dengan cara menekan sebuah push-button. Mode yang
dipilih akan ditampilkan pada led. Bilangan A dan B masing-masing selebar 4-bit yang
akan dimasukkan menggunakan DIP-switch. Apabila push-button lainnya ditekan, yang
berfungsi sebagai tombol enter, maka hasil kalkulasi akan ditampilkan pada dua buah
seven segmen dalam format heksadesimal.

Nomor Mode Fungsi


000 A+B
001 A-B
010 A*B
011 2s Complement A
100 2s Complement B
101 A AND B
110 A OR B
111 A XOR B

1.3.Peralatan yang dibutuhkan


• Komputer yang sudah terinstall software XILINX ISE Design Suite 14.7 dan Adept
Digilent.
• BASYS 2 FPGA board.
1.4.Langkah Percobaan

1. Buka software ISE Design Suite 14.7

2. Klik pada tombol “New Project” untuk membuat project baru.

3. Beri nama project dan letakkan project pada folder yang ditentukan serta Top-
level source type adalah HDL
4. Setting jenis FPGA dan konfigurasi lainnya sesuai gambar dibawah, dimana

Family: Spartan-3E

Device: XC3S100E atau XC3S250E, tergantung jenis chip board anda

Package: CP132

Speed: -4

Preferred Language: VHDL


5. Klik Next dan anda akan mendapat konfirmasi konfigurasi yang telah dilakukan.
Selanjutnya klik Finish

6. Selanjutnya buat file VHDL dengan cara klik kanan pada nama project,
selanjutnya pilih New Source

7. Implementasikan rancangan dan VHDL berikut, buat VHDL yang lengkap


selanjutnya simulasikan.

8. VHDL Shift Register


---------------------------------------------------
-- 3-bit Shift-Register/Shifter
-- By WZ
---------------------------------------------------
library ieee ;
use ieee.std_logic_1164.all;
---------------------------------------------------
entity shift_reg is
port( I: in std_logic;
clock: in std_logic;
shift: in std_logic;
Q: out std_logic;
);
end shift_reg;
---------------------------------------------------
architecture behv of shift_reg is
-- initialize the declared signal
signal S: std_logic_vector(2 downto 0):="111";
begin
process(I, clock, shift, S)
begin

-- everything happens upon the clock changing


if clock'event and clock='1' then
if shift = '1' then
S <= I & S(2 downto 1);
end if;
end if;
end process;

-- concurrent assignment
Q <= S(0);
end behv;
12. VHDL ALU
---------------------------------------------------
-- Simple ALU Module
-- by WZ
--
-- ALU stands for arithmatic logic unit.
-- It perform multiple operations according to
-- the control bits.
-- we use 2's complement subraction in this example
-- two 2-bit inputs & carry-bit ignored
---------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
---------------------------------------------------
entity ALU is
port( A: in std_logic_vector(1 downto 0);
B:
in std_logic_vector(1 downto 0);
Sel:
in std_logic_vector(1 downto 0);
Res:
out std_logic_vector(1 downto 0)
);
end ALU;
---------------------------------------------------
architecture behv of ALU is
begin
process(A,B,Sel)
begin
-- use case statement to achieve
-- different operations of ALU
case Sel is
when "00" =>
Res <= A + B;
when "01" =>
Res <= A + (not B) + 1;
when "10" =>
Res <= A and B;
when "11" =>
Res <= A or B;
when others =>
Res <= "XX";
end case;
end process;
end behv;
---------------------------------------------------
13. Lakukan pengecekan penulisan,dengan cara RUN Check Syntax sebagaimana
gambar berikut.

Lanjutkan ke langkah 13, jika tidak ada error.

15. Selanjutnya membuat file Test Bench untuk kedua program VHD tersebut.

16. Mensimulasikan program Test Bench apakah sudah sesuai dengan program VHD
atau belum, jika belum revisi Kembali program VHD dan jalankan Kembali
program Test Bench sampai hasil yang diinginkan sesuai.

17. Mengimplementasikan program VHD tersebut ke dalam board FPGA.


➢ TUGAS PRAKTIKUM 4
Tugas untuk dikerjakan
a. Mengubah program shift register agar perpindahan register dari kanan ke kiri.
b. Mengubah program ALU menjadi input 4 bit, proses aritmatika menjadi 8
proses sehingga selector manjadi 3 bit, dan pada proses tersebut harus
terdapat proses perkalian sehingga output harus menjadi 8 bit.
1.5. Data Hasil Percobaan
Hasil Percobaan (Percobaan 1 Shift Register) :

1. Membuka software ISE Design Suite 14.7

2. Meng-lik tombol “New Project” untuk membuat project baru.


3. Memberi nama project dan letakkan project pada folder yang ditentukan serta
Top-level source type adalah HDL
4. Mensetting jenis FPGA dan konfigurasi lainnya sesuai gambar dibawah, dimana

Family: Spartan-3E

Device: XC3S100E atau XC3S250E, tergantung jenis chip board anda

Package: CP132

Speed: -4

Preferred Language: VHDL


5. Meng-klik Next dan anda akan mendapat konfirmasi konfigurasi yang telah
dilakukan. Selanjutnya klik Finish

6. Selanjutnya membuat file VHDL dengan cara klik kanan pada nama project,
selanjutnya pilih New Source

7. Memilih jenis source VHDL Module dan berilah nama


8. Selanjutnya langsung meng-klik Next kemudian Finish, karena saya akan
membuat port secara manual dengan text.

9. Maka saya akan mendapatkan file baru (*.vhd), tetapi tanpa deskripsi port yang
akan digunakan. Sebagaimana gambar dibawah:

10. Untuk percobaan 1 ini saya akan membuat Shift Register. Dimana input akan
didapatkan dari I, shift, clock, dan output akan keluar ke Q. Prinsip kerja dari
program ini yaitu menggeser isi dari register shift “111” akan digeser dengan
input dari I, dan register paling kanan yang sudah tergeser akan keluar melalui
output Q.

11. Edit VHDL code menjadi seperti berikut:

12. Melakukan pengecekan penulisan,dengan cara RUN Check Syntax sebagaimana


gambar berikut.
Lanjutkan ke langkah 13, jika tidak ada error.
13. Selanjutnya membuat simulasinya menggunakan testbench terlebih dahulu agar
kita tahu apakah program sudah berjalan dengan yang diharapkan atau belum.
Untuk programnya dapat dilihat dibawah ini :
Kemudian menjalankan simulate behavioral model, setelah dijalankan simulasinya
didapat hasil simulasi seperti di bawah ini

14. Selanjutnya RUN Synthesize

15. Lakukan Generate Programming File untuk mendapatkan bit file yang akan di
upload ke FPGA. Apabila tidak ada error, maka anda akan mendapatkan bit file.
Hasil Percobaan (Percobaan 2 ALU) :
1. Membuat file baru untuk percobaan 2 yaitu ALU, kemudian mengedit program
VHD dengan program seperti di bawah ini:

2. Melakukan check syntax agar dapat mengetahui apakah syntax sudah benar atau
masih terdapat error pada program.
3. Melakukan simulasi dengan membuat file Test Bench terlebih dahulu agar dapat
mengetahui apakah hasil yang keluar sudah sesuai dengan keinginan program
VHD atau masih terdapat kesalahan pada program VHD.
4. Mengedit program Test Bench dengan program seperti dibawah ini:
5. Setelah membuat file Test Bench dan saat dijalankan hasil simulasi akan telrihat
seperti di bawah ini :

6. Selanjutnya RUN Synthesize

7. Lakukan Generate Programming File untuk mendapatkan bit file yang akan di
upload ke FPGA. Apabila tidak ada error, maka anda akan mendapatkan bit file.
➢ Hasil Percobaan (Tugas Percobaan 4):
Tugas untuk dikerjakan
a. Mengubah program shift register agar perpindahan register dari kanan ke kiri.
b. Mengubah program ALU menjadi input 4 bit, proses aritmatika menjadi 8
proses sehingga selector manjadi 3 bit, dan pada proses tersebut harus
terdapat proses perkalian sehingga output harus menjadi 8 bit.

➢ Hasil Tugas a
1. Membuat file VHD seperti pada langkah-langkah kemudian mengedit program VHD
dengan program seperti di bawah ini :

2. Kemudian melakukan check syntax seperti pada langkah-langkah dan setelah sukses,
selanjutnya melakukan simulasi dengan membuat file Test Bench, untuk program Test
Bench yang saya buat seperti di bawah ini :
3. Kemudian menjalankan program Test Bench dengan menjalankan Simulate
Behavioral Model, dan akan keluar hasil seperti di bawah ini :

4. Selanjutnya RUN Synthesize

5. Lakukan Generate Programming File untuk mendapatkan bit file yang akan
di upload ke FPGA. Apabila tidak ada error, maka saya akan mendapatkan bit
file yang siap di upload.

➢ Hasil Tugas B
1. Membuat file VHD seperti pada langkah-langkah kemudian mengedit program VHD
dengan program seperti di bawah ini :
2. Kemudian melakukan check syntax seperti pada langkah-langkah dan setelah
sukses, selanjutnya melakukan simulasi dengan membuat file Test Bench, untuk
program Test Bench yang saya buat seperti di bawah ini :
3. Kemudian menjalankan program Test Bench dengan menjalankan Simulate
Behavioral Model, dan akan keluar hasil seperti di bawah ini :

4. Selanjutnya RUN Synthesize

5. Lakukan Generate Programming File untuk mendapatkan bit file yang


akan di upload ke FPGA. Apabila tidak ada error, maka saya akan
mendapatkan bit file yang siap di upload.
1.6. Analisa dan Kesimpulan
ANALISA
Pada praktikum piranti terprogram ini, saya melakukan percobaan “Shift Regiter dan
ALU”. Dengan melakukan percobaan ini maka saya diharapkan mampu Mampu merancang
dan mendemonstrasikan rangkaian ALU dan shifter sederhana pada FPGA serta melaporkan
hasil percobaannya. Seperti yang kita tahu Field-Programmable Gate Array (FPGA)
merupakan sebuah IC digital yang sering digunakan untuk mengimplementasikan rangkaian
digital. FPGA berbentuk komponen elektronika dan semikonduktor yang terdiri dari
komponen gerbang terprogram (programmable logic) dan sambungan terprogram
(interkoneksi) atau programmable device besar yang tersusun atas modul-modul logika
independen yang dapat di konfigurasi oleh pemakai yang di hubungkan melalui kanal-kanal
routing yang dapat di program.
Pada praktikum ini terdapat 2 percobaan, percobaan pertama yang saya kerjakan yaitu
membuat Shift Register. Hal yang saya lakukan paling awal seperti biasa yaitu membuat “New
Project” pada software ISE Design Suite dan kemudian memberikan nama file dan mensetting
Top-level source type-nya HDL, selanjutnya mengatur format konfigurasi file sebagai berikut:

Family: Spartan-3E

Device: XC3S100E atau XC3S250E, tergantung jenis chip board anda

Package: CP132

Speed: -4

Preferred Language: VHDL

Kemudian membuat New Source File untuk deskripsi port hardware yang nantinya akan
ditulis dengan syntax sebagai berikut:

---------------------------------------------------
-- 3-bit Shift-Register/Shifter
-- By WZ
---------------------------------------------------
library ieee ;
use ieee.std_logic_1164.all;
---------------------------------------------------
entity shift_reg is
port( I: in std_logic;
clock: in std_logic;
shift: in std_logic;
Q: out std_logic;
);
end shift_reg;
---------------------------------------------------
architecture behv of shift_reg is
-- initialize the declared signal
signal S: std_logic_vector(2 downto 0):="111";
begin
process(I, clock, shift, S)
begin
-- everything happens upon the clock changing
if clock'event and clock='1' then
if shift = '1' then
S <= I & S(2 downto 1);
end if;
end if;
end process;
-- concurrent assignment
Q <= S(0);
end behv;
Setelah itu selesai selanjutnya melakukan pengecekan syntax untuk melihat apakah syntax
telah benar. Selanjutnya melakukan simulasi testbench terlebih dahulu agar mengetahui
apakah program sudah berjalan seperti yang diharapkan atau tidak sehingga resiko upload
ulang dapat diminamlisir. Hasil dari program testbench yang sudah tertera pada data hasil
praktkum terlihat seperti berikut :

Terlihat bahwa di simulasi register awal yaitu 111 kemudian saat clock 1 dan shift 1 dan
terdapat input I = 0, maka register akan bergeser ke kanan dari 111 menjadi 011 dan
kemudian saat clock, shift, dan input I sama dengan 1 maka register akan bergeser ke kanan
lagi dari 011 menjadi 101, dan begitu seterusnya. Untuk output dari shifter akan
dikeluarkan melalui Q dimana yang dikeluarkan oleh Q hanya bit ke 0 atau yang paling
kanan.
Setelah memasukkan koding inisiasi selanjutnya menjalankan Synthesize dan jika sudah
sukses selanjutnya meng-Generating Programming File agar mendapatkan file bit yang siap
untuk diupload pada hardware FPGA.
Jika dibuat dalam bentuk tabel maka hasil akhir dari percobaan ini yaitu :
Reg Input (I) Reg’ Output (Q <= S(0))
111 0 011 1
011 1 101 1
101 0 010 0
010 1 101 1
… … … …
Dst.. Dst.. Dst.. Dst..

Selanjutnya hal ke-2 yang saya kerjakan yaitu membuat program ALU, dimana langkah-
langkah awal sama seperti percobaan 1, yang berbeda hanya kodingan program seperti di
bawah ini:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity perc_alu is
port( clock: in std_logic;
A: in std_logic_vector(1 downto 0);
B: in std_logic_vector(1 downto 0);
Sel: in std_logic_vector(1 downto 0);
Res: out std_logic_vector(1 downto 0)
);
end perc_alu;

architecture Behavioral of perc_alu is

begin
process(A,B,Sel)
begin
-- use case statement to achieve
-- different operations of ALU
case Sel is
when "00" =>
Res <= A + B;
when "01" =>
Res <= A + (not B) + 1;
when "10" =>
Res <= A and B;
when "11" =>
Res <= A or B;
when others =>
Res <= "XX";
end case;
end process;
end Behavioral;

Selanjutnya sama seperti percobaan yaitu melakukan simulasi testbench, untuk program
testbench terlihat seperti pada data hasil percobaan dan hasil dari testbench terlihat seperti
dibawah ini :

Terlihat pada hasil simulasi input A = 2 (10), dan B = 1 (01), 50 ns pertama selector
mengeluarkan biner 00 yang berarti melakukan proses penjumlahan karena pada program
VHD tertulis saat sel = 00 maka prosenya yaitu A + B dan terlihat hasil dari 2 tambah 1
yaitu 3 (11) , kemudian 50 ns berikutnya terlihat selector mengeluarkan biner 01 yang
berarti proses pengurangan berjalan dan terlihat hasil dari 2 – 1 = 1 (01) pada simulasi, dan
untuk selector 10 yaitu AND dan selector 11 yaitu OR dan terlihat hasilnya 10 AND 01 =
00, dan 10 OR 01 = 11.
Setelah memasukkan koding inisiasi selanjutnya menjalankan Synthesize dan jika sudah
sukses selanjutnya meng-Generating Programming File agar mendapatkan file bit yang
siap untuk diupload pada hardware FPGA.
Untuk hasil dari program ini yaitu terlihat di bawah ini:
Selector Proses Hasil
00 A+B 11
01 A–B 01
10 A AND B 00
11 A OR B 11

Untuk tugas dalam percobaan ke 4 ini hampir sama dengan percobaan namun perbedaan
dalam tugas Shifter dari kanan ke kiri yaitu pada program Shifter nya yaitu dimana program
untuk pergeseran register ke kiri yaitu sebagai berikut :
Program Shifter ke kanan : S <= I & S(2 downto 1);
Program Shifter ke kiri : S <= S(1 downto 0) & I;
Kemudian untuk tugas ALU programnya seperti berikut:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity t_alu is
port( clock: in std_logic;
A: in std_logic_vector(3 downto 0);
B: in std_logic_vector(3 downto 0);
Sel: in std_logic_vector(2 downto 0);
Res: out std_logic_vector(7 downto 0)
);
end t_alu;
architecture Behavioral of t_alu is
begin
process(A,B,Sel)
begin
-- use case statement to achieve
-- different operations of ALU
case Sel is
when "000" =>
Res <= ("0000" & A) + ("0000" & B); --penjumlahan
when "001" =>
Res <= ("0000"&A) + not ("0000"&B) + 1; --pengurangan
when "010" =>
Res <= ("0000"&A)and("0000"&B); --operasi and
when "011" =>
Res <= ("0000"&A) or ("0000"&B); --operasi or
when "100" =>
Res <= A * B; --perkalian
when "101" =>
Res <= ("0000"&A) xor ("0000"&B); --operasi exor
when "110" =>
Res <= ("0000"&A) nor("0000"&B); --operasi not or
when "111" =>
Res <= ("0000"&A) nand ("0000"&B); --operasi not and
when others =>
Res <="XXXXXXXX";
end case;
end process;
end Behavioral;

Output 8 bit harus dibuat karena dalam proses aritmatika tersebut terdapat perkalian dimana
output untuk 4 input dengan proses perkalian adalah 8 bit.
KESIMPULAN
Setelah melakukan Percobaan dan Tugas pada praktikum ke-4 kali ini, didapat sebuah
analisa dan dari analisa itu didapat sebuah kesimpulan yaitu :
a. Field-Programmable Gate Array (FPGA) merupakan sebuah IC digital yang sering
digunakan untuk mengimplementasikan rangkaian digital.
b. Arithmatic Logical Unit (ALU), adalah salah satu bagian/komponen dalam sistem di dalam
sistem komputer yang berfungsi melakukan operasi/perhitungan aritmatika dan
logika (Contoh operasi aritmatika adalah operasi penjumlahan dan pengurangan,
sedangkan contoh operasi logika adalah logika AND dan OR. ALU bekerja besama-sama
memori, di mana hasil dari perhitungan di dalam ALU di simpan ke dalam memori.
c. Sebelum membuat file Implementation ke hardware, sebelumnya harus membuat simulasi
dari program tersebut agar dapat mengetahui apakah program yang dibuat sudah benar apa
tidak. Hal itu dilakukan agar resiko mengupload ulang program ke hardware tidak
dilakukan.
d. Percobaan Shift Register yaitu kita membuat pergeseran register bisa dari kanan ke kiri,
dengan output dari register tersebut adalah bit paling kanan atau paling kiri.
e. Percobaaan ALU, yaitu program aritmatika dengan input dan selector dimana selector ini
memilih proses aritmatika mana yang akan dijalankan.
f. Untuk tugas ALU dimana menggunakan 8 bit output padahal input hanya 4 bit, hal itu
disebabkan karena proses aritmatika perkalian membutuhkan output 8 bit untuk input 4 bit
agar dapat terlihat semua hasil binernya.
g. FPGA ini merupakan IC tipe HDL yang mana pemakai dapat mendesain hardware sesuai
yang diinginkan di dalam IC FPGA.

Anda mungkin juga menyukai