Senin, 28 September 2009

Pendekatan Modular dalam Pemrograman Terstruktur

Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write), pengujian (test), penelusuran kesalahan (debug) dan pemeliharan (maintain) suatu program.

Salah satu pendekatan yang biasa digunakan dalam pemrograman terstruktur adalah pendekatan yang dilakukan secara modular, dengan pendekatan ini suatu program akan dipilah kedalam sejumlah modul, masing-masing modul akan mempunyai fungsi khusus sesuai dengan ruang lingkup yang akan dikerjakan. Dengan adanya pemilahan tersebut, maka kesalahan akan dapat diminimalisir. Selanjutnya masing-masing modul tersebut akan dipanggil dari program utama agar menjadi sebuah program yang utuh.

Pemrograman secara modular ini dapat diimplementasikan dengan penggunaan subroutine, suatu kelompok instruksi yang menjalankan suatu pengolahan yang sifatnya terbatas seperti pencetakan, pembacaan, untuk proses input atau untuk proses penghitungan.

proses_subroutine1

Subroutine dapat dibedakan menjadi 2 yaitu:

1. Internal Subroutine, adalah subroutine yang dibuat hanya untuk digunakan oleh program tersebut. Sehingga untuk sejumlah proses yang sama dalam program tersebut akan dilakukan oleh subroutine tersebut. Program akan memanggil subroutines tersebut jika diperlukan dan apabila telah selesai, kontrol selanjutnya dikembalikan ke instruksi berikutnya. Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya dikenal sebagai call dan return.

2. External Subroutines, adalah subroutine yang diletakkan secara terpisah dari program yang menggunakan subroutine tersebut. Subroutine seperti ini dideklarasikan agar dapat dipakai oleh program yang lain. Untuk menggunakannya harus diketahui dimana ? , apa namanya ?, bagaimana pengiriman datanya ?, serta bagaimana hasil yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk pemrosesan yang kompleks dan dibutuhkan oleh banyak user.

Tehnik Pemrograman
Agar program yang dibuat dalam program utama maupun subroutine dapat lebih mudah dimengerti, maka dalam pemrograman terstruktur diperkenalkan tiga bentuk tehnik pemrograman, yaitu:

1. Sequence Structure

Dalam sequence structure, instruksi dieksekusi berdasarkan urutannya. Dimulai dari bagian atas dan diakhiri di bagian bawahnya. Bujur sangkar dapat menggambarkan operasi :
- Input dan Output
- Operasi aritmatika
- Operasi pemindahan data dalam memori komputer
Dalam sequence structure tidak diperkenankan penggunaan kotak keputusan.

sequence_structure

2. Loop Structure

Loop (iteration) structure menggambarkan perulangan dari satu atau lebih instruksi.

loop_structure

3. Selection Structure

Dalam struktur ini terdapat sejumlah perintah yang dikerjakan tergantung dari kondisi yang dipenuhinya. Seperti juga dengan sequence dan dan loop structure, terdapat single entry point dan single exit point.

selection_structure



Paradigma Pemrograman

programmerParadigma adalah sudut pandang tertentu yang digunakan terhadap suatu problem, realitas, keadaan dan sebagainya. Paradigma membatasi dan mengkondisikan jalan berpikir seseorang, mengarahkannya terhadap beberapa atribut dan mengabaikan atribut lain, sehingga paradigma hanya memberikan pandangan yang terbatas terhadap sebuah realitas.

Dalam pemrograman dikenal beberapa paradigma, yaitu:

1. Paradigma Pemrograman Prosedural atau Imperatif

Paradigma ini didasari oleh konsep mesin Von Newman (stored program concept) sekelompok tempat penyimpanan (memori), yang dibedakan menjadi memori instruksi dan memori data, masing-masing memori tersebut dapat diberi nama dan nilai, selanjutnya instruksi akan dieksekusi satu persatu secara sekuensial oleh sebuah proses tunggal.

Program dalam paradigma ini berdasarkan pada struktur informasi di dalam memori dan manipulasi dari informasi yang disimpan tersebut. Kata kunci yang sering digunakan dalam paradigma ini adalah:

Algoritma + Struktur Data = Program

Kelebihan dari paradigma ini adalah efisiensi eksekusi karena lebih dekat dengan konsep mesin, kekurangannya adalah batasan yang sangat mengikat sehingga terkadang menyulitkan programmer yang tidak terbiasa.

Contoh bahasa pemrogaman yang menggunakan paradigma prosedural atau imperatif adalah: Algol, Pascal, Fortran, Basic, Cobol, C, dsb…

2. Paradigma Pemrograman Fungsional

Paradigma ini didasari oleh konsep pemetaan dan fungsi pada matematika, fungsi dapat berupa fungsi ”primitif”, atau komposisi dari fungsi-fungsi lain yang telah terdefinisi. Dalam paradigma ini, diasumsikan bahwa akan selalu ada fungsi-fungsi dasar yang dapat digunakan, sehingga penyelesaian masalah berdasarkan pada fungsi-fungsi yang telah tersedia tersebut. Jadi dasar pemecahan masalah adalah transformasional, semua kelakuan program adalah suatu rantai transformasi dari sebuah keadaan awal menuju ke suatu rantai keadaan akhir, yang mungkin melalui keadaan antara, melalui aplikasi fungsi.

Paradigma fungsional tidak mempermasalahkan memorisasi dan struktur data, tidak ada pemilahan antara data dan program, tidak ada lagi pengertian tentang ”variabel”. Programmer tidak perlu tahu bagaimana mesin mengeksekusi atau bagaimana informasi disimpan dalam memori, setiap fungsi seperti ”kotak hitam”, yang perlu diperhatikan hanya keadaan awal dan akhir, sebuah program besar dihasilkan dengan menggabungkan fungsi-fungsi yang telah tersedia. Program yang dihasilkan dengan bahasa pemrograman yang menggunakan paradigma ini biasanya membutuhkan waktu pemrosesan yang lebih lama dibandingkan dengan yang menggunakan paradigma prosedural karena dibutuhkan waktu lebih untuk memproses fungsi-fungsi yang digunakan dalam membuat program.

Contoh bahasa pemrograman yang menggunakan paradigma fungsional adalah LOGO, APL dan LISP.

3. Paradigma Pemrograman Deklaratif, Predikatif atau Lojik

