Praktikum Sistem Digital Lanjut Percobaan 5: Desain Rangkaian Sekuensial 1 Tujuan dan Sasaran Kegiatan praktikum ini bertujuan untuk membuat rangkaian yang menampilkan keluaran LED secara sekuensial yang dikontrol oleh pemutaran rotary-knob dan tombol push-button. Konsep yang ingin dipahami adalah rancangan rangkaian sekuensial menggunakan FSM (Finite State Machine). Kegiatan praktikum ini bertujuan untuk membuat generator sinyal clock yang dapat diatur keluaran frekuensinya. Sasaran kegiatan praktikum adalah: 1. Praktikan dapat memahami rangkaian sekuensial menggunakan diagram Moore; 2. Praktikan dapat mengimplementasikan rancangan tersebut untuk mengontrol nyala LED secara sekuensial dengan pemutaran rotary-knob dan/atau tombol push-button; 3. Praktikan dapat menganalisis hasil implementasi; 4. Praktikan dapat menganalisis perilaku masukan-keluaran desain di board Starter Kit; Sumber referensi yang bisa digunakan: 1. UG230: Spartan-3E FPGA Starter Kit Board User Guide, Xilinx, June 2008 2. Ken Chapman: Rotary Encoder Interface for Spartan-3E Starter Kit, Xilinx, 2006 3. Spartan-3E Starter Board Schematic, Digilent, Feb 2006 4. Xilinx ISE Design Suite 11 Software Manual, Xilinx, 2009 5. Verilog Tutorial (online): http://www.asic-world.com/verilog/veritut.html 2 Alat dan Bahan Alat dan bahan yang digunakan adalah: 1. Board Starter Kit Spartan-3E berbasis Xilinx FPGA XC3S500E-4FG320C; Modul (komponen) I/O yang akan digunakan dalam praktikum: a) 4 buah tombol push-button (BTN North, BTN East, BTN South, BTN West); b) 1 buah rotary-knob (ROT-A/B); c) 8 buah LED (LD0-7); d) Sumber clock 50MHz dan konektor SMA; 2. Kabel USB dengan konektor tipe-B; 3. Osiloskop digital; 4. Adaptor sumber daya DC 5 Volt; 5. Software Xilinx ISE Webpack 11.1;Dasar Teori 3 Dasar Teori Di bab ini dijelaskan tentang rotary-encoder (di komponen rotary-knob), sumber clock di starter kit dan FSM (Finite State Machine). Penjelasan tentang komponen lain yang digunakan
12
Embed
Modul 5: Desain Rangkaian Sekuensial - · PDF fileKegiatan praktikum ini bertujuan untuk membuat generator sinyal clock yang dapat ... Dasar Teori 3 Dasar Teori ... sekuensial sinkron
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Praktikum Sistem Digital LanjutPercobaan 5: Desain Rangkaian Sekuensial
1 Tujuan dan SasaranKegiatan praktikum ini bertujuan untuk membuat rangkaian yang menampilkan keluaran LED secara sekuensial yang dikontrol oleh pemutaran rotary-knob dan tombol push-button. Konsep yang ingin dipahami adalah rancangan rangkaian sekuensial menggunakan FSM (Finite State Machine). Kegiatan praktikum ini bertujuan untuk membuat generator sinyal clock yang dapat diatur keluaran frekuensinya.
Sasaran kegiatan praktikum adalah:
1. Praktikan dapat memahami rangkaian sekuensial menggunakan diagram Moore;
2. Praktikan dapat mengimplementasikan rancangan tersebut untuk mengontrol nyala LED secara sekuensial dengan pemutaran rotary-knob dan/atau tombol push-button;
3. Praktikan dapat menganalisis hasil implementasi;
4. Praktikan dapat menganalisis perilaku masukan-keluaran desain di board Starter Kit;
Sumber referensi yang bisa digunakan:
1. UG230: Spartan-3E FPGA Starter Kit Board User Guide, Xilinx, June 2008
2. Ken Chapman: Rotary Encoder Interface for Spartan-3E Starter Kit, Xilinx, 2006
3. Spartan-3E Starter Board Schematic, Digilent, Feb 2006
4. Xilinx ISE Design Suite 11 Software Manual, Xilinx, 2009
2 Alat dan BahanAlat dan bahan yang digunakan adalah:
1. Board Starter Kit Spartan-3E berbasis Xilinx FPGA XC3S500E-4FG320C;
Modul (komponen) I/O yang akan digunakan dalam praktikum:
a) 4 buah tombol push-button (BTN North, BTN East, BTN South, BTN West);
b) 1 buah rotary-knob (ROT-A/B);
c) 8 buah LED (LD0-7);
d) Sumber clock 50MHz dan konektor SMA;
2. Kabel USB dengan konektor tipe-B;
3. Osiloskop digital;
4. Adaptor sumber daya DC 5 Volt;
5. Software Xilinx ISE Webpack 11.1;Dasar Teori
3 Dasar TeoriDi bab ini dijelaskan tentang rotary-encoder (di komponen rotary-knob), sumber clock di starter kit dan FSM (Finite State Machine). Penjelasan tentang komponen lain yang digunakan
telah dijabarkan di praktikum sebelumnya.
3.1 Rotary-Knob dan Enkoder Putar
Rotary-knob berisi tombol tekan dan enkoder putar yang digunakan sebagai masukan. Tombol tekan dan eknoder putar akan menghasilkan sinyal keluaran ROT_CENTER, ROT_A dan ROT_B (Gambar 1). Rotary-enkoder menggunakan sistem mekanik yang mungkin rentan terhadap bouncing. Untuk mengatasinya digunakan filter (Gambar 2).
Gambar 1: Tombol tekan dan enkoder putar di rotary-knob beserta sinyal-sinyal keluarannya (UG320, Ken Chapman)
Gambar 2: Bouncing dan hasil keluaran enkoder hasil dari filter (Ken Chapman)
3.2 Sumber Clock di Starter Kit
Dalam starter kit terdapat sumber clock on-board 50MHz. Selain itu, sumber clock juga bisa diperoleh dari eksternal melalui sebuah konektor tipe-SMA (CLK_SMA). Dalam praktikum, sumber clock akan menggunakan clock on-board 50MHz, sedangkan keluaran clock akan dilewatkan melalui konektor CLK_SMA untuk diukur frekuensinya dengan osilopkop (Gambar 3). Koneksi clock ini ditunjukkan dalam Gambar 4.
3.3 Finite State Machine (FSM)
Rangkaian sekuensial keluarannya tergantung dari masukannya saat itu dan masukan sebelumnya. Dalam rangkaian ini terdapat elemen penyimpan (storage) berupa flip-flop. Flip-flop dapat menyimpan 1-bit data masukan. Register n-bit tersusun atas n buah flip-flop, sehingga dapat menyimpan data masukan sejumlah n-bit.
Rangkaian sekuensial dapat disebut juga rangkaian FSM (finite state machine). Rangkaian sekuensial sinkron menggunakan sebuah clock untuk mengontrol operasinya. Rangkaian ini direalisasikan menggunakan logika kombinasional dan satu atau beberapa flip-flop. Model yang bisa digunakan adalah (Gambar 5):
1. model Moore: keluaran rangkaian tergantung hanya pada state (keadaan) rangkaian saat ini;
2. model Mealy: keluaran rangkaian tergantung pada state saat ini dan masukan utamanya;
Gambar 3: Sumber clock dan port keluaran clock yang akan digunakan dalam praktikum (Sumber: UG320)
Gambar 4: Koneksi sumber clock dan CLK_SMA serta definisi UCF
GNDVCC
IO12(E8)IO11(F8)
IO12 digunakan sebagai port CLK_OUT
IO10(C7)
IO9(D7)
4 Cara KerjaKegiatan praktikum dilakukan untuk memenuhi kebutuhan desain yang diinginkan. Setiap tahap dilakukan berdasarkan cara kerja yang diuraikan dalam Subbab 4.2. Hasil kegiatan praktikum yang ditandai dengan ikon dituliskan dalam Lembar Isian Kegiatan. Laporan akhir disusun dengan menyertakan hasil kegiatan praktikum.
4.1 Kebutuhan Desain
Desain yang akan diimplementasikan dalam praktikum ini adalah:
1. Enkoder putar (ROT_ENC), menghasilkan keluaran Out 2-bit yang menandakan arah putaran (0x: tidak ada pemutaran, 11: ke kiri, 10: ke kanan, lainnya: tidak ada putaran);
2. Pencacah asinkron up-down 3-bit (COUNT_3B) menghasilkan nilai keluaran 0-7 dari input tombol tekan (BTN_*) dan enkoder puter;
3. Clock divider (CLOCK_DIV) membagi frekuensi sinyal masukan clk (50MHz) berdasarkan nilai masukan pembaginya (div), seperti ditunjukkan dalam Tabel 1;
4. Indikator frekeunsi (CLOCK_STAT) berlaku seperti dekoder 3-to-8;
5. 2 buah debouncer tombol, yaitu DEBOUNCER_UP untuk BTN_EAST (Up) dan DEBOUNCER_DOWN untuk BTN_WEST (Down);
Desain tersebut dibuat sebagai modul dan akan diintegrasikan dalam satu top_module. Diagram blok top_module beserta koneksinya diperlihatkan dalam Gambar 6 dan Tabel 2.
Gambar 5: Model FSM: Moore dan Mealy
Gambar 6: Diagram blok sistem yang dirancangXC3S500E-4FG320C
NORTH
EAST
SOUTHWEST
ROT_A
BTN_NORTH
BTN_EAST
BTN_SOUTH
BTN_WEST
V4
H13
K17
D18
K18
F9
E9
D11
C11
F11
E11
E12
F12
LED<7>
LED<6>
LED<5>
LED<4>
LD7
LD6
LD5
LD4LED<3>
LED<2>
LED<1>
LED<0>
LD3
LD2
LD1
LD0
top_module
COUNT_3B
CLOCK_STAT
in[2:0]Out[2:0]Set
Reset
Up
Down
rlrot[1:0]
F9
E9
C11
F11
E11
E12
F12
Out[7:0]
ROT_Aclk
DEBOUNCER
CLK C9CLK
ROT_B G18ROT_B
CLK_SMACLKOUTA10
CLOCK_DIV
div[2:0] Clkout
clk
ROT_ENC
rot_Arot_B
rlrot[1:0]
2
3
clk
Clkout2
Next-state logic Current-state logic Output logic
4.2 Langkah Kerja
Kegiatan praktikum meliputi hal-hal sebagai berikut:
1. Menuliskan kode HDL untuk COUNT_3B, DEBOUNCER, ROT_ENC, CLOCK_STAT dan CLOCK_DIV sebagai modul. Masukkan modul tersebut dalam proyek desain_sekuensial;
2. Mengaplikasikan modul-modul tersebut dalam satu top_module (sekuensial_top);
Tabel 1: Nilai frekuensi keluaran CLK_DIV dari nilai masukan pembaginya
4.2.1 Membuat Proyek Baru
Langkah-langkah membuat proyek baru:
1. Pilih menu File→New Project (Alt+F W). Dialog pop-up New Project Wizard akan muncul. Ketikkan field Name dengan nama proyek (Format: <nama_kelompok>-Modul5-DesainSekuensial). Browse lokasi proyek/Location (folder $HOME_DIR/<nama_kelompok>). Isi field Description dengan penjelasan tentang proyek. Tipe source top-level menggunakan HDL
Tuliskan field Name, Location dan Description dalam lembar kegiatan;
2. Klik tombol Next. Jendela Device Properties muncul. Pilih Family (Spartan3E), Device (XC3S500E), Package (FG320) dan Speed (-4). Properti ini adalah device-dependent (Starter Kit menggunakan FPGA XC3S500E-4FG320C), jadi harus dimasukkan dengan benar. Set Preferred Language dengan Verilog
Catat field Family, Device, Package dan Speed ini dalam lembar kegiatan;
4.2.2 Menambah Modul Desain dan Konstrain
Modul yang perlu ditambahkan ada 5 buah, yaitu count_3b, debouncer, rot_enc, clock_stat dan clock_div. Langkah-langkahnya adalah sebagai berikut:
1. Buat modul-modul verilog seperti dalam Tabel 3. Masukkan dalam proyek;
2. Edit file count_3b.v, debouncer.v, rot_enc.v, clock_div.v dan clock_stat.v. Listing kode sumber HDL untuk semua desain modul ada dalam Lampiran;
(Tugas) Jelaskan perilaku tiap kode HDL tersebut. Gambarkan diagram dan tabel state dari modul count_3b menggunakan model Moore
(Tugas) Jelaskan kerja dari clock divider. Gambarkan diagram pewaktuan sinyal masukan dan keluaran dari modul clock_div
3. Tambahkan file konstrain desain_sekuensial.ucf. Isi file tersebut ada dalam Lampiran;
No Nama Modul Masukan Keluaran Keterangan
1. count_3b setresetup
downrlrot[1:0]
clk
y_out[2:0] Modifikasi dari count_1 (bab IV) dengan menghilangkan mode dan y_out menjadi 3 bit. Tambahan input rlrot 2-bit (R/L) untuk counting dari enkoder rotary
5. clock_stat data_in[2:0] data_out[7:0] Display nilai frekuensi clock dalam simbol
Tabel 3: Nama modul-modul desain yang akan dibuat
4.2.3 Mengaplikasikan Modul dalam Desain (Top Module)
Ketiga modul tersebut di atas akan diaplikasikan dalam satu top_module (desain berbasis komponen). Langkah yang diperlukan adalah:
1. Buat top_module yang mengintegrasikan kedua modul tersebut dengan nama sekuensial_top. Definisi port masukan dan keluaran dari sekuensial_top ini ditunjukkan dalam Tabel 4;
2. Panggil ketiga modul dari sekuensial_top ini dan interkoneksikan port-portnya. Listing kode sumber HDL untuk sekuensial_top.v ada dalam Lampiran. Tampilan ISE setelah integrasi ditunjukkan dalam Gambar 7;
4.2.4 Sintesis dan Implementasikan Top Modul
Modul sekuensial_top akan disintesis dan diimplementasikan. Langkah-langkahnya adalah sebagai berikut:
1. Cek apakah modul sekuensial_top sudah menjadi top_module. Hanya top_module yang bisa disintesis dan diimplementasikan. Jika belum, klik kanan modul tersebut dan pilih 'Set as Top Module';
2. Bangkitkan skematik RTL dari sekuensial_top. Klik “View RTL Schematic” dari proses Synthesize dan juga “View Technology Schematic”. Tambahkan elemen yang tersedia
No Nama Modul Masukan Keluaran Keterangan
1. sekuensial_top BTN_NORTH, BTN_EAST,
BTN_SOUTH, BTN_WEST,
CLKROT_AROT_B
LED[7:0]CLK_SMACLK_OUT
Tabel 4: Nama port masukan dan keluaran di modul sekuensial_top.v
Gambar 7: Modul-modul yang diperlukan diintegrasikan ke sekuensial_top
dan klik tombol “Create Schematic”. Lihat blok dari elemen dan bagaimana isinya (rangkaian logikanya);
Simpan gambar blok elemen beserta rangkaian skematiknya dalam file gambar (dengan snapshot). Skematik ini beserta penjelasannya harus dilampirkan di laporan
(Tugas) Jelaskan perbedaan antara skematik RTL dan skematik teknologi (secara terminologi dan konseptual)
3. Sintesis dan implemen kombinasional_top dengan mengklik kanan proses “Implement Design” dan pilih “Rerun All”;
Lihat ringkasan laporan desain dari implementasi kombinasional_top tersebut dengan melihat tab Design Summary. Jika belum ada, klik menu Project→Design Summary/Report. Catat hasilnya untuk mengisi tabel utilisasi device di lembar kegiatan;
4.2.5 Memprogram FPGA dan Pengamatan Perilaku Sistem
Perilaku sistem diamati dengan melihat keluaran dari masukan yang diberikan. Keadaan keluaran ditunjukkan oleh LED dan sinyal gelombang CLK_OUT. Osiloskop digital (DS1052E) digunakan untuk melihat bentuk sinyal CLK_OUT. Channel yang digunakan untuk praktikum ini adalah CH1 (konsultasikan penggunaan osiloskop ini dengan asisten).
2. Jalankan Xilinx iMPACT jika belum dijalankan. Pastikan kabel USB telah terpasang di starter kit dan komputer;
3. Dari Xilinx iMPACT, klik ganda “Boundary Scan”. Kemudian klik kanan dan pilih Initialize Chain (Ctrl+I) untuk menginisialisasi Boundary Scan;
4. Yang diperlukan adalah mengkonfigurasi FPGA, sedangkan flash XCF04S dan CPLD XC2C64 dibiarkan bypass. Klik kanan device FPGA dan pilih “Assign New Configuration File”. Pilih file sekuensial_top.bit untuk diprogram ke FPGA. Nama file konfigurasi akan tampil di bawah device FPGA;
5. Sambungkan kabel osiloskop digital ke kanal CH1. Sinyal keluaran CLK_OUT diukur dari port IO12/E8. Sinyal CLK_OUT dapat diprobe dengan osiloskop dari port IO12 ini dan GND;
6. Klik kanan device FPGA dan pilih “Program” untuk mengkonfigurasi FPGA;
7. Nyalakan osiloskop. Klik tombol AUTO di osiloskop dan tombol Measure. Tombol Measure digunakan untuk melihat properti sinyal (misalnya frekuensi, periode, risetime, falltime, dll). Tampilkan semua properti sinyal dengan memilih “Display All”;
8. Perilaku keluaran dapat diamati dengan menekan tombol BTN_* (Set, Reset, Up, Down) dan memutar rotary knob untuk mendapatkan frekuensi sinyal CLK_OUT yang bersesuaian;
Amati perilaku sistem (dari keadaan LED dan sinyal yang ditunjukkan di osiloskop) dan isi tabel di lembar kegiatan;
Bandingkan frekuensi yang diperoleh dengan Tabel 1
4.3 Lampiran Kode HDL
Nama file modul bersesuaian dengan nama modulnya. File desain_sekuensial.ucf juga disertakan.