• Tidak ada hasil yang ditemukan

I. Pendahuluan. II. Tujuan. III. Gambaran Disain. MODUL 4 Kalkulator 4-bit

N/A
N/A
Protected

Academic year: 2021

Membagikan "I. Pendahuluan. II. Tujuan. III. Gambaran Disain. MODUL 4 Kalkulator 4-bit"

Copied!
9
0
0

Teks penuh

(1)

MODUL 4

Kalkulator 4-bit

I. Pendahuluan

Pada praktikum ini, anda akan mempelajari cara mendisain beberapa sub-disain dari sebuah sistem besar stopwatch menggunakan VHDL. Sub-disain yang dibuat ada empat macam yaitu bagian sinkronisasi input untuk menghilangkan efek bouncing karena menggunakan saklar mekanik sebagai masukan, bagian pemilih mode kalkulasi untuk memilih satu dari sepuluh macam mode kalkulasi, bagian kalkulator sebagai inti dari sistem untuk melakukan perhitungan, dan bagian untuk menampilkan nilai hasil perhitungan ke seven segmen. Sistem stopwatch ini direalisasikan pada IC FPGA.

II. Tujuan

Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :

• lebih memahami cara menggunakan software ISE WebPack untuk membuat disain pada IC FPGA dan menggunakan software untuk melakukan download.

• dapat membuat disain untuk sinkonisasi input dan menghilangkan efek bouncing dengan VHDL.

• dapat membuat counter dan latch dengan VHDL.

• dapat memanfaatkan fungsi matematik dan fungsi logika dengan VHDL. • dapat membuat disain kalkulator 4-bit sederhana.

III. Gambaran Disain

Bagian-bagian penyusun kalkulator 4-bit ditulis menggunakan VHDL, setelah itu dikonversi menjadi modul skematik. Modul-modul skematik tersebut disusun pada bidang gambar menggunakan Xilinx ECS (Elkectronic Capture Schematic) yang merupakan fasilitas pada ISE WebPack untuk menuliskan disain menggunakan simbol-simbol secara skematik. Kalkulator yang akan didisain mempunyai 10 mode kalkulasi. Mode kalkulasi dipilih menggunakan sebuah push-button. Dua bilangan masing-masing selebar 4-bit dimasukkan menggunakan dipswitch 8-pin. Kemudian disediakan sebuah push-button lain sebagai tombol enter, dimana setelah tombol enter ditekan maka hasil perhitungan akan ditampilkan pada seven segmen. Guna mensinkronkan seluruh modul maka digunakan sebuah sumber clock eksternal yang dihasilkan oleh osilator pada board.

(2)

IV. Dasar Teori

Kalkulator 4-bit

Pada praktikum ini akan dibuat kalkulator sederhana. Blok diagram dari sistem kalkulator ditunjukkan oleh gambar 1. Kalkulator ini menerima masukan dua bilangan masing-masing selebar 4-bit. Adapun fungsi perhitungan yang dapat dikerjakan oleh kalkulator 4-bit ini ditunjukkan oleh tabel 1.

Gambar 1. Blok diagram sistem kalkulator 4-bit

Tabel 1. Mode kalkulasi

Nomor Mode Fungsi

1 A+B 2 A-B 3 A*B 4 -A 5 -B 6 A AND B 7 A OR B 8 A XOR B 9 A SHL B 10 A SHR B

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.

(3)

V. Peralatan

• 1 set PC yang dilengkapi dengan software ISE WebPack dan ModelSim. • 1 development board XSA-50 dan XSTend Board

• 1 power-supply +9VDC

VI. Prosedur Praktikum

Untuk merealisasikan gambar 1, maka disain besar tersebut dapat dibuat empat buah blok disain yang lebih kecil yaitu:

1. Blok sinkronisasi input 2. Blok pemilih mode kalkulasi 3. Blok kalkulator

4. Blok tampilan ke seven segmen

