Anda di halaman 1dari 13

KEMENTRIAN RISET TEKNOLOGI DAN PENDIDIKAN TINGGI

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA


ELECTRONIC ENGINERING POLYTECHNIC INSTITUTE OF
SURABAYA
(EEPIS)

PIRANTI TERPOGRAM
JL. RAYA ITS KEPUTIH SUKOLILO SURABAYA 60111 INDONESIA
TELP.(031) 5947280 FAX. (031) 594611

LAPORAN

JUDUL : Perancangan Multiplexer dan Comparator


PERCOBAAN :5

NAMA : M. Ilham Akbar

KELAS : 2 D3 EA

NRP : 1103191023

DOSEN : Pak Arif

TANGGAL : 29 - 03 - 2021
I. Tujuan
Mampu merancang dan mendemonstrasikan rangkaian Multiplexer dan
Comparator pada FPGA serta melaporkan hasil percobaannya

II. Peralatan yang dibutuhkan


- Komputer yang sudah terinstall software XILINX ISE Design Suite 14.7 dan
Adept Digilent
- BASYS 2 FPGA board

III. Langkah percobaan

1. Membuka software ISE Design Suite 14.7


2. Mengelik pada 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. Mengelik 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, misalnya multiplexer

8. Selanjutnya langsung mengeklik Next kemudian Finish, karena kita akan


membuat port secara manual dengan text.

9. Maka kita akan mendapatkan file baru (*.vhd), tetapi tanpa deskripsi port yang
akan digunakan
10. Untuk percobaan ini kita akan membuat rangkaian Multiplexer dan
Comparator
11. Mengimplementasikan rancangan dan VHDL berikut, membuat VHDL-nya
kemudian mensimulasikannya.
12. Source Code VHDL Multiplexer
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity multiplexer is
port
(
a, b, c, d, e, f, g, h : in std_logic_vector(7 downto 0);
Sel : in std_logic_vector(2 downto 0);
Mux_out : out std_logic_vector(7 downto 0)
);
end multiplexer;
architecture Behavioral of multiplexer is
begin
process (a, b, c, d, e, f, g, h, Sel) is
begin
case Sel is
when "000" => Mux_out <= a;
when "001" => Mux_out <= b;
when "010" => Mux_out <= c;
when "011" => Mux_out <= d;
when "100" => Mux_out <= e;
when "101" => Mux_out <= f;
when "110" => Mux_out <= g;
when others => Mux_out <= h;
end case;
end process;
end architecture Behavioral;

13. Source Code Tsst Bench Multiplexer


LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY TB_multiplexer IS
END TB_multiplexer;
ARCHITECTURE behavior OF TB_multiplexer IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT multiplexer
PORT(
a : IN std_logic_vector;
b : IN std_logic_vector;
c : IN std_logic_vector;
d : IN std_logic_vector;
e : IN std_logic_vector;
f : IN std_logic_vector;
g : IN std_logic_vector;
h : IN std_logic_vector;
Sel : IN std_logic_vector(2 downto 0);
Mux_out : OUT std_logic_vector(7 downto 0)
);
END COMPONENT;
--Inputs
signal a : std_logic_vector(7 downto 0) := "00000001";
signal b : std_logic_vector(7 downto 0) := "00000011";
signal c : std_logic_vector(7 downto 0) := "00001111";
signal d : std_logic_vector (7 downto 0):= "00010000";
signal e : std_logic_vector (7 downto 0):= "00011000";
signal f : std_logic_vector (7 downto 0):= "00011100";
signal g : std_logic_vector (7 downto 0):= "00011110";
signal h : std_logic_vector (7 downto 0):= "00111111";
signal Sel : std_logic_vector(2 downto 0) := (others => '0');
--Outputs
signal Mux_out : std_logic_vector(7 downto 0);
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: multiplexer PORT MAP (
a => a,
b => b,
c => c,
d => d,
e => e,
f => f,
g => g,
h => h,
Sel => Sel,
Mux_out => Mux_out
);
stim_proc: process
begin
Sel<="000";
wait for 100 ns;
Sel<="001";
wait for 100 ns;
Sel<="010";
wait for 100 ns;
Sel<="011";
wait for 100 ns;
Sel<="100";
wait for 100 ns;
Sel<="101";
wait for 100 ns;
Sel<="110";
wait for 100 ns;
Sel<="111";
wait;
end process;
END;

IV. Hasil Percobaan