Paradigma ini didasari atas pendefinisian relasi antar individu yang dinyatakan sebagai predikat. Sebuah program lojik adalah kumpulan aksioma (Fakta dan aturan deduksi.

Dalam paradigma ini, programmer menguraikan sekumpulan fakta dan aturan-aturan (inference rules). Ketika program dieksekusi, pemakai akan mengajukan pertanyaan, selanjutnya program akan menggunakan aturan deduksi dan mencocokkan pertanyaan dengan fakta-fakta yang ada untuk menjawab pertanyaan.

Contoh bahasa pemrograman yang menggunakan paradigma ini adalah: Prolog.

4. Paradigma Berorientasi Object (Object Oriented)

Paradigma ini menggunakan konsep class dan object, object adalah instansiasi dari class, setiap object akan mempunyai attribute dan method, masing-masing object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.

mempunyai hirarki artinya sebuah class dapat diturunkan menjadi sebuah class baru yang juga memiliki attribut dan method class diatasnya. Dengan begitu dalam paradigma ini dikenal konsep modularitas, penggunaan kembali (reuse) serta kemudahan modifikasi.

Contoh bahasa pemrograman yang menggunakan paradigma ini adalah: Smalltalk, Eifel, Delphi, Java.

5. Paradigma Konkuren

Paradigma ini didasari oleah kenyataan bahwa dalam keadaan nyata, sebuah sistem komputer harus menangani beberapa program (task) yang harus dieksekusi secara bersamaan dalam sebuah lingkungan baik mono ataupun multi processor. Dalam paradigma ini programmer tidak lagi berpikir sekuensial, melainkan harus menangani komunikasi dan sikronisasi antar task.

Masing-masing paradigma tersebut mempunyai strategi analisa yang khusus untuk memecahkan persoalan. Setiap paradigma mempunyai kekurangan dan kelebihan sehingga tidak semua persoalan dapat dipecahkan dengan satu jenis paradigma, sehingga diperlukan analisis secara menyeluruh terhadap persoalan yang akan diselesaikan sebelum menentukan paradigma pemrograman seperti apa yang akan digunakan untuk menyelesaikan persoalan tersebut.



Sejarah Pemrograman Komputer

Pada tahun 1822, Charles Babbage seorang mahasiswa di Universitas Cambridge Inggris mengembangkan sebuah mesin untuk mengelola data-data agar mudah digunakan, mesin tersebut diberi nama ‘Difference Enggine’.

difference-enggine
Difference Enggine

Setelah bekerja selama 10 tahun pada mesinnya, Charles Babbage menyadari bahwa mesin yang dia ciptakan ini merupakan sebuah mesin yang bersifat single-purpose machine artinya hanya bisa menghasilkan satu jenis keluaran (output). Selanjutnya ia mengembangkan mesin lain yang bersifat multi-purpose. Mesin ini diberi nama ‘Analytical Engine’. Pekerjaan untuk membuat ‘Analytical Engine’ ini ia lakukan sampai dengan tahun 1842.

analytical-enggine
Analytical Enggine

Pada tahun 1847, Charles Babbage kembali menyempurnakan ‘Difference Engine’ hingga pada tahun 1849 ia berhasil membuat versi keduanya. Pekerjaan menyempurnakan hasil-hasil karyanya terus ia lakukan, bahkan dilanjutkan oleh anaknya, Henry Prevost. Charles Babbage sendiri meninggal pada tahun 1871. Untuk melindungi karya-karya ayahnya, Henry Prevost membuat beberapa kopian unit perhitungan aritmatika sederhana dari mesin yang dihasilkan ayahnya dan mengirimkannya ke beberapa institusi di dunia, termasuk ke Universitas Harvard.

Perkembangan dunia komputasi berlanjut pada tahun 1854, ketika seseorang bernama Charles Boole berhasil menciptakan sebuah sistem logika simbolik yang diberinama Logika Boole. Sistem ini mencakup pula logika untuk menyatakan hubungan lebih besar, lebih kecil, sama dengan dan tidak sama dengan. Sistem logika ini masih digunakan sampai dengan saat ini.

Pada tahun 1890, Amerika Serikat ingin melakukan sensus penduduk. Namun kendala yang muncul adalah keterbatasan alat yang ada pada waktu itu, mengingat jumlah penduduk yang semakin meningkat setiap tahunnya, maka diadakanlah sebuah kompetisi komputasi untuk mencari solusinya. Kompetisi ini dimenangkan oleh Herman Hollerith, yang akhirnya ia mendirikan sebuah perusahaan Hollerith Tabulating, Co. yang akhirnya berubah nama menjadi CTR (Calculating Tabulating Recording Company) setelah 3 perusahan lain ikut bergabung. Sepuluh tahun berikutnya perusahaan ini berganti nama lagi menjadi IBM (International Business Machine) hingga saat ini.

Selanjutnya perkembangan komputasi digital mulai berjalan pelan dan jarang digunakan dalam dunia bisnis sampai dengan pertengahan tahun 1920-an. Hingga pada tahun 1925, MIT (Massachusette Institute of Technology) mengembangkan sebuah mesin yang mampu menganalisis perhitungan differensiasi dan integrasi. Mesin yang didanai oleh Yayasan Rockefeller ini dapat dikatakan sebagai komputer terbesar di dunia pada tahun 1930.

Pada tahun 1935, seorang ilmuan Jerman bernama Konrad Zuse mengembangkan komputer Z-1, komputer inilah yang menjadi awal mula diterapkannya sistem biner dalam kinerjanya. Selain itu, Zuse juga berjasa dalam komputasi komputer digital ketika ia menciptakan bahasa pemrograman komputer pertama ‘Plankalkul’.

Pada tahun 1945, terjadi pula peristiwa penting dalam sejarah perkembangan komputasi komputer digital yaitu ketika terjadi kerusakan pada mesin Mark II yang ada di Universitas Harvard. Seseorang yang bernama Grace Murray Hopper yang mengetahui hal ini langsung menyelidiki sebab kerusakannya. Akhirnya dia menemukan seekor ngengat yang terjebak dalam mesin tersebut. Dalam catatan hariannya, Hopper menuliskan: “First actual case of bug being found”. Dia menyebut ngengat ini sebagai sebuah kutu busuk (bug), selanjutnya kata ‘bug’ ini sering digunakan untuk menunjukkan adanya ketidakberesan dalam program. Dari kata ‘bug’ ini muncul pula istilah ‘debugging’ yang artinya proses pembetulan kesalahan program.

Pada tahun 1954, IBM mulai mengembangkan bahasa pemrograman FORTRAN (FORmula TRANslator). Bahasa FORTRAN merupakan bahasa pemrograman level tinggi pertama yang dikomersialkan. Pemrograman level tinggi maksudnya adalah perintah atau kodenya mudah dibaca dan dipahami oleh manusia.

Pada tahun 1958, FORTRAN II dan ALGOL dipublikasikan bersamaan dengan diluncurkannya LISP. Sedangkan pada tahun 1959, bahasa pemrograman COBOL juga diluncurkan. Sejak saat itu perkembangan bahasa pemrograman berkembang sangat cepat.

Pada tahun 1970, bahasa PASCAL mulai dipublikasikan dan hingga saat ini masih banyak digunakan untuk keperluan pendidikan. Selain itu muncul pula dua bahasa pemrograman yang dianggap sangat penting yaitu SMALLTALK dan B-Languange. SMALLTALK penting karena merupakan bahasa pemrograman berbasis obyek yang pertama. Sedangkan B-Languange dikatakan penting karena merupakan cikal bakal munculnya bahasa C. Dengan bahasa C, pemrograman akan lebih mudah, efisien, dan fleksibel.

Pada tahun 1975, Dr. Wong merilis bahasa pemrograman hasil ciptaannya bernama TinyBASIC. TinyBASIC merupakan bahasa pemrograman pertama yang bersifat free alias tidak membayar dalam penggunaannya. Pada tahun yang sama, Bill Gates dan Paul Allen juga membuat bahasa pemrograman yang diberi nama BASIC. BASIC ini selanjutnya mereka jual ke MIT.

Bahasa pemrograman terus berkembang demikian pesat hingga saat ini. Hal ini ditandai dengan semakin banyaknya bahasa pemrograman yang bermunculan.

sejarah-pemrograman

Perkembangan Bahasa Pemrograman

Setiap bahasa pemrograman memiliki kelebihan dan kekurangan, tetapi semua bahasa pemrograman berjalan atas dasar logika dan algoritma sehingga kedua hal inilah yang harus diasah lebih dulu jika ingin mempelajari bahasa pemrograman. Sebaiknya fokuslah kepada sebuah bahasa pemrograman hingga dapat menguasainya dengan baik, kemudian lanjutkan dengan mempelajari bahasa pemrograman yang lain untuk menambah wawasan.




Sistem Bilangan

Cuma mau berbagi informasi tentang Sistem Bilangan. Berikut ini uraiannya. Bahwa ada beberapa sistem bilangan yang digunakan dalam sistem digital, yaitu : Bilangan Biner (Sistem Bilangan Basis Dua), Bilangan Oktal (Sistem Bilangan Basis Delapan), Bilangan Desimal (Sistem Bilangan Basis Sepuluh) dan Bilangan Heksadesimal (Sistem Bilangan Basis Enam Belas).

Kulik sistem bilangan biner terlebih dahulu yuuukkk…….

BILANGAN BINER

binary_numeral_system

Bilangan Biner merupakan bilangan yang memiliki radiks/basis 2, dengan notasi : (n)2;

Sistem bilangan biner adalah sebuah sistem penulisan angka dengan menggunakan dua simbol yaitu 0 dan 1. Untuk simbol angka 0 (nol) maka berarti False dan untuk simbol angka 1 (satu) maka berarti True. Ternyata Sistem bilangan biner modern ini ditemukan oleh Gottfried Wilhelm Leibniz pada abad ke-17. Dan Sistem bilangan ini merupakan dasar dari semua sistem bilangan berbasis digital.

Berikut tabel yang berupa contoh nilai bilangan desimal yang dinyatakan sebagai bilangan biner :

Desimal Biner (8 bit)
0 0000 0000
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
5 0000 0101
6 0000 0110
7 0000 0111
8 0000 1000
9 0000 1001
10 0000 1010
11 0000 1011
12 0000 1100
13 0000 1101
14 0000 1110
15 0000 1111
16 0001 0000

Catatan:
20=1, 21=2, 22=4, 23=8, 24=16, 25=32, 26=64 dst
Pembahasan sistem bilangan biner tuh gak hanya sampai di catatan terakhir diatas ?, tapii…… bilangan biner bisa mengalami konversi kebentuk bilangan oktal, bilangan desimal, dan bilangan heksadesimal. Nah, berikut merupakan pembahasan untuk pengkonversian bilangan biner ke bilangan lainnya.

KONVERSI DARI BINER KE OKTAL

Kalo’ bilangan biner itu radiks/basis nya 2, nah… sekarang akan dibahas konversi dari bilangan biner ke bilangan oktal yang memiliki radiks/basis 8 (Notasi : (n)8 dengan bilangan 0, 1, 2, 3, 4, 5, 6, dan 7).
Misal :
Ubahlah bilangan biner 11110011001 kedalam bilangan oktal

011 110 011 001
3 6 3 1
Jadi hasil konversi bilangan biner 11110011001 adalah 3631.

Cara…nya…. A…da…lah…… (tu-wa-ga-pat :) ):