Empat blok diatas didisain menggunakan VHDL. Kemudian buat (create) menjadi skematik. Hubungkan keempat blok secara skematik (top-level disain project adalah skematik). Kemudian mendefinisikan koneksi pin-pin IC nya menggunakan file *.ucf. Maka project siap disintesis, implementasi, dan mendownload bit-stream ke dalam divais.

Secara garis besar, langkah-langkah praktikum sebagai berikut:

1. Buatlah project baru dengan tipe top-level modul skematik, tempatkan project tersebut pada direktori e:\embedded

2. Pilih nilai parameter berikut :

device family: Spartan2 device: xc2s50

package: tq144 speed grade: -6

3. Tambahkan (new source) kedalam project tersebut empat disain modul VHDL, lakukan check-syntax, bila tidak ada error buatlah (create) simbol skematiknya.

4. Tambahkan kedalam project sebuah modul skematik sebagai top-level. Hubungkan keempat modul tersebut secara skematik.

5. Tambahkan kedalam project sebuah file ucf untuk mendefinisikan pin-pin yang dipakai, sesuaikan dengan nama pin pada modul skematik.

6. Highlight modul skematik, klik ganda Generate Programming File untuk melakukan sintesis dan implementasi. Apabila tidak ada error maka akan dihasilkan file bit-stream dengan ekstensi *.BIT

7. Dengan menggunakan GXSLOAD, lakukan download kedalam target.

8. Pada board, pilih mode kalkulasi, masukkan nilai bilangan pada dip-switch, tekan enter, maka seven segmen akan menampilkan hasilnya.

(4)

Gambar 2. Posisi I/O pada board yang digunakan

Berikut panduan untuk membuat kode VHDLnya. Blok sinkronisasi input

Semua blok didisain secara sinkron menggunakan sebuah sinyal clock yang sama, penekanan tombol push-button akan disinkronkan terhadap clock. Clock yang digunakan (default) mempunyai frekuensi 50MHz atau 20ndetik sedangkan penekanan tombol push-button dapat menghasilkan pulsa yang lebih lebar sekitar beberapa milidetik. Ilustrasinya diperlihatkan oleh gambar 3. Blok tersebut bertugas menghasilkan satu pulsa selebar satu periode clock.

Gambar 3. Mensinkronkan input yang lebih lebar terhadap clock

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

(5)

end debouncing;

architecture Behavioral of debouncing is

signal A,B : std_logic_vector(2 downto 0) := "000";

begin

process(clk,enter)

begin

