BAB III PERANCANGAN SISTEM
Perancangan sistem DOT Matrix ini terbagi menjadi tiga bagian, yakni: perancangan perangkat keras serta perancangan perangkat lunak. 3.1.
Perancangan Perangkat Keras Sistem yang dirancang terdiri atas tiga bagian perangkat keras, yakni: modul CPLD, Sumber data dan modul Display.
Gambar 3.1 Rancangan Utama Sistem
3.1.1. Modul CPLD Modul CPLD dirancang untuk menghasilkan output PWM yang sesuai dengan input diterima dari sumber data. Rancangan CPLD ini terdiri dari Data Register, comparator ‘greater’, sebuah counter, sebuah row-scanner dan Controller. Input dari modul CPLD ini adalah: •
MOSI : berasal dari Sumber data yang merupakan data yang ditransfer dengan protokol SPI
•
SCK : berasal dari Sumber data yang merupakan clock dari sumber data dalam protokol SPI
- 18 -
- 19 •
RC : berasal dari Sumber data yang berguna untuk mengatur perpindahan output baris (ROW)
•
SRST : berasal dari Sumber data yang berguna untuk mereset modul CPLD melalui Sumber data
Output dari modul CPLD adalah: •
OUTPUT : output untuk modul Display yang menentukan LED mana saja yang menyala pada saat baris sedang aktif pada LED Dot Matrix
•
ROW : output untuk modul Display yang menentukan baris mana yang aktif pada LED Dot Matrix
Gambar 3.2 Rancangan Modul CPLD
Input dari bagian Data Register adalah: •
MOSI : input dari Sumber data
•
SCK : input dari Sumber data
- 20 Output dari bagian Data Register adalah: •
DATA : output untuk bagian Comparator
Data Register adalah sebuah shift-register dengan SCK sebagai clock dan MOSI sebagai data input. Setiap clock pada SCK akan menyebabkan isinya di-shift ke kanan (karena data yang masuk adalah bit MSB terlebih dahulu) dengan MOSI sebagai data masuk. Setiap bit data tersebut merupakan output Data Register. Kapasitas dari Data register ini tergantung pada color – depth dan resolusi LED Dot matrix yang digunakan. Jika N adalah jumlah LED per baris dan D adalah colordepth yang digunakan, maka kapasitas Data register ini adalah :
Data Re gister = N × D Input dari bagian Counter adalah: •
ENA : input dari bagian Controller
Output dari bagian Counter adalah: •
Nilai dari Counter, untuk Controller dan Comparator
Nilai Counter akan bertambah satu setiap clock jika berada dalam kondisi aktif (ENA=’1’), sampai nilainya mencapai nilai maksimum (ditentukan oleh color-depth). Ketika mencapai nilai maksimum, Controller akan men-non-aktifkan Counter (ENA=’0’). Non-aktifnya counter akan sekaligus mengembalikan nilai counter-nya menjadi 0. Nilai dari counter akan dibandingkan dengan semua data pada Comparator. Input dari Comparator adalah: •
Nilai dari Counter
- 21 •
DATA dari Data Register
•
ENA dari Controller
Output dari bagian Comparator ini adalah: •
OUTPUT : output untuk modul Display
Comparator berguna untuk membandingkan nilai Counter dengan nilai data yang ditampung dalam Data Register. Jika Comparator ini aktif (ENA=’1’),
maka
hasil
output
dari
Comparator
adalah
hasil
perbandingan antara nilai Counter dengan nilai data. Jika nilai data adalah sama dengan nilai maksimum, maka output-nya adalah ‘0’ (Low), dan jika nilai data sama dengan nol, maka outputnya adalah ‘1’ (High). Selain itu, jika pada Comparator nilai Counter lebih kecil atau sama dengan data, maka output PWM untuk data tersebut adalah ‘0’ (Low), sebaliknya, jika nilai Counter lebih besar daripada data, maka output-nya adalah ‘1 (High). Dalam keadaan tidak aktif, Comparator selalu menghasilkan output ‘1’ (High). Input untuk bagian Controller adalah: •
RC dari Sumber data
•
Nilai dari Counter
Output dari bagian Controller adalah: •
REQ : output untuk Sumber data
•
ENA : output untuk Counter dan Comparator
Controller berguna untuk mengatur permintaan data dan output dari modul CPLD. Controller akan membandingkan apakah nilai dari
- 22 Counter telah mencapai batas maksimum. Jika ya, maka output dari Comparator akan di-non-aktifkan dan Counter juga di-non-aktifkan (ENA=’0’). Setelah itu, permintaan data terhadap Sumber data akan dilakukan (REQ=’1’). Setelah Sumber data mengirimkan semua datanya, RC akan di-clock. Di-clock-nya RC ini membuat Controller kembali mengaktifkan kembali Counter dan output dari Comparator (ENA =’1’). Setelah itu Controller akan menunggu sampai nilai Counter mencapai maksimum kembali. Input dari bagian Row-Scanner adalah: •
RC dari Sumber data
Output dari bagian Row-Scanner adalah: •
ROW : output untuk modul Display
Row-Scanner berguna untuk mengatur multiplexing atau scanning baris pada modul Display. Output dari Row-Scanner (ROW) akan menampilkan hanya satu bit yang aktif (‘1’), sedangkan yang lain tidak (‘0’). Bit yang aktif akan membuat satu baris pada LED Dot Matrix menjadi aktif (LED dapat menyala pada baris itu). Setiap kali RC diclock, maka output dari Row-Scanner akan mengalami rotasi (semua bit digeser sekali ke kanan dan bit terakhir yang keluar menjadi bit pertama). Protokol SPI digunakan untuk mengirimkan data dari Sumber data ke modul CPLD ini. Protokol SPI yang digunakan hanya memanfaatkan dua pin dari empat pin yang ada yaitu MOSI dan SCK. Pin MISO tidak digunakan karena tidak adanya data output ke Sumber data dari modul CPLD. Pin SE juga tidak digunakan karena hanya
- 23 diperlukan satu master dan satu slave. Modul CPLD ini dikonfigurasi sebagai slave. Pin SRST dari Sumber data berfungsi untuk melakukan reset terhadap modul CPLD, sama seperti ketika tombol reset ditekan, nilai counter akan kembali menjadi nol dan request data akan langsung dilakukan (REQ = ‘1’).
- 24 -
Gambar 3.3 Diagram Alir Modul CPLD
Modul CPLD ini akan menghasilkan output data hanya untuk satu baris pada satu waktu tertentu, bukan secara keseluruhan. Hal ini diatur oleh Row-Scanner, yang hanya akan mengaktifkan salah satu outputnya (ROW). Data yang ada dalam Register data juga hanya berlaku untuk
- 25 satu baris. Setelah satu masa aktif suatu baris berakhir, maka request data akan terjadi dan Row-Scanner akan di-clock oleh Sumber data melalui RC yang akan menyebabkan perpindahan baris. Metode PWM dilakukan dengan menggunakan comparator yang akan membandingkan data dengan nilai sebuah counter. Output dari comparator ini merupakan output PWM, dimana dalam rentang waktu aktifnya suatu baris, masing-masing mempunyai lama nyalanya sendiri. Lama nyala tersebut tergantung dari data yang dibandingkan tersebut. Semakin besar nilainya, semakin tinggi nilai counter yang dibutuhkan untuk mematikannya, sehingga nyalanya lebih lama. Dapat dikatakan bahwa counter ini adalah sebagai nilai pembanding untuk menentukan lama nyala dari sebuah LED. LED pada modul Display akan menyala ketika diberi output ’0’. Jika counter di-clock dengan rate (Fctr) yang konstan, N adalah color-depth yang digunakan dan Max adalah nilai maksimum counter tersebut sebelum berpindah baris, maka masa aktifnya suatu baris (Tbaris) dan frekuensi perpindahan baris tersebut (Fbaris) dapat didapatkan dengan rumus sebagai berikut:
Max = 2 N − 1 Tbaris =
1 × Max Fctr
Fbaris =
Fctr Max
- 26 Jika Nbaris adalah banyaknya baris, maka lamanya waktu yang diperlukan (Trefresh) untuk melakukan sekali scanning terhadap seluruh baris dapat kita hitung:
Trefresh = Tbaris × Nbaris Menggunakan rumus-rumus di atas, refresh rate (Frefresh) dapat ditentukan dengan:
Frefresh =
Fbaris Nbaris
Lamanya suatu LED dapat menyala ditentukan oleh data untuk LED tersebut. Jika Ndata adalah data dalam Register yang bersangkutan, maka lamanya suatu LED dapat menyala pada suatu baris ditentukan oleh:
Ton = Tctr × Ndata
- 27 3.1.2. Sumber Data Sumber data digunakan sebagai penyimpan semua data gambar/frame yang akan ditampilkan. Sumber data yang mengatur kecepatan pengiriman data pada protokol SPI yang digunakan (sebagai master), mengatur perpindahan baris (ketika selesai mengirim data) dan melakukan reset terhadap modul CPLD serta melakukan pergantian gambar/frame (yang akan menentukan fps). Sumber data yang dirancang memanfaatkan microcontroller AVR ATMEGA 8515L. Jika resolusi yang digunakan adalah Row x Column dengan kedalaman warna D-bit (color depth), maka kapasitas minimal yang diperlukan untuk menampilkan sebuah gambar adalah sebesar: Kapasitas (bit ) = Row × Column × D Row × Column × D Kapasitas ( Byte) = 8 Micrcontroller AVR ATMEGA 8515L memungkinkan untuk menulis data-data gambar tersebut pada bagian flash memory-nya (yang biasanya digunakan untuk menampung program. Buffer data yang ditampung dalam memory flash merupakan array dua dimensi. Dimensi pertama menentukan frame mana yang akan ditampilkan dan dimensi kedua berisi data frame untuk setiap LED. Selain buffer data ini, juga terdapat sebuah array satu dimensi sebesar jumlah frame yang berisi bilangan lebih besar dari satu. Array pengontrol ini berfungsi untuk menandakan berapa kali interrupt yang diperlukan untuk mengganti frame dengan index yang sama.
- 28 3.1.3. Modul Display Modul Display berisi rangkaian-rangkaian dan LED yang akan menampilkan output yang sesuai dengan output modul CPLD. Rangkaian ini berisi rangkaian current sink, converter tegangan dan LED Matrix. Input dari modul Display ini adalah: •
OUTPUT : modul CPLD berisi data LED kolom yang mana saja yang menyala
•
ROW : modul CPLD berisi data yang menandakan baris mana yang aktif.
Gambar 3.4 Gambar rangkaian modul Display
Gambar 3.5 Converter tegangan
- 29 Converter tegangan berfungsi untuk mengubah tegangan dari 3,3 volt ke 5 volt karena tegangan yang keluar dari CPLD tidak cukup untuk men – drive LED Dot Matriks agar dapat menyala dengan terang. Cara kerja dari converter tegangan adalah ketika base pada transistor Q4 menerima
input
High,
maka
transistor
Q4
saturasi
sehingga
mengakibatkan transistor Q3 juga saturasi. Ketika base pada transistor Q4 menerima input Low, maka transistor Q4 cut-off sehingga mengakibatkan transistor Q3 juga cut-off. Ketika transistor Q3 saturasi, maka tegangan Vcc atau tegangan emiter pada transistor Q3 akan mengalir ke LED Dot Matriks melalui kaki LED anoda.
Gambar 3.6 Current Sink
Current Sink berfungsi agar arus yang melewati LED Matriks tetap stabil atau konstan. Cara kerja dari current sink adalah ketika base transistor Q2 diberikan tegangan low atau tegangan yang besarnya nol maka transistor Q2 akan saturasi. Tegangan emitter transistor Q2 akan menjadi tegangan input transistor Q1 dan transistor Q1 menjadi aktif. Ketika transistor Q1 aktif, tegangan base pada transistor Q1 besarnya 1,3 volt, hal ini disebabkan oleh dioda D1 dan D2. Sisa dari
- 30 tegangan yang diterima dari transistor Q2 akan ditampung oleh R1. Besar VE pada transistor Q1 adalah Ve = Vb − 0.7 , maka arus emitter adalah IE =
Ve . Karena arus base sangat kecil maka I C ≅ I E . Kolektor R2
transistor Q1 dihubungkan dengan katoda LED Matriks. 3.2.
Perancangan Perangkat Lunak Perangkat lunak yang dirancang hanya menyangkut pemrograman AVR sebagai Sumber data. AVR ini akan mengendalikan terjadinya pengiriman data, perpindahan baris, perubahan gambar serta melakukan reset terhadap modul CPLD. Input dari Sumber data ini adalah: •
REQ, input dari mpdul CPLD, yang nilainya akan menjadi ‘1’ untuk me-request data
Output dari Sumber data ini adalah: •
MOSI : output untuk modul CPLD, merupakan data yang ditransfer dengan protokol SPI
•
SCK : output untuk modul CPLD, merupakan clock dari Sumber data dalam protokol SPI
•
RC : output untuk modul CPLD, berguna untuk mengatur perpindahan output baris (ROW)
•
SRST : output untuk modul CPLD, berguna untuk mereset modul CPLD melalui Sumber data
- 31 -
Gambar 3.7 Diagram Alir AVR
- 32 Pertama-tama, AVR akan melakukan inisialisasi port-port yang digunakan, penggunaan timer, penggunaan SPI dan lainnya. Setelah hal-hal tersebut, maka selanjutnya variabel yang berguna untuk menampung index data dari sebuah gambar (ctrData) dan yang berguna untuk menentukan gambar (iData) di-set menjadi nol. Setelah itu, hal berikutnya yang dikerjakan adalah melakukan reset terhadap CPLD melalui pin SRST dan program dalam AVR tersebut akan masuk ke dalam loop utama. Loop utama tersebut pertama-tama akan melakukan pengecekan terhadap input REQ. Jika ada request dari CPLD (REQ=’1’), maka pengiriman data melalui protokol SPI akan dilakukan. Byte dengan index ctrData dari gambar ke-iData akan dikirimkan, diikuti dengan penambahan nilai ctrData sebanyak 1. Nilai ctrData ini kemudian dicek apakah data untuk gambar tersebut telah sampai di akhir, jika benar, maka ctrData akan dikembalikan ke awal (menjadi 0). Data yang dikirim untuk sekali request data adalah sebanyak data untuk satu baris. Jadi setelah melakukan pengiriman sebanyak N kali (dengan mengecek nilai modulus N dari ctrData, dimana N adalah jumlah LED dalam satu baris), program akan menghentikan pengiriman dan memberikan perintah kepada modul CPLD untuk pindah baris dan menampilkan data (dengan mengclock RC). Interrupsi timer akan terjadi ketika timer mengalami overflow, dan selang terjadinya interrupsi ini tergantung pada kecepatan timer yang digunakan. Ketika hal itu terjadi maka program akan menambah satu nilai tData. Variabel tData
- 33 digunakan untuk menentukan lamanya sebuah frame ditampilkan dengan mengecek apakah nilainya tersebut telah sama dengan nilai t_data untuk gambar tersebut (di-index oleh iData). Nilai t_data ini merupakan nilai yang ditetapkan sebelumnya untuk menentukan berapa kali interrupt yang diperlukan untuk mengganti frame yang sedang aktif, nilainya dapat berbeda untuk setiap frame yang disimpan. Jika nilai variabel tData telah sama dengan t_data(iData), maka nilai iData akan ditambah satu dan tData di-reset kembali menjadi 0. Penambahan nilai iData membuat gambar yang ditampilkan akan berubah nantinya. Jika nilai iData sama dengan jumlah gambar (iData = MAX), maka iData akan di-set menjadi nol. Jika clock yang digunakan untuk timer adalah C, dan overflow timer yang menyebabkan terjadinya interrupt timer setelah timer di-clock sebanyak N kali, maka fps dapat dihitung: 1 C Toverflow = Tclock × N 1 FPS = Toverflow Tclock =