Anda di halaman 1dari 15

MODUL 5 PERANCANGAN DAN IMPLEMENTASI DISPLAY LCD

MENGGUNAKAN MODUL VGA PADA FPGA

Najmi Azzahra Feryputri (13221086)


Asisten: Ahmad Ghozali Alfarisi (13219065)
Tanggal Percobaan: 18/11/2022
EL2102-Praktikum Sistem Digital
Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Abstrak Interface ke VGA menggunakan 2 jenis sinyal,


yaitu : sinyal warna (Merah, Hijau, dan Biru) dan
Pada praktikum modul 5 ini Perancangan dan Implementasi
sinyal sinkron (horizontal dan vertical). Berikut
Display LCD Menggunakan Modul VGA pada FPGA,
adalah penjelasan beberapa sinyal yang
praktikan akan melakukan implementasi display LCD dan
digunakan :
beberapa program VHDL pada VGA. Keluaran pada
VGA berupa tampilan pada layar. Praktikan diminta a. Horizontal Sync (TTL level)
untuk menampilkan bendera RI secara penuh di layar dan Sinyal ini akan aktif pada range piksel kolom
kotak merah kecil di layar. Praktikan juga harus dapat 0 sampai dengan 639. Sehingga kalau sinyal
menggerakkan kotak kecil tersebut ke kiri, kanan, atas dan ini tidak aktif, yang terjadi adalah pergantian
bawah. Melalui ketiga percobaan tersebut praktikan baris.
diharapkan memahami interface dan cara kerja VGA secara
b. Vertical Sync (TTL level)
umum. Hasil dari percobaan cukup baik.
Sinyal ini akan aktif pada range piksel baris 0
Kata kunci: VGA, Implementasi, kerja. sampai dengan 479. Sehingga kalau sinyal ini
tidak aktif, yang terjadi adalah pergantian
1. PENDAHULUAN layar. Atau kembali ke baris pertama.
Percobaan pada modul ini secara umum bertujuan c. Sinyal RGB (Analog 3 pin: 0,7 – 1 V)
agar praktikan dapat merancang program Sinyal ini merepresentasikan intensitas untuk
menggunakan bahasa VHDL yang dapat masing2 komponen warna merah, hijau, dan
diimplementasikan ke layar LCD menggunakan biru untuk setiap pixel yang saat itu aktif.
VGA pada board FPGA. Adapun tujuan rinci dari Sehingga yang terjadi ketiga sinyal ini
modul ini: berubah‐ubah sesuai pixel yang sedang aktif
1) Mendapatkan pengetahuan dan pengalaman dalam proses scanning (dari kiri ke kanan
penggunakan interface pada board evaluasi untuk setiap baris, selanjutnya dari baris
FPGA. paling atas sampai baris paling bawah).

2) Memahami cara kerja VGA pada umumnya. Pada percobaan kali ini kita menggunakan resolusi
640x480 pixel dan menggunakan refresh rate lebih
2. STUDI PUSTAKA dari 60 Hz. Refresh rate ini digunakan karena pada
range kurang dari 30 ‐ 60 Hz manusia dapat
2.1 VIDEO GRAPHICS ARRAY (VGA) melihat adanya flicker. Selain itu refresh rate ini
juga umum digunakan pada monitor LCD. LCD
Video Graphics Array (VGA) masih menjadi modern memiliki fitur multirate, sehingga kita
interface yang popular untuk sebuah tampilan. tidak harus tepat membuat refresh ratenya 60 Hz.
VGA interface ini masih banyak ditemukan di Proses scanning berawal dari kiri atas ke kanan
beberapa device sekarang, misalnya layar LCD dan lalu ke kiri bawah dan kembali ke kiri atas ketika
proyektor. VGA interface ini terdapat juga di board sudah mencapai pixel terakhir.
altera yang kita gunakan saat ini. Pada percobaan
kali ini tampilan VGA digunakan agar tampilan
hasil desain yang kita rancang menjadi lebih
menarik, tidak terbatas hanya pada LED atau 7‐
Segment. Tujuan percobaan kali ini juga adalah
memberikan ilustrasi penggunaan interface I/O
yang ada pada FPGA, misalnya GPIO, komunikasi
serial menggunakan RS232, Audio CODEC, LCD
karakter 16x2, dll.[1] Gambar 2-1 Razor Scan pada Layar LCD[1]

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 1


2.2 SPESIFIKASI TIMING SINKRONISASI
VGA

Gambar 2-4 Skematik VGA Display

Gambar 2-2 Timing Sinyal untuk VGA 640×480 piksel[1]


3. METODOLOGI
Komponen dan alat yang digunakan selama
praktikum ini adalah :

1. Komputer (PC) yang telah (1 buah)


terinstal program Quartus II
dan Modelsim

2. FPGA development board (1 buah)


tipe ALTERA DE1

3. Board FPGA tipe DE1 (1 buah)

4. Catu daya + kabel dan (1 buah)


Gambar 2-3 Nilai-nilai parameter pada Gambar 2-2[1]
konektor tambahan
Gambar 2-2 dan dan gambar 2-3 menunjukkan
spesifikasi timing dari sinkronisasi VGA. Sebuah 5. Kabel USB-Blaster (1 buah)
sinyal aktif low menunjukkan akhir dari sebuah
sinkronisasi. Misalkan sinyal aktif low untuk horiz 6. Monitor LCD (1 buah)
sync menandakan akhir dari scanning satu baris
dan awal untuk baris berikutnya. Data RGB harus Adapun langkah-langkah yang dilakukan untuk
didrive 0 untuk beberapa waktu tertentu thfp dan praktikum modul ini adalah:
tvfp.
3.1 PERCOBAAN 5A: IMPLEMENTASI
Gambar 3 menunjukkan blok diagram dari FPGA
DESAIN PADA BOARD FPGA (I)
hingga ke LCD monitor. Chip DAC mengubah
sinyal digital ke analog. Dalam kasus ini, data RGB Pada percobaan ini, praktikan diminta membuat
digital diubah ke data RGB analog, begitu juga controller VGA sederhana yang mengeluarkan
untuk sinyal sinkronisasinya. Sedangkan gambar 4 sinyal‐sinyal digital untuk mengendalikan VGA.
menunjukkan skematik dari display VGA yang ada Sinyal digital ini sebagian akan diubah menjadi
pada board DE1. Untuk board lainnya dapat sinyal analog (untuk yang warna‐warna RGB).
dibaca di datasheet masing‐masing board. Board Masing‐masing warna akan diwakili 6 bit.
DE1 menyediakan 16‐pin konektor untuk output
VGA dan Analog Devices ADV7123 10‐bit high
speed video DAC. DAC ini mendapatkan sinyal
sinkronisasi dari FPGA.

