FPGA Data Type

Bahasa pemrograman VHDL mempunyai beberapa
tipe data dasar yang telah ada didalamnya. Adapun tipe data dasar tersebut
adalah bit, boolean, bit_ vector,
integer dan
real. Masing – masing tipe data memiliki struktur dan penggunaan yang
berbeda. Pada pemrograman VHDL terdapat banyak sekali tipe data dimana tipe
data tersebut tergantung dari VHDL package library yang di-include-kan kedalam program. Misalkan tipe data std_ logic_ vector harus
memasukkan library IEEE standard dan masih banyak lagi yang lainnya. Tipe data
yang akan dibahas pada sub bab ini adalah tipe data dasar yang telah
terbuilt-in dalam bahasa pemrograman VHDL. Untuk tipe data yang bersifat
eksternal akan dibahas secara on-the run
bersama dengan praktik pemrograman FPGA.
Tipe data : BIT
Tipe data bit adalah tipe data logika paling sederhana yang ada didalam
bahasa pemrograman VHDL. Tipe data tersebut mempunyai dua nilai yaitu ‘0’ dan
‘1’. Adapun contoh dalam mendeklarasikan tipe data bit adalah seperti berikut
ini:
signal ina : bit;
variable inb : bit :=’0’;
Ina <= inb and inc;
Ind <= ‘1’ after 10 ns;
Tipe data : Boolean
Tipe data boolean adalah tipe data yang umum digunakan pada program
pembuat keputusan. Nilai yang dibandngkan pada fungsi If then else harus bertipe boolean. Adapun contoh dalam
mendeklarasikan tipe data boolean adalah seperti berikut ini:
signal test1: Boolean;
variable test2: Boolean :=false;
Tipe data : Integer
Tipe data numerik dasar pada bahasa
pemrograman VHDL adalah integer. Tipe data integer memiliki jangkauan -2147483647
sampai +2147483647. Penggunaan tipe data integer sangat mempengaruhi proses
sintesis terutama pada penggunaan jumlah bit. Oleh karena itu sangat penting
untuk mendefinisikan nilai maksimal
dari tipe data integer untuk membatasi jumlah
penggunaan pin I/O pada chip FPGA. Semakin besar
nilai maksimal yang di definisikan maka semakin banyak pula pin I/O yang
digunakan. Adapun contoh dalam mendeklarasikan tipe data integer
adalah seperti berikut ini:
Signal int1: integer := 256;
Variable int2 :integer :=124;
Tipe data : Real
Bilangan float (real) digunakan untuk
mendefinisikan nilai pecahan. Bilangan float pada VHDL mempunyai jangkauan -1.0e38
sampai +1.0e38. Beberapa
vendor yang tidak menyertakan fitur bilangan float pada software sintesisnya,
maka pengguna harus menambahkan library eksternal untuk dapat memeproses tipe
data float/real. Altera (Intel) termasuk vendor yang telah menyertakan library
float/real untuk memberi keleluasaan pengguna dalam merancang hardware yang
sesuai dengan kebutuhan. Sebelum mendesain FPGA sebaiknya pastikan terlebih
dahulu fitur – fitur yang disediakan oleh vendor. Untuk
lebih jelasnya mengenai pendeklarasian
tipe data real adalah seperti berikut ini:
signal realno : real;
variable realno :real := 123.456;
Tipe data : Time
Tipe data waktu (time) didefinsikan dengan
cara yang agak berbeda dari tipe data lainnya. Pendefinsian waktu tidak hanya
mendefisnikan nilai dari
variabel, akan tetapi harus dilengkapi dengan satuan.
Penulisan antara waktu dan satuan harus dipisahkan oleh spasi. Jangkauan tipe
data waktu adalah -2147483647 sampai +2147483647. Tipe satuan data dasar dari
waktu dinyatakan dengan fs atau femto-second. Satuan waktu lainnya diturunkan
dari satuan femto-second. Adapun contoh penulisannya adalah sebagai berikut
ini:
fs= 100 fs;
ps = 1000 ps;
ns = 1000 ns;
us = 1000 us;
sc = 1000 sec;
hr = 1000 min;
Sedangkan contoh pendeklarasian tipe data
waktu adalah seperti berikut ini:
delay : time := 10 ns;
wait for 20 us;
y<= x after 10 ms;
Tipe variabel dasar dan operator
Pada pemrograman VHDL terdapat beberapa
tipe variabel dan operator yang dapat diguankan untuk membuat fungsi – fungsi yang spesifik.
Beberapa tipe variabel dasar diantaranya adalah konstanta, signal dan variable. Sedangkan
untuk dasar operator terdapat beberapa tipe operator diantaranya operator boolean,
aritmatik, pembanding, shifting dan concatenation.
Constant
Constant atau konstanta digunakan untuk menetapkan sebuah nilai yang bersifat
tetap dan tidak dapat berubah. Penggunan kosntanta sering digunakan untuk
menginsialisasi parameter atau untuk menetapkan nilai sebuah variabel yang
digunakan untuk pembanding. Sebuah konstata dapat di deklarasikan untuk
berbagai tipe data di VHDL. Adapun contohnya adalah sebagai berikut ini:
constant a : integer := 1;
constant b : real := 0.123;
constant c : std_logic :=‘0’;
Signal
Signal adalah sebuah variabel penghubung
yang menghubungkan antara proses dan elemen sekuensial didalam sebuah proses.
Signal menghubungkan semua elemen desain menjadi satu kesatuan. Sebuah nilai
dapat di masukkan ke dalam signal secara langsung atau dengan menggunakan waktu
tunda. Adapun contoh dari penggunaan sintak signal adalah sebagai berikut ini:
signal sig1 :integer :=0;
signal sig2 :integer :=1;
sig1 <= 14;
sig2 <= sig1 after 10 ns;
Signal sig1
didefinisikan sebagai interger dengan nilai awal 0. Sedangkan signal sig2 didefisinisikan sebagai integer
dengan nilai awal 1. Signal sig1 akan diset dengan nilai 14 secara langsung.
Sedangkan nilai sig2 akan di set dengan nilai sig 1 sebesar 14 setelah 10 nano
detik.
Variable
Signal adalah penghubung yang menghubungkan
antara beberapa proses sedangkan variable adalah sebuah nilai yang terdapat pada proses. Variabel
hanya digunakan pada proses sekuensial. Tidak seperti signal yang digunakan pada proses
yang bersifat concurrent. Variabel digunakan didalam sebuah proses yang di
deklarasikan seperti berikut ini:
variable var1 :integer :=0;
variable var2 :integer :=1;
Pada contoh
diatas variabel var1 dan var2 dideklarasikan
sebagai variable integer dengan
nilai 0 dan 1. Penggunaan variable tidak dapat dipadukan dengan waktu tunda.
Jika menginginkan sebuah event yang bersifat terjadwal, dapat digunakan signal
sebagai solusinya.
Operator Boolean
Bahasa pemrograman VHDL memeiliki operator
standar boolean yaitu and, or,nand,not, nor dan xor. Operator boolean dapat
digunakan untuk tipe data logic, bit dan boolean. Adapun contoh nya adalah seperti berikut
ini:
out1 <= in1 and in2;
out2 <= in3 or in4;
out3 <= not in5;
Nilai out1 akan bernilai dari hasil operator
logika AND antara in1 dan in2. Nilai out2 akan
bernilai dari hasil operator logika OR
antara in3 dan in4. Sedangkan nilai out3
adalah nilai komplemen atau kebalikan dari nilai in5.
Operator aritmatik
Untuk mendukung operasi aritmatik, VHDL telah menyediakan
satu set perintah aritmatik yang dapat digunakan untuk membangun fungsi
aritmatik pada chip FPGA. Adapun fungsi – fungsi aritmatik yang terdapat pada
VHDL adalah sebagai berikut ini:
Tabel
4.1 : Daftar fungsi aritmatik pada bahasa pemrograman VHDL
Operator |
Keterangan |
Contoh penggunaan |
+ |
Penjumlahan |
Out1
<= in1 +in2; |
- |
Pengurangan |
Out1
<= in1 – in2; |
* |
Perkalian |
Out1
<= in1*in2; |
/ |
Pembagian |
Out1
<= in1/in2; |
Abs |
Nilai
absolute |
Out1
<= abs(in1); |
Mod |
Modulus |
Out1
<= mod(in1); |
Rem |
Sisa |
Out1
<= rem(in1); |
** |
Pangkat |
Out1
<= in1 **3; |
Operator Pembanding
Untuk membandingkan antara dua buah nilai atau lebih maka diperlukan ope rator pembanding. Bahasa pemrograman VHDL memiliki beberapa operator pembanding, seperti pada table dibawah ini:
Tabel
4.2 : Daftar operator pembanding pada bahasa pemrograman VHDL
Operator |
Keterangan |
Contoh penggunaan |
= |
Sama
dengan |
In1=in2; |
/= |
Tidak
sama dengan |
In1/=in2; |
< |
Kurang
dari |
In1>in2; |
<= |
Kurang
dari sama dengan |
In1<=in2; |
> |
Lebih
dari |
In1>in2; |
>= |
Lebih
dari sama dengan |
In1>=in2; |
Fungsi Shifting
Fungsi shifting
digunakan untuk memanipulasi bit dengan cara menggeser bit ke kiri atau ke
kanan sesuai dengan tujuan yang ingin dicapai. Untuk melakukan manipulasi bit,
dapat digunakan fungsi – fungsi shifting
seperti yang terdapat pada table di bawah ini:
Tabel
4.3 : Daftar fungsi shifting pada bahasa pemrograman VHDL
Operator |
Keterangan |
Contoh penggunaan |
Sll |
Shift
Left Logical |
Reg
<=reg sll 2; |
Srl |
Shift
Right Logical |
Reg
<=reg srl 2; |
Sla |
Shift
Left Arithmatic |
Reg
<=reg sla 2; |
Sra |
Sihft
Right Arithmatic |
Reg
<=reg sra 2; |
Rol |
Rotate
Left |
Reg
<=reg rol 2; |
Ror |
Rotate
Right |
Reg
<= reg ror 2. |
Fungsi Concatenation
Fungsi concatenation digunakan untuk
menggabungkan bit dari dua atau lebih variabel ataupun signal. Fungsi concatenation disimbolkan dengan symbol
“&”. Untuk lebih jelasnya lihat contoh potongan program VHDL berikut ini:
A<= ‘111’;
B<= ‘000’;
out1 <= A&B;
Pada contoh program diatas nilai A di isi dengan nilai 111 sedangkan nilai B diisi dengan nilai 000. Jika dilakukan operasi concatenation maka variable out1 akan berisi 111000. Dimana nilai 111000 adalah
penggabungan antara nilai 111 dari
variable A dan nilai 000 dari variabel B.
Leave your comment