Anda di halaman 1dari 6

Lab. 2 Percobaan Interfacing/Embeded System Smt.

Genap 2007/2008

Lab. 2
Rangkaian Substract 2’s complement
dan BCD pada Spartan 3 FPGA Board

Materi Lab.2 :

Pada percobaan ini akan dipelajari implementasi rangkaian Substract two’s


complement 4 bit sign dan BCD. Rangkaian Substract 2’s complement 4 bit sign
adalah rangkaian pengurangan n-1 bit, dimana bit ke n adalah sign dari bilangan
n-1 bit. Rangkaian ini mengunakan metode pengurangan 2’s complement.

Rangkaian BCD adalah rangkaian kombinasional yang digunakan untuk


mencodekan bilangan biner menjadi bilangan desimal.

Target :

Mahasiswa mampu mengimplementasikan algoritma substarct 2’s complemet


dan menampilkan nilai masukan keluaran pada 7 segmen dalam modul FPGA.

Tujuan :

1. Mempelajari pengurangan 2’s complement dan diiplementasikan pada


FPGA.

2. Implementasi algoritma BCD dalam VHDL.

3. Mensimulasikan code dengan perangkat lunak Modelsim

4. Mengimplementasikan code pada Spartan 3 FPGA board.

Syarat :

1. Mahasiswa sudah paham cara menggunakan ISE dan Spartan 3 board.

2. Mahasiswa sudah memiliki kemampuan dasar pemrograman VHDL.

Persiapan Lab. :

1. Review Materi mata kuliah Rangkaian Logika, Sistem Digital dan Interfacing.

2. Pelajari tentang rangkaian kombinasional.

3. Pelajari tentang dasar perograman VHDL (VHDL Cookbook).

4. Pelajari dan siapkan Spartan-3 Starter Kit Board User Guide (ug130.pdf)

5. Pelajari dan siapkan tutorial penggunaan Modelsim.

Perangkat Lab. :

Perangkat Jumlah
Free software ISE webpack (www.Xilinx.com) 1
Free software Model sim 1
PC dan FPGA board 1 set
Lab. Informatika Digital (B.401)
Lab. 2 Percobaan Interfacing/Embeded System Smt. Genap 2007/2008

Lab. 2.1. Substract

Sebelum melakukan percobaan kerjakan soal berikut dgn metode 2’s


complement dan jelaskan tentang 2’s complement:

8–2=… 17 – 14 = … 35 – 22 = …

5–7=… 9 – 12 = … 27 – 37 = …

Kumpulkan jawaban saudara saat akan memulai Lab. 2.1.

Prosedure percobaan :

1. Bukalah project baru pada Modelsim dengan nama substract

2. Buatlah file baru dengan nama twos_1bit.vhd dan tulis code berikut :
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity Twos_C1 is
port( A, B, Ci, sign : in bit;
S, CO : out bit
);
end entity;

architecture behav of Twos_C1 is


signal B_sig : bit;
begin
B_sig <= B xor sign;
S <= A xor B_sig xor CI;
CO <= (A and B_sig) or (A and CI) or (B_sig and CI);
end behav;

3. Compile file tersebut. Dan lanjutkan dengan membuat file baru dengan
nama twos_4bit.vhd dan tulis code berikut :
library IEEE;
use IEEE.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity Twos_C4 is
port( a, b : in bit_vector (3 downto 0);
cin : in bit;
sum : out bit_vector (3 downto 0);
cout: out bit
);
end Twos_C4;

architecture add_struc of Twos_C4 is


component Twos_C1
port( A, B, Ci, sign : in bit;
S, CO : out bit
);
end component;
signal cin_sig : bit_vector(4 downto 0);
begin

Lab. Informatika Digital (B.401)


Lab. 2 Percobaan Interfacing/Embeded System Smt. Genap 2007/2008

cin_sig(0) <= cin;


u0 : Twos_C1
port map(A => a(0), B => b(0), Ci => cin_sig(0), sign => cin, S => sum(0),
CO => cin_sig(1));
u1 : Twos_C1
port map(A => a(1), B => b(1), ci => cin_sig(1), sign => cin, S => sum(1),
CO => cin_sig(2));
u2 : Twos_C1
port map(A => a(2), B => b(2), Ci => cin_sig(2), sign => cin, S => sum(2),
CO => cin_sig(3));
u3 : Twos_C1
port map(A => a(3), B => b(3), Ci => cin_sig(3), sign => cin, S => sum(3),
CO => cin_sig(4));
cout <= cin_sig(4);
end add_struc;

4. Compile file tersebut. Buatlah file baru dengan nama twos_tb.vhd dan tulis
code berikut :
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;

entity testtw4 is
end testtw4;

architecture behavioral of testtw4 is


signal A, B : bit_vector(3 downto 0);
signal Cin : bit;
signal S : bit_vector(3 downto 0);
signal Cout : bit;