Gambar 3-1 (a) Ilustrasi Tampilan Prosedur Percobaan 5A


Gambar 2-3 Diagram Blok VGA Display[1]

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 2


Prosedur Percobaan: Prosedur Percobaan:
Buatlah folder sebagai direktori kerja baru untuk percobaan
Buatlah folder sebagai direktori kerja baru untuk ini
praktikum kali ini

Buatlah project baru dengan modul‐modul yang Buatlah project baru dengan modul‐modul yang disediakan
disediakan untuk praktikum pada file display_DE1 untuk praktikum pada file display_DE1 yang sudah
yang sudah didownload dari labdasar. didownload dari labdasar dan terdapat pada lampiran 2.

Edit file color_room_vhd pada file tersebut sehingga


output menampilkan bendera RI dilayar seperti Edit file color_room_vhd pada file tersebut sehingga
gambar 3-1. Untuk mendapatkan warna merah R = outputmenampilkan kotak/bujur sangkar (solid) berukuran
111111, G = B = 000000, sedangkan putih R = G = B 50 pixel x 50 pixel pada layar VGA seperti gambar 3-2 (a).
=111111.

Caranya adalah dengan member warna tertentu pada


Cara yang dapat dilakukan adalah dengan cara pixel‐pixel tertentu.
mengeluarkan warna merah untuk pixel‐pixel pada
baris atas (nomor baris < 241), dan warna putih
untuk baris bawah.

Jika sudah selesai, lakukan kompilasi serta anlysis&synthesis


untuk emmastikan tidak ada error.

Jika sudah selesai, lakukan kompilasi serta


anlysis&synthesis untuk emmastikan tidak ada
error. Atur pin I/O dengan mengimport pin assignment dari file
top_level_qsf yang disediakan oleh lebdasar.

Atur pin I/O dengan mengimport pin assignment Implementasikan desain FSM tersebut dengan keluaran pada
dari file top_level_qsf yang disediakan oleh layar dengan langkah-langkah seperti pada percobaan 4B.
lebdasar.

Gambar 3-2 (b) Diagram alur untuk percobaan 5B

3.3 PERCOBAAN 5C : IMPLEMENTASI


Implementasikan desain FSM tersebut dengan DISPLAY LCD MENGGUNAKAN
keluaran pada layar dengan langkah-langkah seperti
pada percobaan 4B. MODUL VGA PADA FPGA
Pada percobaan ini, praktikan diminta untuk
Gambar 3-1 (b) Diagram alur percobaan 5A[1] membuat agar gambar kotak yang telah dibuat
dapat bergerak berdasar kan input dari push‐button
yang ada di board. Kotak ini harus dapat
3.2 PERCOBAAN 5B: IMPLEMENTASI digerakan ke empat arah: kiri, kanan, atas, bawah
DESAIN PADA BOARD FPGA (II) dengan empat button yang berbeda‐beda. Caranya:
1. Ujung kiri atas dari gambar tersebut harus
dibuat agar dapat diubah‐ubah (menjadi input)
2. Membuat dua buah FSM/counter: satu FSM
untuk menghasilkan posisi batasatas (baris),
satu FSM untuk menghasilkan posisi batas kiri.
Tentu saja counter ini harus dibatasi
maksimum dan minimumnya sesuai jumlah
baris dan kolom yang ada di layar. Untuk setiap
FSM harus dapat menghitung maju
Gambar 3-2 (a) Ilustrasi Tampilan Prosedur Percobaan (upcounting:… → 100 → 101 → 102 → …) dan
5B[1]
mundur (down counting: … →87→86→85→ …).
FSM ini harus diclock, namun tidak boleh
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 3
terlalu cepat agargerakan kotak tadi juga tidak 4. HASIL DAN ANALISIS
terlalu cepat. Misalnya 20 Hz – 50 Hz.
4.1 PERCOBAAN 5A: IMPLEMENTASI
3. Membuat input untuk perintah up/down
DESAIN PADA BOARD FPGA (I)
counting pada kedua FSM menggunakan
push‐button.

Gambar 4-1 (a) Tampilan pada layar beserta batas-batas


dan keteranga warna percobaan 5A

Gambar 3-3 (a) Ilustrasi Blok Diagram Prosedur Percobaan


5C[1]
Gambar 3-3 (a) merupakan diagram blok kasar
yang mungkin untuk mengimplementasikan
prosedur percobaan 3. Clock Divider di sini
berguna agar masukan oleh user tidak terlalu cepat
dan efeknya hasil pergerakan objek gambar dapat
ditangkapa oleh mata. Dengan informasi dari
posisi objek dan posisi alamat piksel dari VGA
driver cukup untuk mengimplementasikan
prosedur percobaan 5C ini. Gambar 4-1 (b) Tampilan pada layar LCD percobaan 5A
Pada percobaan 5A ini keluaran yang diharapkan
Prosedur percobaan: adalah seluruh layar monitor menampikan
Buatlah folder sebagai direktori kerja baru untuk praktikum kali bendera merah putih. Hal ini sesuai dengan
ini potongan script pada gambar 4-1 (b) berikut.

Buatlah project baru.

Didalam project baru tersebut buatlah file-file VHDL yang


mengimplementasikan spesifikasi 1-3 yang sudah dijelaskan.
Modul dari modul maupun dari file display_DE1 dapat
dimanfaatkan atau dimodifikasi.

Gambar 4-1 (c) tampilan pada layar beserta batas-batas