- Multiplexer
V. Tugas
Membuat rangkaian comparator 8 bit
- Source Code VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Comparator is
generic(n: natural :=8);
port( A: in std_logic_vector(n-1 downto 0);
B: in std_logic_vector(n-1 downto 0);
clock: in std_logic;
less: out std_logic;
equal: out std_logic;
greater: out std_logic
);
end Comparator;
------------------------------------------------
architecture Behavioral of Comparator is
begin
process(A,B)
begin
if (A<B) then
less <= '1';
equal <= '0';
greater <= '0';
elsif (A=B) then
less <= '0';
equal <= '1';
greater <= '0';
else
less <= '0';
equal <= '0';
greater <= '1';
end if;
end process;
end Behavioral;
- Source Code Test Bench Comparator
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY TB_comparator IS
END TB_comparator;
ARCHITECTURE behavior OF TB_comparator IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT Comparator
PORT(
A : IN std_logic_vector(7 downto 0);
B : IN std_logic_vector(7 downto 0);
clock : IN std_logic;
less : OUT std_logic;
equal : OUT std_logic;
greater : OUT std_logic
);
END COMPONENT;
--Inputs
signal A : std_logic_vector(7 downto 0) := (others => '0');
signal B : std_logic_vector(7 downto 0) := (others => '0');
signal clock : std_logic := '0';
--Outputs
signal less : std_logic;
signal equal : std_logic;
signal greater : std_logic;
-- Clock period definitions
constant clock_period : time := 10 ns;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: comparator PORT MAP (
A => A,
B => B,
clock => clock,
less => less,
equal => equal,
greater => greater
);
-- Clock process definitions
clock_process :process
begin
clock <= '0';
wait for clock_period/2;
clock <= '1';
wait for clock_period/2;
end process;
-- Stimulus process
stim_proc: process
begin
a <= "00000000";
b <= "00000001";
wait for 100 ns;
a <= "00001000";
b <= "00001001";
wait for 100 ns;
a <= "00011000";
b <= "00011000";
wait for 100 ns;
a <= "01101000";
b <= "01101000";
wait for 100 ns;
a <= "11000000";
b <= "10000010";
wait for 100 ns;
a <= "10011000";
b <= "10000111";
wait for 100 ns;
a <= "00011001";
b <= "00100111";
wait for 100 ns;
a <= "11111000";
b <= "00001111";
wait for 100 ns;
a <= "00011000";
b <= "11001111";
wait;
end process;
END;

- Hasil Simulasi Tugas

VI. Analisa
Pada praktikum ke 5 ini, terdapat dua macam percobaan yakni multiplexer dan
comparator. Percobaan pertama, dilakukan percobaan mengenai multiplexer. Multiplexer
sendiri merupakan operasi logika yang mana inputnya lebih dari satu dan nantinya akan
dikeluarkan salah satu secaara bergantian sesuai selector dan delay yang ditentukan. Pada
percobaan ini menggunakan input sebanyak 8 buah dengan nama variable a sampai h, lalu
terdapat juga selector sebanyak 8 buah. Jika selector aktif, makan outputnya akan
mengeluarkan salah satu dari input yang diberikan.
Percobaan yang kedua untuk tugas yaitu mengenai comparator. Comparator sendiri
merupakan rangkaian pembanding, comparator disini akan membandingkan dua input
kemudian outputnya merupakan hasil perbandingan nilai dari kedua input misalnya lebih
kecil, sama dengan, dan lebih besar. Jika nilai A kurang dari B, maka less akan berlogic 1
sedangan equal dan greater akan berlogic 0. Jika nilai A = B, maka equal akan berlogic 1
sedangkan less dan greater akan berlogic 0. Jika A lebih besar dari B, maka greater akan
berlogic 1 sedangkan less dan equal akan berlogic 0.
VII. Kesimpulan
Berdasarkan praktikum yang telah dilakukan dapat disimpulkan bahwa Multiplexer
merupakan rangkaian logika yang mana inputnya lebih dari satu dan nantinya akan
dikeluarkan salah satu secaara bergantian sesuai selector dan delay yang ditentukan.
Sedangkan comparator merupakan pembanding dari kedua sinyal input dan akan
mengaktifkan satu sinyal output yang merupakan hasil dari perbandingan dari kedua sinyal
input.

VIII. Link Video


https://youtu.be/ydXnpEuTT58

Anda mungkin juga menyukai