Karena biner nya 11 digit dan konversinya ke bilangan oktal, maka harus dikelompokkan masing-masing 3 digit, nah ternyata hasil pengelompokkan mengalami kekurangan digit jadii…… digit yang paling kiri ditambahkan digit 0 (nol) dan setelah dikelompokkan menjadi 3 digit, lalu perhitungannya dilakukan per kelompok dan memulai perhitungan per kelompoknya tetap dimulia dari lajur yang paling kanan ke kiri. Sehingga hasil konversinya adalah :

111100110012 = 36318;

Begitchuuu………

KONVERSI BINER KE HEXADESIMAL

Metode konversinya hampir sama dengan Biner ke Oktal. Namun pengelompokkannya sejumlah 4 bit. Empat kelompok bit paling kanan adalah posisi satuan, empat bit kedua dari kanan adalah puluhan, dan seterusnya.

Contohnya:
111000112 = …… 16

Solusi:
kelompok bit paling kanan: 0011 = 3
kelompok bit berikutnya: 1110 = E
Hasil konversinya adalah: E316.

KONVERSI DARI BINER KE DESIMAL
Misal :
0000 01012 (merupakan biner 8 digit) = …… 10
Cara menghitung:
Langkah 1 :
Let’s to know bahwa perhitungan untuk bilangan biner, harus dimulai dari lajur paling kanan ke kiri, nah perhitungannya seperti yang diuraikan dibawah ini nih…
0 0 0 0 0 1 0 1
27 26 25 24 23 22 21 20

Langkah 2 :
Yang angka biner 0 tidak dilakukan perhitungan sedangkan angka biner 1 dihitung, jadinya :
= (0×27)+(0×26)+(0×25)+(0×24)+(0×23)+(1×22)+(0×21)+(1×20)

= 0 + 0 + 0 + 0 + 0 + 4 + 0 + 1
= 510
Jadi bilangan biner dengan nilai 0000 01012 jika dikonversikan ke bilangan desimal maka nilai nya menjadi 510.
Jika bilangan biner nya 4 digit, maka konversi ke desimalnya juga menggunakan cara yang sama dengan bilangan biner 8 digit, yaitu menghitungnya dimulai dari lajur yang paling kanan ke kiri. Mudah kan…



RANCANG BANGUN PENGUKURAN TEMPERATUR JARAK JAUH VIA SMS
BERBASIS MIKROKONTROLER ATMega8535

Mustaghfiri Asror DIII Instrumentasi & Elektronika Jurusan Fisika
Fakultas MIPA Universitas Diponegoro Semarang 2007


Abstract
Telah dibuat rancang bangun pengukur temperatur jarak jauh via SMS berbasis Mikrokontroler ATMega8535. Rancang bangun ini terdiri dari stasiun pengirim yang terhubung dengan Mikrokontroler ATMega8535 yang menggunakan Handphone Siemens M35i. pada stasiun penerima terdiri dari Handphone Nokia dan seperangkat komputer dengan bahasa pemrograman Visual Basic 6.0. pada stasiun pengirim terdiri dari Sensor Suhu LM35, Pengkondisi sinyal, Timer eksternal, Mikrokontroler AVR ATMega8535 dengan konfigurasi ADC internal dan Handphone Siemens M35i.
Alat ini bekerja dengan mengukur besarnya temperatur disuatu tempat dan mengkonversi ke data digital serta ke data format PDU (Protokol Data Unit) dan mengirimkan secara serial ke Handphone Simens. Pengaturan penundaan waktu pengiriman data pengukuran temperatur dilakukan oleh Timer eksternal 555 selama 15 menit penundaan. Akusisi data pengukuran ini akan diterima oleh ponsel Penerima yang terhubung dengan komputer menggunakan ponsel Nokia 3315 dan bahasa pemrograman Visual Basic 6.0.

Keyword: SMS, AT Command, AVR ATmega8535, Temperatur

File komplit dapat didownload disini.......




TELEMETRI JARINGAN WI-FI UNTUK MONITORING PENCEMARAN AIR SUNGAI MENGGUNAKAN MIKROKONTROLER MCS51

M. Ali Muzzaki[1], Rustam Aji[2], DII Instrumentasi & Elektronika FMIPA Universitas Diponegoro Jl. Prof Sudharto SH, Tembalang, Semarang

Abstrak

Sistem telemetri pemantau pencemaran air sungai telah dibuat menggunakan Wi-Fi berbasis TCP/IP berbantuan Borland Delphi 7.0. Sistem ini dibuat untuk pemantauan pencemaran air sungai jarak jauh. Tingkat pencemaran air sungai dipantau berdasarkan kadar keasaman/kebasaan air sungai. Struktur sistem pemantau pencemaran air sungai ini disusun dari sensor pH elektroda PE03 dan sensor suhu LM35 yang berturut-turut digunakan untuk mengukur pH dan suhu air sungai. Hasil pengukuran pH dan suhu dari sensor dilewatkan ke rangkaian buffer dan ADC084 yang kemudian diterjemahkan oleh mikrokontroler. Data pembacaan mikrokontroler dikonversikan ke TCP/IP oleh konverter serial. Selanjutnya data dikirim melalui Wi-Fi dengan frekuensi 2,4 GHz dan hasilnya ditampilkan oleh komputer. Pengujian sistem pemantau pencemaran air sungai ini menunjukkan bahwa sistem secara keseluruhan dapat bekerja dengan baik. Tingkat keasaman sensor pH sebesar 0,1 dan resolusi sensor suhu 1oC.

Kata kunci : Mikrokontroler MC-51, elektroda, sensor suhu, TCP-IP, Delphi

File komplit dapat didownload disini.......




LINIER PROGRAMING

Linier programming adalah suatu teknik optimasi untuk memecahkan persoalan dimana fungsi obyektif maupun fungsi kendala dinyatakan sebagai fungsi linier dari variabel desain. Metode yang sangat populer untuk menyelasaikan persoalan linier programming adalah “Metode Simpleks-”.
Karakteristik dari persoalan linier programing adalah:
1. Tipe Optimasi adalah minimisasi fungsi obyektif
2. Semua fungsi kendala mempunyai jenis “Equality”
3. Semua variabel desain adalah non negatif.

1 Model Linier Programing
Dalam Linier Programing dikenal dua macam fungsi yaitu fungsi obyektif dan fungsi kendala. Fungsi obyektif yang sering juga disebut dengan fungsi tujuan adalah fungsi yang menggambarkan tujuan atau sasaran didalam permasalahan LP yang berkaitan dengan pengaturan secara optimal untuk memperoleh keuntungan secara maksimal atau biaya secara minimal. Fungsi kendala merupakan batasan-batasan kapasitas yang tersedia atau kemampuan yang ada yang akan dialokasikan secara optimal ke dalam berbagai kegiatan.
Persoalan LP dapat dinyatakan dalam bentuk standar seperti pada tabel berikut:

Tabel 3.1 Data untuk model linear programming

Dengan mengunakan Tabel diatas dapat disusun suatu model matematis yang digunakan untuk menyatakan permasalahan LP yaitu:

Fungsi tujuan:
Maksimumkan Z=C1X1 + C2X2 + C3X3 + …. + CnXn
Dengan Fungsi kendala
1). a11X1 + a12X2 +a13X3 + … + a1nXn ≤ b1
2). a21X1 + a22X2 +a23X3 + … + a2nXn ≤ b2
.
.
.
m). am1X1 + am2X2 +am3X3 + … + amnXn≤ bm
dan X1,X2, …, Xn ≤ 0

2 Pemecahan Persoalan Linier Programing dengan Metode Grafik
Persoalan linier programing dengan dua variabel dapat dipecahkan dengan menggunakan metode geometri atau metode grafik. Langkah-langkah penyelesaian dalam metode grafik adalah:
1. Menentukan fungsi tujuan dan memformulasikannya dalam bentuk persamaan matematis
2. Mengidentifikasi batasan-batasan yang berlaku dan memformulasikanya dalam bentuk matematis
3. Menggambarkan masing-masing garis fungsi batasan dalam satu sistem sumbu x-y
4. Mencari titik yang paling menguntungkan (optimal) dihubungkan dengan fungsi tujuan.
Contoh.
Sebuah perusahaan sepatu membuat 2 jenis sepatu. Jenis pertama dengan merek I1, dengan sol dari karet dan jenis yang kedua dengan merek I2, dengan sol dari kulit. Untuk membuat sepatu-sepatu itu perusahaan memiliki 3 macam mesin. Mesin 1 khusus membuat sol dari karet, mesin 2 khusus memuat sol dari kulit, dan mesin 3 membuat bagian atas sepatu dan melakukan assembling bagian atas dengan sol. Setiap lusin sepatu merek I1 mula-mula dikerjakan dimesin 1 selama 2 jam, kemudian tanpa melalui mesin 2 terus dikerjakan di mesin 3 selama 6 jam. Sedang untuk sepatu merek I2 tidak diproses di mesin 1, tetapi pertama kali dikerjakan pada mesin 2 selama 3 jam kemudiandi mesin 3 selama 5 jam. Jam kerja maksimum setiap hari untuk mesin 1 adalah 8 jam, mesin 2 = 15 jam, dan mesin 3 = 30 jam. Sumbangan terhadap laba untuk setiap lusin sepatu merek I1 = Rp. 30.000,- dan untuk sepatu merek I2 sebesar Rp. 50.000,-. Berapa lusin sebaiknya diproduksi untuk masing-masing merek agar diperoleh laba yang maksimum.
Solusi:
Data tersebut diatas dapat disusun kedalam tabel diatas sebagai berikut:
Tabel 3.2 Data dari perusahaaan sepatu ideal


