institut teknologi bandunglabdasar.ee.itb.ac.id/lab/el2102 - sistem digital/2012... · web viewfpga...

13
SQUARE FIGHTER Wiratama(13211122) Annisa Istiqomah 13211123) 2012 Institut Teknologi Bandung Kresnoadi Wiratama (13211122) Annisa Istiqomah A. (13211123)

Upload: others

Post on 16-Aug-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

SQUARE FIGHTER

Kresnoadi Wiratama(13211122) Annisa Istiqomah Arrahmah(13211123)

2012Institut Teknologi Bandung

Kresnoadi Wiratama (13211122) Annisa Istiqomah A. (13211123)

Page 2: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

MODUL VI PROYEK PERANCANGAN RANGKAIAN DIGITAL

Annisa Istiqomah Arrahmah (1321123) & Kresnoadi Wiratama (13211122)Asisten: Diah Koesuma(18109027)

Tanggal Percobaan: 7/12/2012EL2195-Praktikum Sistem Digital

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

AbstrakPercobaan ini memiliki tujuan untuk menspesifikasikan suatu system digital sederhana, membagi system menjadi satu atau lebih jalur data dan kendali, mendesain jalur data untuk system,mendesain kendali untuk system, mengintegrasikan jalur data dan kendali ke dalam system secara keseluruhan, melakukan tes menyeluruh terhadap system, mengimplementasikan system digital menggunakan FPGA dan komponen tambahan yang diperlukan lalu menguji dan menganalisa system yang sudah dibagun. Pada percobaannya, praktikan mendesain sebuah rangkaian digital menggunakan berbagai jenis rangkaian digital yang telah dipelajari sebelumnya dalam bahasa vhdl.Kata kunci: FSM, behavioral,

1. PENDAHULUAN Pada praktikum modul enam ini praktikan membuat sebuah rangkaian digital menggunakan fsm dalam bahasa vhdl. Yang diimplementasikan menggunakan 7 segmen dan LCD.

2. STUDI PUSTAKAPerbedaan mendasar rangkaian logika sekuensial dengan rangkaian sekuensial adalah ada tidaknyamemori statenya. Keluaran rangkaian sekuensial bergantung pada state dan bergantungpada masukannya (rangkaian Mealy) atau hanya bergantung pada statenya (rangkaianMoore).Terdapat beberapa model yang digunakan untuk membantu merancang rangkaiansekuensial. Salah satunya yang paling banyak digunakan adalah Finite State Machine (FSM).Dinamakan FSM karena jumlah state yang mungkin terbatas dan rangkaian sekuensial

bekerja mirip dengan mesin yang beroperasi dengan urutan state.Level abstraksi perancangan FSM pun bertingkat‐tingkat. Pada praktikum kali ini disarankanmenggunakan level abstraksi behavioral. Pada perancangan dengan level ini, sebelummengimplementasikan menggunakan VHDL, praktikan cukup membuat state diagram atau flow chart transisi statenya. Pada praktikum kali ini akan dicontohkan cara membuat FSMdengan menggunakan state diagram. Komponen‐komponen yang harus ada pada statediagram adalah deklasari input dan output, definisi state, transisi, dan keluarannya[1].Blok diagram merupakan digram yang mengambarkan secara kasar jalur data dari system yang mengimplementasikan system[1].

3. METODOLOGIPeralatan yang digunakan pada praktikum ini adalah :1. Komputer/PC yang telah terinstal program

Quartus II 9.02. Monitor LCD3. FPGA development board, tipe ALTERA

UP2 atau DE1 beserta perlengkapannya yang meliputi: Board FPGA tipe UP2, DE1, DE2, atau

DE2‐70 Catu daya+ kabel dan konektor

tambahan Kabel downloader ‘ByteBlaster II’ atau

USB‐BlasterProsedur percobaan

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB2

Page 3: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

4. HASIL DAN ANALISIS