Jika sudah selesai, lakukan kompilasi serta anlysis&synthesis percobaan 5B
untuk emmastikan tidak ada error.
Potongan script pada gambar 4-2 (c) menjelaskan
bahwa apabila piksel baris kurang dari 241, maka
output warna merah akan bernilai X’FF’ dan
output warna hijau dan biru akan bernilai X”00”.
Atur pin I/O dengan mengimport pin assignment dari file X”FF” merupakan notasi untuk angka 6 bit. X
top_level_qsf yang disediakan oleh lebdasar.
pada X”AB” melambangkan angka 6 bit. Semenjak
“AB”, dalam hal ini “FF” dan “00” melambangkan
bitnya. Dalam angka 6 bit, “FF” adalah angka
terpenuh yang jika dikonversi ke binari nilainya
Implementasikan desain FSM tersebut dengan keluaran pada adalah “111111” dan “00” jika dikonversi ke binari
layar dengan langkah-langkah seperti pada percobaan 4B. adalah “000000”. Hal ini berarti apabila saat
proses scanning/pembacaan piksel baris bernilai
kurang dari 241, maka output warna merah akan
Gambar 3-3 (b) Diagram alur percobaan 5C bernilai “111111” atau aktif semenjak piksel warna
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 4
lainnya bernilai “000000” sehingga tidak aktif. Jika
piksel baris sudah tidak lebih kecil dari 241, maka
semua keluaran warna piksel akan bernilai “111111”
atau aktif semua, membentuk warna putih.
Dapat dilihat dari hasil percobaan pada gambar 4-1
(a) dan 4-1(b), dengan resolusi 640×480 piksel
seperti pada gambar 2-1 (a) batas-batas yang
ditunjukkan pada gambar 4-1 (a) sudah
merupakan batas-batas pixel yang berarti hasil
percobaan sudah mengisi seluruh layar monitor.
Selain itu, pada pixel ke 241 warna merah berubah Gambar 4-2 (b) Tampilan pada layar LCD percobaan 5B
jadi warna putih. Hal ini sesuai dengan perbatasan Pada percobaan 5B ini hampir sama dengan
piksel warna merah dan putih pada potongan percobaan 5A hanya berbeda dari keluaran.
script di gambar 4-1 (b) yang sudah dijelaskan Keluaran yang diharapkan adalah tampilan layar
sebelumnya di paragraph dua. sesuai dengan batas-batas piksel pada gambar 3-2
Dengan hasil demikian maka dapat diketahui (a). Tampilan ini sesuai dengan potongan script
bahwa VGA melakukan proses pembacan dari dari pada gambar 4-2 (c) berikut:
piksel yang terletak pada ujung kiri atas yaitu
piksel (0,0), ke kanan hingga ujung kanan atas
yaitu piksel (0,639). Angka 0 disini maksudnya
adalah piksel vertical (dapat direpresentasikan
sebagai baris) yang pada baris 1 masih merupakan
piksel ke 0. Setelah mencapai ujung kanan atas
atau piksel horizontal (dapat direpresentasikan
sebagai kolom) ke-639, pembacaan berganti ke
ujung kiri baris selanjutnya yaitu piksel (1,639),
terus ke kanan dan berganti baris lagi jika piksel
horizontal <= 639. Pixel (240, 639) merupakan
piksel warna merah terakhir. Saat berganti baris ke
piksel (241,0), keluaran piksel berganti warna
menjadi warna putih. Hal ini sesuai dengan
potongan kode pada gambar 4-1 (b) yang sudah
dijelaskan pada paragraf dua. Selanjutnya
pembacaan piksel dilanjutkan hingga mencapai
Gambar 4-2 (c) Potongan script color_rom_vhd percobaan
piksel terakhir dengan keluaran warna putih. 5A
Berdasarkan penjelasan diatas dapat disimpulkan Potongan script pada gambar 4-2 (c) menjelaskan
bahwa script VHDL yang digunakan pada bahwa apabila saat proses scanning baik piksel
percobaan ini sudah benar sehingga pembacaan kolom maupun piksel baris berada di antara piksel
VGA menghasilkan keluaran yang diharapkan. 10 sampai 59 maka keluaran akan menghasilkan
warna merah bernilai X”FF” atau “111111” dengan
4.2 PERCOBAAN 4B: IMPLEMENTASI keluaran warna hijau dan biru bernilai X”00” atau
DESAIN PADA BOARD FPGA (II) “000000” yang berarti pada rentang tersebut
output akan menampilkan piksel warna merah.
Saat proses pembacaan tidak berada pada rentang
tersebut, keluaran baik warna merah, hijau, dan
biru, adalah R=G=B=X”FF” atau R=G=B=“111111”
yang berarti untuk piksel yang tidak terletak pada
rentang tersebut akan menampilkan warna putih.
Dapat dilihat dari hasil percobaan pada gambar 4-1
(a) dan gambar 4-1 (b), seperti pada gambar 3-2 (a)
batas-batas yang ditunjukkan pada gambar 4-2 (a)
sudah merupakan batas-batas pixel yang sesuai
dengan keluaran yang diharapkan. Pada pixel
Gambar 4-2 (a) Tampilan pada layar beserta batas-batas
baris 10 kolom 10, piksel baris 10 kolom 59, piksel
dan keterangan warna percobaan 5B baris 59 kolom 10, dan pixel baris 59 kolom 59,
warna putih berubah jadi warna merah. Hal ini
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 5
sesuai dengan perbatasan piksel warna putih dan 4.3 PERCOBAAN 5C: MENGGABUNGKAN
merah yang sudah dijelaskan sebelumnya pada DESAIN FSM DENGAN VGA DRIVER.
potongan script di gambar 4-2 (b).
Dengan hasil demikian maka dapat diketahui
bahwa VGA melakukan proses pembacan dari dari
piksel yang terletak pada ujung kiri atas yaitu
piksel (0,0), ke kanan hingga ujung kanan atas
yaitu piksel (0,639). Angka 0 disini maksudnya
adalah piksel vertikal (dapat direpresentasikan
sebagai baris) pada baris 1 masih merupakan pixel
ke 0. Setelah mencapai ujung kanan atas atau pixel
horizontal (dapat direpresentasikan sebagai kolom) Gambar 4-3 (a) Switch FPGA yang digunakan beserta
fungsinya
ke-639, pembacaan berganti ke ujung kiri baris
selanjutnya yaitu piksel (1,639), terus ke kanan dan
berganti baris lagi jika piksel horizontal sudah
mencapai piksel ke-639. Pada pembacaan VGA
baris ke 10, pixel (10,9) merupakan piksel warna
putih terakhir. Setelahnya piksel (10,10) hingga
(10,58) merupakan piksel warna merah. Pada
pembacaan piksel baris 10 kolom 60, keluaran
piksel Kembali jadi warna putih. Hal ini sesuai
dengan potongan kode pada gambar 4-2 (b) yang
sudah dijelaskan pada paragraf 2. Untuk
pembacaan piksel selanjutnya setelah baris 10
hingga ke baris 59, pada piksel kolom 10 pasti
terjadi pergantian warna keluaran ke merah dari
warna putih. Hal ini terus berlanjut hingga
pembacaan piksel pada baris 10-59 tersebut
mencapai piksel horizontal ke 59. Selanjutnya pada
piksel horizontal ke-60 hingga ke -639, keluaran
Kembali menjadi warna putih. <Hal ini juga sesuai
dengan potongan kode pada gambar 4-2 (b) yang
sudah dijelaskan pada paragraf 2>. Untuk
pembacaan piksel setelah baris 59, hingga ke piksel
terakhir yaitu piksel yang terletak di ujung kanan
bawah layar, keluaran akan terus berwarna putih
karena seharusnya tidak ada perubahan warna
piksel setelah baris 59, sesuai dengan potongan Gambar 4-3 (b) Tampilan layar pada percobaan 5C
kode pada gambar 4-2 (b).
Pada percobaan ini keluaran yang diharapkan
Berdasarkan penjelasan diatas dapat disimpulkan adalah kotak dengan tampilan dan ukuran sama
bahwa script VHDL yang digunakan pada seperti pada percobaan 5B yang dapat digerakkan
percobaan ini sudah benar sehingga pembacaan ke kanan, kiri, atas bawah serta dapat diubah
VGA menghasilkan keluaran yang diharapkan. kecepatan bergesernya kotak tersebut dengan
Selain itu baik dari percobaan 5B maupun 5A juga switch FPGA.
dapat disimpulkan cara kerja dari VGA, yaitu
melakukan pembacaan (scanning) dari piksel yang
terletak pada ujung kiri atas layar, ke kanan hingga
menuju piksel pada ujung kanan atas layar,
setelahnya berganti ujung kiri baris selanjutnya,
terus hingga piksel terakhir yang terdapat pada
ujung kanan bawah layar. Gambar 4-3 (c) Potongan script top_level_vhd percobaan
5C

