Anda di halaman 1dari 25

INSTITUT TEKNOLOGI DEL

TUGAS
14S4003 Sistem Tertanam
Semester I Tahun Ajar 2021/2022

Tanggal Sesi : 19 Oktober 2021


Topik : Pengenalan Perancangan Sistem Berbasis NIOS II
Menggunakan Altera Qsys System Integration Tool
Aktifitas : Mahasiswa mempelajari dan melakukan perancangan sistem
NIOS II menggunakan Board FPGA ALTERA DE1
Tujuan : Mahasiswa dapat merancang sistem berbasis NIOS II
menggunakan Qsys tool
Waktu pengerjaan : 2 jam
Setoran : File proyek hasil pengerjaan contoh program dikompres
menjadi file dengan ekstensi .zip. Nama file dengan format:
pst_m02_NIM.zip. NIM diganti dengan NIM Anda.
Batas penyerahan : 19 Oktober 2021 sebelum pukul 21.00 WIB
Tempat Penyerahan : http://ecourse.del.ac.id
Sarana : Board FPGA ALTERA DE1
Quartus II version 13.0 Web Edition
Referensi : Buku Manual Board FPGA ALTERA DE1
Introduction_to_the_Altera_Qsys_Tool
Pong P. Chu, Embedded SoPC Design with Nios II Processor
and VHDL Examples, Wiley, 2011.

1 PENDAHULUAN
Praktikum ini menyajikan pengantar Altera Qsys System Integration
Tool, yang digunakan untuk merancang sistem perangkat keras digital
yang berisi komponen seperti prosesor, memori, input/output interfaces,
timer, dan sejenisnya. Qsys tools memungkinkan perancang memilih
komponen yang diinginkan pada sistem dengan memilih komponen ini
menggunakan graphical user interface. Kemudian secara otomatis
menghasilkan sistem perangkat keras yang menghubungkan semua
komponen secara bersama.

2 CONTOH SISTEM PERANGKAT KERAS DIGITAL SEDERHANA


Gambar 1 memperlihatkan sistem perangkat keras sederhana yang akan
digunakan pada praktikum ini. Sistem ini mencakup Altera Nios® II
embedded processor, yang merupakan modul soft processor yang
didefinisikan sebagai kode dalam hardware-description language. Modul
Nios II dapat dimasukkan sebagai bagian dari sistem yang lebih besar, dan
kemudian sistem tersebut dapat diimplementasikan pada chip FPGA altera
dengan menggunakan perangkat lunak Quartus II.

GFP-Sistan-2019/2020 Halaman 1 dari 25


Seperti ditunjukkan pada Gambar 2, Nios II processor terhubung ke
memori dan I/O interfaces melalui interconnection network yang disebut
Avalon fabric switch. Jaringan interkoneksi ini secara otomatis dihasilkan
oleh alat Qsys.

Gambar 1: Contoh sistem NIOS II sederhana

Komponen memori pada sistem akan direalisasikan menggunakan on-chip


memory yang ada pada chip FPGA. I/O interface yang terhubung ke slider
switches dan LEDs akan diimplementasikan dengan menggunakan modul
yang telah ditentukan yang tersedia pada perangkat Qsys. Antarmuka JTAG
UART khusus digunakan untuk dihubungkan ke sirkuit yang menyediakan
USB link ke komputer host dimana Altera DE1 board terhubung. Modul
JTAG Debug disediakan untuk memungkinkan komputer host
mengendalikan sistem Nios II. Ini memungkinkan untuk melakukan operasi
seperti mendownload program Nios II ke dalam memori, memulai dan
menghentikan eksekusi program ini, pengaturan breakpoint, dan
memeriksa isi memori dan register Nios II.
Sistem pada Gambar 1 dimaksudkan untuk mewujudkan tugas sederhana.
Delapan slider swiches pada DE1 board, SW7-0, digunakan untuk
mengaktifkan atau mematikan delapan LED hijau, LEDG7-0. Untuk
mencapai operasi yang diinginkan, pola delapan bit yang sesuai dengan
state saklar harus dikirim ke port output untuk mengaktifkan LED. Ini akan
dilakukan oleh Nios II processor dengan menjalankan program yang

GFP-Sistan-2019/2020 Halaman 2 dari 25


