Perancangan dan Implementasi Perangkat Generator Kode Framework Sistem Embedded Hardware/Software Berbasis Model Event-Driven
2. Konsep dan implementasi
2.1. Arsitektur Hardware dan software pada sistem embedded
Hubungan antara bagian embedded software dan bagian embedded hardware dalam sebuah sistem embedded hardware/software ditunjukkan pada Gambar 1. Embedded software berupa program aplikasi (dalam kode C) yang berjalan pada sebuah sistem komputasi (Prosesor, Bus, Memori, I/O). Sedangkan embedded hardware (dalam kode VHDL) adalah sebuah modul hardware yang terhubung ke sistem komputasi. Sistem embedded yang melibatkan hardware dan software
diimplementasikan dalam sebuah prototype
menggunakan FPGA.
Pada Gambar 1 bagian yang berwarna putih menunjukkan embedded software, dan bagian yang berwarna abu-abu menunjukkan embedded hardware. Tanda nomer 4,5,6,7 menunjukkan sebuah alur proses
dari sebuah sistem embedded software yang
menggunakan konsep event-driven. Sedangkan tanda nomer 1,2,3 menunjukkan sebuah alur proses dari sistem embedded hardware yang juga menggunakan konsep
event-driven. Kode-kode yang mengatur alur proses ini
akan dibuat secara otomatis menggunakan perangkat
generator. Sedangkan modul-modul fungsi yang
diperlukan didalamnya dibuat secara manual.
RTOS HAL
System(Processor,Bus, Memory, I/O) Interface Module EmbededSoftware Embedded Hardware MODUL MANAGEMENT EVENT 1 2 3 4 5 6 7
Gambar 1. Komunikasi hardware dan software pada sistem embedded
2.2. Embedded software dengan model
event-driven
Embedded software yang menggunakan model
driven [4] ditunjukkan pada Gambar 2. Sistem event-driven ini terdiri dari Event Generator, Event Dispatcher, dan Event Handler. Event Generator
berfungsi mengaktifkan event-event kemudian
menaruhnya didalam Global Queue. Event Dispatcher akan mengirimkan event-event ke Event Handler. Event
Handler melakukan aksi berdasarkan event yang
diterima. EVENT HANDLER ENVIRONMENT EVENT GENERATOR EVENT DISPATCHER GLOBAL QUEUE of EVENT LOCAL QUEUE of EVENT LOCAL QUEUE of EVENT LOCAL QUEUE of EVENT
Gambar 2. Embedded software dengan konsep event-driven
Pada Event Handler ini aksi-aksi yang terjadi diwakilkan dalam bentuk behavior sebuah objek, sehingga dalam event handler terdapat satu atau lebih objek yang masing-masing objek mempunyai satu
behavior. Behavior ini digambarkan dalam bentuk state machine [5]. Salah satu keuntungan dari menggunakan
model event-driven adalah menghemat konsumsi daya. Karena sebuah proses terjadi apabila terdapat event di
Queue, jika tidak ada event maka prosesor akan berada
| Seminar Nasional Embedded Systems, Bandung 20 September 2012 31
2.3. Embedded hardware dengan konsep event-driven
Pada bagian embedded hardware yang menggunakan model event-driven ditunjukkan pada Gambar 3 terdiri dari Event Distributor dan Event Handler. Event
Distributor ini berfungsi sebagai pengirim event-event
ke Event Handler. Event Handler akan melakukan aksi berdasarkan event yang diterima.
EVENT HANDLER ENVIRONMENT EVENT DISTRIBUTOR Activ ate E vent Rece ive E vent Receiv e Event Receive Event Receive Event Activate Event
Gambar 3 Embedded hardware dengan konsep event-driven
Aksi yang dilakukan dalam Event Handler
direpresentasikan dalam dua jenis objek. Pertama objek yang mempunyai state machine dan kedua objek yang tidak mempunyai state machine. Pada objek yang mempunyai state machine akan melakukan aksi berdasarkan event yang diterima, dimana aksi yang dilakukan ini berupa pengaktifan event-event yang lain. Sedangkan objek yang tidak mempunyai state machine akan menerima event untuk mengaktifkan modul-modul proses yang dimiliki.
2.4. Arsitektur sistem generator framework
Alur proses dari generator framework ini ditunjukkan pada Gambar 4. Kotak persegi yang berwarna abu-abu menunjukkan proses yang terjadi, sedangkan yang berwarna putih menunjukkan output. Proses pertama yang dilakukan adalah membuat diagram model sistem embedded, selanjutnya men-generate diagram model menjadi kode framework. Pada proses men-generate kode framework, perangkat ini menggunakan kode-kode
template sebagai referensi yang terdapat pada library.
Kode-kode template ini mendefinisikan struktur kode C dan VHDL dalam format file xml.
Kode-kode framework yang dihasilkan oleh
generator tidak bisa implementasikan langsung dalam sebuah prototype yang menggunakan FPGA. Diperlukan penambahan modul-modul fungsi berdasarkan yang telah didefinisikan pada framework embedded software, dan penambahan datapath pada framework embedded hardware.
Gambar 4. Arsitektur sistem generator framework
2.5. Implementasi diagram model sistem embedded dalam GUI
Gambar 5. Implementasi diagram objek dalam GUI
Diagram model yang dibuat dalam bentuk GUI merupakan hasil kustomisasi pada open source ArgoUML. ArgoUML adalah sebuah aplikasi pembuatan diagram UML yang ditulis dalam bahasa Java dibawah lisensi Open Source Enclipse License [7]. Diagram model sistem embedded ini dibagi manjadi dua area GUI yaitu: area untuk pembuatan diagram objek sistem embedded dan area untuk pembuatan statechart dari setiap objek. Pada Gambar 5 ditunjukkan contoh diagram objek sistem embedded dalam bentuk GUI. Setiap objek akan mempunyai stereotype untuk menandakan jenis objek. Objek-objek yang berada pada bagian embedded software mempunyai stereotype <<soft>>, sedangkan objek-objek yang berada pada bagian embedded hardware mempunyai dua jenis
stereotype <<fsm>> dan <<datapath>>. Package
berfungsi untuk mengelompokkan objek embedded software, dimana pada package ini bisa memilih prosesor (Nios, Leon) dan RTOS (ucos, ecos, linux).
| Seminar Nasional Embedded Systems, Bandung 20 September 2012
32
Pada Gambar 6 ditunjukkan contoh diagram
statechart dari objek. Pada statechart ini terdapat satu state atau lebih. Sebuah state mempunyai tiga jenis
kondisi yaitu : entry, do, dan exit. Transisi antar state dilambangkan dalam bentuk garis panah, dan event yang menyebabkan terjadinya transisi didefinisikan pada garis panah tersebut.
Gambar 6. Implementasi statechart dalam GUI
2.6. Generator kode
2.6.1. Kode framework embedded software
Pada framework embedded software yang
menggunakan konsep event-driven ini, proses-proses yang ada akan dikelompokkan menjadi tiga bagian: 1. Behavior/FSM Objek
Bagian ini menangani proses-proses yang terdapat pada
Event Handler seperti pada Gambar 2, dimana pada Event Handler terdapat objek-objek yang melakukan
tugasnya di-triger oleh event. Untuk mendiskripsikan
behavior dari setiap objek digunakan FSM (Finite State Machine). Setiap objek akan mempunyai satu FSM.
Gambar 7 berikut menunjukkan FSM yang dimiliki oleh sebuah objek.
Dimana pada FSM ini terdapat dua state yaitu: S1, S2. Sedangkan event yang menyebakan terjadi perpindahan state yaitu: CAPS_LOCK. Proses yang bisa dilakukan pada setiap state adalah memanggil fungsi untuk melakukan proses tertentu.
<<soft>> OBJECT_A Priority : 2 CAPS_LOCK S1 entry/onLowerCase(); do/ exit/offLowerCase(); S2 entry/onUpperCase(); do/ exit/offUpperCase(); CAPS_LOCK
Gambar 7. FSM dari sebuah objek pada embedded software
Desain dari FSM ini bisa diterjemahkan menjadi kode-kode program, dengan menggunakan konsep
Nested Switch Statement dan setiap objek akan
menghasilkan satu file kode program (nama_objek.c).
Berikut ini ditunjukkan contoh kode untuk
menterjemahkan FSM dari objek pada Gambar 7.
switch(state){ case S1 : switch(condition){ case ENTER: TRANCODITION(STEADY); onLowerCase(); case STEADY: switch(event){ case CAPS_LOCK: nextState = S2; TRANCONDITION(EXIT); default: TRANCONDITION(STEADY); } case EXIT: TRANCONDITION(ENTER); offLowerCase(); } case S2 : switch(condition){ case ENTER: TRANCODITION(STEADY); onUpperCase(); case STEADY: switch(event){ case CAPS_LOCK: nextState = S1; TRANCONDITION(EXIT); default : TRANCONDITION(STEADY); } case EXIT: TRANCONDITION(ENTER); offUpperCase(); } } 2. Manajemen Event-Driven
Bagian ini akan menangani proses-proses yang terdapat pada Global Queue of Event, dan Event
Dispatcher seperti pada Gambar 2. Proses-proses ini
akan diterjemahkan kedalam empat buah file kode
program yaitu: environment.c yang berfungsi
inisialisasi event-event, environment.h yang berfungsi untuk deklarasi event-event, global.c yang berfungsi untuk proses penanganan antrian/queue dan proses penyaluran event-event, global.h yang berfungsi deklarasi queue dan tipe data.
3. Manajemen Multitasking
Bagian ini berfungsi untuk menangani proses multitasking yang menggunakan RTOS [8]. Setiap
objek pada bagian embedded software yang
mempunyai tanda priority yang berbeda akan dibuat sebuah task yang akan memanggil fungsi dari objek. Jumlah file yang akan dihasilkan tergantung jumlah tanda priority yang berbeda. Penamaan untuk sebuah objek yang mempunyai priority berbeda adalah
taskNama_objek.c, sedangkan apabila beberapa objek
mempunyai priority yang sama akan menggunakan
salah satu nama objek sebagai berikut
taskNama_objekandRelation.c. Selain itu juga terdapat
satu file tambahan environment_ucos.h untuk proses pendeklarasian task-task.
| Seminar Nasional Embedded Systems, Bandung 20 September 2012 33
2.6.2. Kode framework embedded hardware
Pada framework embedded hardware yang
menggunakan konsep event-driven, proses-proses yang ada dikelompokkan menjadi tiga yaitu:
1. Behavior/FSM Objek
Bagian ini menangani proses-proses yang terdapat pada Event Handler seperti pada Gambar 3, dimana pada Event Handler terdapat objek-objek yang melakukan tugasnya yang ditriger oleh event. FSM dari objek akan diterjemahkan menjadi kode-kode VHDL. Gambar 8 menunjukkan FSM yang dimiliki oleh sebuah objek pada bagain embedded hardware.
<<fsm>> OBJECT_X start_add S2 do/add_proces S3 do/mul_proces S1 do/idle_proces finish_add start_mul finish_mul
Gambar 8. FSM dari sebuah objek pada embedded hardware
Perpindahan antar state ditriger oleh event, dan proses yang bisa dilakukan pada setiap state adalah mengaktifkan event-event yang akan digunakan oleh objek lain. Setiap objek akan menghasilkan satu file
namaObjek.vhd. Berikut ini ditunjukkan contoh kode
untuk menterjemahkan FSM dari Objek pada Gambar 8.
process(iRST_N, iCLK ) begin
if( iRST_N = '0' ) then current_state <= S1;
elsif(iCLK'event and iCLK ='1')then current_state <= next_state; end if; end process; process(current_state) begin case current_state is when S1 => -- idle_process if(start_add = '1') then next_state <= S2; elsif(start_mul = '1') next_state <= S3; end if; when S2 => -- add_process if(finish_add = '1') then next_state <= S1; when S3 => -- mul_process if(finish_mul = '1') then next_state <= S1; end case; end process; 2. Manajemen Event-Driven
Bagian ini berfungsi untuk menangani Event
Distributor seperti pada Gambar 3, dimana
proses-proses yang dilakukan adalah sebagai penghubung terhadap aliran event-event antar objek. Pada proses ini akan diterjemahkan menjadi satu file yaitu
Top_framework.vhd.
3. Datapath objek
Objek datapath tidak berisi behavior atau fsm, tetapi mempunyai event. Sehingga proses yang terjadi akan diisikan secara manual berdasarkan event yang dimiliki oleh objek ini. Setiap objek datapath akan menghasilkan satu file namaObjek.vhd.