• Tidak ada hasil yang ditemukan

Konsep dan implementasi

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.