Potongan script pada gambar 4-3 (c) menunjukkan


bahwa switch SW[0] akan menggeser kotak ke
kanan, switch SW[1] akan menggeser kotak ke kiri,
switch SW[2] akan menggeser kotak kebawah,

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 6


switch SW[3] akan menggeser kotak ke atas, dan bernilai 1. Yang membedakan hanyallah untuk
switch SW [9] akan menambah kecepatan. i_keatas dan i_kebawah konstanta yang terlibat
adalah vchange sehingga pergeseran piksel output
terjadi secara vertical. i_v pada kode
merepresentasikan switch 9. Apabila switch 9 aktif
maka penambahan atau pengurangan posisi piksel
output akan semakin besar sehingga piksel output
akan bergeser lebih jauh. Hal tersebut
menunjukkan bahwa kotak merah bergerak lebih
cepat.

Gambar 4-3 (d) Potongan script color_rom_vhd percobaan


5C (I)
Potongan script pada gambar 4-3 (d) menunjukkan
proses pergeseran kotak saat waktu berubah jadi 1,
yaitu saat switch pada FPGA aktif. Adapun input
i_kekanan, i_kekiri, i_kebawah, serta i_keatas
merupakan input yang berturut-turut berasal dari
switch 0,1,2 dan 3 pada FPGA, sedangkan
konstanta hchange dan vchange menunjukkan
perubahan letak piksel output atau seberapa jauh
kotak bergeser dari posisi awalnya, secara
horizontal untuk hchange dan secara vertical
untuk vchange. Apabila i_kekanan bernilai 1 atau
switch SW[0] aktif, maka letak piksel output atau
kotak merah akan ditambah sebanyak v secara
horizontal, yang berarti kotak merah digeser ke
kanan. Apabila i_kekiri bernilai 1 atau switch
SW[1] aktif, maka letak piksel output atau kotak
merah akan dikurangi sebanyak v secara Gambar 4-3 (e) Potongan script color_rom_vhd dan
horizontal, yang berarti kotak merah digeser ke kiri. CLOCKDIV percobaan 5C
Begitu pula saat i_keatas ataupun i_kebawah
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 7
Potongan script pada gambar 4-3 (e) merupakan vertical untuk pergeseran ke atas dan kebawah.
script counter dan clockdiv yang mengatur Agar pergeseran tidak terlalu cepat, kontanta
kecepatan awal pergeseran kotak merah. Karenya pembagi pada CLOCKDIV harus memiliki nilai
sinyal clock yang digunakan sebesar 25 Mhz, maka yang memiliki besar sama dengan sinyal clock
nilai agar pergerakan kotak tidak terlalu cepat nilai yang digunakan
konstanta div juga harus memiliki besar kurang
lebih sama dengan 25 Mhz. DAFTAR PUSTAKA
[1] Mervin T Hutabarat dan Arif Sasongko.,
Petunjuk Praktikum Praktikum Sistem Digital,
Laboratorium Dasar Teknik Elektro, Bandung,
2022.
[2] Stephen Brown dan Zvonko Vranesic,
Fundamentals Of Digital Logic with Verilog Design,
McGrawHill, Departement of Electrical and
Computer Engineering, University of Toronto,
2002.
[3] https://www.geeksforgeeks.org diakses pada
Gambar 4-3 (f) Potongan script color_rom_vhd dan
percobaan 5C (II)
21 November 2022 jam 09.10.

Potongan script pada gambar 4-3 (f) menunjukkan


program untuk tampilan piksel pada layar.
Hasil percobaan di gambar 4-3 (a) menunjukkan
switch FPGA yang digunakan beserta fungsinya
yang sudah sesuai dengan potongan script pada
gambar 4-3 (c). Dapat dilihat pada hasil percobaan
di gambar 4-3 (b), switch beserta gerakan dari
kotak sudah sesuai dengan fungsi switch
seharusnya yang terdapat pada gambar 4-3 (a) dan
juga potongan script VGA pada gambar 4-3 (c)
sehingga dapat disimpulkan bahwa script VHDL
dan clockdiv yang digunakan pada percobaan ini
sudah benar sehingga pembacaan VGA
memberikan output yang sesuai.

5. KESIMPULAN
1. Video Graphics Array (VGA) memiliki interface
untuk menampilkan output dalam bentuk
video di layar. VGA terdapat pada board FPGA
altera. VGA dapat diimplementasikan dengan
program VHDL serta melalui FPGA.
2. Melalui VGA, output akan ditampilkan sebagai
warna pada piksel di layar. Untuk
menampilkan output, VGA bekerja dengan
melakukan pembacaan (scanning) dari piksel
yang terletak pada ujung kiri atas layar, ke
kanan hingga menuju piksel pada ujung kanan
atas layar, setelahnya berganti ke ujung kiri
baris selanjutnya, terus hingga piksel terakhir
yang terdapat pada ujung kanan bawah layar.
Output pada layar dapat digeser dengan
melakukan operasi pengurangan dan
penambahan piksel secara horizontal untuk
pergeseran ke kiri-kanan ataupun secara

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 8