Pada percobaan ini, kami membuat rangkaian digital.a. Judul

Square Fighterb. Deskripsi

Square Fighter adalah bentuk lain dari car fighter. Dimana pemain dapat berpindah ke kiri kanan, untuk menghindari musuh yaitu tembok yang diatur untuk turun secara bergantian dari litasan kiri lalau berpindah ke lintasan kanan begitu seterusnya pada 4 jalur di LCD. Penghitungan score dihitung dengan cara lamanya pemain bertahan dan di perlihatkan pada 7 segment yang ada pada FPGA.

c. Input- OutputInput berupa push button yang terdiri dari kiri, kanan, untuk menggerakkan pemain. Output berupa tampilan pada layar LCD sesuai input dari push button dan fsm untuk tembok yang turun dari atas ke bawah dari kiri menuju kanan. Output juga berupa score pada 7 segment.

d. Blok DiagramTerdapat pada lampiran

e. Implementasi desain FSM pada FPGABerdasarkan studi kasus pada tugas pendahuluan, rangkaian digital mengenai square fighter dapat diimplementasikan dengan state diagram dan state table pada lampiran.f. Skenario PengujianPada proyek square fighter ini, jika counter dinyalakan dan push button ditekan makan kotak akan bergerak dengan kecepatan sesuai counter dengan perpindahan tiap 10 pixel. Dan score akan berubah tiap 10 detik sebelum kotak menabrak penghalang. Penghalang akan bergerak turun secara random sesuai counter.g. Hasil Akhir

Pada percobaan ini, hasil akhir tidak sesuai dengan yang diharapkan. Penghitungan score hanya bisa dilakukan sampai 9 saja, sedangkan fungsi fsm untuk gerakan tembok dari kiri ke kanan tidak berhasil diimplementasikan, namun tembok berhasil turun kebawah dan kembali keatas lagi. Adapun untuk square, berhasil bergarak dengan benar sesuai input push button.

Dari pengujian, didapatkan hasil bahwa, fungsi fsm untuk tembok tidak berjalan dengan benar. Perpindahan dari current state menuju nextstate tidak berhasil pada vhdl. Adapun penyatuan dengan penghitungan score belum dilakukan, dan State untuk kejadian saat tembok menyentuh squre belum diimplementasikan.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB3

Rancanglah sebuah rangkaian digital

Buatlah jalur data sistem

Integrasikan jalur data dan kendali ke sistem secara keseluruhan

Lakukan tes menyeluruh terhadap sistem

Implementasikan sistem digital menggunakan FPGA dan komponen

tambahan yang diperlukan.

Uji dan analisa sistem yang dibangun

Page 4: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

5. KESIMPULAN

Pada percobaan akhir ini, proyek tidak sesuai dengan yang diharapkan. Kotak bisa bergerak sesuai push button ke kiri, kanan, sejauh 10 pixel dan bergerak sesuai batas. Pembentukan 4 tembok berhasil dilakukan dengan menggunakan fsm namun perpindahan dari current state menuju nextstate tidak berhasil. Penghitungan score berhasil menggunakan clockdiv.

DAFTAR PUSTAKA

[1] Mervin T.Hutabarat dkk, Buku Petunjuk Praktikum Sistem Digital,

Laboratorium Dasar Teknik Elektro ITB, Bandung, 2012.

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB4

Page 5: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

LAMPIRAN

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB5

Count_vhd.vhd

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;

entity count is port( clock: IN std_logic; i_kiri: in std_logic; i_kanan: in std_logic; SW_musuh: in std_logic; counthoriz: buffer integer:=200; countvert: buffer integer:=120 );end count;