Untuk menentukan formulasi masalah pertama kali dilakukan adalah menentukan desain variabel yaitu:
X1 = Jumlah sepatu merek I1 yang akan dibuat tiap hari
X2 = Jumlah sepatu merek I2 yang akan dibuat tiap hari
Z = Jumlah laba seluruh sepatu merek I1 dan merek I2 yang akan diperoleh.
Kemudian ditentukan fungsi obyektif yaitu dengan melihat tujuan dari permasalahan. Dari soal tujuannya adalah mencari laba maksimum dimana diperoleh dari sepatu merek I1 = Rp. 30.000,- dan Merek I2 = Rp. 50.000,- sehingga dapat ditulis dalam bentuk matematis.
Maksimumkan Z = 3X1 + 5X2 ( dalam puluhan ribu rupiah)
Selanjutnya ditentukan fungsi kendalanya. Kendala muncul dengan adanya batasan kapasitas mesin 1, mesin 2 dan mesin 3 yaitu 8 jam, 15 jam dan 30 jam, sehingga dapat ditulis
1. 2 X1 ≤ 8
2. 3X2 ≤ 15
3. 6X1 + 5X2 ≤ 30

Setelah fungsi obyektif dan fungsi kendala sudah didapatkan langkah selanjutnya adalah melakukan penggambaran dalam bentuk grafik untuk masing-masing fungsi kendala.

Gambar 3.1. Grafik fungsi-fungsi batasan perusahaan sepatu “IDEAL”

Dari grafik dapat diketahui perpotongan antara dua persamaan garis dan dapat diketahui daerah feasible. Selanjutnya mencari perpotongan titik yang akan memaksimumkan fungsi obyektif. Ada dua cara untuk mencari titik yang memaksimumkan fungsi obyektif yaitu dengan menggambarkan fungsi tujuan dan dengan membandingkannya untuk masing-masing titik yang terletak di daerah feasible.
Untuk cara yang pertama, dibuat garis dengan menggunakan persamaan fungsi obyektif dengan memisalkan pada suatu harga (Z=10=3X1+5X2), kemudian garis ini digeser-geser sehingga didapatkan suatu titik didaerah feasible yang terletak paling akhir (untuk arah pergeseran ke kanan-atas)

Gambar 3.2. Grafik fungsi tujuan dan batasan-batasan perusahaan sepatu “IDEAL”

Dari hasil perrgeseran garis didapatkan suatu titik yang terakhir yaitu titik (5/6,5). Dari hasil tersebut dapat diketahuai besarnya X1 = 5/6 dan X2 = 5 dengan besarnya Z=27,5.
Cara kedua dengan membandingkan besarrnya Z untuk masing-masing titik, untuk mendapatkan nilai Z yang terbesar.
Tabel 3.3. Nilai Z pada alternative nilai X untuk memilih titik yang optimal
Z = 3X1 + 5X2

Di antara kelima alternatif tersebut yang paling besar adalah Z = 27,5 dengan X1=5/6 dan X2=5.
Dengan demikian untuk mendapatkan laba maksimum haruslah diproduksi untuk merek I1 sebesar 5/6 dosin dan merek I2 sebesar 5 dosin tiap hari, dengan laba sebesar Rp. 275.000,-.
4.3 Metode Simpleks
Apabila suatu masalah dalam LP hanya mengandung 2 variabel saja, maka akan dapat diselesaikan dengan metode grafik. Tetapi bila melibatkan lebih dari dua variabel akan sulit diselesaikan dengan metode grafik, sehingga perlu suatu metode baru untuk menyelesaikan permasalahan tersebut. Metode baru ini disebut dengan “Metode Simpleks” yang lazim digunakan untuk menyelesaikan permasalahan dalam LP dengan 3 variabel atau lebih.
Pada bagian ini akan dijelaskan mengenai langkah-langkah dalam menyelesaikan permasalahan dengan menggunakan metode simpleks dengan meggunakan tabel.

file complete dapat didownload disini dan untuk mendapatkan software simulasi metode simplex dapat didownload disini, Semoga bermanfaat.

SMD (Surface Mount Device) / SMT ( Surface Mount Technology)

Istilah SMT (Surface Mount Technology) merupakan istilah yang telah dikenal luas dalam dunia elektronika. Istilah Surface Mount Technology berarti sebuah teknologi mengenai cara atau metode untuk menyusun komponen-komponen elektronik secara langsung pada permukaan PCB (Printed Circuit Boards). Metode ini dilakukan oleh mesin robot yang secara otomatis mampu melakukan pemasangan komponen elektronika secara teratur, rapi, dan teliti. Sedangkan komponen elektronika seperti resistor, kapasitor, dioda, tarnsistor, IC, dsb yang terpasang pada PCB dengan menggunakan SMT ini disebut sebagai SMD (Surface Mount Device). Jadi istilah antara SMD dan SMT dalam hal ini berkaitan sangat erat. Bisa dikatakan teknologinya disebut SMT dan alat yang digunakannnya adalah SMD.

Industri elektronik menggunakan metode SMT guna perakitan komponen pada papan sirkuit (PCB). Selain itu, untuk dunia FPGA, metode SMT digunakan untuk perakitan komponen (SMD) pada papan pengembang (development board) serta pengaturan layout jalurnya (wiring). Dilihat dari segi ukuran, komponen SMD berukuran lebih kecil daripada komponen yang sama. Sebagai gambaran berikut ditampilkan beberapa SMD yang sering ada dan terpasang terpasang di dalam papan pengembang FPGA :

jenis-komponen-smd

Beberapa Gambar SMD

SMD Resistor

Fungsi utama sebuah resistor adalah sebagai hambatan (resistansi) bagi arus listrik. Untuk jenis resistor, komponen ini terbagi atas beberapa jenis dan ukuran. Untuk menggambarkan ukuran jenis resistor dapat dilambangkan panjang bilangan sepanjang 4 digit. Untuk 2 digit pertama menggambarkan panjangnya sedangkan 2 digit terakhir menggambarkan lebarnya. Biasanya satuan ukuran yang digunakan adalah milimeter. Misalnya:

  • 0603 : berarti berukuran 0,6×0,3 mm

  • 0805 : berarti berukuran 0,5×0.5 mm

SMD Capasitor

Fungsi utama sebuah kapasitor adalah untuk menyimpan tenaga listrik, penapis, dan penala. Untuk kapasitor jenis SMD, tersedia antara 1 pF s/d 1 uF. Selain itu, ukuran yang ada tersedia untuk kapasior ini yakni antara 0603 s/d 1206. Dalam hal ini, kapasitor paling banyak dan sering digunakan adalah jenis kapasitor yang terbuat dari bahan keramik. Selain itu, dikenal pula apa yang disebut jenis kapasitor tantalum yakni kapasitor yang memiliki kapasitansi 1 uF dan ukuran lain di atasnya. Untuk menggambarkannya, biasanya dilambangkan dengan huruf A s/d E.

tabel

Kapasitor jenis tantalum ini memiliki kutub positif dan negatif yang secara jelas tertera pada bagian luarnya.

SMD Transistor
Transistor yang paling banyak digunakan untuk SMT adalah jenis SOT-23 dan SOT-223.

SMD Integrated Circuit (IC)
Untuk jenis IC, yang cukup terkenal dinamakan SO-8 dan SO-14 (sering juga disebut SOIC-8 dan SOIC 16).

SMD FPGA
Seperti yang diketahui, FPGA juga merupakan salah satu jenis IC digital. Oleh karena itu, maka tersedia juga jenis FPGA untuk SMD. Beberapa jenis IC yang dipakai untuk FPGA dan cukup terkenal yaitu :

  • TQFP (Thin Quad Flat Pack); memiliki 100 atau 144 pin

  • PQFP (Plastic Quad Flat Pack); memiliki 208 atau 240 pin.

  • BGA (Ball-Grid Array); memiliki 256 s/d lebih 1000 pin.

SMD QFP
Berikut gambar beberapa FPGA SMD jenis QFP:

fpga-jenis-qfp

Gambar IC FPGA jenis QFP