if (clk'event and clk='1') then

A <= A(1 downto 0) & enter; -- shift left

end if;

end process;

process(clk,mode)

begin

if (clk'event and clk='1') then

B <= B(1 downto 0) & mode; -- shift left

end if;

end process;

enter_db <= not(A(2)) and A(1) and A(0); mode_db <= not(B(2)) and B(1) and B(0);

end Behavioral;

Blok pemilih mode kalkulasi

Bagian ini bertugas untuk menghasilkan hitungan dari 0 sampai 9. Hasil hitungan tersebut digunakan untuk menentukan mode pilihan kalkulasi seperti pada tabel 1. Mode pilihan kalkulasi ini ditampilkan pada 10-buah led yang terdapat pada board.

Gambar 4. Mendapatkan mode pilihan dari 0 sampai 9

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity pilih_mode is port(

clk : in std_logic; mode_db : in std_logic;

barled : out std_logic_vector(10 downto 1); pilihan : out std_logic_vector(3 downto 0) );

end pilih_mode;

architecture Behavioral of pilih_mode is

signal count : std_logic_vector(3 downto 0) := "0000";

begin

process(clk,mode_db)

begin

if (clk'event and clk='1') then if (mode_db='1') then

if (count >= "1001") then

count <= "0000";

(6)

count <= count + "0001"; end if; end if; end if; end process; -- keluarkan pilihan <= count; -- tampilkan

barled <= "0000000001" when (count="0000") else

"0000000010" when (count="0001") else

"0000000100" when (count="0010") else

"0000001000" when (count="0011") else

"0000010000" when (count="0100") else

"0000100000" when (count="0101") else

"0001000000" when (count="0110") else

"0010000000" when (count="0111") else

"0100000000" when (count="1000") else

"1000000000" when (count="1001") else

"0000000000";

end Behavioral;

Blok kalkulator

Bagian ini adalah inti dari kalkulator 4-bit. Blok ini mendapat masukan dua buah bilangan A dan B masing-masing selebar 4-bit yang didapat dari DIP-switch pada board. Penekanan enter_ (sinyal ini didapat dari keluaran blok sinkronisasi input) akan menghasilkan keluaran hasil selebar 8-bit sesuai dengan sinyal pilihan yang didapat dari blok pemilih mode kalkulasi.

Gambar 5. Blok kalkulator

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity kalkulator is port(

clk : in std_logic; enter_db : in std_logic;

bilA : in std_logic_vector(3 downto 0); bilB : in std_logic_vector(3 downto 0); pilihan : in std_logic_vector(3 downto 0); hasil : out std_logic_vector(7 downto 0)

);

end kalkulator;

architecture Behavioral of kalkulator is

(7)

if (enter_db='1') then case pilihan is when "0000" => -- (+)

temp <= ("0000"&bilA) + ("0000"&bilB);

when "0001" => -- (-)

temp <= ("0000"&bilA) - ("0000"&bilB);

when "0010" => -- (*)

temp <= bilA * bilB;

when "0011" =>

temp <= not("0000"&bilA);

when "0100" =>

temp <= not("0000"&bilB);

when "0101" =>

temp <= ("0000"&bilA) AND ("0000"&bilB);

when "0110" =>

temp <= ("0000"&bilA) OR ("0000"&bilB);

when "0111" =>

temp <= ("0000"&bilA) XOR ("0000"&bilB);

when "1000" => temp <= SHL(("0000"&bilA),("0000"&bilB)); when "1001" => temp <= SHR(("0000"&bilA),("0000"&bilB)); when others => temp <= "00000000"; end case; end if; end if; end process; hasil <= temp; end Behavioral;

Blok tampilan ke seven segmen

Bagian ini akan menampilkan hasil keluaran dari blok kalkulasi selebar 8-bit pada dua buah seven segmen dalam format heksadesimal.

Gambar 6. Hasil 8-bit diubah menjadi format heksadesimal

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity sevsegmen is port(

hasil : in std_logic_vector(7 downto 0);

ledone,ledtwo : out std_logic_vector(7 downto 0) );

end sevsegmen;

architecture Behavioral of sevsegmen is signal LSB, MSB : std_logic_vector(3 downto 0);

begin

LSB <= hasil(3 downto 0); MSB <= hasil(7 downto 4);

ledone <= "00000110" when (LSB="0001") else --1 "01011011" when (LSB="0010") else --2

(8)

"01001111" when (LSB="0011") else --3 "01100110" when (LSB="0100") else --4 "01101101" when (LSB="0101") else --5 "01111101" when (LSB="0110") else --6 "00000111" when (LSB="0111") else --7 "01111111" when (LSB="1000") else --8 "01101111" when (LSB="1001") else --9 "01110111" when (LSB="1010") else --A "01111100" when (LSB="1011") else --b "00111001" when (LSB="1100") else --C "01011110" when (LSB="1101") else --d "01111001" when (LSB="1110") else --E "01110001" when (LSB="1111") else --F "00111111" when (LSB="0000"); --0

ledtwo <= "00000110" when (MSB="0001") else --1 "01011011" when (MSB="0010") else --2 "01001111" when (MSB="0011") else --3 "01100110" when (MSB="0100") else --4 "01101101" when (MSB="0101") else --5 "01111101" when (MSB="0110") else --6 "00000111" when (MSB="0111") else --7 "01111111" when (MSB="1000") else --8 "01101111" when (MSB="1001") else --9 "01110111" when (MSB="1010") else --A "01111100" when (MSB="1011") else --b "00111001" when (MSB="1100") else --C "01011110" when (MSB="1101") else --d "01111001" when (MSB="1110") else --E "01110001" when (MSB="1111") else --F "00111111" when (MSB="0000"); --0

end Behavioral;

File ucf untuk mendefinisikan pin-pin IC

Nomor-nomor pin yang dipakai untuk seven segmen, barled, push-button dan dip-switch. net clk loc=p88;

#net pushsw3 loc=p78; # pushbuttons

net mode loc=p26; net enter loc=p23;

net ledtwo<0> loc=p48; # 7-segment LED

net ledtwo<1> loc=p27; # 76543210

net ledtwo<2> loc=p40; # .gfedcba

net ledtwo<3> loc=p47; net ledtwo<4> loc=p28; net ledtwo<5> loc=p42; net ledtwo<6> loc=p29; net ledtwo<7> loc=p38;

net ledone<0> loc=p56; # 7-segment LED

net ledone<1> loc=p51; net ledone<2> loc=p65; net ledone<3> loc=p64; net ledone<4> loc=p76; net ledone<5> loc=p54; net ledone<6> loc=p50; net ledone<7> loc=p63;

net barled<1> loc=p68; # bargraph LED

net barled<2> loc=p44; net barled<3> loc=p46;

(9)

net barled<9> loc=p39; net barled<10> loc=p59;

net A<3> loc=p30; # DIP switches

net A<2> loc=p58; net A<1> loc=p74; net A<0> loc=p75; net B<3> loc=p66; net B<2> loc=p77; net B<1> loc=p80; net B<0> loc=p79;

VII. Laporan sementara

Jawablah pertanyaan berikut sebagai laporan sementara : 1. Ujilah kalkulator 4-bit hasil disain anda dan tabelkan.

2. Berapakah jumlah slice yang diperlukan untuk membuat disain kalkulator 4-bit tersebut? Anda dapat melihat hasil laporan implementasi pada Place & Route Report.

VIII. Laporan resmi

Jawablah pertanyaan berikut untuk bagian analisa pada laporan resmi: 1. Gambarkan disain top-level skematik yang dibuat.

2. Jelaskan kembali fungsi dan cara kerja dari masing-masing blok (modul) yang telah dibuat.

IX. Tambahan

Gambar

Gambar 1. Blok diagram sistem kalkulator 4-bit
Gambar 2. Posisi I/O pada board yang digunakan
Gambar 5. Blok kalkulator

Referensi

Dokumen terkait

Saya dengan ini mengesahkan bahawa pemeriksaan telah dijalankan seperti diatas dan memperakukan maklumat tersebut adalah benar..

● Bagi kategori 3 dinding baru atau tambahan perlu mengikut bangunan warisan yang bersebelahan dengannya ataupun yang terdekat di dalam kawasan lingkungan

Tipovi ruralnih zajednica na Balkanu se mogu kategorisati kao (Prevekalis, 2007.): planinske zajednice sto č ara i zemljoradnika, poljoprivredne zajednice u

Dokumen RPJMDes dalam keberadaannya sebagai dokumen perencanaan pembangunan desa untuk jangka waktu 6 (enam) tahun disusun berdasarkan Visi dan Misi Desa, berdasarkan

Rata-rata persepsi guru IPA SMP Kota Pekanbaru terhadap kualitas buku teks pelajaran IPA berbasis Kurikulum 2013 untuk SMP/MTs kelas VII terbitan Kemendikbud pada

Terdapat 4 (empat) pola perubahan ke Identitas Banjarmasin sebagai kota sungai tergambar dari arsitektur tepian sungai dan aktivitas masyarakatnya yang masih memiliki

Dari hasil percobaan dapat ditentukan keausan dari agregat kasar dengan nilai abrasi rata-rata sebesar 16,55%, sehingga agregat tersebut termasuk agregat yang baik bila