[email protected], [email protected] 1 MODUL 3
Stopwatch
I. Pendahuluan
Pada praktikum ini, anda akan mempelajari cara mengembangkan sebuah sistem pada IC FPGA Spartan-II buatan menggunakan software ISE WebPack. Sistim yang dibuat adalah sebuah stopwatch. Bagian-bagian penyusun stopwatch ditulis dengan VHDL untuk selanjutnya dikonversi menjadi modul skematik karena disain top-level yang digunakan adalah skematik. Setelah melakukan sintesis, mendeskripsikan pin-pin yang digunakan sebagai input dan output, dan melakukan implementasi, maka file bit-stream yang dihasilkan didownload pada IC FPGA untuk merealisasikan disain yang dibuat.
II. Tujuan
Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : • dapat menjelaskan arsitektur dasar dari sebuah IC FPGA.
• dapat menjelaskan alur pengembangan FPGA menggunakan ISE WebPACK; mendisain, mensintesis, implementasi dan melakukan download.
• dapat membuat makro/modul dari disain VHDL dan skematik.
• dapat membuat disain stopwatch sederhana dengan fasilitas reset, start dan stop.
III. Gambaran Disain
Disain stopwatch yang dibuat akan diimplementasikan pada IC FPGA. Sistem ini mempunyai tiga buah push-button sebagai input yang berfungsi sebagai reset, start dan stop. Stopwatch mendapatkan sumber clock dari osilator yang berada pada board. Output dari stopwatch adalah dua buah seven segmen untuk menampilkan angka 00 sampai 99.
IV. Dasar Teori
Teknologi FPGA
Sebuah FPGA menggunakan pendekatan yang berbeda dibandingkan dengan CPLD. FPGA mempunyai sekumpulan CLB (configurable logic block) tersusun dalam array dengan diselang-selingi switch yang dapat mengatur-ulang interkoneksi antar logic block. Tiap logic block dapat diprogram untuk melakukan sebuah fungsi logika (seperti AND, OR, XOR, dsb.) dan kemudian switch juga dapat diprogram untuk menghubungkan blok-blok sehingga fungsi logika yang lengkap dapat dilaksanakan.
Gambar 1. Arsitektur dasar FPGA
Divais FPGA yang akan kita gunakan adalah SpartanII XC2S50 yang mempunyai kapasitas matriks CLB selebar 16 x 24 atau sebanyak 384 CLB. Pada sebuah CLB terdapat dua buah
slice, jadi total slice pada XC2S50 sebanyak 768. IC tersebut dikemas dalam kemasan 144-pin
TQFP. IC ini bersama dengan komponen yang lain dikemas dalam sebuah development board XSA-50 buatan XESS Corp.
Alur pemrograman FPGA ditunjukkan oleh gambar 2. Divais FPGA yang dipakai menggunakan teknologi RAM sehingga file konfigurasi (bit-stream) akan hilang apabila power suplai divais dimatikan.
[email protected], [email protected] 3
Gambar 2. Alur pemrograman divias FPGA
Referensi:
- http://www.xess.com
V. Peralatan
• 1 set PC yang dilengkapi dengan software ISE WebPack dan ModelSim. • 1 development board XSA-50 dan XSTend Board
• 1 power-supply +9VDC
VI. Prosedur Praktikum
Blok diagram dari stopwatch sederhana ditunjukkan oleh gambar 3. Cara kerjanya sebagai berikut:
• Bila sinyal reset diaktifkan maka tampilan seven segmen menjadi nol dan diam. • Bila sinyal start diaktifkan maka seven segmen akan menampilkan nilai dari counter.
• Bila sinyal stop diaktifkan maka tampilan seven segmen akan berhenti, tetapi counter masih terus menghitung. Bila sinyal start diaktifkan maka nilai counter akan kembali ditampilkan pada seven segmen.
Gambar 3. Blok diagram stopwatch
Langkah-langkah percobaan adalah sebagai berikut. 1. Jalankan software ISE WebPACK.
2. Buat project baru dengan parameter berikut
Project name : modul3 Project location : e:\embedded Top-level modul type : schematic
Device family : Spartan2 Device : xc2s50 Package : tq144 Speed grade : -6
3. Tambahkan pada project (new source) modul skematik dengan nama mycounter. 4. Buatlah disain skematik seperti pada gambar 4. Kemudian simpan.
[email protected], [email protected] 5 5. Pada skematik tersebut (Xilinx ECS) pilih Tools Æ Symbol Wizard, pada pin name
source pilih Using Schematic. Tekan tombol NEXT sampai FINISH. Maka akan terbentuk simbol skematik dengan nama mycounter.
6. Pada Xilinx - Project Navigator, tambahkan source baru tipe skematik dengan nama
counter99. Buatlah disain skematik seperti gambar 5 pada Xilinx ECS. Setelah
disimpan, pilih Tools Æ Symbol Wizard, pada pin name source pilih Using Schematic. Tekan tombol NEXT sampai FINISH. Maka akan terbentuk simbol skematik dengan nama counter99.
Gambar 5. Modul Counter99
7. Pada Xilinx - Project Navigator, tambahkan source baru tipe VHDL module dengan nama dekoder7s. Ketikkan program VHDL berikut. Lakukan sintesis, bila tidak ada error, buatlah simbol skematiknya (Create Schematic Symbol).
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dekoder7s is
port(
d : in std_logic_vector(3 downto 0); s : out std_logic_vector(7 downto 0) );
end dekoder7s;
architecture Behavioral of dekoder7s is begin
s <= "00000110" when d="0001" else --1
"01011011" when d="0010" else --2
"01001111" when d="0011" else --3
"01101101" when d="0101" else --5
"01111101" when d="0110" else --6
"00000111" when d="0111" else --7
"01111111" when d="1000" else --8
"01101111" when d="1001" else --9
"01110111" when d="1010" else --A
"01111100" when d="1011" else --b
"00111001" when d="1100" else --C
"01011110" when d="1101" else --d
"01111001" when d="1110" else --E
"01110001" when d="1111" else --F
"00111111"; --0
end Behavioral;
8. Pada Project Navigator, tambahkan source baru kembali tipe VHDL module dengan nama latch. Ketikkan program VHDL berikut. Lakukan sintesis, bila tidak ada error, buatlah simbol skematiknya.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity latch is port(
clk,main_rst : in std_logic;
d0,d1,d2,d3,d4,d5,d6,d7 : in std_logic; start,stop : in std_logic;
rst_counter : out std_logic;
data1,data2 : out std_logic_vector(3 downto 0) );
end latch;
architecture Behavioral of latch is
signal q,r : std_logic := '0';
signal hold1,hold2 : std_logic_vector(3 downto 0) := "0000";
begin
process(clk,main_rst,start,stop)
begin
if (clk'event and clk='1') then if (main_rst='1') then
q <= '0';
r <= '1';
elsif (start='1') then
q <= '1';
r <= '0';
elsif (stop='1') then
q <= '0'; r <= '0'; end if; end if; end process; process(clk,r,q,d7,d6,d5,d4,d3,d2,d1,d0) begin
if (clk'event and clk='1') then if (r='1') then
hold1 <= "0000";
hold2 <= "0000";
elsif (q='1') then
hold1 <= d3 & d2 & d1 & d0; hold2 <= d7 & d6 & d5 & d4;
end if;
end if;
end process;
rst_counter <= r; data1 <= hold1; data2 <= hold2;
[email protected], [email protected] 7 9. Pada Project Navigator, tambahkan source baru tipe VHDL module dengan nama
div_clk. Modul ini digunakan untuk melambatkan clock karena clock eksternal yang
digunakan pada board mempunyai frekuensi 50MHz. Ketikkan program VHDL berikut. Lakukan sintesis, bila tidak ada error, buatlah simbol skematiknya.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity div_clk is port(
clk : in std_logic; clk_out : out std_logic
);
end div_clk;
architecture Behavioral of div_clk is
signal cnt : std_logic_vector(23 downto 0) := (others=>'0');
begin
process(clk)
begin
if (clk'event and clk='1') then
cnt <= cnt + "01";
end if;
end process;
clk_out <= cnt(cnt'high);
end Behavioral;
10. Pada Project Navigation, buatlah source baru tipe skematik dengan nama toplevel. Gabungkan disain seperti pada gambar 6. Kemudian simpan.
11. Pada Project Navigation, tambahkan source baru tipe Implementation Constraints File dengan nama pin. Tempelkan pada modul toplevel. Ketikkan nomor pin berikut, kemudian simpan.
net clk loc=p88; net reset loc=p23; net start loc=p26; net stop loc=p78;
net tes loc=p59;
net msb<0> loc=p48; net msb<1> loc=p27; net msb<2> loc=p40; net msb<3> loc=p47; net msb<4> loc=p28; net msb<5> loc=p42; net msb<6> loc=p29; net msb<7> loc=p38; net lsb<0> loc=p56; net lsb<1> loc=p51; net lsb<2> loc=p65; net lsb<3> loc=p64; net lsb<4> loc=p76; net lsb<5> loc=p54; net lsb<6> loc=p50; net lsb<7> loc=p63;
12. Pada jendela proses, klik ganda Generate Programming File, bila tidak ada error akan dihasilkan file bit-stream dengan nama toplevel.bit.
Gambar 7. Tampilan seluruh disain pada jendela Project
13. Download file toplevel.bit pada target menggunakan GSLOAD. 14. Tes hasil disain pada board, apakah telah sesuai dengan disain.
[email protected], [email protected] 9
VII. Laporan sementara
Jawablah pertanyaan berikut sebagai laporan sementara :
1. Jelaskan kembali dengan singkat bagaimana proses alur pengembangan program menggunakan divais FPGA!
2. Berapakah jumlah slice yang diperlukan untuk membuat disain stopwatch tersebut? Anda dapat melihat hasil laporan implementasi pada Place & Route Report.
VIII. Laporan resmi
Jawablah pertanyaan berikut untuk bagian analisa pada laporan resmi: 1. Gambarkan disain top-level skematik yang dibuat.
2. Jelaskan kembali fungsi dan cara kerja dari masing-masing blok (modul) yang telah dibuat.