LAMPIRAN DOWNTO 0 );
o_green : OUT STD_LOGIC_VECTOR( 7
DOWNTO 0 );
color_rom_vhd. (percobaan 5A) o_blue : OUT STD_LOGIC_VECTOR( 7
LIBRARY IEEE; DOWNTO 0 )
USE IEEE.STD_LOGIC_1164.ALL; );
USE IEEE.STD_LOGIC_ARITH.ALL; END color_rom_vhd;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ARCHITECTURE behavioral OF color_rom_vhd
ENTITY color_rom_vhd IS IS
PORT( CONSTANT TOPLEFT : INTEGER := 10;
i_clk : IN STD_LOGIC; CONSTANT BTMRIGHT : INTEGER := 59;
i_M_US : IN STD_LOGIC; BEGIN
i_K_US : IN STD_LOGIC; PROCESS
i_H_US : IN STD_LOGIC; (i_pixel_row,i_pixel_column)
i_M_BT : IN STD_LOGIC; BEGIN
i_K_BT : IN STD_LOGIC; IF ((i_pixel_column >=
i_H_BT : IN STD_LOGIC; TOPLEFT) AND (i_pixel_column <= BTMRIGHT))
i_pixel_column : IN AND ((i_pixel_row >= TOPLEFT) AND
STD_LOGIC_VECTOR( 9 DOWNTO 0 ); (i_pixel_row <= BTMRIGHT)) THEN
i_pixel_row : IN o_red <= X"FF";
STD_LOGIC_VECTOR( 9 DOWNTO 0 ); o_green <= X"00";
o_red : OUT STD_LOGIC_VECTOR( 7 o_blue <= X"00";
DOWNTO 0 ); ELSE
o_green : OUT STD_LOGIC_VECTOR( 7 o_red <= X"FF";
DOWNTO 0 ); o_green <= X"FF";
o_blue : OUT STD_LOGIC_VECTOR( 7 o_blue <= X"FF";
DOWNTO 0 ) END IF;
); END PROCESS;
END VGA1; END behavioral;

ARCHITECTURE behavioral OF color_rom_vhd


IS color_rom_vhd. (percobaan 5C)
BEGIN
LIBRARY IEEE;
PROCESS(i_pixel_row)
USE IEEE.STD_LOGIC_1164.ALL;
BEGIN
USE IEEE.STD_LOGIC_ARITH.ALL;
IF (i_pixel_row < 241)
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
THEN
o_red <= X"FF";
ENTITY color_rom_vhd IS
o_green <= X"00";
PORT(
o_blue <=X"00";
i_clk : IN STD_LOGIC;
ELSE
i_M_US : IN STD_LOGIC;
o_red <= X"FF";
i_K_US : IN STD_LOGIC;
o_green <= X"FF";
i_H_US : IN STD_LOGIC;
o_blue <= X"FF";
i_M_BT : IN STD_LOGIC;
END IF;
i_K_BT : IN STD_LOGIC;
END PROCESS;
i_H_BT : IN STD_LOGIC;
END behavioral;
i_pixel_column : IN
STD_LOGIC_VECTOR( 9 DOWNTO 0 );
i_pixel_row : IN
color_rom_vhd. (percobaan 5B) STD_LOGIC_VECTOR( 9 DOWNTO 0 );
LIBRARY IEEE; i_time : IN
USE IEEE.STD_LOGIC_1164.ALL; STD_LOGIC; -- clock
USE IEEE.STD_LOGIC_ARITH.ALL; i_kekanan : IN
USE IEEE.STD_LOGIC_UNSIGNED.ALL; STD_LOGIC;
i_kekiri : IN
ENTITY color_rom_vhd IS STD_LOGIC;
PORT( i_keatas : IN
i_clk : IN STD_LOGIC; STD_LOGIC;
i_M_US : IN STD_LOGIC; i_kebawah : IN
i_K_US : IN STD_LOGIC; STD_LOGIC;
i_H_US : IN STD_LOGIC; i_v : IN STD_LOGIC;
i_M_BT : IN STD_LOGIC; o_red : OUT
i_K_BT : IN STD_LOGIC; STD_LOGIC_VECTOR( 7 DOWNTO 0 );
i_H_BT : IN STD_LOGIC; o_green : OUT
i_pixel_column : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 );
STD_LOGIC_VECTOR( 9 DOWNTO 0 ); o_blue : OUT
i_pixel_row : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 ));
STD_LOGIC_VECTOR( 9 DOWNTO 0 ); END color_rom_vhd;
o_red : OUT STD_LOGIC_VECTOR( 7
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 9
ARCHITECTURE behavioral OF color_rom_vhd
IS PROCESS(i_pixel_row, i_pixel_column, kotak,
vchange, hchange)
BEGIN
CONSTANT up : INTEGER := 10;
CONSTANT down : INTEGER := 59; IF ((i_pixel_row >= (up + vchange)) AND
CONSTANT left : INTEGER := 10; (i_pixel_row <= (down + vchange)) ) AND
CONSTANT right : INTEGER := 59; ((i_pixel_column >= (left + hchange)) AND
CONSTANT low : INTEGER := 1; (i_pixel_column <= (right + hchange)))THEN
CONSTANT fast: INTEGER := 2; kotak <= '1';
SIGNAL hchange : INTEGER := 0; ELSE kotak <= '0';
SIGNAL vchange : INTEGER := 0; END IF;
SIGNAL counter : INTEGER := 0;
IF (kotak = '1')
SIGNAL kondisi : STD_LOGIC; THEN o_red <= X"FF"; o_green <= X"00";
SIGNAL kotak : STD_LOGIC; o_blue <= X"00";
SIGNAL waktu : STD_LOGIC; ELSE o_red <= X"FF"; o_green <= X"FF";
o_blue <= X"FF";
COMPONENT CLOCKDIV is END IF;
port( END PROCESS;
CLK: IN std_logic;
DIVOUT: buffer STD_LOGIC);
END COMPONENT; CLOCKDIV.vhd (percobaan 5C)
LIBRARY IEEE;
waktuygasli : CLOCKDIV USE IEEE.STD_LOGIC_1164.ALL;
PORT MAP (
CLK => i_time, entity CLOCKDIV is port(
DIVOUT => waktu); CLK: IN std_logic;
PROCESS (waktu, counter, kondisi) DIVOUT: buffer STD_LOGIC);
BEGIN end CLOCKDIV;
IF waktu = '1' THEN
architecture behavioural of CLOCKDIV is
IF counter > 250000 THEN
begin
counter <= 0; PROCESS(CLK)
ELSE variable count: integer:=0;
counter <= counter + 1; constant div: integer:=250000;
END IF;
END IF;
begin
IF counter = 250000 THEN if CLK'event and CLK='1' then
if(count<div) then
kondisi <= '1';
count:=count+1;
ELSE
kondisi <= '0'; if(DIVOUT='0') then
END IF; DIVOUT<='0';

PROCESS(waktu, i_kekanan, i_kekiri, i_keatas, elsif(DIVOUT='1') then


i_kebawah, hchange, vchange, i_v) DIVOUT<='1';
variable v : INTEGER := 0;
BEGIN end if;
IF i_v = '0' THEN else
v := low;
ELSE if(DIVOUT='0') then
v := fast; DIVOUT<='1';
END IF;
elsif(DIVOUT='1') then
IF waktu'EVENT and waktu = '1' THEN DIVOUT<='0';
IF i_kekanan = '1' THEN end if;
IF hchange <= 629 THEN count:=0;
hchange <= hchange + v; end if;
END IF;
ELSIF i_kekiri = '1' THEN end if;
IF hchange >= 0 THEN end process;
hchange <= hchange - v; end behavioural;
END IF;
END IF;

IF i_keatas = '1' THEN top_level_vhd.vhd (percobaan 3)


IF vchange >=0 THEN
vchange <= vchange + v; LIBRARY IEEE;
END IF; USE IEEE.STD_LOGIC_1164.ALL;
ELSIF i_kebawah = '1' THEN USE IEEE.STD_LOGIC_ARITH.ALL;
IF vchange <= 469 THEN USE IEEE.STD_LOGIC_UNSIGNED.ALL;
vchange <= vchange - v;
END IF; ENTITY top_level_vhd IS
END IF;
PORT(
END IF;
END PROCESS; CLOCK_50 : IN

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 10


STD_LOGIC; bawah,
SW : IN i_kecepatan =>
STD_LOGIC_VECTOR( 9 DOWNTO 0 ); kecepatan,
VGA_R : OUT VGA_R => VGA_R,
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_G => VGA_G,
VGA_G : OUT VGA_B => VGA_B,
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_HS => VGA_HS,
VGA_B : OUT VGA_VS => VGA_VS,
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); VGA_CLK => VGA_CLK,
VGA_HS : OUT VGA_BLANK => VGA_BLANK
STD_LOGIC; );
VGA_VS : OUT
STD_LOGIC;
VGA_CLK : OUT kanan <= SW(0);
STD_LOGIC; kiri <= SW(1);
VGA_BLANK : OUT bawah <= SW(2);
STD_LOGIC; atas <= SW(3);
GPIO_0 : OUT kecepatan <= SW(9);
STD_LOGIC_VECTOR( 35 DOWNTO 0 );
LEDR : OUT END behavioral;
STD_LOGIC_VECTOR( 9 DOWNTO 0 ));
END top_level_vhd;