Untuk jenis TQFP memiliki 100 dan 144 pin. Selain itu cara pemasangan pin dengan proses penyolderan juga dapat dikatakan mudah karena pin-pin jenis TQFP ini terbilang kokoh dan kuat. Sedangkanuntuk jenis PQFP memiliki 208 dan 240 pin. Berbeda dengan TQFP, jenis PQFP ini memiliki pin-pin yang mudah bengkok sehingga tidak mudah untuk dilakukan penyolderan. Baik TQFP maupun PQFP, masing-masing memiliki jarak antar pin sebesar 0,5 mm.

SMD BGA

bagian-bawah-fpga-jenis-bga

Gambar Bagian Bawah IC FPGA Jenis BGA

Jenis komponen BGA memiliki bagian bawah yang sesungguhnya berupa sebuah papan sirkuit. Papan sirkuit tersebut dilapisi dan hampir sebagian besar tertutup oleh bulatan-bulatan solder(seperti terlihat pada gambar di atas). Bulatan solder pada BGA ini bukanlah terbuat dari hasil solder logam (tinol) namun terbuat dari solder lem/sejenis perekat yang akan berbentuk padat ketika berada dalam suhu kamar. Bulatan yang terbentuk dari hasil solder lem tersebut akan meleleh ketika proses pembuatan papan di dalam oven. Selain itu, jarak antara bulatan satu dengan yang lain adalah sekitar 1 s/d 1,27 mm atau paling sedikit 0,8 mm.

sumber : http://www.fpga4fun.com/SMD.html

http://en.wikipedia.org/wiki/Surface-mount_technology

http://en.wikipedia.org/wiki/SMT_placement_equipment




Kristal dan Oscilator Pada FPGA

Pada umumnya, sebuah FPGA memerlukan sinyal detak (clock) yang stabil dan tidak berubah-ubah. Detak (clock) ini pada umumnya dihasilkan oleh kristal atau oleh oscillator. Kristal berisi sebuah resonator (sering disebut Quartz). Resonator ini bukanlah alat (device) elektronik dan biasanya tidak mampu melakukan osilasi sendiri. Sedangkan sebuah oscillator terdiri resonator dan amplifier. Kedua komponen tersebut diperlukan oscillator untuk mampu melakukan osilasi.

Sebuah kristal atau pun oscilator memiliki parameter tersendiri yakni frekuensi resonansi. Biasanya suatu FPGA memiliki ukuran frekuensi resonansi tersendiri yang telah ditetapkan oleh vendor pembuatnya. Jadi jika ingin membuat sebuah rangkaian elektronika dengan frekuensi resonansi tertentu maka otomatis akan menyesuaikan dengan FPGA yang hendak dipakai.

kristal dan oscilator

Keterangan :

  • Gambar Kristal (2 pin)

  • 1. Kristal jenis HC-49/SD

    2. Kristal jenis HC-49/US

    3. Kristal jenis HC-49/U

  • Gambar Oscilator (4 pin)

  • 4. Oscilator jenis DIL-14 berukuran penuh dan bungkus (bagian luarnya) terbuat dari logam. Biasa disebut “canned oscillator”

    5. Oscilator jenis DIL-8 berukuran setengah dan bungkus (bagian luarnya) terbuat dari logam.

    6. Oscilator jenis DIL-8 berukuran setengah dan bungkus (bagian luarnya) terbuat dari plastik

    7. Oscilator berukuran 5×7mm dan bungkus (bagian luarnya) terbuat dari logam.

Kristal
Kristal ini biasanya memiliki 2 buah kaki (pin). Kedua pin tersebut simetris dan letaknya dapat dipasang secara bolak balik. Kristal ini memerlukan rangkaian elektronik dari luar untuk melakukan osilasi. Selain itu, kristal lebih dikenal sebagai komponen ”analog” dibandingkan “digital”. Sebuah kristal memerlukan amplifier analog guna menghasilkan osilasi yang terus menerus. Seringkali, sebuah kristal memiliki 3 buah pin. Namun biasanya selain kedua pin yang telah ada, sisa pin tersebut hanyalah pin ground.

Oscilator
Saat ini, kebanyakan pengembang papan (development board) FPGA menggunakan oscillator guna menghasilkan detak (clock). Sebuah oscillator biasanya memiliki 4 kaki (pin) dan membutuhkan sinyal elektrik untuk melakukan osilasi. Jadi sebuah oscillator mampu menghasilkan sebuah detak (clock) sendiri ketika dihidupkan/diberikan tegangan. Pin yang dimiliki oleh oscillator terdiri sebagai berikut :

  1. Pin Enable

  2. Pin Groun (GND)

  3. Pin Output

  4. Pin VCC (biasanya berupa 3,3V atau 5V)

Untuk menonkatifkan atau meniadakan output oscilator (berupa tingkat impedansi yang tinggi), biasanya pin enable akan dihubungkan pada GND. Sedangkan untuk menghasilkan output maka pin enable akan dihubungkan dengan VCC. Beberapa oscillator biasanya otomatis akan non aktif/mati ketika input untuk pin enable bernilai rendah. Tujuannya yakni untuk menghemat tenaga/power. Selain itu, pembungkus oscillator yang berupa logam nantinya bisa dihubungkan ke ground dan berfungsi sebagai pelindung.

Sebuah oscilator dibuat untuk bekerja pada tegangan tertentu. Biasanya antara 3,3V s/d 5V. Terkadang, bila sebuah oscilator yang memiliki spesifikasi tegangan 5V akan dipasang pada tegangan 3,3V tidak akan menjadi masalah. Kecepatan osilasi sebuah oscilator akan berbanding lurus terhadap arus listrik yang dibutuhkan. Misalkan, sebuah oscilator akan berosilasi 25 MHz hanya akan membutuhkan arus 10 mA . Sedangkan jika melakukan osilasi 50 MHz maka arus yang dibutuhkan adalah sekitar 20 mA.

Ketelitian Kristal dan Oscilator
Sebuah resonator (Quartz) biasanya menghasilkan frekuensi yang stabil serta tepat dan akurat. Ketepatan dan ketelitian sebuah kristal mampu mencapai 0,0001%. Hal tersebut akan berpengaruh juga pada ketelitian dan ketepatan kristal maupun oscilator. Nilai ketepatan dan ketelitian paling tinggi untuk keduanya mampu mencapai plus minus 0,0001 %. Sedangkan pada umumnya, nilai ketepatan dan keakuratan kristal maupun oscilator adalah plus minus 0.005% s/d plus minus 0.001%.

Clock synthesizer sebagai penghasil detak (clock)

Sebuah sinyal detak (clock) dapat dihasilkan dari komponen yang disebut clock synthesizer. Hal ini sangatlah bermanfaat karena komponen ini mampu diprogram untuk menghasilkan sejumlah frekuensi yang diharapkan. Alat clock synthesizer ini didasarkan atas program PLL. Selain itu, program PLL memiliki beberapa aplikasi seperti proses sinkroniasai, regenerasai detak (clock), dsb. Salah satu hal yang menarik ketika menggunakan komponen (synthesizer clock) adalah bahwa komponen ini akan cenderung menghasilkan sinyal dengan jitter yang besar dan kemudian akan menetapkan frekuensi osilator yang akan diinginkan. Jitter adalah ukuran sebuah detak tersebut dihasilkan/ditetapkan. Sebuah jitter yang berukuran kecil akan sangat menguntungkan. Hal tersebut disebabkan karena jitter memerlukan pengurangan dari selisih waktu yang ada. Jadi, untuk mendesain jitter ini tidak boleh sembarangan. Selain itu, jitter yang sedikit juga dibutuhkan dalam beberapa aplikasi komunikasi.


Detak (clock) Pada FPGA

Sebuah detak (clock) FPGA biasanya dibuat secara serentak atau sinkron. Artinya bahwa tiap detak (clock) yang dihasilkan di dalam sebuah FPGA terjadi serentak akan mempengaruhi semua kondisi yang ada. Termasuk juga akan mempengaruhi D-flip flop yang merupakan salah satu bagian atau isi FPGA. Jika terjadi clock yang serentak maka akan membuat kondisi D-flip flop menjadi berubah ke kondisi yang lain.

skema-clock-fpga
Skema Clock FPGA

Dalam sebuah desain rangkaian yang detaknya terjadi secara serentak, maka sebuah detak saja akan mampu mengendalikan keseluruhan flip flop yang ada. Dan ini terjadi secara serentak pula. Namun hal ini akan mengakibatkan masalah pada waktu (timing) dan sinyal elektrik yang terjadi di dalam FPGA. Misalnya saja akan timbul waktu tunda (delay) atau terjadi glitch dalam rangkaian sinkron tersebut. Untuk menyelesaikan masalah ini, vendor pembuat FPGA menyediakan jalur internal khusus yang disebut “global routing” atau “global lines”. Tujuannya adalah untuk mendistribusikan sinyal-sinyal clock ke semua area FPGA dengan delay yang singkat dan glitch yang rendah sehingga sinyal clock akan terlihat sama dan serentak sampai pada semua flip flop yang ada.