component Twos_C4
port(a, b : in bit_vector (3 downto 0);
cin : in bit;
sum : out bit_vector (3 downto 0);
cout: out bit
);
end component;

for all : Twos_C4 use entity work.Twos_C4(add_struc);

begin
B <= "0001", "0101" after 100 ns, "0101" after 200 ns, "0111" after
300 ns, "0101" after 400 ns, "0011" after 500 ns, "0011" after 600 ns,
"0001" after 700 ns;
A <= "0100", "0111" after 100 ns, "0110" after 200 ns, "0101" after
300 ns, "0010" after 400 ns, "0101" after 500 ns, "0110" after 600 ns,
"0111" after 700 ns;
Cin <= '0', '1' after 50 ns;
C1 : Twos_C4 port map(A,B,Cin,S,Cout);
end behavioral;

5. compile file tersebut dan lakukan simulasi. (Pastikan sebelum melakukan


simulasi, hasil compilasinya sukses)

Prosedure Simulasi dengan Modelsim :

1. Pada Menu pilih => Simulate => Start Simulation

Lab. Informatika Digital (B.401)


Lab. 2 Percobaan Interfacing/Embeded System Smt. Genap 2007/2008

2. Pada form start simulation pilih testtw

Figure 1. Form Start Simulation

3. Pada form simulasi klik kanan testtw pada workspace. Pilih add => add to
wave

Figure 2. Form Simulasi

4. Pada Wave Form pilih run All. Lihat tombol yang dilingkari pada Fig. 3

Lab. Informatika Digital (B.401)


Lab. 2 Percobaan Interfacing/Embeded System Smt. Genap 2007/2008

Figure 3. Form wave simulasi

5. Amati dan lampirkan dalam laporan anda pada laporan Lab. 2.

6. Selanjutnya simulasikan code substract tersebut pada FPGA (referensi :


prosedur lab.1.2.). Tentukan pin-pinnya pada tahap assign package pins.
Input a dan b dari switch board FPGA masing-masing 4 bit. Input cin dari
push button. Output s dan cout ke Led. (Baca ug130.pdf untuk mengetahui
address pin masing-masing input dan output ).

Tugas :

1. Pada Synthesize -> View RTL Schematic. Jelaskan pendapat anda.

2. Buka juga view synthesize report, jelaskan analisa anda.

3. Gunakan gambar pada wave simulator model sim untuk analisa laporan
anda.

4. Lampirkan juga Truth table dan Kmap dari substract.

Lab. 2.2. BCD

Tujuan :

1. Mengimplementasikan algoritma Arithmatik.

2. Mengimplementasikan BCD pada FPGA.

Persiapan :

1. Dari code BCD berikut buatlah file Testbench BCD_tb.vhd untuk simulasi
pada modelsim.

2. Lampirkan keluaran file testbench tersebut dari wave form modelsim


sebelum anda melakukan lab.2.2.
Lab. Informatika Digital (B.401)
Lab. 2 Percobaan Interfacing/Embeded System Smt. Genap 2007/2008

Prosedure :

1. Lakukan prosedur lab. 1.2. pada lab.2.2. dengan menuliskan code berikut :
library ieee;
use ieee.std_logic_1164.all;

entity bcd is
port( Bin : in std_logic_vector(2 downto 0);
en : out std_logic;
seg : out std_logic_vector(6 downto 0)
);
end entity;

architecture behav of bcd is


begin
process(Bin)
begin
case Bin is
when "000" => seg <= "1000000";
when "001" => seg <= "1111001";
when "010" => seg <= "0100100";
when "011" => seg <= "0100100";
when "100" => seg <= "0011001";
when "101" => seg <= "0010010";
when "110" => seg <= "0000010";
when others => seg <= "1111000";
end case;
end process;
en <= '0';
end behav;

2. Tentukan pin-pin dari input dan output code BCD tersebut. Input Bin dari
switch dan output seg ke 7 segmen AN0 (Baca ug130.pdf untuk mengetahui
address pin masing-masing input dan output).

3. Jalankan code tersebut pada FPGA board.

Tugas :

1. Pada Synthesize -> View RTL Schematic. Jelaskan pendapat anda.

2. Buka juga view synthesize report, jelaskan analisa anda.

3. Buatlah code substract dengan menampilkan masukan dari 8 bit switch


board FPGA dan keluarannya pada 7 segmen. 7 segmen AN1 untuk
masukan a, 7 segmen AN0 untuk masukan b, 7 segmen AN3 untuk keluaran
sign hasil substract dan 7 segmen AN2 untuk keluaran S.

4. Gunakan gambar pada wave simulator model sim untuk analisa laporan
anda.

5. Simulasikan code anda pada FPGA untuk pertemuan berikutnya.

Lab. Informatika Digital (B.401)

Anda mungkin juga menyukai