tersimpan dalam memori on-chip. Operasi terus menerus diperlukan,
sedemikian rupa sehingga saat sakelar beralih, lampu akan berubah sesuai
kebutuhan.
Qsys tool akan digunakan untuk merancang perangkat keras yang
digambarkan pada Gambar 1. Setelah assigning pin FPGA untuk
mewujudkan koneksi antara parallel interfaces dan switch dan LED pada
board DE1, akan dilakukan kompilasi sistem yang dirancang. Akhirnya,
akan digunakan perangkat lunak yang disebut Altera Monitor Program
untuk mendownload rangkaian yang dirancang ke perangkat FPGA, dan
mendownload dan menjalankan program Nios II yang melakukan tugas
yang diinginkan.
Dengen mengerjakan modul ini diharapkan mahasiswa dapat :
 Menggunakan Qsys tool untuk merancang sistem berbasis NIOS II
 Mengintegrasikan sistem NIOS II yang dirancang kedalam project
Quartus II
 Mengimplementasikan sistem yang dirancang ke bord DE1
 Menjalankan sebuah program aplikasi pada NIOS II processor

3 ALTERA Qsys Tool


Qsys tools digunakan bersamaan dengan perangkat lunak Quartus II CAD.
Hal ini memungkinkan pengguna untuk dengan mudah membuat sebuah
sistem berbasi prosesor Nios II, dengan hanya memilih unit fungsional
yang diinginkan dan menentukan parameternya. Untuk menerapkan sistem
pada Gambar 1, kita harus instantiate unit fungsional berikut:
1. NIOS II processor
2. Memori on-chip, yang terdiri dari blok memori pada chip FPGA; akan
ditentukan memori 4-Kbyte disusun dengan 32-bit words
3. Dua parallel I/O interfaces
4. JTAG UART interface untuk komunikasi dengan host komputer
Langkah-langkah percobaan yang dilakukan adalah sebagai berikut :
1. Create project baru Quartus II dan simpan pada folder
Percobaan2A dan beri nama lights pada project dan top-level
design entity. Langkah selanjutnya pilih FPGA device yang
digunakan sesuadi dengan board yang digunakan dengan nama
device Cyclone II EP2C20F484C7.
2. Setelah menyelesaikan New Project Wizard untuk membuat proyek,
di jendela Quartus II pilih Tools  Qsys, Akan menampilkan window
seperti gambar 2. Qsys Akan digunakan untuk menambahkan
komponen ke sistem dan mengkonfigurasi komponen yang dipilih

GFP-Sistan-2019/2020 Halaman 3 dari 25


untuk memenuhi persyaratan desain. Komponen yang tersedia
ditampilkan pada sisi kiri jendela.

Gambar 2: Qsys window untuk merancang sisten NIOS II

3. Sistem perangkat keras yang Akan dihasilkan menggunakan Qsys


tool berjalan di bawah kendali sebuah clock. Pada praktikum ini
Akan digunakan clock 50 MHz yang disediakan pada board DE1.
Pengaturan clock dapat dilakukan melalui tab Clock Settings seperti
yang diilustrasikan pada Gambar 3. Di sini, dimungkinkan untuk
menentukan nama dan frekuensi sinyal clock yang digunakan dalam
project. Jika belum ada dalam tab ini, tentukan jam dengan nama
clk_0 dengan sumber yang ditunjuk sebagai Eksternal dan
frekuensinya diatur ke 50,0 MHz Pengaturannya dibuat dengan
mengklik masing-masing dari tiga kolom: Name, Source dan MHz.

Gambar 3: Tab pengaturan clock

GFP-Sistan-2019/2020 Halaman 4 dari 25


3.1 Menambahkan komponen Posessor NIOS II
Langkah selanjutnya adalah menentukan processor dengan langkah-
langkah berikut:
1. Pada sisi kiri jendela Qsys expand Embedded Processors, pilih Nios
II Processor dan klik Add, makan akan tampil window seperti
Gambar 4.

Gambar 4: NIOS II processor

2. Pilih Nios II/e yang merupakan versi ekonomi prosesor. Versi ini
tersedia tanpa lisensi berbayar. Prosesor Nios II memiliki input reset
dan interrupt. Bila salah satu input ini diaktifkan, prosesor mulai
menjalankan instruksi yang tersimpan pada alamat memori yang
dikenal sebagai reset vector dan interrupt vector. Karena kita belum
menambahkan komponen memori dalam desain, Qsys tool akan
menampilkan pesan error yang sesuai. Abaikan pesan ini karena akan
diberikan informasi yang diperlukan pada langkah selanjutnya. Klik
Finish untuk kembali ke jendela Qsys utama, yang sekarang
menunjukkan Nios Prosesor II ditentukan seperti ditunjukkan pada
Gambar 7.

GFP-Sistan-2019/2020 Halaman 5 dari 25


Gambar 5: Penambahan komponen NIOS II processor pada rancangan

3.2 Menambahkan komponen On-chip Memory