Pada umumnya, sebuah pin untuk sebuah sinyal detak dalam FPGA merupakan jenis “dedicated input pin”. Artinya, pin untuk sinyal detak ini telah ditentukan oleh vendor pembuat FPGA. Biasanya untuk setiap FPGA hanya memiliki satu pin untuk sinyal detak. Sebuah sinyal detak ini yang nantinya akan mengendalikan semua proses detak yang terjadi di dalam FPGA. Untuk mengetahui pin mana dalam sebuah FPGA yang bertindak sebgai pin sinyal detak maka dapat dicek pada datasheet FPGA tersebut.

Domain Detak

Sebuah FPGA dapat menggunakan bermacam-macam detak. Caranya adalah dengan menggunakan bermacam-macam global lines dan dedicated input pins. Setiap bentuk detak yang terjadi di dalam FPGA disebut sebagai domain detak (clock domain). Untuk setiap flip flop di dalam FPGA, domain detak sangatlah mudah untuk ditentukan. Hal ini bisa dicermati dengan melihat input detak pada flip flop tersebut. Namun, bagaimana dengan jika ada logika kombinasional yang ada diantara flip flop? Seperti yang diketahui bahwa dalam logika kombinasional, sinyal detak yang masuk akan langsung dikeluarkan serta tidak terjadi penundaan. Berbeda dengan flip flop yang akan menunda luaran sinyal detaknya. Kedua hal yang sangat berbeda ini dapat diselesaikan dengan cara sebagai berikut :

· Jika ada beberapa logika kombinasional diantara flip flop yang memiliki domain detak sama maka logika kombinasional tersebut akan mengikuti domain clock yang sama juga.

· Jika ada beberapa kombinasional logika diantara flip flop yang memiliki clock domain berbeda, maka logika kombinasional tersebut tidak mengikuti domain detak manapun. Namun untuk ciri khas desain tiap FPGA yang ada maka hal ini tak pernah terjadi. Yang ada hanya jalur domain detak yang berbeda yang kemudian nanti akan disinkronkan.

Kecepatan Domain Detak

Setiap domain detak di dalam FPGA, software yang ada akan menganalisa semua jalur flip flop. Selain itu, software tersebut juga akan memberikan data tentang berapa frekuensi maksimum yang diperbolehkan. Biasanya software hanya akan menganalisa satu jalur dari setiap domain detak saja. Sedangka untuk sinkronisasi jalur biasanya tidak menjadi masalah dan tidak akan dianalisis.

Sebuah domain detak untuk sebuah FPGA besarnya mencapai 10 MHz, atau lebih besar yaitu 100 MHz. Sepanjang clock yang digunakan adalah global lines serta menggunakan kecepatan detak yang lebih rendah dari data yang ada, maka tidak perlu khawatir mengenai pewaktuan internal. Hal ini disebabkan karena telah terbukti akan efektif dan efisien nantinya.

Sinyal di antara Domain Detak

Jika sebuah data perlu dikirimkan melewati domain detak yang berbeda, pertimbangan khusus perlu diperhatikan. Secara sederhananya yaitu sebuah detak hanya akan cocok dan sinkron dengan domain detak yang sama. Jika detak dan domain detaknya berbeda maka hal ini sulit dilakukan dan bisa menyebabkan sistem pewaktuan kacau dan menyebabkan ketidakstabilan pada flip flop. Namun, ada tekhnik dan cara untuk mengatasinya misalnya menggunakan sinkronisasi atau dengan menggunakan FIFO.




FPGA Pins

Pada umumnya, bentuk sebuah FPGA tergantung pada vendor pembuatnya. Masing-masing vendor memiliki ciri khas untuk setiap FPGA ciptaannya. Misalkan saja vendor Xilinx dengan produknya yang terkenal yaitu Spartan dan Virtex. Atau vendor Altera dengan FPGA buatannya yakni Cyclone dan Stratix. Masing-masing dari jenis FPGA tersebut memiliki ciri khas dan keistimewaan tersendiri. Hal tersebut juga nampak pada jumlah pin/kaki yang pada masing-masing FPGA tersebut.

Secara umum, pin FPGA terbagi atas 2 jenis yaitu : pin asli (dedicated pins) dan pin untuk pengguna (user pins). Dari kedua jenis pin. Tersebut, hampir sekitar 20% s/d 30% pin pada FPGA termasuk jenis pin asli (dedicated pins). Jenis dedicated pins ini mengandung arti bahwa pin ini memang sengaja diciptakan vendor pembuat FPGA dengan tujuan tertentu. Selain itu, jenis pin ini dapat dikategorikan menjadi beberapa golongan :

  • Power pins, Pin untuk daya atau pin untuk ground
  • Configuration pins, Pin yang digunakan untuk download FPGA
  • Clock pins, Pin ini digunakan untuk menghasilkan sinyal detak (clock) yang nantinya akan mengendalikan keseluruhan proses yang terjadi dalam FPGA.

User Pins

Sebagian besar pin yang ada dalam FPGA adalah jenis user pins. Jenis pin ini diciptakan vendor dengan tujuan menciptakan keleluasaan atau kebebasan bagi para pengguna FPGA untuk menentukan sendiri mana pin yang hendak dipakai. Nama yang lazim atau sering digunakan untuk pin jenis ini adalah pin I/O, yang artinya pin output-input. Jenis pin ini nantinya bisa diatur oleh pengguna sesuai keingginan dan kepentingannya. Selain itu, jenis pin juga bisa dijadikan input dan output untuk rangkaian yang dibuat oleh pengguna FPGA tersebut. Nantinya, jenis pin ini akan terhubung dengan IO cell di dalam FPGA. Perlu diketahui, IO cell ini diberi daya tegangan oleh pin VCCIO (termasuk jenis power pins). Seperti yang telah dijelaskan, isi FPGA terdiri atas 3 bagian yaitu Configure Logic Blocks (CLB), I/O Blocks, dan Programmable Interconnect. Jenis User pins ini akan terhubung pada I/O Blocks.

IO Banks

Salah satu jenis dedicated pins pada FPGA adalah power pins. Pada umumnya, sebuah FPGA memiliki beberapa pin yang sering dinamakan VCCIO (termasuk jenis power pins) yang semuanya tersebut, terhubung ke sebuah sumber teganan yang sama. Namun, hal tersebut tidak berlaku untuk untuk FPGA generasi yang baru. FPGA jenis ini memiliki sebuah konsep yang dinamakan “user IO banks”. Dalam konsep “user IO banks” pengguna FPGA dapat membagi IO menjadi beberapa kelompok yang masing-masing kelompok memiliki tegangan VCCIO tersendiri. Hal ini menjadikan FPGA dapat berperan sebagai pengubah dan penyalur tegangan. Misalkan saja jika sebuah bagian pada FPGA membutuhkan tegangan 3,3V dan bagian yang lain membutuhkan 2,5V maka dengan konsep “user IO bank” ini, FPGA dapat melakukannya.

FPGA Power

Sebuah FPGA pada umumnya membutuhkan 2 tegangan untuk beroperasi yaitu : tegangan inti (core voltage) dan tegangan IO (IO voltage). Tiap tegangan ini masing-masing memiliki pin yang berbeda satu sama lain.

  • Tegangan inti internal (sering disebut internal core voltage atau VCCINT).

    Tegangan ini digunakan sebagai sumber daya pada gerbang-gerbang logika dan flip-flop di dalam FPGA. Besarnya tegangan antara 5V (untuk jenis FPGA lama) s/d 3,3V, 2,5V, 1,8V, 1,5V (untuk jenis FPGA baru). Bahkan tegangannya bisa semakin rendah untuk produk FPGA terbaru. Dengan kata lain, tegangan jenis ini berbeda-beda tergantung FPGA yang digunakan.

  • Tegangan IO (sering disebut IO voltage atau VCCIO)

    Tegangan ini digunakan sebagai sumber daya untuk blok-blok IO pada FPGA. Tegangan jenis ini haruslah cocok dan tepat dengan peralatan yang nantinya akan dihubungkan dengan FPGA. Misalkan FPGA akan dihubungkan dengan motor stepper. Dalam hal ini tegangan antara FPGA dengan motor stepper haruslah cocok dan tepat. Inilah yang sering disebut tegangan IO.

Sebenarnya, FPGA sendiri memperbolehkan tegangan yang sama untuk VCCINT dan VCCIO (misalkan, pin untuk VCCINT dan VCCIO dapat saling terhubung bersama). Namun, kemudian cenderung dipisahkan yaitu tegangan rendah untuk inti (core voltage) dan tegangan tinggi untuk IO (IO voltage).

Perlu diingat bahwa penamaan jenis tegangan untuk FPGA masing-masing vendor berbeda. Misalkan saja, tegangan internal sering dinamakan VCC untuk Xilinx dan VCCINT untuk Altera. Sedangkan tegangan IO sering dinamakan VCCO untuk Xilinx dan VCCIO untuk Altera.



Bagaimana Cara Kerja JTAG

