Anda di halaman 1dari 6

Lab. 3 Percobaan Interfacing/Embeded System Smt.

Genap 2007/2008

Lab. 3
Rangkaian Flip flop
dan Counter pada Spartan 3 FPGA Board

Materi Lab.3 :

Pada percobaan ini akan dipelajari implementasi rangkaian D flip-flop dan


counter.

Target :

Mahasiswa mampu mengimplementasikan rangkaian squential pada modul


FPGA.

Tujuan :

1. Mempelajari pemrograman rangkaian flip-flop pada FPGA.

2. Implementasi counter 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 sekuensial.

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. 3.1. D Flip-Flop

Sebelum melakukan percobaan jelaskan tentang rangkaian sekuensial sebagai


laporan pendahuluan
Lab. Informatika Digital (B.401)
Lab. 3 Percobaan Interfacing/Embeded System Smt. Genap 2007/2008

Kumpulkan jawaban saudara saat akan memulai Lab. 3.1.

Prosedure percobaan :

1. Bukalah project baru pada Modelsim dengan nama Flipflop

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

entity dflip_ent is
port(
reset_in : in std_logic;
D_in : in std_logic;
clk : in std_logic;
Q_out : out std_logic
);
end dflip_ent;

architecture Dflip_arch of dflip_ent is


begin
Dflipflop : process(reset_in, clk)
begin
if (reset_in = '0') then
Q_out <= '0';
elsif (clk'event and clk = '1')then
Q_out <= D_in;
end if;
end process Dflipflop;
end Dflip_arch;

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

entity dflip_tb is
end dflip_tb;

architecture dflip_tb_arch of dflip_tb is


signal reset_in : std_logic;
signal D_in : std_logic;
signal clk : std_logic := '0';
signal Q_out : std_logic;

component dflip_ent
port(
reset_in : in std_logic;
D_in : in std_logic;
clk : in std_logic;
Q_out : out std_logic
);
end component;

begin

Lab. Informatika Digital (B.401)


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

UUT : dflip_ent
port map(
reset_in => reset_in,
D_in => D_in,
clk => clk,
Q_out => Q_out
);

dflipflop: process
begin
reset_in <= '0'; wait for 50 ns ;
assert (Q_out = '0')
report " Failed on Reset = 0"
severity error;

reset_in <= '1'; wait for 50 ns;


assert (Q_out = D_in)
report " Failed on Reset = 1"
severity Warning;

D_in <= '0'; wait for 100 ns;


assert (Q_out = '1')
report " Failed on D_in = 0"
severity error;

D_in <= '1'; wait for 200 ns;


assert (Q_out = '0')
report " Failed on D_in = 1"
severity error;

end process dflipflop;

clock_in : process
begin
clk <= not clk; wait for 50 ns ;
end process clock_in;
end dflip_tb_arch;

4. compile file tersebut dan lakukan simulasi pada ModelSIm. (Pastikan


sebelum melakukan simulasi, hasil compilasinya sukses). Lampirkan hasil
simulasi anda pada laporan pendahuluan.

5. Selanjutnya simulasikan code D_FF.Vhd tersebut pada FPGA (referensi :


prosedur lab.1.2.). Tentukan pin-pinnya pada tahap assign package pins.
D_in dari switch board FPGA. Input reset_in dari push button. Output Q_out
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. Buatlah program yang sama untuk komponen S-R FF, J-K FF dan T FF dan
simulasikan dengan Modelsim serta lampirkan pula gambar simulasinya.

Lab. Informatika Digital (B.401)


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

4. Lampirkan juga Truth table dan Kmap dari keempat flip-flop.

Lab. 3.2. Counter

Tujuan :

1. Mengimplementasikan counter pada Model SIm.

2. Mengimplementasikan counter pada FPGA.

Persiapan :

1. Dari code Counter berikut buatlah simulasi pada ModelSim

2. Lampirkan pada laporan pendahuluan keluaran file testbench tersebut dari


wave form modelsim sebelum anda melakukan lab.3.2.

Prosedure :

1. Lakukan prosedur lab. 3.1. pada lab.3.2. dengan menuliskan code berikut :
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity n_bit_counter is
generic(n : integer := 2);
port(
clk : in std_logic;
reset : in std_logic;
enable : in std_logic;
count_out : out std_logic_vector(n-1 downto 0)
);
end n_bit_counter;

architecture behav of n_bit_counter is


signal count_reg : std_logic_vector(n-1 downto 0);
begin
process(clk, enable, reset)
begin
if reset = '1' then
count_reg <= (count_reg'range => '0');
else if (clk = '1' and clk'event) then
if enable = '1' then
count_reg <= count_reg + 1;
end if;
end if;
end if;
end process;
count_out <= count_reg;
end behav;

2. Compile file tersebut. Dan lanjutkan dengan membuat file baru dengan
nama counter_TB.vhd dan tulis code berikut :
library ieee;
use ieee.std_logic_1164.all;

Lab. Informatika Digital (B.401)


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

entity count_test is
end count_test;
architecture behav of count_test is
signal clk : std_logic := '0';
signal reset : std_logic;
signal enable : std_logic;
signal count_out : std_logic_vector(1 downto 0);

begin
UUT : entity work.n_bit_counter
generic map(2)
port map (clk, reset, enable, count_out);
stimuli : process
begin
reset <= '1'; wait for 25 ns;
assert (count_out = "00")
report "Error reset"
severity error;
reset <= '0'; enable <= '0'; wait for 50 ns;

assert (count_out = "10")


report "Error Enable"
severity error;

reset <= '0'; enable <= '1'; wait for 500 ns;
assert (count_out = count_out)
report "Error Enable"
severity error;
end process;

process
begin
clk <= not clk; wait for 25 ns;
end process;
end behav;

3. Tentukan pin-pin dari input dan output code counter tersebut. Input clk dari
dari system clock Spartan 3 (Baca ug130.pdf tentang clock). Input enable
dari switch, input reset dari Push Button dan output Count_out ke LED (Baca
ug130.pdf untuk mengetahui address pin masing-masing input dan
output).

4. 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. Gunakan gambar pada wave simulator model sim untuk analisa laporan
anda

4. Buatlah code counter 4 bit yang akan increment setelah 30 detik. (Buatlah
Clock divider sebagai delay clock 30 detik, Ingat clock Spartan adalah 50
MHz).

Lab. Informatika Digital (B.401)


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

5. Buatlah file testbench dari counter tersebut (soal no. 4)

6. Gunakan gambar pada wave simulator model sim untuk lampiran laporan
anda.

7. Simulasikan code anda pada FPGA untuk pertemuan berikutnya.

Lab. Informatika Digital (B.401)

Anda mungkin juga menyukai