Penambahan komponen on-chip memory dengan langkah berikut :
1. Expand kategori Memories and Memory Controllers, kemudian
expand untuk memilih On-ChipOnChip Memory (RAM or ROM),
dan klik Add.
2. Pada On-Chip Memory Configuration Wizard window seperti yang
diperlihatkan pada gambar 6, pastikan Data widt diset ke 32 bit dan
Total memory size bernilai 4K bytes (4096 bytes).

Gambar 6: Pengaturan on-chip memory


3. Jangan mengubah pengaturan default lainnya.
4. Klik Finish, yang kembali ke tab System Contents seperti
ditunjukkan pada Gambar 7.

Gambar 7: Komponen on-chip memory sudah ditambahkan rancangan

3.3 Membuat koneksi prosesor Nios II dan memori on-chip


Amati hasil desain, prosesor Nios II dan memori on-chip telah disertakan
dalam desain, namun belum ada hubungan antara komponen-komponen
ini yang ditetapkan. Untuk menentukan koneksi yang diinginkan, periksa
area Connections di jendela pada Gambar 7. Sambungan yang sudah

GFP-Sistan-2019/2020 Halaman 6 dari 25


dibuat ditunjukkan oleh lingkaran yang diisi dan koneksi lainnya yang
belum dihubungkan ditandai dengan lingkaran kosong (empty circle).
Dengan mengklik lingkaran kosong akan membuat sambungan dengan
mengklik pada lingkaran yang terisi akan menghapus koneksi. Buatlah
koneksi berikut:
1. Clock input dari processor dan memory, ke clock output dari
komponen clock.
2. Reset input dari processor dan memory ke reset output komponen
clock dan jtag_debug_module_reset output.
3. s1 input dari memory ke data_master dan instruction_master
outputs processor.
Hasil koneksi yang dibuat diperlihatkan pada gambar 8.

Gambar 8: Koneksi yang sudah dibuat.

3.4 Menambah komponen input parallel I/O interface


Menambahkan komponen input parallel I/O interface dilakukan dengan
langkah berikut:
1. Pilih Peripherals  Microcontroller Peripherals  PIO (Parallel
I/O) dan klik Add, PIO Configuration Wizard akan ditampilkan
seperti gambar 9.
2. Tentukan lebar port menjadi 8 bit dan pilih arah port yang akan
menjadi Input, seperti yang ditunjukkan pada gambar.
3. Klik Finish.

GFP-Sistan-2019/2020 Halaman 7 dari 25


Gambar 9: Pengaturan parallel I/O interface.

3.5 Menambah komponen output parallel I/O interface


Dengan cara yang sama, lakukan untuk output parallel I/O interface:
1. Pilih Peripherals  Microcontroller Peripherals  PIO (Parallel
I/O) dan klik Add, PIO Configuration Wizard akan ditampilkan
seperti gambar 9.
2. Tentukan lebar port menjadi 8 bit dan pilih arah port yang akan
menjadi Output.
3. Klik Finish dan kembali ke System Contents tab.
Tentukan koneksi yang diperlukan untuk kedua PIO:
1. Clock input dari PIO ke clock output dari komponen clock.
2. Reset input dari PIO ke reset output dari komponen clock dan
jtag_debug_module_reset output.
3. S1 input dari PIO data_master output.
Hasilnya diperlihatkan pada seperti gambar 10.

Gambar 10: Koneksi antar komponen pada sistem.

GFP-Sistan-2019/2020 Halaman 8 dari 25


3.6 Menambah komponen JTAG UART
Untuk menyediakan sarana komunikasi antara sistem Nios II dan komputer
host dapat dilakukan dengan instantiating JTAG UART interface sebagai
berikut:
1. Pilih Interface Protocols  Serial  JTAG UART dan klik Add
untuk menampilkan JTAG UART Configuration Wizard pada
Gambar 11.
2. Jangan mengubah pengaturan default.
3. Klik Finish untuk kembali ke tab System Contents.
Hubungkan JTAG UART ke clock, reset dan data-master port, seperti
yang dilakukan untuk PIO. Hubungkan Interrupt Request (IRQ) dari
JTAG UART ke prosesor Nios II dengan memilih koneksi di bawah kolom
IRQ, seperti yang ditunjukkan pada Gambar 12. Setelah koneksi dibuat,
sebuah kotak dengan nomor 0 di dalam akan muncul di koneksi.
Prosesor Nios II memiliki 32 port interupsi mulai dari 0 sampai 31, dan
bilangan dalam kotak ini akan memilih port mana yang akan digunakan
untuk IRQ. Klik pada kotak dan ganti untuk menggunakan port 5.