Pada tulisan terdahulu, diketahui bahwa JTAG (Joint Test Action Group) adalah aturan standar dari IEEE (1149.1) yang berkembang pada tahun 1980. Aturan ini dibuat dan dikembangkan dengan tujuan menyelesaikan masalah-masalah pada perakitan sirkuit elektronik (PCB). JTAG ini akan menghubungkan antara IC satu dengan yang lain. Pengendalian bus (jalur) JTAG ini bisa dilakukan melalui PC dengan menggunakan kabel JTAG. Nantinya kabel ini digunakan untuk membuat sebuah sinyal JTAG dari PC. Selanjutnya sinyal yang dihasilkan ini akan mengecek jalur/koneksi yang ada apakah sudah terhubung dengan baik atau belum. Sinyal-sinyal JTAG yang kita ketahui ada 4, yaitu :

  1. TDI (Test Data Input)
  2. 2. TDO (Test Data Output)
  3. 3. TMS (Test Mode Select)
  4. 4. TCK (Test Clock)

Sinyal-sinyal tersebut akan dikirimkan melalui kabel dari PC ke FPGA dan dinamakan kabel JTAG. Kabel JTAG ini pada umumnya dihubungkan ke PC melalui sambungan (port) berikut:

  1. Port parallel
  2. 2. Port USB
  3. 3. Port Ethernet

Secara umum, yang paling sederhana dan sering digunakan adalah port parallel. Port ini biasanya juga digunakan untuk printer. Port ini mampu mengirimkan 12 bit output yang berasal dari PC dan input sebanyak 5 bit ke dalam PC. Padahal, port untuk spesifikasi JTAG hanya membutuhkan 3 ouptut dan hanya 1 input saja sehingga tidak menjadi masalah. Di sisi lain, port USB dan Ethernet termasuk baik pula. Port-port tersebut mampu mengirimkan data yang berkapasitas besar serta lebih cepat dibanding port parallel. Kelemahannya, pengaturan port ini akan lebih kompleks dan rumit dan tidak efisien untuk pengiriman data yang berukuran kecil.

Sebuah port JTAG dapat terhubung ke beberapa alat sekaligus. JTAG yang terhubung ke beberapa alat /devices lain ini disebut “rantai JTAG”. JTAG tersebut akan menghasilkan beberapa sinyal yakni TDI, TDO, TMS, dan TCK. Sinyal TCK dan TMS akan terhubung ke devices yang ada secara langsung, namun untuk TDI dan TDO tidak. TDI dan TDO akan terhubung secara seri atau berantai. Sinyal TDO akan berperan sebagai input pada sebuah device dan akan menjadi sinyal TDI di devices yang lain.

jtag3

Gambaran JTAG

Sedangkan sinyal TCK berperan sebagai pembangkit pulsa atau clock dan TMS digunakan untuk mengirimkan perintah ke semua devices yang ada. Dan seperti yang telah disebuttkan di atas bahwa TDI dan TDO berperan untuk pengirim dan penerimaan data. Setiap device di dalam rantai JTAG memiliki ID sehingga komputer dapat mengontrol masing-masing JTAG tersebut sehingga prosesnya dapat dikendalikan dengan baik.

Sekilas Tentang JTAG

Perusahaan pembuat FPGA seperti Xilinx, Altera pada umumnya menyediakan beberapa cara untuk proses download program ke dalam FPGA. Proses download yang dimaksud di sini adalah sebuah proses memindah program yang telah berhasil diuji dan disimulasikan dari komputer ke dalam FPGA untuk kemudian di lihat hasilnya. Bisa dibilang proses ini adalah untuk melihat hasil secara langsung dari program yang telah disimulasikan. Metode download yang mudah dan sering dipakai adalah dengan menghubungkan komputer (PC) dengan FPGA menggunakan kabel. Untuk penghubung ke PC, kabel yang biasa digunakan terhubung dengan port USB atau port paralel pada PC. Kabel jenis ini biasanya diberi istilah kabel JTAG.

Lalu, apa sebenarnya JTAG? JTAG (Joint Test Action Group) adalah aturan standar dari IEEE (1149.1) yang berkembang pada tahun 1980. Aturan ini dibuat dan dikembangkan dengan tujuan menyelesaikan masalah-masalah pada perakitan sirkuit elektronik (PCB).

Pada umumnya sebuah PCB yang rumit dan kompleks terdiri atas beberapa IC. Misalnya IC gerbang logika, IC untuk mikrokontroler, dsb. Sedangkan tiap-tiap IC memiliki karakteristik kaki (pin) yang berbeda-beda. Lalu sekarang timbul masalah yakni bagaimana untuk mengatur koneksi atau hubungan antara satu IC dengan IC yang lain dalam sebuah PCB? Atau bagaimana mengatur koneksi antara sebuah PCB dengan PCB lain? Untuk mengatasi masalah tersebut, dibuatlah aturan JTAG ini.

jtag1

Koneksi PC-CPU-FPGA dengan menggunakan JTAG

JTAG ini berfungsi untuk mengatur koneksi pin-pin di semua IC yang ada. Misalkan, sebuah data hendak dikirimkan ke sebuah board PCB yang di dalamnya terdapat IC FPGA dan IC CPU. JTAG akan memastikan koneksi/jalur yang menghubungkan antara PC, CPU, dan FPGA terlah tersambung dengan baik agar data tersebut sampai pada tujuan yang diinginkan. Untuk menjalankan fungsinya, JTAG terbagi atas 4 sinyal logika. Sinyal ini masing-masing memiliki fungsi tersendiri dan khas serta terpisah satu sama lain. Sinyal-sinyal tersebut yakni:

1. TDI (Test Data Input)

2. TDO (Test Data Output)

3. TMS (Test Mode Select)

4. TCK (Test Clock)

jtag2

Koneksi JTAG

Dari gambar di atas, terlihat bahwa jalur sinyal TMS dan TCK terhubung secara paralel serta termasuk jenis sinyal input. Sedangkan sinyal TDI merupakan input bagi CPU kemudian outputnya menjadi TDO dan masuk sebagai input ke TDI IC FPGA. Jadi untuk setiap JTAG memiliki 4 pin (3 input dan 1 output). Hingga saat ini, proses pengujian IC (IC boundary test) dilakukan dengan menggunakan JTAG. Lalu, apakah JTAG hanya berfungsi untuk proses pengujian IC? Tentu tidak. Salah satu fungsi yang lain dari JTAG yakni untuk proses konfigurasi pada FPGA. Pengguna FPGA akan mampu mengirimkan data berupa program yang telah dibuatnya ke dalam FPGA dengan bantuan JTAG ini. Demikian sekilas gambaran tentang JTAG.




Sensor Gas

1. TGS2600 General Air Quality Sensor gas untuk mendeteksi besarnya kontaminasi dalam udara.
Spesifikasi:
- Target gas : hydrogen dan carbon monoxide.
- Resistance output.
- Typical detection range : 1 – 10 ppm (hydrogen).
- Circuit voltage : 5 V DC.
- Heater voltage : 5 V DC/AC.
- Sensor resistance : 10K - 90K ohm di udara

2. TGS2602 Air Quality / Odor Sensor gas untuk mengetahui kadar gas di luar ruang seperti amonia dan H2S yang berasal dari tempat pembuangan material dirumah atau dikantor. Selain itu sensor juga dapat digunakan untuk memonitor VOC.
Spesifikasi Teknis:
- Target Gas : Air Contaminant
- Output : Resistance
- Typical Detection Range : 1ppm - 10ppm
- Heater Voltage : 5 ± 0.2 (DC/AC)
- Circuit Voltage : 5 ± 0.2 VDC
- Power Consumption : £ 15mW
- Sensor resistance : 10KW - 100KW diudara

3. TGS2610 Propane, Butane, LPG Suatu sensor untuk mengetahui kadar gas LPG diudara. Biasanya sensor ini digunakan untuk mendeteksi kebocoran dari gas LPG.
Spesifikasi Teknis:
- Target Gas : Butane LP Gas
- Output : Resistance
- Typical Detection Range : 500ppm - 10.000ppm
- Heater Voltage : 5 0.2 (DC/AC)
- Circuit Voltage : 5 0.2 (DC/AC)
- Power Consumption : 15mW
- Sensor resistance : 1KW - 5KW (pada 1500ppm)

4. TGS2611 Methane, Natural Gas Sensor untuk mengetahui kadar natural gas (gas alami) diudara. Biasanya sensor ini digunakan untuk mendeteksi kebocoran dari natural gas .
Spesifikasi Teknis:
- Target Gas : Methane Natural Gas
- Output : Resistance
- Typical Detection Range : 500ppm - 10.000ppm
- Heater Voltage : 5 ± 0.2 (DC/AC)
- Circuit Voltage : 5 ± 0.2 (DC/AC)
- Power Consumption : £ 15mW
- Sensor resistance : 0.681KW - 6.81KW (pada 1500ppm)

