BAB 3 Perancangan Sistem 3.1 Rancangan Sistem Rancangan Sistem secara keseluruhan dapat dilihat pada Gambar 3.1 Gambar 3.1 Blok Diagram Sistem Berdasarkan Gambar 3.1 mengenai Blok Diagram Sistem terdapat tiga (3) bagian blok sistem yaitu Blok FPGA Spartan 3AN XC3S700AN, Blok Output LED, Blok Komputer/PC, Blok Output LCD. Blok sistem FPGA Spartan 3AN XC3S700AN yaitu berisi tentang bagaimana data dapat dikirim melalui Modul FPGA Spartan 3AN XC3S700AN ke Modul Modul Output lainnya. Dan FPGA Spartan 3AN XC3S700AN dapat mengatur hasil Output melalui Switch / Push Button yang terdapat didalam Modul FPGA Spartan 3AN XC3S700AN 32
untuk dapat menentukan nilai akhir dari Output yang dihasilkan, Berdasarkan yang kita inginkan setelah dilakukan pemrograman dengan mengunakan bahasa VHDL. Blok Komputer / PC yaitu berisi tentang cara memproses data yang sudah dibuat atau dirancang dengan menggunakan suatu Sofware Xilinx Ise 11, lalu data tersebut dikirim menuju FPGA Spartan 3AN XC3S700AN ke Modul Modul Outputnya lainnya. Switch / Push Button Berfungsi sebagai penghubung antara FPGA Spartan 3AN XC3S700AN ke modul Output berupa LED dan 7- Segment. Dengan sistem sebagai berikut: Data yang berasal dari sebuah modul FPGA Spartan 3AN XC3S700AN yang sudah di program menggunakan bahasa VHDL, lalu ditembakkan dengan alamat yang sudah di tentukan ke modul Switch / Push Button sesuai dengan karekteristik FPGA tersebut. Bila salah satu Switch / Push Button ditekan/digeser berdasarkan nilai logika yang telah ditentukan. maka data yang berasal dari Switch ini akan dikirimkan kembali ke Modul FPGA Spartan 3AN XC3S700AN lalu data tersebut diteruskan menuju Modul Output LED untuk menunjukan nilai hasil Output. Blok Modul Output LED atau 7-Segment yaitu berisi tentang bagaimana cara menampilkan Inputan yang diberikan atau dikirimkan oleh FPGA Spartan XC3S700AN menuju Modul Output LED. Nilai input yang diberikan kedalam FPGA Spartan XC3S700AN harus sama dengan nilai Output yang dihasilkan. Bila tidak sesuai dengan nilai input dan Outputnya maka telah terjadi sebuah 33
kesalahan pada sebuah pemrogramannya atau pada Modul FPGA Spartan 3AN XC3S700AN terjadi kerusakan. Bisa juga terjadi kerusakan pada sebuah modul Output. Blok Modul Output LCD yaitu berisi tentang bagaimana cara menampilkan Inputan yang diberikan atau dikirimkan oleh FPGA Spartan 3AN XC3S700AN menuju Modul Output LCD. Data yang dikirimkan oleh Komputer berupa data ASCII pada karakter yang digunakan oleh LCD. Data Input dan Data Output harus sama dengan nilai Output yang dihasilkan oleh LCD. Bila pada keyboard kita tekan Huruf A dan kita masukan ASCII Huruf A pada pemrogramannya, maka nilai Output yang dihasilkan oleh LCD harus sama dengan yang diminta atau diprogram. Bila nilai Output pada LCD tidak sama maka terjadi pada kesalahan pada Program yang telah dibuat, atau bisa terjadi kerusakan pada Modul LCD itu sendiri. Atau bisa juga terjadi kerusakan pada cabel data yang digunakan dalam memprogram data. 3.1.1 Perangkat Keras 3.1.1.1 Modul FPGA FPGA yang digunakan dalam penyusunan skripsi ini, kami menggunakan FPGA Spartan 3AN XC3S700AN keluaran Xilinx dan Spesifikasinya adalah : 34
Gambar 3.2 Konfigurasi Spartan 3AN 1. Periksa kembali pengaturan jumper seperti pada Gambar 3.3 2. Jika diperlukan sambungkan perangkat tampilan VGA. Perangkat dapat berupa sebuah CRT, flatpanel, atau bahkan proyektor. 3. Jika diperlukan sambungkan headphone atau speaker ke audio jack. 4. Atur switch SUSPEND ke posisi RUN. 5. Sambungkan AC adaptor ke listrik dan modul FPGA. Gunakan sambungan yang sesuai. 6. Nyalakan switch power. 7. LCD dan tampilan VGA jika sudah terpasang dengan benar akan menampilan berbagai informasi dan instruksi. 8. Gunakan putaran atau pushbutton untuk mengendalikan berbagai fungsi FPGA. 9. Jika diperlukan sambungkan PS/2 keyboard untuk mendukung rancangan. 35
10. Jika diperlukan sambungkan sebuah komputer ke 9-pin serial cable. Gambar 3.3 Pengaturan jumper Spartan 3 AN 3.1.1.2 Modul FPGA Spartan 3AN XC3S700AN Modul FPGA Spartan 3AN XC3S700AN adalah sebuah modul FPGA dengan menggunakan FPGA keluaran Xilinx. FPGA ini berfungsi memroses data secara tepat dan akurat dengan jumlah memory yang lebih banyak dibanding dengan Mikrokontroller. FPGA Spartan 3AN XC3S700AN mempunyai fitur fitur sebagai berikut: 1. Sambungan PS/2 untuk mouse/keyboard. 2. Tampilan LED. 3. Tampilan LCD. 36
4. Empat slide switch. 5. Empat pushbutton. 6. 50 Mhz sumber clock kristal oscillator. 7. Sambungan untuk tambahan kristal oscillator. 8. Pengaturan FPGA melalui pengaturan jumper. 9. Push button untuk memaksa pengaturan ulang FPGA. 10. Indikator LED ketika FPGA telah berhasil dikonfigurasi. 11. Tiga buah 40-pin koneksi tambahan untuk meningkatkan kinerja FPGA 12. Sambungan JTAG untuk download cable. 13. Digilent JTAG kabel download/debugging menuju ke PC parallel port. 14. JTAG download/debug yang cocok dengan Xilinx Parallel Cable IV dan MultiPRO Desktop Tool. 15. Adaptor AC untuk daya +5V. 16. LED indikator nyala. Gambar 3.4 Modul FPGA Spartan XC3S700AN 3.1.1.3 Modul Output LED 37
Modul Output LED yang digunakan adalah kumpulan beberapa LED sesuai dengan banyaknya bit yang dapat dikeluarkan oleh sebuah modul FPGA Spartan 3AN XC3S700AN. Dan berfungsi untuk melihat tampilan keluaran atau Output yang dihasilkan dari proses pengolahan data di dalam FPGA. 3.1.1.4 Modul Switch atau Push Button. Gambar 3.5 Modul LED Modul Switch atau Push Button yang digunakan adalah kumpulan dari beberapa Switch atau Push Button yang dirangkai atau disusun sesuai dengan banyaknya LED yang terdapat pada Modul Output LED yang telah di jelaskan diatas. Switch ini berfungsi untuk mengatur hasil yang dikeluarkan oleh FPGA Spartan 3AN XC3S700AN dan ditunjukan pada Modul LED sebagai Output. 38
Gambar 3.6 Modul Push Button 3.1.1.5 Kabel USB CABLE Kabel USB CABLE yang digunakan adalah untuk mengirimkan data hasil rancangan dari sebuah PC ke sebuah FPGA Spartan 3AN XC3S700AN. Gambar 3.7 Kabel USB CABLE 3.1.1.6 Power Supply 39
Power Supply digunakan untuk memberikan daya pada FPGA Spartan 3AN XC3S700AN dengan arus DC karena FPGA Spartan 3AN XC3S700AN menggunakan arus DC sebagai daya dalam memproses suatu data. Gambar 3.8 Adaptor Power Supply 3.1.2 Perangkat Lunak Pengembangan driver VGA card dengan menggunakan software Xilinx ISE. Didalam sebuah FPGA Spartan 3AN XC3S700AN tidak lepas dari sebuah pemrograman. Dalam pemrograman digunakan dengan bahasa VHDL. Dalam 40
pemrograman di gunakan sebuah software Xilinx ISE 11 dalam sebuah perancangan program. Gambar 3.9 Xilinx ISE 11 3.1.2.1 Penjelasan Software Jenis FPGA yang digunakan adalah FPGA Spartan 3AN XC3S700AN keluaran xilinx, kemudian pada software menggunakan software Xilinx ISE 11 dalam pemrogramannya. Xilinx ISE 11 menyediakan fitur fitur pemrograman menggunakan bahasa VHDL, Bahasa Verilog,Bahasa C dan Bahasa Assembly. Gambar 3.10 Tampilan Muka Xilinx ISE 41
Untuk memroses FPGA dalam membuat suatu program, dilakukan dengan cara seperti Check Syntax Synthesize Implement Design Program FPGA dengan menggunakan bantuan Software Xilinx Impact 11. Gambar 3.11 Tampilan Muka Xilinx Impact 11 3.1.2.2 Proses Pemrograman FPGA Proses untuk memprogram suatu FPGA adalah sebagai berikut : Compile Synthesize Implement Design ( Translate Design, Map Design to FPGA, 42
Place & Route, Timing Analysis, Generate Programming File) Program FPGA. Proses semua ini dijalankan atau dilakukan dalam Software Xilinx ISE 11. Gambar 3.12 Menu Xilinx ISE 3.1.2.3 Burning Program Proses pemrograman dari Xilinx Ise 11 ke FPGA Spartan 3AN XC3S700AN (Burning FPGA) menggunakan program Xilinx Impact 11. Pertama Program dibuat kedalam bentuk PROM ; Kedua Menuju Ke Boundary Scan dan masukan Device yang telah dibuat melalui PROM. Lalu 43
diproses/program. Dan FPGA akan berjalan berdasarkan program yang dibuat/diinginkan. Gambar 3.13 Menu Tampilan PROM FILE 3.1.3 Skematik Sistem 44
Gambar 3.14 Skematik Sistem Inisialisasi 3.1.4 Potongan Potongan Program VHDL Library dan * Library VHDL yang digunakan : Library IEEE; Use IEEE.std_logic_1164.all; Use IEEE.STD_Logic_Arith.all; Use IEEE.STD_Logic_Unsigned.all; 45
* Inisialisasi pin yang digunakan : entity switch_led is Port ( sw : in STD_LOGIC_VECTOR (3 downto 0); led : out STD_LOGIC_VECTOR (7 downto 0)); end switch_led; 3.1.5 Program VHDL pada FPGA Spartan 3AN XC3S700AN Program Switch LED Display Library IEEE; Use IEEE.std_logic_1164.all; Use IEEE.STD_Logic_Arith.all; Use IEEE.STD_Logic_Unsigned.all; entity switch_led is Port ( sw : in STD_LOGIC_VECTOR (3 downto 0); led : out STD_LOGIC_VECTOR (7 downto 0)); end switch_led; architecture Behavioral of switch_led is begin led <= "00000000" when sw = "0000" else "10000001" when sw = "0001" else "10000010" when sw = "0010" else "10000100" when sw = "0011" else 46
"10001000" when sw = "0100" else "10010000" when sw = "0101" else "10100001" when sw = "0110" else "11010000" when sw = "0111" else "10110000" when sw = "1000" else "10010110" when sw = "1001" else "11101100" when sw = "1010" else "11111111"; end Behavioral; 3.1.6 Program VHDL TestBench Pada FPGA Spartan 3AN XC3S700AN LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.all; ENTITY LED_TESTBENCH IS END LED_TESTBENCH; ARCHITECTURE behavior OF LED_TESTBENCH IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT LED_one PORT( sw : IN std_logic_vector(3 downto 0); 47
led : OUT std_logic_vector(7 downto 0); reset : IN std_logic; clk_50m : IN std_logic ); END COMPONENT; --Inputs signal sw : std_logic_vector(3 downto 0) := (others => '0'); signal reset : std_logic := '0'; signal clk_50m : std_logic := '0'; --Outputs signal led : std_logic_vector(7 downto 0); -- Clock period definitions constant clk_50m_period : time := 1us; BEGIN -- Instantiate the Unit Under Test (UUT) uut: LED_one PORT MAP ( sw => sw, led => led, reset => reset, clk_50m => clk_50m ); -- Clock process definitions clk_50m_process :process begin 48
clk_50m <= '0'; wait for clk_50m_period; clk_50m <= '1'; wait for clk_50m_period; end process; -- Stimulus process stim_proc: process begin -- hold reset state for 100ms. wait for 100ms; --Sample way of setting inputs - reset used as a redundant example. reset <= '1'; wait for 10ns; reset <= '0'; wait for 10ns; wait; end process; END; 49