Gambar 11: JTAG UART interface.

3.7 Menambah komponen System ID Peripheral


System ID adalah peripheral khusus yang digunakan untuk memanitain
konsistensi antara konfigurasi hardware dan BSP yang transparent pada
program applikasi user. Prosedur untuk menambahkan modul ini adalah
sbb:

GFP-Sistan-2019/2020 Halaman 9 dari 25


1. Pada panel Component Library, pilih kategori PeripheralsDebug
and Performance dan kemudian klik System ID Peripheral.
2. Klik tombol add dan window informasi akan ditampilkan.
3. Klik Finish dan kembali ke System Contents tab.
4. Ganti nama modul ini menjadi sysid.

Gambar 12: Menghubungkan garis IRQ dari JTAG UART ke prosesor Nios II.

3.8 Mengubah nama komponen dan Base Address Komponen


1. Perhatikan bahwa Qsys tools secara otomatis memilih nama untuk
berbagai komponen. Nama-nama tersebut tidak cukup deskriptif agar
mudah dikaitkan dengan desain target, namun bisa diubah. Pada
Gambar 1, digunakan nama Switches and LEDs untuk antarmuka input
dan output paralel. Nama ini dapat digunakan dalam sistem yang
diimplementasikan. Klik kanan pada nama pio_0 lalu pilih Rename.
Mengubah nama ke switch demikian pula, ubah pio_1 menjadi LED.
Gambar 13 menunjukkan sistem dengan perubahan nama yang kita
dibuat untuk semua komponen.
2. Amati bahwa base and end addresses dari berbagai komponen dalam
sistem yang dirancang belum assigned dengan benar Alamat ini dapat
diassigned oleh user, namun juga dapat diassigned secara otomatis oleh
Qsys tool. Kita akan memilih kemungkinan yang terakhir. Namun, harus
dipastikan bahwa on-chip memori memiliki base address nol. Klik dua
kali pada alamat Base untuk memori on-chip di Qsys jendela dan
masukkan address 0x00000000. Kemudian, kunci alamat ini dengan
mengklik simbol lock yang berdekatan. Sekarang, biarkan Qsys
menugaskan sisa address dengan memilih SystemAssign Base

GFP-Sistan-2019/2020 Halaman 10 dari 25


Addresses (di bagian atas jendela), yang menghasilkan tampilan yang
serupa dengan yang ditunjukkan pada Gambar 14.

Gambar 13: Sistem dengan semua komponen yang telah diberi nama yang
tepat.

Gambar 14: Sistem dengan assigned address.

3.9 Mendefinisikan reset vector dan exception vector NIOS II


Perilaku prosesor Nios II ketika di-reset didefinisikan oleh reset vector-
nya. Ini adalah lokasi pada perangkat memori dari mana prosesor
mengambil/fetches instruksi berikutnya saat direset Begitu pula dengan

GFP-Sistan-2019/2020 Halaman 11 dari 25


exception vector adalah alamat memori dari instruksi yang dijalankan
prosesor saat sebuah interupsi dinaikkan (raised). Untuk menentukan
kedua parameter ini, lakukan langkah berikut:
1. Klik kanan pada komponen nios2_processor, lalu pilih Edit.
2. Pilih onchip_memory untuk menjadi perangkat memori untuk reset
vector dan exception vector, seperti yang ditunjukkan pada Gambar
15.
3. Jangan mengubah pengaturan default untuk offset.
4. Perhatikan bahwa pesan kesalahan yang berhubungan dengan
assignment memori yang ditunjukkan pada Gambar 4 sekarang akan
hilang.
5. Klik Finish untuk kembali ke tab System Contents.

3.10 Membuat koneksi ke Komponen External


Sejauh ini, telah ditentukan semua koneksi di dalam rangkaian nios_system.
Langkah selanjutnya perlu untuk menentukan koneksi ke komponen
eksternal, yaitu switch dan LED Langkah yang dilakukan adalah:
1. Klik dua kali pada Double-click (pada kolom Export dari tab System
Contents) untuk external_connection dari switch PIO, dan ketik
nama switches.
2. Begitu pula untuk membuat koneksi eksternal untuk lampu yang
disebut leds. Ini dilakukan untuk melengkapi spesifikasi nios_system,
yang digambarkan pada Gambar 16.

3.11 Mengenerate Sistem


