Showing posts with label Sistem Digital. Show all posts
Showing posts with label Sistem Digital. Show all posts

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.

Tipe Data Standar
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 :



a. Package standard of library std. Tipe data yang masuk jenis ini adalah tipe bit, boolean, integer, dan real.
b. Package std_logic_1164 of library ieee. Tipe data yang masuk jenis ini adalah std_logic dan std_ulogic.
c. 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).

Perhatikan, berikut beberapa aturan tipe data std dalam VHDL:

a. Tipe data Boolean : True, False
b. Tipe data Integer : berisi 32 bit integer (mulai dari -2.147.483.647 s/d +2.147.483.647)
b. Tipe data natural : adalah bilangan non negatif dari integer (mulai dari 0 s.d +2,147,483,647)

Tipe Data Pengguna
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

a. Tipe integer yang memiliki jangkauan -2.147.483.647 s/d +2.147.483.647 (mirip dengan tipe data standar)
b. Tipe natural yang memiliki jangkauan 0 s/d +2.147.483.647 (mirip dengan tipe data standar)
c. Tipe my_integer yang memiliki jangkauan -32 s/d 32 (tipe data yang ditentukan sendiri oleh user)
d. Tipe nilai_murid yang memiliki jankauan 0 s/d 100 (tipe data yang ditentukan sendiri oleh user)


2. Tipe enumerated

a. Tipe bit yaitu ‘0’ dan ‘1’
b. Tipe my_logic yaitu ‘0’, ‘1’, dan ‘Z’ (ditentukan sendiri oleh user)
c. Tipe keadaan yaitu idle, stop, backward, forward (ditentukan sendiri oleh user)
d. Tipe warna misalnya merah, hijau, putih (ditentukan sendiri oleh user)

Labels:

Artikel ini merupakan kelanjutan dari artikel sebelumnya, “Mengenal VHDL”. Untuk kali ini, tulisan ini akan membahas sekelumit tentang satu kesatuan atau yang lebih dikenal dengan entity. Entity ini 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.

Definisi Entity

Entity memberikan arti tentang bagaimana sebuah bagian rancangan dideskripsikan di VHDL dalam hubungannya dengan model VHDL lain dan juga memberikan nama untuk model tersebut. Di dalam entity juga diperbolehkan untuk mendefinisikan beberapa parameter yang mengambil model menggunakan hierarki. Kerangka dasar untuk sebuah entity digambarkan sebagai berikut :

entity is

….

entity ;

Misalkan sebuah entity diberi nama “test”, maka kerangka entity tersebut akan menjadi :

entity test is

end entity test;

atau

entity test is

end test;


Ports
Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah menggunakan PORTS. Hal ini didefinisikan bahwa entity menggunakan metode sebagai berikut:

port (

…list of port declarations…

);

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;

Dan jika model tersebut memiliki 2 input (in1 dan in2) dan satu output (out1), maka deklarasi ports dapat digambarkan berikut:

port (

in1, in2 : in bit;

out1 : out bit
);


Dengan menngunakan ports maka titik koneksi diantara entities akan berlangsung dengan efektif dalam hal proses koneksi entities satu sama lain. Selain itu, dengan menggunakan ports akan menjadikan sinyal yang ada menjadi efektif serta cocok digunakan dalam model VHDL.

Generics
Jika sebuah contoh memiliki sebuah parameter, maka contoh tersebut dapat didefinisikan menggunakan generics. Deklarasi umum dari generics ditunjukan berikut:

generic (

…list of generic declarations…

);

Pada beberapa kasus dari generics, deklarasinya mirip dari sebuah constant dengan bentuk yang ditunjukkan sebagai berikut:

param1 : integer := 4;

Misalnya saja sebuah model yang memiliki 2 generics (gain(integer) dan time_delay(time)), keduanya dapat didefinisikan dalam sebuah entity sebagai berikut:

generic (

gain : integer := 4;

time_delay : time = 10 ns

);


Constants

Selain hal-hal yang disebutkan di atas, contoh spesifik constant dapat dideklarasikan menggunakan metode sebelumnya sebagai berikut:

constant : rpullup : real := 1000.0;

Contoh Entity
Untuk menggambarkan keseluruhan sebuah entity, ports dan generics dapat digunakan secara bersama. Maka inilah sebuah contoh bentuk entity yang lengkap, mengacu dengan beberapa contoh sebelumnya :

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;

Labels:

Tulisan ini akan mengulas sekelumit tentang kode yang sering digunakan di dalam FPGA. Kode tersebut adalah VHDL (Very high speed integrated Hardwere Description Language). Tulisan ini dan beberapa tulisan mendatang akan membahas konsep penting dalam VHDL serta aturan penulisan (syntax) kode tersebut. Konsep serta syntax banyak diperlukan untuk mengerti bagaimana rancangan VHDL sebagai bagian dari pemrograman FPGA. Dalam kebanyakan kasus, keputusan memilih dan menggunakan kode VHDL daripada kode Verilog atau SystemC, sangat tergantung pada pilihan perancang itu sendiri dan lebih kepada ketersediaan software pendukung serta kebutuhan perusahaan.

Lebih dari satu dekade, terjadi perdebatan panjang yang tek 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.

Selanjutnya, tanpa menurunkan kualitas tulisan dengan membahas perbedaan diantara VHDL dan Verilog, satu hal penting tentang keunggulan VHDL adalah kemampuannya untuk menggunakan gabungan level dari model yang memiliki arsitektur yang berbeda seperti ditunjukkan sebagai berikut :


Hal tersebut memang bukanlah keunikan atau ciri khas VHDL. Namun, pada kenyataannya kode Verilog juga memiliki konsep sama walaupun hanya terdapat dalam sebuah “module”. Meskipun demikian, keungulan itu secara eksplisit didefinisikan dalam VHDL dan secara praktis digunakan bersama oleh rancangan multi-level dalam VHDL. Pembagian sebuah model ke dalam beberapa bagian juga merupakan keuggulan lain dari VHDL. Misalnya, bagian interface (dalam VHDL dikenal sebagai “entity’) dan bagian kelakuan atau behaviour (dalam VHDL dikenal sebagai “architecture”). Bagian-bagian tersebut adalah pendekatan praktis yang luar biasa untuk bentuk model yang memiliki multiple behaviour dalam sebuah interface. Selain itu bentuk model tersebut memungkinkan terjadi pertukaran dan implementasi multiple secara terus menerus. Hal inilah salah satu pembeda VHDL dengan Verilog.

Selanjutnya, tulisan mendatang akan menggambarkan beberapa kunci penting dari VHDL, yang akan dimulai dari definisi dari sebuah model dasar menggunakan entities dan architecture, membahas pentingnya tipe-tipe variabel, review terhadap metode bersama encapsulation, sekuensial, dan kelakuan (behaviour). Bagian terakhir akan memberikan pengenalan dasar terhadap jenis-jenis data yang dibutuhkan dalam VHDL.

Labels: