MODUL 5 PERANCANGAN DAN IMPLEMENTASI DISPLAY LCD MENGGUNAKAN MODUL VGA PADA FPGA Iskandar Setiadi (13511073) Asisten: Tommy Gunawan / 13208039 Tanggal Percobaan: 26/11/2012 EL2195-Praktikum Sistem Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB Abstrak Pada percobaan sebelumnya, kita telah menganalisis rangkaian berbasis logika sekuensial. Salah satu bentuk implementasi logika sekuensial adalah menggunakan modul Video Graphic Array dengan display Liquid Crystal Display sebagai perantaranya. Pada percobaan ini, kita akan mengimplementasikan display LCD menggunakan modul VGA pada FPGA dengan merancang sebuah controller sederhana yang mengeluarkan sinyal-sinyal digital. Kata kunci: modul VGA driver, FPGA, display LCD. 1.
PENDAHULUAN
Implementasi fungsi gerbang logika pada rangkaian dapat dilakukan dengan berbagai cara, salah satunya adalah rangkaian logika sekuensial, yang bergantung pada memori statenya, [4]. Desain dari rangkaian logika sekuensial dapat diimplementasikan pada berbagai macam perangkat keras, seperti board FPGA dan tampilan display LCD. Pada praktikum sebelumnya, kita telah mengimplementasikan sebuah rangkaian logika sekuensial melalui studi kasus lampu lalu lintas. Pada praktikum ini, kita akan merancang dan mengimplementasikan desain menggunakan modul VGA pada sebuah layar LCD. Selain itu, kita akan mempelajari penerapan blok diagram dalam perancangan menggunakan modul VGA, yaitu membuat sebuah bujur sangkar 50 x 50 pixel (percobaan 2) dan membuat bujur sangkar tersebut bergerak (percobaan 3).
2.
STUDI PUSTAKA
Salah satu bentuk implementasi rangkaian sekuensial adalah menggunakan modul VGA dengan tampilan display LCD. Modul VGA yang digunakan memiliki 2 jenis sinyal, yaitu sinyal warna (Merah, Hijau, dan Biru), serta sinyal sinkron (horizontal dan vertical). Dalam menghasilkan sebuah tampilan, VGA melakukan sinkronisasi pada layar, yaitu dengan scanning setiap baris dengan satuan pixel tertentu.
2.1
MODUL VGA DRIVER
Modul VGA (Video Graphics Array) driver yang digunakan kali ini adalah sebuah modul yang merepresentasikan masukkan logika FPGA kedalam tampilan warna pada layar monitor LCD. Modul ini menerima masukkan port yang ingin dinyalakan, dan mengkonversikan masukkan menjadi warna pada layar (RGB). Berikut adalah penjelasan mengenai sinyal-sinyal yang digunakan: -Sinyal sinkron, terdiri dari horizontal sync dan vertical sync. Sinyal-sinyal ini aktif pada range pixel yang valid. Jika sinyal ini tidak aktif, maka akan terjadi pergantian baris (untuk horizontal sync), serta pergantian layar / kembali ke baris pertama (untuk vertical sync). -Sinyal warna RGB, terdiri dari komponen warna merah, hijau, dan biru.
Gambar 2-1 Proses Scanning pada Layar LCD
Gambar 2-1 diatas merupakan proses scanning yang terjadi pada layar LCD. Scanning tersebut dimulai dari pojok kiri atas (0,0) kearah kanan / horizontal (0,639), dilanjutkan dengan pergantian baris ke (1,0) dst. Sinyal RGB yang sifatnya digital, dikonversikan oleh chip DAC menjadi sinyal RGB analog, yang kemudian direpresentasikan menjadi sebuah tampilan pada layar LCD.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
1
2.2
FIELD PROGRAMMABLE GATE ARRAY
FPGA adalah sebuah integrated circuit yang dapat dikonfigurasi dan diprogram berkali-kali. FPGA terdiri atas logika yang dapat diprogram, yang disebut dengan blok logika (logic blocks),[6]. Pada percobaan ini, FPGA digunakan sebagai penghubung antara modul VGA yang digunakan dengan display layar LCD.
3.
3.2
IEEE;
USE
IEEE.STD_LOGIC_1164.ALL;
USE
IEEE.STD_LOGIC_ARITH.ALL;
USE
IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY color_rom_vhd
IS
PORT( i_M_US : IN STD_LOGIC; --Sebagai tombol arah atas (UP)
METODOLOGI
3.1
LIBRARY
i_K_US : IN STD_LOGIC; --Sebagai tombol arah kanan (RIGHT)
ALAT PERCOBAAN
Board FPGA tipe UP2 atau DE1
Catu daya + kabel dan konektor tambahan serta kabel downloader
Monitor LCD
i_H_US : IN STD_LOGIC; --Sebagai tombol arah bawah (DOWN) i_M_BT : IN STD_LOGIC; --Sebagai tombol arah kiri (LEFT) i_K_BT : IN STD_LOGIC; --Untuk mengatur kecepatan bujursangkar
PROSEDUR PERCOBAAN
Percobaan ini dapat dibagi menjadi 3 bagian, yaitu menggambar bendera RI pada layar, menggambar bujur sangkar berukuran 50 x 50 pixel, serta membuat bujur sangkar berukuran 50 x 50 pixel tersebut bergerak sesuai masukkan pengguna.
i_H_BT : IN STD_LOGIC; --CLOCK AUTOMATIC dari sistem i_pixel_column STD_LOGIC_VECTOR( 9 DOWNTO 0 );
:
IN
i_pixel_row STD_LOGIC_VECTOR( 9 DOWNTO 0 );
:
IN
Pada percobaan pertama, kita akan membuat sebuah desain sederhana yang mencetak gambar bendera RI dilayar. Percobaan ini dilakukan dengan menggunakan modul VGA yang telah disediakan sebelumnya, dan melakukan modifikasi pada file color_rom_vhd.vhd.
o_red STD_LOGIC_VECTOR( 7 DOWNTO 0 );
:
OUT
o_green STD_LOGIC_VECTOR( 7 DOWNTO 0 );
:
OUT
o_blue STD_LOGIC_VECTOR( 7 DOWNTO 0 ));
:
OUT
Selanjutnya, bentuk bendera tersebut akan diperkecil menjadi bujur sangkar berukuran 50 x 50 pixel yang akan diletakkan pada suatu koordinat ditengah layar.
--Keluaran sebagai sinyal warna RGB
Pada bagian ketiga, bujur sangkar tersebut akan menerima 4 masukkan, yaitu tombol atas, kiri, kanan, dan bawah, yang diterima dari push_button masukkan pengguna. Selain itu, terdapat bagian bonus, yaitu menerima masukkan kelima untuk mengatur kecepatan dari pergerakan bujur sangkar tersebut. Terdapat beberapa modifikasi yang dilakukan pada modul VGA yang disediakan, yaitu file color_rom_vhd.vhd , display_vhd.vhd (untuk mengatur PORT MAP clock), dan clockdiv.vhd (untuk mengatur jeda waktu). Semua script ini berbasis pada masukkan dari vga.vhd, yang fungsinya telah dibahas pada tugas pendahuluan praktikum ini. Berikut ini adalah potongan kode dari file color_rom_vhd.vhd yang digunakan untuk percobaan bagian 3 (+bonus):
END color_rom_vhd;
ARCHITECTURE behavioral OF color_rom_vhd IS
CONSTANT R_TF_2 : INTEGER := 479; -THD, batas horizontal layar CONSTANT C_TF2_R : INTEGER := 639; -TVD, batas vertikal layar
--Tidak digunakan pada praktikum ini SIGNAL M_TF1, M_TF2 STD_LOGIC;
:
SIGNAL K_TF1, K_TF2 STD_LOGIC;
:
SIGNAL H_TF1, H_TF2 STD_LOGIC;
:
SIGNAL grid STD_LOGIC;
:
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
2
--Batas arah digerakkan
bujur
sangkar
yang
akan
SIGNAL COUNTERATAS
: INTEGER := 10;
SIGNAL COUNTERKIRI
: INTEGER := 10;
clock40hz'EVENT AND clock40hz = i_K_US = '0' AND i_M_BT = '1' AND = '1' AND i_H_US = '1' THEN -– kanan ditekan dan clock raising
COUNTERKIRI <= COUNTERKIRI + SPEED;
SIGNAL COUNTERKANAN : INTEGER := 60;
COUNTERKANAN SPEED;
SIGNAL COUNTERBAWAH : INTEGER := 60; --Mengatur kecepatan dari bujur sangkar SIGNAL SPEED
ELSIF '1' AND i_M_US Tombol state
COUNTERKANAN
+
IF COUNTERKIRI = 640 THEN
: INTEGER := 0;
COUNTERKANAN <= 0;
--Clock sebagai buffer CLOCKDIV SIGNAL clock40hz
<=
COUNTERKIRI <= -49;
: STD_LOGIC;
END IF;
--Komponen Clockdiv digunakan agar pergerakan bujur sangkar dapat terlihat oleh pengguna COMPONENT CLOCKDIV IS
ELSIF '1' AND i_K_US Tombol state
clock40hz'EVENT AND clock40hz = i_H_US = '0' AND i_M_US = '1' AND = '1' AND i_M_BT = '1' THEN -– bawah ditekan dan clock raising
COUNTERATAS <= COUNTERATAS + SPEED;
port( CLK: IN std_logic;
COUNTERBAWAH SPEED;
DIVOUT: buffer std_logic); end component;
<=
COUNTERBAWAH
+
IF COUNTERBAWAH = 479 THEN COUNTERATAS <= -49;
BEGIN
COUNTERBAWAH <= 1; END IF;
PROCESS(i_pixel_row,i_pixel_column, i_M_US , i_K_US , i_H_US , i_M_BT , i_K_BT , i_H_BT, M_TF1, M_TF2, K_TF1, K_TF2, H_TF1, H_TF2) BEGIN IF clock40hz'EVENT AND clock40hz = '1' THEN --Mengatur kecepatan bujursangkar sesuai dengan state SW[4] IF i_K_BT = '1' THEN SPEED <= SW[4] = '1' maka mode lambat
ELSIF '1' AND i_H_US Tombol state
clock40hz'EVENT AND clock40hz = i_M_BT = '0' AND i_K_US = '1' AND = '1' AND i_M_US = '1' THEN -– kiri ditekan dan clock raising
COUNTERKIRI <= COUNTERKIRI - SPEED; COUNTERKANAN SPEED;
<=
COUNTERKANAN
-
IF COUNTERKANAN = 1 THEN COUNTERKIRI <= 639;
1;
--saat
COUNTERKANAN <= 688; END IF;
ELSE SPEED <= SW[4] = '0' maka mode cepat
3;
--saat
END IF;
END IF; END IF; IF clock40hz'EVENT AND clock40hz = '1' AND i_M_US = '0' AND i_H_US = '1' AND i_K_US = '1' AND i_M_BT = '1' THEN -– Tombol atas ditekan dan clock raising state COUNTERATAS <= COUNTERATAS - SPEED; COUNTERBAWAH SPEED;
<=
COUNTERBAWAH
IF COUNTERATAS = -50 THEN
-
--Untuk mengatur posisi kotak 50 x 50 pixel (warna merah)
berukuran
IF ((i_pixel_row > COUNTERATAS) AND (i_pixel_row < COUNTERBAWAH) AND (i_pixel_column > COUNTERKIRI) AND (i_pixel_column < COUNTERKANAN)) THEN o_red <= X"FF"; o_green <= X"00"; o_blue <= X"00"; ELSE o_red <= X"FF"; o_green <= X"FF"; o_blue <= X"FF"; END IF;
COUNTERATAS <= 480; COUNTERBAWAH <= 529; END IF;
END PROCESS; --Melakukan PORT MAP terhadap clockdiv Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
3
4.
load_clockdiv : clockdiv PORT MAP (
HASIL DAN ANALISIS
Percobaan ini secara keseluruhan bertujuan untuk mengimplementasikan desain pada board FPGA. Percobaan ini dibagi menjadi 3 sub-segmen, yaitu membuat gambar bendera RI dilayar, bujur sangkar berwarna berukuran 50 pixel x 50 pixel, serta menggerakan bujur sangkar yang telah dibuat ke empat arah berbeda.
CLK=>i_H_BT, DIVOUT=>clock40hz );
END behavioral;
Percobaan di laboratorium berakhir pada pukul 10.50 dengan menyelesaikan ketiga sub-segmen percobaan serta bagian bonus.
4.1
IMPLEMENTASI DESAIN PADA BOARD FPGA 4.1.1
Percobaan 1
Pada percobaan ini, kita akan mengimplementasikan desain gambar bendera RI dilayar (atas merah, bawah putih). Gambar 3-1 Ilustrasi Blok Diagram Percobaan 3
Secara singkat, kodingan diatas menandakan bahwa desain menerima 5 buah masukkan (4 push_button dan 1 SW[4] sebagai tombol pengatur kecepatan), dan mengeluarkan display ke layar VGA (o_red, o_green, o_blue) serta i_pixel_row & i_pixel_column sebagai pengatur posisi warnawarna tersebut. Selain itu, digunakan variabel untuk menampung posisi sementara dari bujur sangkar, yaitu COUNTERATAS, COUNTERKIRI, COUNTERKANAN, dan COUNTERBAWAH. Kita juga menggunakan komponen clockdiv, yang bertujuan untuk mengatur pergerakan bujur sangkar dengan kecepatan tertentu (visible). Pada pemrosesannya, state SW[4] dicek, apakah berlogika ‘1’ ataupun ‘0’, yang digunakan untuk mengatur kecepatan dari bujur sangkar. Setelah itu, bujur sangkar akan bergerak setiap clock berada pada state raising, dan disesuaikan dengan masukkan arah dari pengguna (active low). Penjelasan lebih lanjut akan dibahas pada bagian analisis dan dapat diamati dari komentarkomentar yang terdapat di potongan script diatas.
Warna merah didapatkan dengan mengatur warna merah R = 111111, G = B = 000000, sedangkan warna putih R = G = B = 111111. Sebuah layar display LCD memiliki ukuran THD x TVD = 640 x 480 pixel, sehingga untuk membuat warna bendera, kita akan membagi layar menjadi dua bagian, yaitu 0..240 berwarna merah dan 241..479 berwarna putih. Secara sederhana, kode yang digunakan (modifikasi file color_rom_vhd.vhd) adalah: IF (i_pixel_row < 241) THEN o_red <= X"FF"; o_green <= X"00"; o_blue <= X"00"; ELSE o_red <= X"FF"; X"FF"; o_blue <= X"FF";
o_green
<=
END IF; Kode diatas memberikan perintah bahwa untuk baris yang pixel-nya kurang dari 241 akan berwarna merah , sedangkan sisanya berwarna putih. o_red <= X”FF” pada script diatas setara dengan R = ’111111’, hal ini dapat dilihat dari display_vhd.vhd bahwa red <= red_color (7 DOWNTO 2), sehingga VGA_R <= ’111111’. Hasil tampilan bendera RI dapat dilihat pada gambar 41 berikut ini:
Gambar 3-1 diatas menunjukkan ilustrasi diagram blok dari percobaan ini. Dapat dilihat bahwa clock divider akan mengatur counter dari masing-masing row serta column dari display VGA yang digunakan. Pengaturan ini didukung dengan modul VGA (driver) yang kita gunakan diatas, sehingga kita dapat melihat tampilan berbasis RGB pada layar monitor.
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
4
Hasil tampilan bujur sangkar percobaan 2 dapat dilihat pada gambar 4-2 berikut ini:
Gambar 4-1 Tampilan display LCD Bendera RI
Secara singkat, VGA melakukan proses scanning dari baris dan kolom teratas (0,0) ke (0,639), dilanjutkan ke baris selanjutnya sampai (240,639) berwarna merah, sedangkan sisanya ( (241,0) sampai (479,639) ) berwarna putih. 4.1.2
Percobaan 2
Pada percobaan ini, kita akan mengimplementasikan sebuah desain kotak bujur sangkar (solid) berukuran 50 pixel x 50 pixel pada layar VGA. Selain itu, bujur sangkar ini akan diletakkan dengan titik-titik sudut (10,10), (10,59), (59,10), dan (59,59). Untuk itu, perhatikan kode berikut ini: CONSTANT TOPLEFT
: INTEGER := 10;
CONSTANT BTMRIGHT : INTEGER := 59; Konstanta diatas adalah nilai-nilai pixel yang membatasi kotak bujur sangkar yang akan dibuat. Untuk membedakan bujur sangkar tersebut dengan layar, maka kita akan memberikan warna merah (seperti pada percobaan 1) pada bujur sangkar tersebut. Perhatikan modifikasi file color_rom_vhd.vhd berikut ini: IF ((i_pixel_column >= TOPLEFT) AND (i_pixel_column <= BTMRIGHT)) AND ((i_pixel_row >= TOPLEFT) AND (i_pixel_row <= BTMRIGHT)) THEN o_red <= X"FF"; o_green <= X"00"; o_blue <= X"00"; ELSE o_red <= X"FF"; X"FF"; o_blue <= X"FF";
o_green
<=
END IF;
Kode diatas memberikan batasan warna merah untuk range kolom antara 10 – 59 dan range baris antara 10 – 59 (seperti pada percobaan 1, hanya dengan batasan pixel yang berbeda).
Gambar 4-2 Bujur Sangkar pada display LCD
4.1.3
Percobaan 3 + Bonus
Pada percobaan ini, kita akan membuat gambar bujur sangkar yang telah dibuat pada percobaan 2 bergerak sesuai input push-button dari board FPGA. constant div: integer:=1000000; Clock divider (Clockdiv) yang digunakan pada percobaan ini diberikan constant div 1000000, hal ini bertujuan agar pengguna dapat mengamati pergerakan bujur sangkar pada layar (karena board FPGA memiliki frekuensi 50 MHz, atau 50 juta proses per detiknya). Jika kita tidak menggunakan clockdiv, maka kita tidak dapat mengamati pergerakan bujur sangkar yang langsung bergerak menjauh dengan sekejap dari layar. Untuk membuat bujur sangkar tersebut bergerak, kita mengubah pin planner masukkan menjadi push-button. Berikut ini adalah masukkan / input yang digunakan: PIN_R22 i_M_US sebagai tombol UP PIN_R21 i_K_US sebagai tombol RIGHT PIN_T22 i_H_US sebagai tombol DOWN PIN_T21 i_M_BT sebagai tombol LEFT Selain itu, kita akan menggunakan satu masukkan tambahan untuk pengatur kecepatan yang dapat diubah, yaitu i_K_BT (SW[4]) yang dihubungkan dengan PIN_L1. Pada file display_vhd.vhd, i_H_BT yang akan digunakan untuk variabel clock ini di PORT MAP dengan i_clk dari modul VGA yang digunakan. IF clock40hz'EVENT AND clock40hz = '1' THEN IF i_K_BT = '1' THEN
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
5
SPEED <= 1; --saat SW[4] = '1' maka mode lambat ELSE SPEED <= 3; --saat SW[4] = '0' maka mode cepat END IF; END IF; Perhatikan potongan kode diatas. Script tersebut mengatur saat SW[4] diberikan sinyal logika ’0’, maka kecepatan bujur sangkar akan 3 kali lebih cepat dibandingkan saat SW[4] diberikan sinyal logika ’1’. Untuk pergerakan dari keempat arah bujur sangkar, pada bagian ini kita akan menganalisis salah satu mode, yaitu saat tombol UP / atas diberikan sinyal ’0’ (Active Low). IF clock40hz'EVENT AND clock40hz = '1' AND i_M_US = '0' AND i_H_US = '1' AND i_K_US = '1' AND i_M_BT = '1' THEN --UP BUTTON COUNTERATAS <= COUNTERATAS - SPEED; COUNTERBAWAH <= COUNTERBAWAH - SPEED; IF COUNTERATAS = -50 THEN COUNTERATAS <= 480;
Gambar 4-3 Sketsa State Percobaan 5
Pada gambar diatas, S1 menunjukkan state saat bujur sangkar diam, dan S2, S3, S4, S5 berlogika ‘1’ (ingat bahwa push button memiliki sifat active low). S2 menunjukkan state saat logika ‘0’ diberikan untuk tombol ‘UP’, S3 menunjukkan state saat logika ‘0’ diberikan untuk tombol ‘RIGHT’, S4 menunjukkan state saat logika ‘0’ diberikan untuk tombol ‘DOWN’, dan S5 adalah state saat logika ‘0’ diberikan untuk tombol ‘LEFT’. Perhatikan bahwa setiap state diatas dikontrol oleh 4-bit masukkan, sebut saja X3X2X1X0.
COUNTERBAWAH <= 529;
S1 <= ‘0000’
END IF; Saat clock sedang raising (naik menjadi logika ’1’), maka kita akan memproses pergerakan bujur sangkar. Kode diatas merupakan saat i_M_US ditekan, sehingga bujur sangkar akan bergerak keatas dengan koordinat yang dikurangi dengan kecepatan (pada bagian pengatur kecepatan). Misalkan SW[4] diberikan logika ’1’ sehingga bermode lambat, maka bujur sangkar akan bergerak sekitar 50Mhz / 1000000 = 50 pixel kearah atas. Untuk kasus-kasus lainnya seperti tombol DOWN / LEFT / RIGHT, kesamaan diatas berlaku dan memiliki karakteristik yang sama.
S2 <= ‘1000’
Sebagai pengatur agar bujur sangkar tidak keluar layar, maka digunakan script ”IF COUNTERATAS = -50”. Kode ini digunakan agar jika titik terbawah bujur sangkar telah keluar layar, maka bujur sangkar akan keluar kembali dari bawah, yaitu COUNTERATAS menjadi bernilai 480 dan COUNTERBAWAH bernilai 529 (50 pixel).
5.
Secara singkat, percobaan menggunakan 4 push button ini dapat digambarkan pada FSM (Finite State Machine) gambar 4.3 berikut ini:
S3 <= ‘0100’ S4 <= ‘0010’ S5 <= ‘0001’ Dijamin hanya satu buah push button yang ditekan setiap saat t. Selain itu, untuk bagian bonus, kita cukup menambahkan satu kondisi kontrol tambahan (untuk SW[4]), yang mengaktifkan mode cepat saat logika ‘0’ dan mode lambat saat berlogika ‘1’.
KESIMPULAN
Salah satu perantara yang dapat digunakan untuk mengimplementasikan rangkaian sekuensial adalah display LCD, yang diimplementasikan menggunakan modul VGA pada FPGA. Video Graphics Array (VGA) adalah sebuah interface standar yang digunakan untuk menghasilkan suatu tampilan. Interface pada percobaan ini menggunakan 2 jenis sinyal, yaitu sinyal warna (RGB) serta sinyal untuk mensikronisasi tampilan. Pada prinsipnya, modul VGA yang dirancang dalam bahasa VHDL, diimplementasikan pada board FPGA sehingga sinyal RGB digital
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
6
ditranslasikan menjadi sinyal RGB analog sebelum ditransmisikan ke layar monitor. Implementasi desain yang diterapkan pada blok tampilan kali ini adalah sebuah object bujur sangkar / bendera yang resizable, artinya dapat diubah-ubah ukurannya serta movable, artinya dapat digerakkan sesuai keinginan pengguna. Dalam mengimplementasikan desain tersebut, digunakan beberapa macam input / masukkan seperti push-button untuk menggerakan kesatuan pixel bujursangkar ke empat arah berbeda. Selain itu, digunakan pula Clock divider agar pergerakan objek gambar dapat dilihat oleh pengguna.
DAFTAR PUSTAKA [1]
Brian Holdsworth and Clive Woods, Digital Logic Design Fourth Edition, N.wnes, 2002
[2]
R.H. Katz, Contemporary Logic Design Second Edition, Pearson Prentince-Hall, NJ, 2005
[3]
Stephen Brown and Zvonko Vranesic, Fundamentals of Digital Logic with VHDL Design Third Edition, McGraw-Hill, San Francisco, 2009
[4]
http://en.wikipedia.org/wiki/Sequential_logi c , 27 November 2012, pukul 20:40:15
[5]
http://labdasar.ee.itb.ac.id/lab/EL2195/pen dukung%20praktikum/de1_usermanual_v101 7.pdf, 28 November 2012, pukul 00:01:10
[6]
http://en.wikipedia.org/wiki/Fieldprogrammable_gate_array, 28 November 2012, pukul 2:58:12
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB
7