Setelah menentukan semua komponen yang dibutuhkan untuk
mengimplementasikan sistem yang diinginkan, sekarang rangkaian dapat
digenerate. Simpan sistem yang sudah dirancang; nama yang digunakan
adalah nios_system. Kemudian, pilih tab Generation, seperti pada Gambar
17. Pilih None for the options Simulation Create simulation model and
Testbench SystemCreate testbench Qsys system. Klik Generate di
bagian bawah jendela. Saat berhasil diselesaikan, proses pembangkitan
menghasilkan pesan "Generate Completed".
Perubahan pada sistem yang dirancang dapat dilakukan setiap saat dengan
membuka kembali Qsys tool. Setiap komponen dalam Tab System
Contents dari Qsys tool dapat dipilih dan diedit atau dihapus, atau
komponen baru dapat ditambahkan dan sistem diregenerasi ulang.

GFP-Sistan-2019/2020 Halaman 12 dari 25


Gambar 15: Menetapkan reset dan exception vector.

Gambar 16: Koneksi ke komponen external.

GFP-Sistan-2019/2020 Halaman 13 dari 25


Gambar 17: Generation system.

4 INTEGRASI SISTEM NIOS II KE DALAM PROJECT QUARTUS II


Untuk melengkapi desain perangkat keras, kita harus melakukan hal
berikut:
 Instantiate modul yang dihasilkan oleh Qsys tool ke dalam proyek
Quartus II
 Menetapkan pin FPGA
 Kompilasi sirkuit yang dirancang
 Program dan konfigurasikan perangkat FPGA pada board DE1

4.1 Instantiasi Modul yang degenerate oleh Qsys Tool


Qsys tool menghasilkan modul VHDL yang mendefinisikan sistem Nios II
yang diinginkan. Modul ini berada pada file nios_system.vhd, yang dapat
ditemukan di direktori Percobaan2A/nios_system/sintesis dari proyek.
Qsys tool menghasilkan modul VHDL, yang kemudian dapat digunakan
dalam desain.
Biasanya, modul Nios II yang dihasilkan oleh Qsys tool merupakan bagian
dari desain yang lebih besar. Namun, pada contoh kasus sederhana ini
tidak ada sirkuit lain yang dibutuhkan. Yang perlu di lakukan adalah
instantiate sistem Nios II ke modul top-level VHDL, dan menghubungkan
input dan output dari port I/O paralel, serta input clock dan reset, ke pin
yang sesuai pada board FPGA.
Kode VHDL dalam file nios_system.vhd cukup besar. Gambar 18
menggambarkan bagian dari kode yang mendefinisikan port input dan
output untuk modul nios_system. 8 bit vector yang merupakan input ke

GFP-Sistan-2019/2020 Halaman 14 dari 25


switch port paralel disebut switch_export. Vector output 8 bit disebut
leds_export. Sinyal clock dan reset disebut clk_clk dan reset_reset_n.
Perhatikan bahwa sinyal reset ditambahkan secara otomatis oleh Qsys
tool; itu disebut reset_reset_n karena aktif rendah.

Gambar 18: Bagian dari modul VHDL yang.


Modul nios_system harus di instantiasikan dalam top-level module yang
diberi nama lights, karena ini adalah nama yang ditentukan pada langkah
3.1 untuk top-level design entity dalam proyek Quartus II. Untuk port
input dan output dari modul lights, telah menggunakan nama pin yang
ditentukan dalam DE1 User Manual: CLOCK_50 untuk clock 50 MHz,
tombol KEY untuk pushbutton switches, SW untuk switch slider, dan LEDG
for LED hijau. Menggunakan nama-nama ini akan menyederhanakan tugas
untuk pin assignments yang dibutuhkan.

4.2 Instantiasi pada Modul VHDL


Gambar 19 menunjukkan modul top-level VHDL yang memberi instansiasi
sistem Nios II. Ketik kode ini ke dalam sebuah file bernama lights.vhd.

5 COMPILING QUARTUS II Project


Tambahkan file lights. vhd ke proyek Quartus II Anda. Selain itu,
tambahkan assignments pin yang diperlukan untuk board DE1 ke proyek
Anda. Perhatikan bahwa cara mudah untuk membuat assignments pin saat
kita menggunakan nama pin yang sama seperti pada DE1 User Manual
dengan cara mengimpor assignments dari Quartus II Setting File dengan
Pin Assignments. Misalnya, assignments pin untuk board DE1 disediakan
dalam file DE1.qsf atau file DE1_pin_assignments.csv, yang dapat
ditemukan di cd ALTERA folder DE1_lab_exercises.

GFP-Sistan-2019/2020 Halaman 15 dari 25


Gambar 19: Instansiasi sistem NIOS II mengunakan kode VHDL.
Prosedur assignments pin dengan mengimport dari file csv adalah:
1. Klik AssignmentsImport Assignments, maka akan tampil
window dialog seperti gambar 20, pilih file csv yang akan diimport,
kemudian klik OK.