ARCHITECTURE behavioral OF top_level_vhd top_level_vhd.vhd (semua percobaan)


IS LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
SIGNAL kanan, kiri, atas, bawah, USE IEEE.STD_LOGIC_ARITH.ALL;
kecepatan : STD_LOGIC; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
COMPONENT display_vhd IS ENTITY top_level_vhd IS
PORT( PORT(
i_clk : IN CLOCK_50 : IN STD_LOGIC;
STD_LOGIC; SW : IN
i_kanan : IN STD_LOGIC_VECTOR( 9 DOWNTO 0 );
STD_LOGIC; VGA_R : OUT
i_kiri : IN STD_LOGIC_VECTOR( 5 DOWNTO 0 );
STD_LOGIC; VGA_G : OUT
i_atas : IN STD_LOGIC_VECTOR( 5 DOWNTO 0 );
STD_LOGIC; VGA_B : OUT
i_bawah : IN STD_LOGIC_VECTOR( 5 DOWNTO 0 );
STD_LOGIC; VGA_HS : OUT STD_LOGIC;
i_kecepatan : IN VGA_VS : OUT STD_LOGIC;
STD_LOGIC; VGA_CLK : OUT STD_LOGIC;
VGA_R : OUT VGA_BLANK : OUT STD_LOGIC;
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); GPIO_0 : OUT
VGA_G : OUT STD_LOGIC_VECTOR( 35 DOWNTO 0 );
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); LEDR : OUT
VGA_B : OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 ));
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); END top_level_vhd;
VGA_HS : OUT
STD_LOGIC; ARCHITECTURE behavioral OF top_level_vhd
VGA_VS : OUT IS
STD_LOGIC;
VGA_CLK : OUT SIGNAL M_US : STD_LOGIC;
STD_LOGIC; SIGNAL K_US : STD_LOGIC;
VGA_BLANK : OUT SIGNAL H_US : STD_LOGIC;
STD_LOGIC); SIGNAL M_BT : STD_LOGIC;
END COMPONENT; SIGNAL K_BT : STD_LOGIC;
SIGNAL H_BT : STD_LOGIC;
BEGIN
COMPONENT display_vhd IS
module_vga : display_vhd PORT(
PORT MAP ( i_clk : IN STD_LOGIC;
i_clk => CLOCK_50, i_M_US : IN STD_LOGIC;
i_kanan => i_K_US : IN STD_LOGIC;
kanan, i_H_US : IN STD_LOGIC;
i_kiri => i_M_BT : IN STD_LOGIC;
kiri, i_K_BT : IN STD_LOGIC;
i_atas => i_H_BT : IN STD_LOGIC;
atas, VGA_R : OUT
i_bawah =>
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 11
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); o_vert_sync : OUT
VGA_G : OUT STD_LOGIC;
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); o_pixel_row : OUT
VGA_B : OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 );
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); o_pixel_column : OUT
VGA_HS : OUT STD_LOGIC_VECTOR( 9 DOWNTO 0 ));
STD_LOGIC; END vga;
VGA_VS : OUT
STD_LOGIC; ARCHITECTURE behavioral OF vga IS
VGA_CLK : OUT
STD_LOGIC; CONSTANT TH : INTEGER := 800;
VGA_BLANK : OUT CONSTANT THB1 : INTEGER := 660;
STD_LOGIC); CONSTANT THB2 : INTEGER := 756;
END COMPONENT; CONSTANT THD : INTEGER := 640;

BEGIN CONSTANT TV : INTEGER := 525;


CONSTANT TVB1 : INTEGER := 494;
module_vga : display_vhd CONSTANT TVB2 : INTEGER := 495;
PORT MAP ( CONSTANT TVD : INTEGER := 480;
i_clk => CLOCK_50,
i_M_US => M_US, SIGNAL clock_25MHz : STD_LOGIC;
i_K_US => K_US, SIGNAL horiz_sync : STD_LOGIC;
i_H_US => H_US, SIGNAL vert_sync : STD_LOGIC;
i_M_BT => M_BT, SIGNAL video_on : STD_LOGIC;
i_K_BT => K_BT, SIGNAL video_on_v : STD_LOGIC;
i_H_BT => H_BT, SIGNAL video_on_h : STD_LOGIC;
VGA_R => VGA_R, SIGNAL h_count : STD_LOGIC_VECTOR( 9
VGA_G => VGA_G, DOWNTO 0 );
VGA_B => VGA_B, SIGNAL v_count : STD_LOGIC_VECTOR( 9
VGA_HS => VGA_HS, DOWNTO 0 );
VGA_VS => VGA_VS,
VGA_CLK => VGA_CLK, BEGIN
VGA_BLANK => VGA_BLANK
); video_on <= video_on_h AND video_on_v;

