Modul FPGA (Full) v1.1
Modul FPGA (Full) v1.1
III. Peralatan
Misalnya software Quartus dan Max+Plus untuk FPGA milik Altera. Sedangkan
FPGA buatan Xilinx dengan perangkat lunaknya yakni ISE WebPack. Selanjutnya, skema
rangkaian digambar dengan cara membuat tiap komponen serta jalur-jalur yang
menghubungkan komponen-komponen tersebut menjadi satu kesatuan. Hingga akhirnya
tercipta gambar skema rangkaian yang utuh. Metode ini terbilang mudah dan efektif terutama
bila dipakai untuk skema rangkaian yang sederhana serta tidak memiliki jalur-jalur yang
rumit.
Gerbang logika atau sering juga disebut gerbang logika Boolean merupakan sebuah
sistem pemrosesan dasar yang dapat memproses input-input yang berupa bilangan biner
menjadi sebuah output yang berkondisi yang akhirnya digunakan untuk proses selanjutnya.
Tegangan yang digunakan dalam gerbang logika adalah TINGGI atau RENDAH. Tegangan
tinggi berarti 1, sedangkan tegangan rendah berarti 0.
Gerbang OR adalah gerbang dimana salah satu atau semua masukan; keluaran terjadi
bila salah satu atau semua masukan ada. Gerbang OR akan memberikan keluaran 1 jika
salah satu dari masukannya pada keadaan 1. jika diinginkan keluaran bernilai 0, maka
semua masukan harus dalam keadaan 0
Gerbang NOT adalah gerbang yang mempunyai sebuah input dan sebuah output.
Gerbang NOT berfungsi sebagai pembalik (inverter), sehingga output dari gerbang ini
merupakan kebalikan dari inputnya.
Gerbang NAND akan mempunyai keluaran 0 bila semua masukan pada logika
1. sebaliknya jika ada sebuah logika 0 pada sembarang masukan pada gerbang NAND,
maka keluaran akan bernilai 1.
Gerbang NOR akan memberikan keluaran 0 jika salah satu dari masukannya
pada keadaan 1. jika diinginkan keluaran bernilai 1, maka semua masukannya harus dalam
keadaan 0.
Langkah-Langkah:
5. Klik new source -> ketik nama file namenya GerbangAND pilih Schematic -> klik
next -> klik Finish -> pilih yes
6. Klik next -> pilih next lagi -> lalu Finish
7. Gambar desain schematic gerbang AND -> lalu save
8. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run
9. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan
pilih Run -> pilih yes
KESIMPULAN:
Ikuti Langkah-langkah seperti pada Gerbang And untuk mengerjakan Gerbang Nand,
Nor, Xor, Xnor, Half Adder, Full Adder, Half Substractor, dan Full Substractor.
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
Hasil Output :
Program Mandiri II :
Hasil Output :
Hasil Output :
I. Tujuan Praktikum :
Praktikan Dapat Mengenal dan Memahami Pemrograman Verilog pada
FPGA
Praktikan Dapat Merancang Program Verilog pada Pemrograman
FPGA
Praktikan Dapat Memahami Penggunaan Gerbang Logika dalam
Pemrograman Verilog
III. Peralatan
Verilog simulator, pertama kali digunakan pada tahun 1985 dan diperpanjang
substansialnya melalui pelaksanaannya pada tahun 1987. Verilog simulator pertama adalah
Verilog-XL, yang menambahkan beberapa fitur salah satunya yang terkenal adalah "XL
algoritma" yang merupakan metode yang sangat efisien untuk melakukan simulasi gerbang-
tingkat.
Pada akhir 1990, Cadence Design System, yang pada saat itu membuat proses film
tipis simulator, memutuskan untuk membentuk Gateway Sistem otomatis. Yang saat ini
menjadi pemilik bahasa Verilog, baik sebagai bahasa atau sebagai simulator. Pada saat yang
sama, Synopsys memasarkan topdown desain metodologinya, menggunakan Verilog. Ini
adalah kombinasi yang kuat pada sekitar tahun 1990-an. Walaupun standardisasi tekanan
pada akhirnya menyebabkan industri bergeser ke bahasa VHDL.
Bottom-Up Design
Pada Bottom-Up, Setiap desain dilakukan pada level gerbang menggunakan gerbang
dasar standar. Dengan meningkatnya kompleksitas desain rancangan digital saat ini
dengan sistem baru yang terdiri dari mikroprosesor dengan kompleksitas ribuan
transistor teknik ini hampir mustahil untuk dipertahankan.
2.2 Simulasi
Simulasi adalah proses verifikasi karakteristik fungsional model pada setiap tingkat
abstraksi. Kami menggunakan simulator untuk mensimulasikan Hardware
model. Untuk menguji apakah kode RTL memenuhi persyaratan fungsional spesifikasi dan
melihat apakah semua blok RTL fungsional benar. Untuk mencapai ini kita perlu menulis
testbench, yang menghasilkan CLK, reset dan tes yang diperlukan vektor
Sintesis adalah proses di mana desain alat seperti compiler atau Synplify
mengambil RTL di Verilog atau VHDL. Sintesis adalah alat pemetaan RTL untuk setiap
program, juga melakukan minimal waktu analisis untuk melihat apakah desain yang
dipetakan memenuhi persyaratan atau tidak.
Konvensi leksikal dasar yang digunakan oleh Verilog HDL serupa dengan yang di
pemrograman bahasa C. contoh bahasa Verilog:
2.5 Identifier
Identifier adalah nama yang digunakan untuk memberikan suatu objek, misalnya
mendaftar atau modul, nama sehingga dapat direferensikan dari tempat-tempat lain dalam
deskripsi. Ciri-ciri Identifier:
Verilog HDL memungkinkan setiap karakter yang akan digunakan dalam suatu
pengenal dapat melarikan diri dari pengenal (tidak teridentifikasi). Lolos pengidentifikasi
menyediakan sarana termasuk salah satu karakter ASCII dicetak dalam sebuah identifier
(nilai desimal 33 melalui 126, atau 21 melalui 7E dalam heksadesimal). Hal-hal yang
membuat karakter tidak teridentifikasi adalah:
Hal-hal yang menyebabkan suatu program lolos dari identifikasi dapat terjadi.
Sehingga berhasil di check sintaks. Namun pada saat di Implementasi kemungkinan menjadi
error. Contoh : karakter yang lolos atau tidak teridentifikasi:
Kita dapat menetapkan angka konstan dalam desimal, heksadesimal, oktal, atau
biner format. Angka negatif direpresentasikan dalam 2's complement. Pada karakter
underscore (_) harus digunakan di mana saja dalam nomor kecuali sebagai karakter pertama,
di mana ia diabaikan.
2.6.2 Strings
String adalah deretan karakter yang dilingkupi oleh tanda kutip ganda dan semua
terdapat pada satu baris. String digunakan sebagai Operand dalam ungkapan yang digunakan
sebagai urutan delapan-bit nilai ASCII, dengan sebuah delapan-bit nilai ASCII mewakili satu
karakter. Verilog tidak menyimpan string penghentian karakter. String dapat dimanipulasi
dengan menggunakan standar operator.
Berikut ini adalah operator yang digunakan dalam bahasa pemrograman Verilog :
Behavioral Models: tingkat tinggi di mana perilaku pemodelan logika adalah model.
RTL Model: Logika mendaftar dimodelkan pada tingkat
Structural Model: Logika dimodelkan pada kedua tingkat mendaftar dan gerbang
tingkat.
Initial: Initial blok mengeksekusi hanya sekali pada waktu nol (mulai
pada waktu pelaksanaan nol).
Always: always blok loop untuk mengeksekusi berulang kali, Dengan kata lain selalu
dijalankan.
if (kondisi)
statements;
if (kondisi)
statements;
else
statements;
if (kondisi)
statements;
else if (kondisi)
statements;
................
................
else
statements;
contoh :
// Simple if statement
Contoh :
case (<expression>)
<case1> : <statement>
<case2> : <statement>
.....
default : <statement>
endcase
Forever
Repeat
While
For
Contoh :
Forever : Mengeksekusi loop yang terus-menerus (loop tidak pernah berakhir)
initial begin
clk = 0;
forever #5 clk = !clk;
end
loc = 0;
if (data = 0) // example of a 1 detect shift value
loc = 32;
else while (data[0] == 0); //find the first set bit
begin
loc = loc + 1;
data = data << 1;
end
For : looping yang dilakukan oleh for telah diketahui batas awal, syarat looping dan
perubahannya. Selama kondisi terpenuhi, maka pernyataan akan terus dieksekusi.
for (i=0;i<=63;i=i+1)
ram[i] <= 0; // Inialize the RAM with 0
Langkah-Langkah:
5. Klik new source -> ketik nama file namenya GerbangAND pilih Verilog Module ->
klik next -> masukan input dan outputnya seperti dibawah ini:
AND ->
<- OR
9. lalu save
10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check
Syntax pilih Run
11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run
12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan
pilih Run -> pilih yes
13. Isikan LOC pin seperti gambar berikut:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
Source Code :
Hasil Output :
Source Code :
Hasil Output :
Source Code :
Hasil Output :
I. Tujuan Praktikum :
Praktikan Dapat Mengenal dan Memahami Pemrograman VHDL pada
FPGA
Praktikan Dapat Merancang Program VHDL pada Pemrograman FPGA
Praktikan Dapat Memahami Penggunaan Gerbang Logika dalam
Pemrograman VHDL
III. Peralatan
Lebih dari satu dekade, terjadi perdebatan panjang yang tak berkesudahan diantara
komunitas pengguna VHDL dengan Verilog. Mereka berdebat mengenai kode mana yang
terbaik untuk digunakan dan kode apa yang lebih lengkap dalam hal aturan penulisannya.
Memang diantara kedua kode tersebut memiliki perbedaan yang cukup signifikan. Namun
secara filosofi konsep, perbedaan dasar dari VHDL dengan Verilog adalah mengenai konteks
dari kedua bahasa itu sendiri. Verilog berasal dari tradisi bottom-up yang telah sering
digunakan dalam industri IC dalam hal rancangan dasar IC. Sedangkan kode VHDL
dikembangkan lebih kepada persepektif top-down. Tentu saja, banyak perbedaan umum
dan luas dalam konteks saat ini. Namun, secara jelas dan nyata, perbedaannya dapat terlihat
pada syntax dasar dan metode dari kedua kode tersebut.
VHDL adalah kemampuannya untuk menggunakan gabungan level dari model yang
memiliki arsitektur yang berbeda seperti ditunjukkan sebagai berikut :
Entity merupakan salah satu contoh bentuk satu kesatuan dan terpisah dengan bagian
yang lain. Untuk selengkapnya, beberapa uraian berikut akan menjelaskan tentang entity
serta hal-hal yang terkait di dalamnya.
Ada beberapa dasar-dasar serta teknik penulisan kode dalam VHDL. Beberapa
diantaranya adalah entity, architcture, basic type variables and operator, decisions, loops,
dsb. Terdapat pula berkas-berkas yang nantinya berkas ini dapat digunakan sewaktu-waktu
untuk berbagai keperluan tanpa harus menulisnya ulang. Biasanya berkas ini langsung
disertakan menjadi satu dalam sebuah library. Istilah library sendiri dikenal sebagai
sekumpulan koleksi bermacam-macam berkas kode. Bila suatu berkas kode disimpan di
dalam library maka berkas kode tersebut dapat digunakan serta dibagikan dengan rancangan
yang lain.
Pada pemrograman dikenal pula istilah library atau pustaka yang biasa terdapat pada
bahasa pemrograman yang lain seperti C atau header pada Pascal. Library berfungsi untuk
memudahkan prorammer untuk menyelesaikan pekerjaannya karena dalam library tersebut
terdapat fungsi-fungsi dan tipe data yang sudah didefinisikan sebelumnya untuk digunakan
berulang-ulang. Di dalam library tersebut terdapat sub-tree yang disebut sebagai paket,
diantaranya :
LIBRARY IEEE :
use IEEE.std_logic_1164.all;
use IEEE.std_logic_textio.all;
use IEEE.std_logic_arith.all;
use IEEE.numeric_std.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_unsigned.all;
use IEEE.math_real.all;
use IEEE.math_complex.all;
LIBRARY STD :
use STD.standard;
use STD.textio;
LIBRARY WORK :
Paket yang didefinisikan oleh user sendiri, yang isinya terdiri dari tipe data,
architecture dan behavioral. Isi paket tidak harus memenuhi syarat dan kesepakatan ieee.
Paket tersebut dideklarasikan dengan cara :
USE work.my_package.all;
3.3 Entity
entity <name>;
Misalkan sebuah entity diberi nama test, maka kerangka entity tersebut akan menjadi :
entity test is
atau
entity test is
end test;
3.4Ports
Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah
menggunakan PORTS. Hal ini didefinisikan bahwa entity menggunakan metode sebagai
berikut:
port (
);
Deklrasi port ini mendefinisikan jenis dari koneksi dan arah yang sesuai. Misalnya, deklarasi
port untuk sebuah input bit adalah 1, maka digambarkan sebagai berikut :
in1 : in bit;
port (
);
3.5 Generics
Jika sebuah contoh memiliki sebuah parameter, maka contoh tersebut dapat
didefinisikan menggunakan generics. Deklarasi umum dari generics ditunjukan berikut:
generic (
);
Pada beberapa kasus dari generics, deklarasinya mirip dari sebuah constant dengan
bentuk yang ditunjukkan sebagai berikut:
param1 : integer := 4;
generic (
gain : integer := 4;
time_delay : time = 10 ns
);
3.6 Berkas
Selanjutnya ada 4 cara pembuatan berkas yang nantinya dapat disimpan dalam
library. Keempat cara tersebut adalah :
Seperti terlihat pada gambar, keempat berkas tersebut biasanya menjadi satu dalam
sebuah library. Selanjutnya, library tersebut akan digunakan dalam kode utama yang terdiri
atas entity dan architecture. Inilah yang disebut rancangan bertingkat (hierarchial design)
dalam VHDL. Fungsi utama dari berkas-berkas tersebut adalah untuk membuat efisien dan
efektif dalam penulisan kode VHDL. Bayangkan bila tiap rangkaian dalam sebuah rancangan
sistem harus dideklaraskan satu per satu. Hal itu tentu memerlukan resource yang banyak dan
waktu yang lama. Belum lagi jika terdapat kesalahan. Maka proses pengecekan dan
pemeriksaan kode juga butuh waktu yang tak sedikit. Oleh karena itu, dibuatlah berkas-
berkas sederhana untuk menghindari hal tersebut. Selain itu dengan mempelajari berkas-
berkas ini maka sebuah library dapat dibuat sesuai dengan kepentingan dan kebutuhan
perancang sistem.
package name is
end package;
Seperti yang terlihat pada aturan penulisan, sebuah packages terdiri dari 2 bagian
yaitu header dan body. Header adalah tempat untuk mendeklarasikan keseluruhan nama-
nama berkas (baik function, procedures, atau component) yang diperlukan. Sementara body
adalah tempat untuk menjabarkan lebih lanjut mengenai berkas-berkas yang tertulis di
header. Perlu diingat bahwa antara haeder dan body packages haruslah memiliki nama yang
sama.
Sebagai contoh, berikut ada packages yang berisi function untuk logika yang
sederhana. Bagian header packages tersebut dapat ditulis:
package new_functions is
end
Sedangkan untuk bagian body, yaitu tempat untuk menjabarkan lebih lanjut deklarasi
pada header, dapat ditulis:
bit is
begin
return a and b and c and d and e and f and g and h and i and j;
end;
Bila antara bagian header dan body digabung menjadi satu, maka inilah yang disebut
packages. Dan secara keseluruhan dapat ditulis berikut :
package new_functions is
end;
bit is
begin
return a and b and c and d and e and f and g and h and i and j;
end;
end;
Selanjutnya packages dapat dijadikan satu untuk kemudian disimpan dalam library.
Untuk bisa membuatnya demikian, perlu ditambahkan beberapa kode dalam penulisan VHDL
nya, yakni menambahkan kalimat USE (USE work.my_package.all;) di kode utama VHDL
itu. Syntaxnya sebagai berikut:
USE ieee.std_logic_1164.all;
USE work.my_package.all;
ENTITY
ARCHITECTURE
3.8.1 For
Selain algoritma percabangan, di dalam VHDL juga dikenal algoritma lain yaitu
pengulangan. Pengulangan digunakan untuk menjalankan satu atau beberapa pernyatan
sebanyak beberapa kali. Dengan kata lain, pengulangan dapat digunakan untuk menjalankan
beberapa pernyataan hanya dengan menuliskan pernyataan tersebut satu kali saja. Untuk
VHDL, algoritma pengulangan yang sering dipakai adalah pernyataan for. Aturan dasar
untuk pernyataan for sebagai berikut:
loop statements
end loop;
loop statements
end loop;
Bentuk pengulangan dapat dijadikan satu dengan susunan nilai bit demi bit. Misalnya
sebagai berikut :
for i in 0 to 7 loop
a(i) <= 1;
end loop;
3.8.2 Exit
for i in 0 to 7 loop
if ( i = 4 ) then
exit;
endif;
endloop;
3.8.3 Next
if ( i = 4 ) then
next;
endif;
endloop;
3.9.1 Constants
Dalam sebuah simulasi, ada sebuah nilai yang perlu diatur sedemikan rupa agar nilai
tersebut tidak berubah atau tetap. Jenis nilai yang bersifat tetap demikan dinamakan sebagai
constant. Constant ini sering digunakan untuk memberikan nilai awal dalam sebuah
parameter. Selain itu, constant juga digunakan sebagai perbandingan untuk nilai-nilai yang
terdapat pada sejumlah register. Sebuah constant dapat dideklarasikan untuk beberapa tipe
dalam VHDL. Berikut beberapa contoh penggunaan constant :
constant a : integer := 1;
constant c : std_logic := 0;
3.9.2 Signals
Dalam sebuah process, sebuah signal berperan dalam menghubungkan cara kerja
serta apa yang akan dikerjakan oleh process tersebut. Selain itu, signal merupakan jalur yang
efektif dalam suatu rangkaian, dimana signal tersebut akan menghubungkan bagian satu sama
lain dalam rangkaian itu.
Suatu singal dapat diberikan nilai yang tepat atau dapat ditambah dengan waktu tunda
(delay). Dengan adanya delay, maka process yang hendak berjalan dapat dijadwalkan di
masa yang akan datang. Inilah salah satu perbedaan signal dengan urutan kumpulan kode
program (seperti dalam C). Contoh pernyataan dan penggunaan signal ditunjukan berikut :
3.9.3 Variables
Dalam VHDL, dikenal istilah variable yakni sebuah nilai yang tidak tetap. Variable
ini hanya digunakan dalam jenis proses sekuensial/beurutan. Variable ini berbeda dengan
sinyal-sinyal pada umumnya yang terjadi secara serentak. Variable digunakan dalam sebuah
proses dan cara pendeklarasiannya sebagai berikut:
var1 := var2;
Sekedar catatan, bahwa tidak ada konsep delay dalam penggunaan variable (jika
memerlukan proses yang perlu penjadwalan, lebih baik digunakan signal saja).
VHDL juga memiliki sejumlah operator Boolean. Daftar operator boolean yang ada di
dalam VHDL adalah AND, OR, NAND, NOT, NOR, dan XOR. Operator tersebut dapat
diaplikasikan ke dalam BIT, BOOLEAN, atau jenis logika seperti contoh berikut ini :
Selain operator boolean, terdapat pula operator aritmetika yang terdapat dalam
VHDL. Operator tersebut dijelaskan seperti tabel berikut ini :
VHDL juga memiliki sejumlah aturan baku untuk membandingkan nilai satu dengan
nilai yang lain. Daftar operator pembanding tersebut adalah =, /=, <, < =, >, = >. Jenis
operator terebut dapat digunakan seperti berikut ini :
in1 < 1
in1 /= in2
VHDL juga memiliki 6 fungsi logical shift yang terangkum sebagai berikut :
3.9.8 Concatenation
A <= 1111;
B <= 000;
Untuk menuliskan kode VHDL secara efisien, sangatlah penting untuk mengetahui
tipe-tipe data yang diperbolehkan, bagaimana, serta kapan penggunaannya. Artikel berikut
dan beberapa artikel mendatang akan membahas tipe-tipe data apa saja yang terdapat dalam
kode VHDL.
Kode VHDL mengandung sederetan tipe-tipe data yang telah ditentukan melalui
aturan standar IEEE 1076 dan IEEE 1164. Untuk lebih jelas, beberapa tipe data telah
tercantum ke dalam masing-masing jenis library/packages yaitu :
Package standard of library std. Tipe data yang masuk jenis ini adalah tipe bit,
boolean, integer, dan real.
Package std_logic_1164 of library ieee. Tipe data yang masuk jenis ini adalah
std_logic dan std_ulogic.
Package std_logic_arith of library ieee. Tipe data yang masuk ke dalam library ini
adalah signed, unsigned serta beberapa konversi fungsi, seperti conv_integer(p),
conv_unsigned(p, b), conv_signed(p, b), and conv_std_logic_vector(p, b).
Selain tipe data yang telah ditentukan secara baku oleh aturan IEEE, ternyata VHDL
juga memperbolehkan pengguna (user) untuk menentukan tipe data yang diinginkan. Ada 2
kategori untuk tipe data yang bisa ditentukan sendiri oleh user yaitu:
1. Tipe Integer
2. Tipe enumerated
Process adalah sebuah mekanisme atau cara untuk mengesekusi susunan pernyataan
(statement) dengan urutan yang terstruktur. Pernyataan (statement) tersebut biasanya lebih
dari satu dan eksekusinya terjadi secara bersamaan. Setiap process memiliki cara
pendeklarasian tertentu dan biasanya berbeda satu sama lain, tergantung pernyataan yang
hendak dikesekusi. Selain itu, lokasi process biasanya terletak di dalam bagian architecture.
Aturan dasar untuk penulisan process adalah sebagai berikut:
process sensitivity_list is
declaration part
begin
statement part
end process;
Dalam process, suatu kumpulan (list) pernyataan akan dijalankan/aktif ketika terjadi
perubahan nilai sinyal. Misalnya, sebuah process memiliki sinyal clock dan reset.
Process tersebut akan dijalankan ketika terjadi perubahan sinyal yang melibatkan sinyal-
sinyal clk dan rst.
begin
process statements
end process;
Pada contoh berikut ini, process hanya bisa berjalan/aktif terjadi perubahan nilai clk
atau rst. Selain itu, process juga masih bisa aktif, yaitu dengan cara menggunakan wait
statement. Bila menggunakan wait statement, process akan otomatis dijalankan sekali
kemudian menunggu terjadinya perubahan nilai sinyal lain yang melibatkan sinyal clk atau
sinyal rst. Bila itu terjadi, process akan berjalan/aktif lagi.
process
begin
process statements
end process;
Pada umumnya, lokasi dari sebuah wait statement tidaklah begitu penting. Hal ini
karena dalam simulasi VHDL, setiap process berjalan setiap siklus sehingga wait statement
dapat diletakan di awal atau di akhir. Hal tersebut tidak berpengaruh pada jalannya process
karena sifatnya sama saja.
process (a) is
signal na : bit;
begin
na <= not a;
end process;
Jika sebuah entity digambarkan sebagai sebuah interface serta parameter sebagai
bagian dari sebuah model, maka architecture akan menggambarkannya sebagai
watak(behaviour) dari model tersebut. Maksudnya, entity secara umum menggambarkan
keseluruhan kerangka model. Sedangkan architecture akan menggambarkan watak dari
model tersebut. Misalnya,
entity multiplexor is
o : out std_logic);
end Multiplexor;
begin
process
begin
end process;
end RTL;
..architecture declarations
begin
architecture contents
atau
..architecture declarations
begin
architecture contents
end behaviour;
begin
// watak dari architecture bernama test yang memiliki sinyal 1 dan sinyal 2 (keduanya
bertipe bit);
Nantinya kedua sinyal tersebut akan digunakan dalam sebuah bagian statement di
bagian isi dari model yang hendak digunakan.
Architecture dalam VHDL dapat memiliki variasi dari sebuah struktur untuk
mencapai fungsi yang berbeda satu sama lain. Selanjutnya, output yang ingin diinginkan
dapat dibuat dengan menggabungkan sinyal-sinyal atau variabel yang ada. Misalnya :
//Dua buah output dapat dibuat dengan input yang sama. Output 1 ditentukan dengan
meng AND kan input 1 dengan input 2. Sedangkan output 2 ditentukan dengan meng
OR kan input 1 dan input 2.
begin
Langkah-Langkah:
5. Klik new source -> ketik nama file namenya GerbangAND pilih VHDL Module ->
klik next -> masukan input dan outputnya seperti dibawah ini:
9. lalu save
10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check
Syntax pilih Run
11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run
12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan
pilih Run -> pilih yes
13. Isikan LOC pin seperti gambar berikut:
KESIMPULAN:
Percobaan 2 : Gerbang OR
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
KESIMPULAN:
Source Code :
Hasil Output :
Source Code :
Hasil Output :
Source Code :
Hasil Output :
III. Peralatan
FPGA XILINX SPARTAN 3E
Adaptor 5 Volt
1 buah PC
Langkah-Langkah:
5. Klik new source ->ketik nama file namenya Adder_2bit pilih Schematic ->klik next -
>klik Finish ->pilih yes
6. Klik next ->pilih next lagi ->lalu Finish
7. Gambarkan rangkaian shcematic 2bit adder ->lalu save
8. Padabagian tab Processes pada Synthesize-XST klikkanan pilih Run
9. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan
pilih Run ->pilih yes
10. Isikan LOC pin seperti gambar berikut:
Kesimpulan :
Shcematic :
KESIMPULAN:
Langkah-Langkah:
5. Klik new source ->ketik nama file namenya Ctr_up pilih VHDL Module ->klik next -
>klik Finish ->pilih yes
6. Klik next ->pilih next lagi ->lalu Finish
7. Ketikkan source code program counter up ->lalu save
8. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run
9. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan
pilih Run ->pilih yes
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity counter is
reset : in std_logic;
pause : in std_logic;
end counter;
begin
begin
clk_divider<= clk_divider + 1;
end if;
slow_clk<= clk_divider(23);
end process;
begin
else
if temp_count< 9 then
else
end if;
end if;
end if;
end process;
Kesimpulan :
1. PercobaanMandiri
Kode :
KESIMPULAN:
Dari Source Code 4-Bit Binary Up Counter diatas ,Buatlah 4-Bit Down Counter
Code :
KESIMPULAN:
Dari Source Code 4-Bit Binary Up Counter diatas ,Buatlah 8-Bit Down Counter
Code :
KESIMPULAN:
III. Peralatan
FPGA XILINX SPARTAN 3E
Adaptor 5 Volt
1 buah PC
Keyboard PS/2 adalah suatu serial protokol yang dapat bidirectional. Keyboard PS/2
untuk komunikasinya hanya menggunakan 2 buah kabel yaitu kabel data untuk aliran data
dari/ke komputer dan kabel untuk clock. Ada tiga keadaan pada keyboard yang perlu
diperhatikan:
1. Pada saat data = high, clock = high maka keadaan ini disebut idle state.
2. Pada saat data = high, clock = low maka keadaan ini yang tidak boleh tejadi.
3. Pada saat data = low, clock = high maka berarti tanda bahwa host akan mengirim
perintah ke keyboard.
Data dikirimkan dari keyboard ke host pada saat ada perubahan clock dari logika high
menjadi logika low (falling edge transition), demikian pula untuk data yang dikirimkan dari
host ke device pada saat falling edge transtion clock. Frekuensi dari clock berada dalam
jangkauan 10-16.7 KHz (Chapweske, 1999). Keluaran dari kedua output tersebut memenuhi
standar sinyal TTL, sehingga dapat langsung dihubungkan dengan mikrokontroler.
Biasanya pada komputer port PS/2 keyboard dan mouse memiliki warna yang
berbeda. Tujuannya adalah agar tidak tertukar saat pemasangannya.
Pada gambar 5.3 menunjukkan port ps/2 yang ada pada FPGA.
Istilah host yang berarti komputer, jika keyboard atau mouse dihubungkan dengan
PC, atau host dapat berupa mikrontroler bila keyboard atau mouse dihubungkan dengan
mikrokontroler.Pada keyboard komputer, setiap kali salah satu tombol ditekan atau dilepas,
keyboard akan mengirim kode ke host. Kode yang dikirimkan ke host tersebut dinamakan
sebagai scan code. Sebagai contoh, bila scan code tombol i adalah 43H (0100 0011). Ketika
tombol i ditekan keyboard akan mengirimkan 43H, jika tombol i ditekan terus maka
keyboard akan terus mengirimkan 43H terus menerus sampai tombol i tadi dilepaskan atau
ada tombol lain yang ditekan. Keyboard juga mengirimkan kode saat ada tombol yang
dilepaskan, kodenya adalah F0H (1111 0000) kemudian diikuti dengan scancode tombol
yang ditekan, jadi kalau tombol i tadi dilepas keyboard akan mengirimkan kode F0H dan
43H. Kode-kode tersebut dikirim keyboard secara serial, artinya dikirimkan satu bit demi satu
bit dimulai dari bit LSB dahulu, seperti pada gambar 2. Misalnya 43 dikirimkan dengan cara:
mula-mula dikirim 1, sesaat kemudian 1 lagi dan menyusul 0 setelah itu 0 sampai
akhirnya 8 bit yang berbentuk 0100 0011.
Sistem bilangan biner atau sistem bilangan basis dua adalah sebuah sistem penulisan
angka dengan menggunakan dua simbol yaitu 0 dan 1. Sistem bilangan ini merupakan dasar
dari semua sistem bilangan berbasis digital. Dari bilangan biner, kita dapat mengkonversinya
ke dalam bilangan Oktal atau Hexadesimal. Sistem ini juga dapat kita sebut dengan istilah bit
(Binary Digit). Pengelompokan biner dalam komputer selalu berjumlah 8, dengan istilah 1
Byte/bita. Dalam istilah komputer, 1 Byte = 8 bit. Kode-kode rancang bangun komputer,
seperti ASCII, (American Standard Code for Information Interchange) menggunakan sistem
pengkodean 1 Byte.
Dari Gambar Scan Code diatas kita dapat melihat contoh penggunaan scan codes
keyboard seperti dibawah ini:
Langkah-Langkah:
Source code
KESIMPULAN:
2. Pada saat tombol Z pada keyboard ditekan, 8 LED pada FPGA nyala
semua
3. Pada saat tombol X pada keyboard ditekan, 8 LED pada FPGA mati
semua
4. Pada saat tombol C pada keyboard ditekan, 4 LED pada FPGA nyala dan
4 LED sisanya mati.
Source Code :
Kesimpulan :
Langkah-Langkah:
6. Klik new source -> ketik nama file namenya switch_1 pilih VHDL Module -> klik
next -> input dan outputnya dikosongkan saja seperti dibawah ini:
KESIMPULAN:
Output :
KESIMPULAN:
I. Tujuan Praktikum :
Praktikan Dapat Mengenal dan Memahami Pemrograman VHDL pada
FPGA
Praktikan Dapat Memahami Penggunaan Port LCD Karakter dalam
FPGA
Praktikan Dapat Merancang Program VHDL pada FPGA menggunakan
Port LCD Karakter
III. Peralatan
FPGA XILINX SPARTAN 3E
Adaptor 5 Volt
1 buah PC
LCD ( Liquid Crystal Display ) merupakan salah satu media yang digunakan sebagai
penampil pada sistem berbasis mikrokontroler. Banyak macam LCD yang tersedia dipasaran,
baik yang dapat menampilkan gambar maupun teks.Untuk LCD yang dapat menampilkan
gambar disebut LCD Grafik sedangkan LCD yang dapat menampilkan teks disebut LCD
Karakter.
LCD Karakter yang digunakan pada kasus ini adalah 2x16, dimana untuk menampilkan
karakter sebanyak 2 baris 16 kolom dengan menggunakan lebar data sebanyak 4 bit atau 8
bit. Berikut ini dijelaskan mengenai fungsi pin pin pada LCD Karakter 2x16 dan antarmuka
dengan FPGA Board :
Tampilan karakter pada LCD diatur oleh pin pin berikut ini :
EN (Enable)
Jalur ini digunakan untuk memberitahu LCD bahwa akan dilakukan pengirimansxs
data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat
logika low 0 dan set pada dua jalur kontrol yang lain RS dan RW. Ketika dua jalur
yang lain telah siap, set EN dengan logika 1 dan tunggu untuk sejumlah waktu
tertentu ( sesuai dengan datasheet dari LCD tersebut ) dan berikutnya set EN ke logika
low 0 lagi.
RS (Register Select)
Ketika RS berlogika low 0, data akan dianggap sebagai sebuah perintah atau
instruksi khusus ( seperti clear screen, posisi kursor dll ). Ketika RS berlogika high
1, data yang dikirim adalah data text yang akan ditampilkan pada layar LCD.
Display Data RAM ( DD RAM ) akan menyimpan kode dari karakter yang akan
ditampilkan pada layar dan data tersebut akan dibandingkan dengan Code Generator ROM (
CG ROM ) yang berisi bitmap font untuk setiap karakter standar. Dengan kata lain semua
kode karakter standar telah disimpan dalam memori ( CG ROM ) sehingga LCD Karakter
Instruksi Set Posisi Kursor adalah 80h, untuk itu perlu ditambahkan alamat lokasi
dimana karakter akan ditampilkan. Contoh untuk menampilkan test dengan posisi awal
kursor berada pada baris pertama kolom pertama, maka alamat memorinya adalah 00h,
kemudian ditambahkan dengan 80h sehingga hasilnya 80h ( 00h + 80h = 80h ).
128 Laboratorium
GAMBAR 6. 4 T ABEL DATA NIBBLESistem
PADAKomputer
CGRAMLanjut Universitas Gunadarma
T ABEL 6. 2 T ABEL K ODE ASCII
a. Disabled
Jika sinyal LCD_E mendapat logika low maka semua input yang diberikan ke LCD
tidak akan berpengaruh.
b. Clear Display
Perintah ini digunakan untuk menghapus layar dan mengembalikan posisi kursor ke
lokasi awal (pojok kiri atas).
e. Display On/Off
DB.2 (D) = 0 : Display OFF, karakter tidak ditampilkan
DB.2 (D) = 1 : Display ON
DB.1 (C) = 0 : Cursor OFF, posisi kursor tidak ditampilkan
DB.1 (C) = 1 : Cursor ON
DB.0 (B) = 0 : Blink OFF, kursor blink tidak ditampilkan
DB.1 (B) = 1 : Blink ON
g. Function Set
Digunakan untuk mengatur lebar data, jumlah baris yang digunakan dan font karakter.
DL = 0 : Lebar data interface 4 bit (DB7 s/d DB4)
DL = 1 : Lebar data interface 8 bit (DB7 s/d DB0)
Langkah langkah :
5. Klik New Source => ketik nama file namenya lcd_kar pilih VHDL Module =>klik next
=> input dan outputnya dikosongkan saja seperti dibawah ini:
Source 1
Source 2
9. Lalu save
10. Pada bagian tab Processes pada Synthesize-XST klik tanda + klik kanan Check Syntax
pilih Run
11. Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run
12. Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan pilih
Run =>pilih yes
13. Isikan LOC pin seperti gambar berikut:
KESIMPULAN :
M y L 4 b
SOURCE CODE :
Langkah langkah :
1. Ikuti semua langkah langkah seperti percobaan sebelumnya ( simpan dengan nama
lcd_memori ).
2. Lalu lengkapi source code berikut ini:
Source 1
Source 3
OUTPUT :
KESIMPULAN :
1 a c p g
s l f a
2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Catatan :
- Ubahlah nilai pengalamatan memori pada set_addr, set_addr2, dst. Tambahkan lagi
variabelnya jika perlu.
SOURCE CODE :
I. Tujuan Praktikum :
Praktikan Dapat Mengenal dan Memahami Program VHDL pada
FPGA
Praktikan Dapat Merancang Program VHDL pada Pemrograman FPGA
menggunakan port VGA
Praktikan Dapat Memahami Penggunaan port VGA pada FPGA
II. Dasar Teori
Pengenalan Port VGA
Merancang Desain Program Menggunakan VHDL
Aplikasi Perancangan Program VHDL untuk port VGA
III. Peralatan
FPGA XILINX SPARTAN 3E
Adaptor 5 Volt
1 buah PC
Sebuah konektor VGA 15-pin tiga baris DE-15 konektor. 15-pin konektor
VGA ditemukan pada banyak kartu video, monitor komputer, dan beberapa set televisi
definisi tinggi. VGA konektor dan kabel komponen RGBHV membawa analog (merah,
hijau, biru, horizontal sync, sync vertikal) sinyal video, dan data. Pada komputer laptop
atau perangkat kecil lainnya, port mini-VGA kadang-kadang digunakan sebagai pengganti
konektor VGA berukuran penuh.
Hal ini juga disebut konektor RGB, D-sub 15, mini sub D15, mini konektor
D15, HD-15, atau HD15 (High Density 15), DE-15, atau DE15, yang membedakannya
dari konektor dengan ukuran yang sama tetapi dengan hanya dua baris pin. Kadang-
kadang, konektor ini disebut sebagai "DB-15" atau sebagai ""-15 HDB.
Port VGA didalam FPGA digunakan sebagai output dari hasil program
didalam FPGA, dimana program tersebut merupakan program untuk mengontrol tampilan
grafik yang nantinya akan ditampilkan pada monitor. Namun FPGA hanya dapat
menampilkan grafik tidak lebih dari resolusi 640 x 480.
Percobaan 1 :VGA1
Langkah-Langkah:
5. Klik new source->ketik nama file namenya Vga_Module pilih VHDL Module->klik
next- > input dan outputnya dikosongkan saja.
6. Klik next terus hingga Finish-> pilih yes
7. Klik next->pilih next lagi->lalu Finish
8. Lengkapi source codenya->
Source2
9. L alus ave
10.Pada bagian tab Processes pada Synthesize-XST klik tanda+ klik kanan Check
Syntax pilih Run.
11.Pada bagian tab Processes pada Synthesize-XST klik kanan pilih Run
12.Klik tanda + pada User Constraints pilih Assign Package Pins dengan klik kanan
pilih Run->pilihyes.
13.Isikan LOC pin seperti gambar berikut:
OUTPUT:
KESIMPULAN:
SourceCode:
KESIMPULAN:
SoureCode:
KESIMPULAN:
dibawah ini.
Source1
Source2
KESIMPULAN:
SourceCode:
KESIMPULAN:
Biru
Kuning
SourceCode:
KESIMPULAN:
Buatlah Shematic IC yang terdiri dari 2Bit Adder dan 2Bit Subtractor (Inputan dan
Keluaran berasal dari port yang sama).
Schematic :
Studi Kasus II
Buatlah Program, Jika Switch 1 di geser maka program akan melakukan Up Counter
dan jika switch 2 digeser maka program akan melakukan Down Counter.
Code :
F 3 ! l D p R 0 g 4 m m 4 b 1
G 4 T 3 4 r R @ y
Code :
Studi Kasus IV
Code :
Code :
Studi Kasus VI
Buatlah program yang menampilkan output berupa nilai hexa ASCII dari tombol keyboard
yang ditekan. (3,5,!,#,a,f,spasi, crtl)
Code :