Gambar 20: Window diaglog Import Assignment.


2. Setelah itu lihat hasil import pin dari Assignments  Pin Planner,
maka akan terlihat
Akhirnya, sebelum mengkompilasi proyek, perlu menambahkan file
nios_system.qip (file Variasi IP) di direktori ../nios_system/synthesis ke
project Quartus II Anda. Kemudian, kompilasi project. Anda mungkin

GFP-Sistan-2019/2020 Halaman 16 dari 25


melihat beberapa pesan peringatan yang terkait dengan sistem Nios II,
seperti beberapa sinyal yang tidak terpakai atau memiliki bit-lengths of
vectors yang salah; peringatan ini bisa diabaikan.

Gambar 21: Window Pin Planner.

6 Menggunakan NIOS II Software Build Tools (SBT)


NIOS II SBT akan digunakan untuk mendevelop software. Tugas aplikasi
yang dibangun akan sangat sederhana. Pola yang dipilih oleh pengaturan
slider switch saat ini harus ditampilkan di LED. Akan ditunjukkan
bagaimana hal ini dapat dilakukan oleh Nios II dan bahasa pemrograman C.

6.1 Create NIOS II Application and BSP Library


Sebuah project software NIOS II EDS yang lengkap terdiri dari user
application hdan BSP supporting library. BSP library berdasarkan
konfigurasi sistem Niso II tertentu. Begitu BSP library dibuat, library ini
bisa digunakan untuk aplikasi pengguna selanjutnya. Prosedur pembuatan
NIOS II Application dan BSP library adalah sebagai berikut:
1. Buat folder Percobaan2A/software sebagai direktori kerja.

GFP-Sistan-2019/2020 Halaman 17 dari 25


2. Dari menu utama Quartus II, klik ToolsNIOS II Software Builds
for Eclipse. Layar inisialisasi Eclipse akan muncul.
3. Jika dialog Launcher Workspace muncul, pilih direktori kerja yang
sudah dibuat, kemudian klik OK.
4. Jendela GUI Eclipse SBT muncul, seperti yang ditunjukkan pada
Gambar 22. Verifikasi bahwa perspektif Nios II yang dipilih, lihat di
pojok kanan atas.

Gambar 22: Initial Eclipse SBT GUI window.


5. Pilih File  New  Nios II Application and BSP from template.
Dialog muncul, seperti yang ditunjukkan pada Gambar 22.
6. Di kolom Nama File Informasi SOPC, navigasikan ke direktori proyek
Quartus II sebelumnya dan pilih file nios_system.sopcinfo. Pada
kolom CPU name, pilih nios2_qsys_0 dari daftar yang ada. Di kolom
Project name, masukkan nama light. Plih template Hello World
Small sebagai basis aplikasi yang akan dibuat.
7. Klik tombol Finish untuk memulai proses konstruksi dan kembali ke
jendela Eclipse.
Ketika proses konstruksi selesai, direktori aplikasi yaitu light dan
direktori BSP yaitu light-bsp akan ditampilkan di panel kiri, yang
disebut sebagai Navigator atau Project Explorer subwindow.

GFP-Sistan-2019/2020 Halaman 18 dari 25


Gambar 23: NIOS II Application and BSP from template dialog.
Pada window sebelah kanan, dibagian Project Explorer, terlihat daftar
direktori dan file yang sudah degenerate. Direktori light merupakan
direktori aplikasi sedangkan bsp_light adalah direktori BSP Library.
Gambar 24 memperlihatkan contoh file hello_world_small.c. Ubah kode ini
dengan listring program yang ada pada gambar 25.

GFP-Sistan-2019/2020 Halaman 19 dari 25


Gambar 24: Window NIOS II SBT dengan template program.

Gambar 25: Program C untuk mengontrol LED.

6.2 Build and run software


Proses yang akan dilakukan oleh GUI SBT ketika kita membuild dan
menjalankan software final adalah berikut:
 Mengkompilasi kode C dalam direktori BSP ke kode objek.
 Mengkompilasi kode C di direktori aplikasi pengguna ke kode objek.
 Melink file objek yang relevan untuk membentuk final image, yaitu
file .elf (extensible linking format).
 Meload .elf file ke memory modul yang ditentukan.
 Membiarkan prosesor memulai eksekusi (mis., menjalankan program
aplikasi).
Prosedur untuk merun dam membuild software adalah:

GFP-Sistan-2019/2020 Halaman 20 dari 25