architecture behavioral of count is signal transferclock: std_logic; component CLOCKDIV port( CLK: IN std_logic; DIVOUT: buffer std_logic); end component; begin clocktran: CLOCKDIV port map( CLK=>clock, DIVOUT=>transferclock ); --pushbutton 0 klo ditekan (de1) process(transferclock) begin if (transferclock'event) and (transferclock='1') then --count untuk square bergerak ke kiri dan kanan bergantung clockdiv if (i_kiri='0') and (counthoriz>0) then counthoriz<=counthoriz-1; elsif (i_kanan='0') and (counthoriz<40) then counthoriz<=counthoriz+1; end if; if (SW_musuh='1') and (countvert<95) then --count untuk tembok bergerak kebawah berdasarkan clockdiv saat sw bernilai 0 dan kembali ke atas countvert<=countvert+1; elsif (SW_musuh='1') and ((countvert>95) or (countvert = 95)) then countvert<=countvert-95; end if; end if; end process; end behavioral;

Page 6: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB6

Clockdiv.vhd

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;

entity CLOCKDIV is port( CLK: IN std_logic; DIVOUT: buffer std_logic);end CLOCKDIV;

architecture behavioural of CLOCKDIV is begin PROCESS(CLK) variable count: integer:=0; constant div: integer:=2000000; --nilai div yang mempengaruhi pergerakan square dan tembok menjadi lebih cepat begin if CLK'event and CLK='1' then if(count<div) then count:=count+1; if(DIVOUT='0') then DIVOUT<='0'; elsif(DIVOUT='1') then DIVOUT<='1'; end if; else if(DIVOUT='0') then DIVOUT<='1'; elsif(DIVOUT='1') then DIVOUT<='0'; end if; count:=0; end if;

end if; end process;end behavioural;

Page 7: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB7

Color_rom_vhd.vhdLIBRARY IEEE; USE ieee.math_real.ALL; USE ieee.numeric_std.ALL; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY color_rom_vhd IS PORT( i_shiftcol : IN integer; --port yang mempengaruhi perpindahan dari pixel i_shiftrow : IN integer; clock : IN std_logic; i_pixel_column : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ); i_pixel_row : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 ); o_red : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ); o_green : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 ); o_blue : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0 )); --int_rand : buffer integer);END color_rom_vhd;

ARCHITECTURE behavioral OF color_rom_vhd IS signal transferclock: std_logic;signal pindah : integer;component CLOCKDIV port( CLK: IN std_logic; DIVOUT: buffer std_logic); end component;

TYPE executionStage IS (S1,S2,S3,S4);SIGNAL currentstate : executionStage;SIGNAL nextstate: executionStage;

CONSTANT ukuran : INTEGER := 50; --constanta untuk menentukan batas-batas dari grid dan tembokCONSTANT G_0 : INTEGER := 0;CONSTANT G_1 : INTEGER := 120;CONSTANT G_2 : INTEGER := 240;CONSTANT G_3 : INTEGER := 360;CONSTANT G_4 : INTEGER := 480;

SIGNAL merah : STD_LOGIC; -- variabel signal untuk kotak merah, SIGNAL kuning1 : STD_LOGIC; -- variabel signal untuk tembok kuningSIGNAL kuning2 : STD_LOGIC;SIGNAL kuning3 : STD_LOGIC;SIGNAL kuning4 : STD_LOGIC;SIGNAL grid : STD_LOGIC; --variabel signal untuk batas-batas lintasansignal kena : STD_logic; --variabel untuk kejadian saat tembok terkena square, yaitu menjadi warna putih

--COMPONENT random --generic (width : integer := 2); --PORT ( --clk : IN STD_LOGIC; --random_num : OUT STD_LOGIC_VECTOR (1 downto 0) --); --END COMPONENT; BEGIN -------PROCESS-- VARIABLE seed1, seed2: positive; -- VARIABLE rand: real; -- VARIABLE int_rand: integer; -- VARIABLE stim: std_logic_vector(2 DOWNTO 0); -- Random 2-bit stimulus--BEGIN

Page 8: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB8