M_US <= SW(0) ; o_red <= i_red AND video_on;


K_US <= SW(1) ; o_green <= i_green AND video_on;
H_US <= SW(2) ; o_blue <= i_blue AND video_on;
M_BT <= SW(3) ;
K_BT <= SW(4) ; o_horiz_sync <= horiz_sync;
H_BT <= SW(5) ; o_vert_sync <= vert_sync;

END behavioral; PROCESS (i_clk)


BEGIN
IF i_clk'EVENT AND i_clk='1'
THEN
vga.vhd (semua percobaan) IF (clock_25MHz = '0')
LIBRARY IEEE; THEN
USE IEEE.STD_LOGIC_1164.ALL; clock_25MHz <=
USE IEEE.STD_LOGIC_ARITH.ALL; '1';
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ELSE
clock_25MHz <=
ENTITY vga IS '0';
PORT( END IF;
i_clk : IN END IF;
STD_LOGIC; END PROCESS;
i_red : IN
STD_LOGIC; PROCESS
i_green : IN BEGIN
STD_LOGIC; WAIT UNTIL( clock_25MHz'EVENT )
i_blue : IN AND ( clock_25MHz = '1' );
STD_LOGIC; IF ( h_count = TH-1 ) THEN
o_red : OUT h_count <= (others=>'0');
STD_LOGIC; ELSE
o_green : OUT h_count <= h_count + 1;
STD_LOGIC; END IF;
o_blue : OUT
STD_LOGIC; IF ( h_count <= THB2-1 ) AND
o_horiz_sync : OUT (h_count >= THB1-1 ) THEN
STD_LOGIC; horiz_sync <= '0';
ELSE
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 12
horiz_sync <= '1'; SIGNAL red :
END IF; STD_LOGIC_VECTOR (5 DOWNTO 0);
SIGNAL green :
IF ( v_count >= TV-1 ) AND STD_LOGIC_VECTOR (5 DOWNTO 0);
( h_count >= 699 ) THEN SIGNAL blue :
v_count <= (others=>'0'); STD_LOGIC_VECTOR (5 DOWNTO 0);
ELSE IF ( h_count = 699 ) THEN SIGNAL red_color :
v_count <= v_count + 1; STD_LOGIC_VECTOR (7 DOWNTO 0);
END IF; SIGNAL green_color :
END IF; STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL blue_color :
IF ( v_count <= TVB2-1 ) AND STD_LOGIC_VECTOR (7 DOWNTO 0);
( v_count >= TVB1-1 ) THEN SIGNAL pixel_row :
vert_sync <= '0'; STD_LOGIC_VECTOR (9 DOWNTO 0);
ELSE SIGNAL pixel_column :
vert_sync <= '1'; STD_LOGIC_VECTOR (9 DOWNTO 0);
END IF; SIGNAL red_on :
STD_LOGIC;
IF ( h_count <= THD-1 ) THEN SIGNAL green_on :
video_on_h <= '1'; STD_LOGIC;
o_pixel_column <= h_count; SIGNAL blue_on :
ELSE STD_LOGIC;
video_on_h <= '0';
END IF;
COMPONENT vga IS
IF ( v_count <= TVD-1 ) THEN PORT(
video_on_v <= '1'; i_clk : IN
o_pixel_row <= v_count; STD_LOGIC;
ELSE i_red : IN
video_on_v <= '0'; STD_LOGIC;
END IF; i_green : IN
STD_LOGIC;
END PROCESS; i_blue : IN
END behavioral; STD_LOGIC;
o_red : OUT
STD_LOGIC;
o_green : OUT
display_vhd.vhd (semua percobaan) STD_LOGIC;
LIBRARY IEEE; o_blue : OUT
USE IEEE.STD_LOGIC_1164.ALL; STD_LOGIC;
USE IEEE.STD_LOGIC_ARITH.ALL; o_horiz_sync : OUT
USE IEEE.STD_LOGIC_UNSIGNED.ALL; STD_LOGIC;
o_vert_sync : OUT
ENTITY display_vhd IS STD_LOGIC;
PORT( o_pixel_row : OUT
i_clk : IN STD_LOGIC; STD_LOGIC_VECTOR( 9 DOWNTO 0 );
i_M_US : IN STD_LOGIC; o_pixel_column : OUT
i_K_US : IN STD_LOGIC; STD_LOGIC_VECTOR( 9 DOWNTO 0 ));
i_H_US : IN STD_LOGIC; END COMPONENT;
i_M_BT : IN STD_LOGIC;
i_K_BT : IN STD_LOGIC; COMPONENT color_rom_vhd IS
i_H_BT : IN STD_LOGIC; PORT(
VGA_R : OUT i_M_US : IN STD_LOGIC;
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); i_K_US : IN STD_LOGIC;
VGA_G : OUT i_H_US : IN STD_LOGIC;
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); i_M_BT : IN STD_LOGIC;
VGA_B : OUT i_K_BT : IN STD_LOGIC;
STD_LOGIC_VECTOR( 5 DOWNTO 0 ); i_H_BT : IN STD_LOGIC;
VGA_HS : OUT i_pixel_column : IN
STD_LOGIC; STD_LOGIC_VECTOR( 9 DOWNTO 0 );
VGA_VS : OUT i_pixel_row : IN
STD_LOGIC; STD_LOGIC_VECTOR( 9 DOWNTO 0 );
VGA_CLK : OUT o_red : OUT
STD_LOGIC; STD_LOGIC_VECTOR( 7 DOWNTO 0 );
VGA_BLANK : OUT o_green : OUT
STD_LOGIC); STD_LOGIC_VECTOR( 7 DOWNTO 0 );
END display_vhd; o_blue : OUT
STD_LOGIC_VECTOR( 7 DOWNTO 0 ));
ARCHITECTURE behavioral OF display_vhd IS END COMPONENT;