1. Jika diperlukan, download file nios_system.sof sebelumnya ke
perangkat FPGA. Programmer altera bisa dipanggil di SBT GUI
dengan memilih Nios II  Quartus II Programmer.
2. Pilih direktori aplikasi, light, di subwindow Project Explores. Klik
kanan mouse dan pilih Run As  Nios II Hardware. Kotak Progress
Information akan muncul dan menampilkan progress proses.
Informasi yang relevan juga ditampilkan di halaman tab Console
bagian bawah jendela Eclipse.

6.3 Check code size


Sistem embedded sering memiliki jumlah memori yang terbatas sehingga
penting untuk mengetahui ukuran kode akhir (juga dikenal sebagai
footprint). Dalam Nios II EDS v13.0, tugas ini hanya bisa dilakukan di
command shell. Prosedur dasarnya adalah:
1. Pada menu Start Windows, arahkan ke Altera 13.0  Nios II EDS
NIOS II 13.0 Command Shell untuk meluncurkan program.
Sebuah jendela perintah muncul.
2. Ketik nios2-elf-size software/light.elf. Tampilan layar untuk
memeriksa file light.elf ditunjukkan pada Gambar 26.
3. Ukuran total yang ditampilkan di bawah kolom dec, yaitu 532 bytes.

Gambar 26: Tampilan pengecekan code size.

7 DIRECT LOW-LEVEL I/O ACCESS


Salah satu karakteristik unik dari pengembangan embedded system adalah
bahwa program perangkat lunak seringkali perlu mengakses dan
berinteraksi dengan perangkat I/O tingkat rendah (low-level) secara
langsung.
Prosesor Nios II menggunakan metode memory-mapped I/O untuk
mengakses port I/O. Dalam skema ini, register perangkat I/O dipetakan ke
dalam ruang alamat memori utama. Di SOPC Builder, address assignment
dilakukan secara otomatis. Ketika core I/O ditambahkan, SOPC Builder
memeriksa jumlah register dalam core dan kemudian mengalokasikan

GFP-Sistan-2019/2020 Halaman 21 dari 25


potongan ruang memori yang sesuai. Alamat awal (starting address), yang
dikenal sebagai base address, dan end address dari potongan, adalah
ditunjukkan di bawah kolom Base and End dari SOPC Builder. Sebagai
contoh, Gambar 16 menunjukkan bahwa base address modul switch dan
led masing-masing adalah 0x0002000 dan 0x0002010. Alamat ini
diperlakukan sebagai regular memory addresses oleh prosesor dan
program aplikasi dapat mengakses perangkat I/O dengan membaca dari
atau menulis ke alamat ini. Di Bahasa C, ini bisa dilakukan dengan
menggunakan pointer.

7.1 C pointer untuk I/O register


Dalam sistem flashing-LED, sebuah register I/O diberikan dengan alamat
memori, yang dapat dianggap sebagai nilai pointer. Nilai eksplisit dari
alamat harus digunakan untuk mengakses register. Ingat bahwa base
address modul switch dan led adalah 0x0002000 dan 0x0002010. Sebagai
contoh kita akan membaca nilai dari modul switch dan menulis pattern ke
modul led dapat ditulis dengan menggunakan pointer.
int sw;
char pattern = OxOl;

sw = *(0x0002000); // membaca nilai dari modul switch


*(0x0002010) = pattern; // menulis pattern ke modul led

7.2 Macro I/O


Menggunakan macro I/O adalah teknik umum yang digunakan dalam
pemrograman embedded system. Namun, ini dapat menyebabkan
kesalahan pada sistem dengan cache data, yang dapat ditemukan pada
prosesor tertanam berkinerja tinggi saat ini, seperti konfigurasi Nios Il/f.
Karena prosesor menganggap sebuah register I/O sebagai memori biasa,
data yang relevan mungkin disimpan sementara di cache data dan hanya
bisa ditulis ke register I/O saat blok yang sesuai deallocated dari cache.
Pada file io.h, altera menyediakan dua macro untuk akses I/O:
 IORD(base_address, offset): baca sebuah register I/O dengan
alamat dasar yang ditentukan dan offset.
 I0WR (base_address, data, data): tuliskan data ke dalam register
I/O dengan alamat dasar yang ditentukan dan offset.
Program diatas dapat kita ubah dengan menggunakan macro I/O seperti
berikut ini:

GFP-Sistan-2019/2020 Halaman 22 dari 25


#define SWITCH_BASE 0x0002000
#define LED_BASE 0x0002000

char pattern = OxOl;

sw = IORD(SWITCH_BASE,0); // membaca nilai dari modul switch


IOWR(LED_BASE,0,pattern); // menulis pattern ke modul led

8 Tugas

8.1 Flashing LED


