Prosedur dalam VHDL

Jika tulisan sebelumnya telah membahas function, component, dan packages sebagai bagian dari berkas yang nantinya dapat disimpan dalam library, maka tulisan berikut akan membahas bagian selanjutnya, yakni PROCEDURES. Sebuah procedures hampir mirip dengan sebuah function karena memiliki fungsi yang sama. Perbedaannya, sebuah procedures mampu mengembalikan lebih dari satu nilai sedangkan function hanya 1 saja. Layaknya sebuah function, ada 2 bagian yang dibutuhkan  untuk menyusun procedures yaitu : deklarasi procedures (procedures body) dan deklarasi pemanggilan procedures tersebut. Berikut syntax procedure :

parameter

Berdasarkan syntax di atas, <parameter list> menunjukan input dan output yang spesifik bagi procedures yaitu :

<parameter list> = [CONSTANT] constant_name: mode type;

<parameter list> = [SIGNAL] signal_name: mode type;

<parameter list> = Variable variable_name: mode type;

Sebuah procedures dapat memiliki beberapa parameter IN, OUT, atau INOUT, yang bisa berupa SIGNAL, VARIABLES, atau CONSTANT. Biasanya untuk sinyal input (mode IN) adalah CONSTANT, sedangkan untuk sinyal output (mode OUT atau INOUT) adalah VARIABLE. Seperti yang diketahui, deklarasi WAIT, component maupun SIGNAL tidak synthesizable dalam function. Hal yang sama berlaku untuk procedures dengan pengecualian bahwa SIGNAL dapat dideklarasikan tapi kemudian procedure harus dideklarasikan terlebih dahulu dalam sebuah process.

Contoh Kasus:

Sebuah procedure memiliki 3 input yaitu a,b, dan c (mode IN). Input a adalah sebuah constant yang memiliki tipe bit. Sedangkan b dan c adalah sebuah signals yang juga bertipe bit. Perhatikan bahwa constant dapat diabaikan sebagai input parameter, terutama untuk objek yang biasa. Selain itu, juga terdapat 2 jenis sinyal kembalian, x (mode Out, bertipe BIT_VECTOR) dan y (mode INOUT bertipe integer). Syntaxnya:

PROCEDURE my_procedure(a : IN BIT; SIGNAL b, c: IN BIT; SIGNAL x: OUT BIT_VECTOR(7 DOWNTO 0);

SIGNAL y: INOUT INTEGER RANGE 0 TO 99) IS

BEGIN

END my_procedure;

Procedure Call

Berbeda dengan sebuah function, yang dapat dipanggil hanya dengan mendeklarasikan bagian tertentu, pemanggilan sebuah procedure dapat dilakukan dengan cara mendeklarsikan secara langsung procedure tersebut. Selain itu dapat juga dipakai cara mendeklrasikan bagian yang berhubungan dengan proses yang akan dilakukan procedure tersebut.

Procedure Location

Lokasi penempatan untuk sebuah procedure mirip dengan function yang telah dibahas pada tulisan terdahulu. Sebuah procedure dapat diletakkan di dalam package (untuk tujuan pembagian kode, penggunaan ulang kode, dan untuk tujuan code share). Selain di dalam package, sebuah procedure juga dapat diletakkan pada kode utama dalam vhdl (baik dalam entity atau sebagai bagian deklarasi dari architecture). Ketika diletakkan pada sebuah package maka otomatis dibutuhkan body package yang harus berisi tiap-tiap deklrasi procedure. Deklrasi procedure tersebut harus sebagai bagian pernyataan dari sebuah package.

Referensi :

  • A VHDL Primer: The Essentials, Design Recipes for FPGA by Peter Wilson, published by Newness Publications.
  • Circuit Design with VHDL by Volnei A. Pedroni, published by MIT Press.

Mungkin Anda juga menyukai

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.