BEGIN
Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 13
'0';
vga_driver0 : vga c0 : OUT STD_LOGIC ;
locked : OUT STD_LOGIC
PORT MAP ( );
i_clk => i_clk, END pll_vhd;
i_red => '1',
i_green => '1',
i_blue => '1', ARCHITECTURE SYN OF pll_vhd IS
o_red => red_on, SIGNAL sub_wire0 : STD_LOGIC_VECTOR
o_green => green_on, (5 DOWNTO 0);
o_blue => blue_on, SIGNAL sub_wire1 : STD_LOGIC ;
o_horiz_sync => VGA_HS, SIGNAL sub_wire2 : STD_LOGIC ;
o_vert_sync => VGA_VS, SIGNAL sub_wire3 : STD_LOGIC ;
SIGNAL sub_wire4 : STD_LOGIC_VECTOR
o_pixel_row => pixel_row, (1 DOWNTO 0);
o_pixel_column => pixel_column); SIGNAL sub_wire5_bv : BIT_VECTOR (0
DOWNTO 0);
color_rom0 : color_rom_vhd SIGNAL sub_wire5 : STD_LOGIC_VECTOR
PORT MAP ( (0 DOWNTO 0);
i_M_US => i_M_US,
i_K_US => i_K_US,
i_H_US => i_H_US, COMPONENT altpll
i_M_BT => i_M_BT, GENERIC (
i_K_BT => i_K_BT, clk0_divide_by : NATURAL;
clk0_duty_cycle : NATURAL;
i_H_BT => i_H_BT, clk0_multiply_by : NATURAL;
i_pixel_column => pixel_column, clk0_phase_shift : STRING;
i_pixel_row => pixel_row, compensate_clock : STRING;
o_red => red_color, gate_lock_signal : STRING;
o_green => green_color, inclk0_input_frequency : NATURAL;
intended_device_family : STRING;
o_blue => blue_color); invalid_lock_multiplier : NATURAL;
lpm_hint : STRING;
red <= red_color (7 DOWNTO 2) ; lpm_type : STRING;
green <= green_color(7 DOWNTO 2) ; operation_mode : STRING;
blue <= blue_color (7 DOWNTO 2) ; port_activeclock : STRING;
port_areset : STRING;
port_clkbad0 : STRING;
port_clkbad1 : STRING;
PROCESS(red_on,green_on,blue_on,red,green, port_clkloss : STRING;
blue) port_clkswitch : STRING;
BEGIN port_configupdate : STRING;
port_fbin : STRING;
port_inclk0 : STRING;
IF (red_on = '1' ) THEN VGA_R <= red; port_inclk1 : STRING;
ELSE VGA_R <= "000000"; port_locked : STRING;
END IF; port_pfdena : STRING;
port_phasecounterselect : STRING;
port_phasedone : STRING;
IF (green_on = '1' ) THEN VGA_G <= port_phasestep : STRING;
green; port_phaseupdown : STRING;
ELSE VGA_G <= "000000"; port_pllena : STRING;
END IF; port_scanaclr : STRING;
port_scanclk : STRING;
port_scanclkena : STRING;
IF (blue_on = '1' ) THEN VGA_B <= port_scandata : STRING;
blue; port_scandataout :
ELSE VGA_B <= "000000"; STRING;
END IF; port_scandone : STRING;
port_scanread : STRING;
port_scanwrite : STRING;
port_clk0 : STRING;
END PROCESS; port_clk1 : STRING;
port_clk2 : STRING;
port_clk3 : STRING;
port_clk4 : STRING;
port_clk5 : STRING;
END behavioral; port_clkena0 : STRING;
port_clkena1 : STRING;
port_clkena2 : STRING;
port_clkena3 : STRING;
pll_vhd.vhd (semua percobaan) port_clkena4 : STRING;
port_clkena5 : STRING;
LIBRARY ieee; port_extclk0 : STRING;
USE ieee.std_logic_1164.all; port_extclk1 : STRING;
port_extclk2 : STRING;
LIBRARY altera_mf; port_extclk3 : STRING;
USE altera_mf.all; valid_lock_multiplier :
NATURAL
ENTITY pll_vhd IS );
PORT PORT (
( inclk : IN
inclk0 : IN STD_LOGIC := STD_LOGIC_VECTOR (1 DOWNTO 0);

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 14


locked : OUT STD_LOGIC ;
clk : OUT
STD_LOGIC_VECTOR (5 DOWNTO 0)
);
END COMPONENT;

BEGIN
sub_wire5_bv(0 DOWNTO 0) <= "0";
sub_wire5 <=
To_stdlogicvector(sub_wire5_bv);
sub_wire1 <= sub_wire0(0);
c0 <= sub_wire1;
locked <= sub_wire2;
sub_wire3 <= inclk0;
sub_wire4 <= sub_wire5(0 DOWNTO 0) &
sub_wire3;

altpll_component : altpll
GENERIC MAP (
clk0_divide_by => 2,
clk0_duty_cycle => 50,
clk0_multiply_by => 1,
clk0_phase_shift => "0",
compensate_clock => "CLK0",
gate_lock_signal => "NO",
inclk0_input_frequency => 20000,
intended_device_family => "Cyclone
II",
invalid_lock_multiplier => 5,
lpm_hint =>
"CBX_MODULE_PREFIX=pll_vhd",
lpm_type => "altpll",
operation_mode => "NORMAL",
port_activeclock => "PORT_UNUSED",
port_areset => "PORT_UNUSED",
port_clkbad0 => "PORT_UNUSED",
port_clkbad1 => "PORT_UNUSED",
port_clkloss => "PORT_UNUSED",
port_clkswitch => "PORT_UNUSED",
port_configupdate =>
"PORT_UNUSED",
port_fbin => "PORT_UNUSED",
port_inclk0 => "PORT_USED",
port_inclk1 => "PORT_UNUSED",
port_locked => "PORT_USED",
port_pfdena => "PORT_UNUSED",
port_phasecounterselect =>
"PORT_UNUSED",
port_phasedone => "PORT_UNUSED",
port_phasestep => "PORT_UNUSED",
port_phaseupdown => "PORT_UNUSED",
port_pllena => "PORT_UNUSED",
port_scanaclr => "PORT_UNUSED",
port_scanclk => "PORT_UNUSED",
port_scanclkena => "PORT_UNUSED",
port_scandata => "PORT_UNUSED",
port_scandataout => "PORT_UNUSED",
port_scandone => "PORT_UNUSED",
port_scanread => "PORT_UNUSED",
port_scanwrite => "PORT_UNUSED",
port_clk0 => "PORT_USED",
port_clk1 => "PORT_UNUSED",
port_clk2 => "PORT_UNUSED",
port_clk3 => "PORT_UNUSED",
port_clk4 => "PORT_UNUSED",
port_clk5 => "PORT_UNUSED",
port_clkena0 => "PORT_UNUSED",
port_clkena1 => "PORT_UNUSED",
port_clkena2 => "PORT_UNUSED",
port_clkena3 => "PORT_UNUSED",
port_clkena4 => "PORT_UNUSED",
port_clkena5 => "PORT_UNUSED",
port_extclk0 => "PORT_UNUSED",
port_extclk1 => "PORT_UNUSED",
port_extclk2 => "PORT_UNUSED",
port_extclk3 => "PORT_UNUSED",
valid_lock_multiplier => 1
)
PORT MAP (
inclk => sub_wire4,
clk => sub_wire0,
locked => sub_wire2
);

END SYN;

Laporan Praktikum - Laboratorium Dasar Teknik Elektro – STEI ITB 15

Anda mungkin juga menyukai