-- UNIFORM(seed1, seed2, rand); -- int_rand := INTEGER(TRUNC(rand*3.0)); -- stim := std_logic_vector(to_unsigned(int_rand, stim'LENGTH)); --END PROCESS; -------int_rand <= int_rand; clocktran: CLOCKDIV port map( CLK=>clock, DIVOUT=>transferclock );

----------

PROCESS(transferclock)BEGIN

--if (clock'EVENT) and (clock='1') then IF (i_pixel_row>10) THEN --fsm untuk perpindahan dari tembok dari lintasan paling kiri menuju lintasan paling kanan currentState <= nextstate; else currentstate <= currentState;-- END IF;end if; END PROCESS;

PROCESS(currentstate) BEGIN--pertambahan 10 pixel saat tombol ditekan akibat dari i_shifrow+10CASE currentState IS WHEN S1=> --state pertama, tembok yang tampil berada pada lintasan paling kiri IF ((i_pixel_row > 10+5*i_shiftrow) AND (i_pixel_row < 10+5*i_shiftrow+ukuran) ) AND ((i_pixel_column > G_0) AND (i_pixel_column < G_1) ) THEN kuning1 <= '1'; ELSE kuning1 <= '0'; END IF; kena <= '1'; nextstate<=S2; WHEN S2=> --state kedua, tembok yang tampil berada pada lintasan kedua paling kiri IF ((i_pixel_row > -480+5*i_shiftrow) AND (i_pixel_row < -480+5*i_shiftrow+ukuran) ) AND ((i_pixel_column > G_1) AND (i_pixel_column < G_2) ) THEN kuning1 <= '1'; ELSE kuning1 <= '0'; END IF; kena <= '1'; nextstate <=S3;

WHEN S3=> --state ketiga, tembok yang tampil berada pada lintasan ketiga IF ((i_pixel_row > -960+5*i_shiftrow) AND (i_pixel_row < -960+5*i_shiftrow+ukuran) ) AND ((i_pixel_column > G_2) AND (i_pixel_column < G_3) ) THEN kuning1 <= '1'; ELSE kuning1 <= '0'; END IF; kena <= '1'; nextstate<=S4;

Page 9: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB9

WHEN S4=> --state keempat, tembok yang tampil berada pada lintasan paling kanan IF ((i_pixel_row > -1440+5*i_shiftrow) AND (i_pixel_row < -1440+5*i_shiftrow+ukuran) ) AND ((i_pixel_column > G_3) AND (i_pixel_column < G_4) ) THEN kuning1 <= '1'; ELSE kuning1 <= '0'; IF (i_pixel_row > 10) THEN kena <= '1'; nextstate<=S1; END IF; END IF; END CASE;end process; ------------IF ((i_pixel_row > 10+5*i_shiftrow) AND (i_pixel_row < 10+5*i_shiftrow+ukuran) ) AND ((i_pixel_column > G_1) AND (i_pixel_column < G_30) ) THEN kuning2 <= '1';-- ELSE kuning2 <= '0';-- END IF;PROCESS(i_pixel_row,i_pixel_column, i_shiftrow, i_shiftcol, merah, currentState)BEGIN--code untuk pewarnaan dari kotak merah, tembok dan grid juga keadaan saat terkena, yaitu saat signal kena bernilai '1' IF ((i_pixel_row > 400) AND (i_pixel_row < 450) ) AND ((i_pixel_column > 10+10*i_shiftcol) AND (i_pixel_column < 10+10*i_shiftcol+ukuran) ) THEN merah <= '1'; ELSE merah <= '0'; END IF; IF (merah = '1' and kuning1 = '1' and kena = '1') then o_red <= X"FF"; o_green <= X"FF"; o_blue <= X"FF"; elsIF (merah = '1') THEN o_red <= X"FF"; o_green <= X"00"; o_blue <= X"00"; ELSIF (kuning1 = '1') THEN o_red <= X"FF"; o_green <= X"DD"; o_blue <= X"00"; --ELSIF (kuning2 = '1') THEN o_red <= X"FF"; o_green <= X"DD"; o_blue <= X"00"; ELSE o_red <= X"FF"; o_green <= X"FF"; o_blue <= X"FF"; END IF; IF (i_pixel_column=G_0) OR (i_pixel_column=G_1) or (i_pixel_column=G_2) or (i_pixel_column=G_3) THEN grid <= '1'; ELSE grid <= '0'; END IF; IF (grid = '1') THEN o_red <= X"00"; o_green <= X"00"; o_blue <= X"00"; END IF; END PROCESS;

END behavioral;

Page 10: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB10

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY top_level_vhd IS PORT( CLOCK_50 : IN STD_LOGIC; pushbutton : IN STD_LOGIC_VECTOR( 3 DOWNTO 0 ); --input untuk square SW : IN STD_LOGIC_vector(1 downto 0); --input untuk tembok saat switch bernilai 0 tembok akan bergerak VGA_R : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_G : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_B : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_HS : OUT STD_LOGIC; VGA_VS : OUT STD_LOGIC; VGA_CLK : OUT STD_LOGIC; VGA_BLANK : OUT STD_LOGIC; GPIO_0 : OUT STD_LOGIC_VECTOR( 35 DOWNTO 0 ); LEDR : OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 ));END top_level_vhd;

ARCHITECTURE behavioral OF top_level_vhd IS SIGNAL shiftkolom : integer; SIGNAL shiftbaris : integer;signal kiri : std_logic;signal kanan : std_logic;signal turun : std_logic;

COMPONENT display_vhd IS PORT( i_clk : IN STD_LOGIC; i_shiftcol : IN integer; i_shiftrow : IN integer; VGA_R : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_G : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_B : OUT STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_HS : OUT STD_LOGIC; VGA_VS : OUT STD_LOGIC; VGA_CLK : OUT STD_LOGIC; VGA_BLANK : OUT STD_LOGIC);END COMPONENT;

component count is port( clock: IN std_logic; i_kiri: in std_logic; i_kanan: in std_logic; SW_musuh: in std_logic; counthoriz: buffer integer:=120; countvert: buffer integer:=120

);end component;

BEGIN

counter: count port map( clock=>CLOCK_50, i_kiri=>kiri, i_kanan=>kanan, SW_musuh=>turun, counthoriz=>shiftkolom, countvert=>shiftbaris );

Page 11: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB11

module_vga : display_vhd PORT MAP ( i_clk => CLOCK_50, i_shiftrow => shiftbaris, i_shiftcol => shiftkolom, VGA_R => VGA_R, VGA_G => VGA_G, VGA_B => VGA_B, VGA_HS => VGA_HS, VGA_VS => VGA_VS, VGA_CLK => VGA_CLK, VGA_BLANK => VGA_BLANK);

kiri <= pushbutton(3) ;kanan <= pushbutton(0) ;turun <= SW(0) ;

END behavioral;

Page 12: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB12

Currentstate

input P1P2 OutputZ1Z200 01 10 11

S1 S0 S2 S1 S0 10S2 S0 S2 S1 S0 01S0 S0 S2 S1 S0 00S1 : state saat shiftcolomn bergerak ke pixel kiriS2 : state saat shiftcolomn bergerak ke pixel kiriS0 : state saat diam di pixel awal.

Page 13: Institut Teknologi Bandunglabdasar.ee.itb.ac.id/lab/EL2102 - Sistem Digital/2012... · Web viewFPGA development board, tipe ALTERA UP2 atau DE1 beserta perlengkapannya yang meliputi:

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB13

Currentstate

input z OutputZ0 1

S1 S1 S2 1000S2 S2 S3 0100S3 S3 S4 0010S4 S4 S1 0001

S1 : state dimana tembok berada pada lane 1S2 : state dimana tembok berada pada lane 2S3 : state dimana tembok berada pada lane 3S4 : state dimana tembok berada pada lane 4