Program berikut bertugas untuk membuat flashing LED, dimana metode
yang digunakan untuk mendelay menggunakan while loop. Dengan
mendeklarasikan variable delay sebagai volatile maka compiler akan
dipaksa untuk mengenerate loop (catatan: jika delay menggunakan loop,
compiler akan melakukan optimasi dengan menghilangkan loop tersebut).
Jalankan program tersebut dan amati flash LED di board anda.
#include "system.h"
#include "io.h"
#include "sys/alt_stdio.h"

int main()
{
alt_putstr("Hello from Nios II!\n");
int count = 0;
volatile int delay = 0;

/* Event loop never exits. */


while (1)
{
IOWR(LED_BASE,0, count & 0x01) ;
delay = 0;
while( delay < 500000)
{
delay++;
}
count++;
}
return 0;
}

Gambar 27: Program C untuk Flashing LED

8.2 Chasing LED circuit


Ada 18 diskrit LED pada board DEI. Sirkuit LED yang mengejar menyala
pada satu LED pada suatu waktu secara berurutan dan dengan demikian

GFP-Sistan-2019/2020 Halaman 23 dari 25


LED menyala tampak bergerak (yaitu, mengejar) sepanjang strip
Spesifikasi rinci adalah:
1. 16 LED diskrit digunakan sebagai output, satu menyala setiap
kalinya.
2. Lampu LED menyala berurutan di kedua arah. Ini berubah arah saat
mencapai posisi paling kanan atau paling kiri.
3. Pushbutton switch 0 (label keyO) pada board DEI digunakan untuk
"menginisialisasi" proses. Saat ditekan, lampu LED dipindahkan ke
posisi paling kanan.
4. Lima Slide switches yang paling rendah digunakan untuk mengontrol
kecepatan pengejaran LED. Kecepatan tertinggi harus cukup lambat
untuk dapat diinspeksi secara visual.
Selesaikan sistem Nios II untuk menyelesaikan tugas yang diberikan,
kembangkan perangkat lunak, dan verifikasi sistem operasi.

8.3 Collision LED circuit


Collision LED circuit mirip dengan tugas 7.1 diatas tetapi ada dua LED
menyala secara bersamaan. Kedua LED bergerak secara independen dan
mengubah arah saat mencapai posisi paling kanan atau paling kiri atau
"bertabrakan" di tengahnya. Spesifikasi rinci adalah:
1. 16 LED diskrit digunakan sebagai output, dua menyala setiap kalinya.
2. Lampu LED menyala secara berurutan di kedua arah. Mereka
berubah arah saat mencapai posisi paling kanan atau paling kiri atau
"bertabrakan" di tengahnya.
3. Pushbutton switch 0 (dilabeli keyO) pada board DEI digunakan untuk
"menginisialisasi" lampu LED pertama. Saat ditekan, lampu LED yang
pertama dipindahkan ke posisi yang paling kanan.
4. Pushbutton switch 1 (dilabeli key1) pada board DEI digunakan untuk
"menginisialisasi" lampu LED kedua. Saat ditekan, lampu LED yang
kedua dipindahkan ke posisi paling kiri.
5. Lima Slide switches yang paling rendah digunakan untuk
mengendalikan kecepatan pengejaran LED pertama dan Slide
switches lima teratas atas digunakan untuk mengendalikan
kecepatan pengejaran LED kedua. Kecepatan pengejaran keduanya
bersifat independen.
Selesaikan sistem Nios II untuk menyelesaikan tugas yang diberikan,
kembangkan perangkat lunak, dan verifikasi sistem operasi.

GFP-Sistan-2019/2020 Halaman 24 dari 25


8.4 Heartbeat circuit
Heartbeat circuit menggunakan 7-segment yaitu mengulangi pola
sederhana pada layar seven-segment empat digit, seperti yang
ditunjukkan pada Gambar 28 dibawah, dengan kecepatan 72 Hz.
Selesaikan sistem Nios II untuk menyelesaikan tugas yang diberikan,
kembangkan perangkat lunak, dan verifikasi sistem operasi.

Gambar 28: Pola 7-segment tugas 7.3.

9 MENGAKHIRI PERCOBAAN
Prosedur untuk mengakhiri percobaan:
1. Upload hasil pekerjaan anda ke http://ecourse.del.ac.id
2. Sebelum keluar dari ruang praktikum, rapikan meja praktikum.
Rapikan kabel dan matikan computer. Cabut daya dari jala-jala ke kit
FPGA dan masukkan kembali ke kotaknya dan letakkan kembali pada
tempat semula.

GFP-Sistan-2019/2020 Halaman 25 dari 25

Anda mungkin juga menyukai