VHDL Basic Syntax

Sintak dasar VHDL
Sebelum
mempelajari pemrograman VHDL secara lebih lanjut, ada beberapa sintak – sintak
dasar yang harus diketahui dna dipahami. Terlebih lagi bagi pembaca yang di
kategrorikan masih pemula, maka wajib untuk mempeleajari sintak – sintak dasar
yang digunakan pada bahasa pemrograman VHDL.
Entity
Entity atau entitas
adalah deskripsi antarmuka antara desain dan dunia luar. Entity dapat juga digunakan untuk menspesifikasikan deklarasi dan
pernyataan-pernyataan yang merupakan bagian dari desain entitas. Template dasar entity adalah seperti berikut ini:
entity <name> is
....
entity <name>;
Sebagai contoh jika sebuah entity mempunyai nama test, maka penulisan entity dalam VHDL
adalah sebagai berikut ini:
entity test is
end entity test;
atau
entity test is
end test;
Port
Port adalah saluran yang digunakan untuk berkomunikasi
secara dinamis antara blok desain IC dan dunia luar. Port didefinsikan
pada entity dengan menggunakan metode berikut ini:
port (
...deklarasi port...
);
Deklarasi port mendefinisikan
tipe koneksi dan arah data (data
direction). Misalkan sebuah input bertipe bit dideifisnikan sebagai in1, maka pendeklarasiannya adalah
sebagai berikut ini:
in1 : in bit;
Dan jika sebuah model mempunyai dua input ( dengan nama variabel in1 dan in2) bertipe bit dan
satu output (dengan nama variabel out1)
bertipe bit, maka untuk
mendeklarasikan port adalah seperti berikut ini:
port (
in1, in2 : in bit;
out1 : out bit
);
Generic
Generic adalah sebuah konstanta antarmuka yang dideklarasikan pada blok
header dari sebuah block pernyataan, deklarasi komponen, atau deklarasi
entitas. Generic menyediakan informasi
statis yang dideklarasikan pada sebuah block kode VHDL. Jika sebuah model VHDL mempunyai parameter, maka dapat digunakan
sintak generic untuk medeklarasikan parameter- parameter tersebut. Deklarasi
sintak generic adalah seperti berikut ini:
generic (
...list of generic declarations...
);
Sintak generic memiliki fungsi
yang sama seperti konstanta dengan bentuk seperti berikut ini:
param1 :integer :=4;
Misalkan sebuah
model memilki dua generic (gain
bertipe integer dan time_delay bertipe time), kedua generic
tersebut dapat didefisnikan seperti berikut ini:
generic (
gain : integer := 4;
time_delay : time = 10 ns
);
Constant
Pada bahasa
pemrograman VHDL dapat digunakan untuk mendeklarasikan konstanta spesifik
kedalam sebuah entity dengan
menggunakan metode constant. Adapun contoh penggunaannya adalah seperti
berikut ini:
constant : rpullup : real := 1000.0;
Untuk mengilustrasikan contoh entity
yang lengkap, dapat dilihat seperti pada listing program dibawah ini:
entity test is
port (
in1, in2 : in bit;
out1 : out bit
);
generic (
gain : integer := 4;
time_delay : time := 10 ns
);
constant : rpullup : real := 1000.0;
end entity test;
Archictecture
Jika entity mendefinisikan aspek antarmuka (interface) dan parameter- parameternya, maka architecture mendefinisikan behaviour atau perilaku.
Terdapat beberapa jenis architecture dalam VHDL yang
memungkinkan penggunaan architecture yang berbeda untuk didefiniskan pada satu entity. Adapun tata cara pendeklarasian architecture
adalah seperti berikut ini:
architecture behavior of test is
..deklarasi architecture
begin
.. isi program architecture
end architecture behavior
atau dapat juga didefisnikan seperti
berikut ini:
architecture behavior of test is
..deklarasi architecture
begin
.. isi program architecture
end behavior
Setelah mendeklarasikan nama dari sebuah architecture dan sebelum memulai menulis
program pada architecture, signal
atau variabel dapat dideklarasikan pada architecture. Sebagai contoh, jika
terdapat dua signal internal (misalkan : sig1
dan sig2) pada sebuah architecture,
maka signal–signal tersebut dapat dideklarasikan seperti berikut ini:
architecture behavior of test is
Signal sig1,sig2: bit;
Begin
.. isi program
End behavior
Penulisan architecture pada bahasa
pemrograman VHDL dapat memilki struktur yang bervariasi tergantung berdasarkan
tujuan fungsional yang ingin dicapai.
Contoh program kombinasi sederhana yang melibatkan operasi and antara dua signal yang bernama sig1 dan sig2 untuk dapat menghasilkan sebuah bilangan baru adalah sebagai berikut
ini:
out1 <= sig1 and sig2;
Program diatas akan menghasilkan nilai
signal out1 dengan hasil operasi logika AND antara nilai sgnal sig1 dan sig2. Contoh architecture
yang terdiri dari kombinasi beberapa gerbang dengan menggunakan deklarasi
signal internal adalah seperti berikut ini:
architecture behavioural of test is
signal sig1, sig2 :bit;
begin
out1 <= sig1 and sig2;
out2 <= sig1 or sig2;
out3 <= sig1 xor sig2;
end architecture behavioural;
Process
Proses pada VHDL atau yang biasa ditulis
dengan “process” adalah sebuah
mekanisme eksekusi program di VHDL. Process terbentuk dari beberapa atau
kumpulan penryataan sekuensial. Adapun fitur-fitur process adalah seperti berikut ini:
- Process dieksekusi secara
parallel dengan process – process
yang lain.
- Sebuah process tidak dapat beriiskan
pernyataan concurrent (pernyataan yang dieksekusi secara parallel).
- Process didefinsikan pada architecture dimana setiap
statement yang berada didalam proses akan dieksekusi secara sekuensial
atau berurutan.
- Di dalam
sebuah proses harus dideifinisikan parameter sensitivity_list (dapat juga disebut dengan trigger atau
pemicu) secara eksplisit.
- Di dalam proses dapat berisi deskripsi fungsional
sama seperti bahasa pemrograman pada umumnya.
- Sebuah
process dapat mengakses signal yang dideklarasikan pada architecture
dimana sebuah proses didefinsikan.
Untuk mendeklarasikan proses sekuensial
dapat ditulis seperti pada program dibawah ini:
process sensitivity_list is
… bagian deklarasi
begin
… bagian listing program
end process
Bagian sensitivity_list adalah variabel pemicu yang digunakan
untuk mengaktivasi sebuah proses sekuensial. Adapun contoh penggunaannya adalah
sebagai berikut ini:
process (clk,rst) is
begin
… statement proses
end process;
Pada contoh program diatas, proses akan
dieksekusi jika terdapat perubahan nilai pada variabel clk (clock) atau rst
(reset). Metode lain yang digunakan untuk menjalankan operasi yang sama adalah
dengan meggunakan sintak wait.
Sintak wait akan menunggu tanda dari
sebuah trigger atau pemicu dan proses akan dieksekusi sekali. Untuk lebih
jelasnya lihat pada kode program VHDL dibawah ini:
process
begin
… statement process
wait on clk,rst;
end process;
Penempatan sintak wait dapat diletakkan di awal atau diakhir kode program. Program akan
dieksekusi sekali selama proses insialisasi. Selain menggunakan clock dan reset sebagai trigger, signal juga dapat digunakan sebagai trigger. Adapun contohnya adaah seperti
pada contoh program dibawah ini:
process (a) is
signal na :bit;
begin
na <= not a;
end process;
Program diatas akan mengekseskusi program
utama berdasarkan perubahan nilai dari signal
a yang dideklarasikan secara
eksternal atau tidak berada dalam satu architecture. Dimana pada program utama akan mengisi nilai
signal na dengan hasil dari operasi
logika not terhadap signal a.
Leave your comment