5. TGS2620 Alcohol, organic vapor Sensor untuk mengetahui banyaknya Alcohol Organic solvents diudara. Biasanya sensor ini digunakan untuk mendeteksi uap larutan.
Spesifikasi Teknis:
- Target Gas : Alcohol Organic Solvents
- Output : Resistance
- Typical Detection Range : 50ppm - 5.000ppm
- Heater Voltage : 5 ± 0.2 (DC/AC)
- Circuit Voltage : 5 ± 0.2 (DC/AC)
- Power Consumption : £ 15mW
- Sensor resistance : 1KW - 5KW (pada 300ppm

6. TGS2442 CO Sensor untuk mengetahui banyaknya Carbon monoxide diudara. Biasanya sensor ini digunakan untuk mendeteksi toxic gas yang ada diudara.
Spesifikasi Teknis:
- Target Gas : Carbon monoxide
- Output : Resistance
- Typical Detection Range : 30ppm - 1.000ppm
- Heater Voltage : 5 ± 0.2 (DC/AC)
- Circuit Voltage : 5 ± 0.2 (DC/AC)
- Sensor resistance : 6.81KW - 68.1KW (pada 100ppm)

7. TGS2201 Air Qualit Sensor gas untuk mengetahui banyaknya gas yang dikeluarkan oleh gasoline dan diesel. Biasanya sensor ini digunakan untuk mengontrol ventilasi pada mobil.
Spesifikasi Teknis:
- Target Gas : Gasoline and diesel
- Output : Resistance
- Typical Detection Range : 10ppm - 1000ppm (Gasoline)
0.1ppm - 10ppm (Diesel)
- Heater Voltage : 5 ± 0.2 (DC/AC)
- Circuit Voltage : 15 VDC (Maks)
- Power Consumption : £ 15mW
- Sensor resistance : 10KW - 80KW for carbon monoxide
0.1MW - 2MW for Nitrogen dioxide Sensor untuk gas buang mesin bensin (gasoline exhaust).

8. TGS4161 Gas sensor for CO2 detection.
Spesifikasi:
- Target gas : CO2.
- Voltage output.
- Typical detection Range : 350 ppm – 8000 ppm.
- Heater voltage : 5 V DC.
- Sensitivity : 44 – 72 mV.
- Accuracy : 20% @ 1000ppm CO2.

9. TGS4160 Sensor untuk mendeteksi karbon dioksida (CO2) - wide range.
Spesifikasi:
- Target : carbon dioxide (CO2).
- Voltage output.
- Detection range : 350 – 30.000 ppm.
- Heater voltage : 5 V DC.
- Sensitivity : 44 -72 mV.
- Accuracy : 20% @ 1000 ppm CO2

10. TGS5042 electrochemical untuk mendeteksi karbon monoksida (CO).
Spesifikasi:
- Target : carbon monoxide (CO).
- Current output (1 – 3,75 nA/ppm).
- Detection range : 0 – 1000 ppm.
- Waktu respon : 60 detik.
- Accuracy : 15% @ 100 – 500 ppm CO

11. TGS826 Ammonia/Amine/Odor Sensor gas produksi Figaro untuk mendeteksi gas amonia. Dapat digunakan untuk aplikasi pendeteksi kebocoran rfigerator.
Spesifikasinya:
- Target gas: ammonia/amine/odor.
- Typical detection range: 30 - 300 ppm.
- Output resistansi: 20K - 100K ohm @ ammonia 50 ppm/air.
- Ceramic base, suhu kerja hingga 200 derajat C.

12. KE25 (Oxygen) Sensor gas produksi Figaro untuk mendeteksi kadar oxygen.
Spesifikasi:
- Measurement range 0 to 100% O2
- Accuracy Within +/- 1% of full scale at constant temperature and pressure
- Response time Less than 12 seconds to 90% of final value
- Operating temperature 5°C to 40°C
- 0-100% - 5- year life

13. TGS2180 Sensor gas produksi Figaro untuk mendeteksi uap air
Spesifikasi:
- Typical detection range 1g/m kubik - 150g/m kubik
- Target gas water vapor
- Heater voltage 5V
- Circuit voltage 5V
- Load resistance variable
- Sensor power consumption

14. TGS832-C00 Sensor gas produksi Figaro untuk mendeteksi Chlorofluorocarbons (CFC).
Spesifikasi:
- High sensitivity to R134a
- Sensor resistance R134 at 100 ppm/air
- Heater voltage 5V
- Circuit voltage maksimum 24V

15. TGS6812 Hydrogen, Methan, LP Gas Sensor gas untuk mendeteksi gas Hydrogen, Methane, dan LP.
Spesifikasi:
- Target gas Hydrogen, Methane, dan iso- butane
- Operating Voltage 3.0 VDC.
- Voltage output
- Typical detection range 0 ~ 100%LEL of each gas
- Response time

16. TGS822 Alcohol, organic vapor Sensor gas untuk mendeteksi besarnya kontaminasi uap gas dalam udara.
Spesifikasi:
- Target gas : Alkohol, Etahanol, Carbon monoxide
- Resistance output.
- Typical detection range : 300ppm/ air (Ethanol).
- Circuit voltage : 24 V DC (max)
- Heater voltage : 5 V DC/AC.
- Sensor resistance : 1K - 10K ohm di udara.

17. TGS2612 Methane, Propane, Butane Sensor gas produksi Figaro untuk mendeteksi Methane, Propane, Butane
Spesifikasi:
- Typical detection range 1-25% LEL of each gas
- Target gas: Methane, Propane, iso-Butane
- Heater voltage 5V - Circuit voltage 5V
- Load resistance variable
- Sensor power consumption =< 15mW

18. TGS825 Hydrogen Sulfide Sensor gas produksi Figaro untuk mendeteksi gas hydrogen sulfide.
Spesifikasi:
- Target gas: hydrogen sulfide.
- Typical detection range: 5 - 100 ppm.
- Output resistansi: 3K - 30K ohm @ hydrogen sulfide 50 ppm/air.
- Ceramic base, suhu kerja hingga 200 derajat C.

Minggu, 27 September 2009

Konfigurasi FPGA

Sebuah FPGA (Field Programmable Gate Array) dapat terbagi atas dua kondisi yaitu kondisi awal (configuration mode) dan kondisi pemakai (user mode). Ketika pertama kali FPGA dihidupkan, maka otomatis keadaan FPGA ini berada dalam kondisi awal. Hal ini disebabkan karena FPGA masih dalam keadaan awal, fresh dan belum terdapat suatu program apa pun di dalamnya. Untuk menggunakan FPGA tersebut maka perlu adanya proses download program oleh pemakainya (user). Proses mendownload program ke dalam FPGA bertujuan untuk mengirimkan berkas-berkas bilangan biner (0 dan 1) melalui beberapa pin khusus. Setelah proses download dilakukan dan FPGA kemudian telah siap digunakan, maka inilah yang sering disebut kondisi pemakai. Pada kondisi ini FPGA telah aktif dan program yang didownload ke dalamnya dapat digunakan. Inilah yang dinamakan konfigurasi atau pengaturan pada FPGA.

Bila pada kondisi pemakai, maka otomatis di dalam FPGA telah terdapat program. Program tersebut dibuat, diuji dan disimulasikan dahulu menggunakan PC (komputer). Setelah itu baru proses download program dilakukan. Pada umumnya terdapat 3 cara yang biasa digunakan untuk mendownload program ke dalam FPGA yaitu :

  1. Pemakai dapat mendownload langsung program ke dalam FPGA menggunakan kabel yang disambungkan ke PC. Program tersebut dibuat dan diolah menggunakan PC (komputer) dan ketika siap digunakan, baru didownload ke FPGA melalui kabel.
  2. Pemakai dapat menggunakan microkontroller pada board yang ada, dengan firmware yang cukup guna mengirimkan data ke dalam FPGA.
  3. Pemakai dapat menggunakan “boot-PROM” pada board yang ada, yang dihubungkan ke FPGA, dan mengatur FPGA tersebut supaya secara otomatis bekerja tanpa proses download dulu ke dalamnya (Perusahaan-perusahaan FPGA pada umumnya memiliki spesifikasi khusus untuk tambahan boot-PROMS).

download-ke-fpga
Proses download ke FPGA

Dari ketiga cara di atas, cara pertama adalah yang paling sering dan banyak digunakan. Selain itu, cara pertama cukup mudah dan efisien untuk dilakukan. Jadi, ketika pemakai telah mendownload program ke dalam FPGA maka tidak lagi diperlukan PC (komputer). FPGA akan bekerja sesua dengan program yang telah didownload ke dalamnya tanpa perlu lagi terhubung dengan PC (komputer).

Proses konfigurasi FPGA untuk buatan Xilinx maupun Altera hampir sama. Perbedaanya, hanya masalah pemberian nama pada pin-pin FPGA tersebut (nama pin dan jenis operasinya berbeda) . Namun, sebagian besar fungsi dan kegunaannya sama.




Twitter Delicious Facebook Digg Stumbleupon Favorites More