Hierarchial Design
Pada tulisan terdahulu telah banyak membahas sedikit banyak mengenai dasar-dasar serta teknik penulisan kode dalam VHDL. Beberapa diantaranya adalah entity, architcture, basic type variables and operator, decisions, loops, dsb. Artikel kali ini akan membahas sesuatu yang baru yang masih terkait dengan VHDL yaitu membahas mengenai bagaimana membuat sebuah berkas kode secara sederhana. 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.
Selanjutnya berkas-berkas ada 4 cara pembuatan berkas yang nantinya dapat disimpan dalam library. Keempat cara tersebut adalah
- Function
- Packages
- Components
- Procedures
Secara umum, gambaran dari keempat berkas tersebut yaitu:
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.
Packages
Bagian pertama berkas yang akan dibahas yaitu PACKAGES. Seperti terlihat pada gambar di atas, packages merupakan bagian berkas yang luas karena bisa terdiri atas berkas-berkas lain seperti component, funtion, dan procedures. Semua berkas yang terdapat dalam packages, termasuk berkas packages sendiri nantinya akan dikumpulkan menjadi satu dan disimpan dalam sebuah library.
Sedangkan struktur untuk aturan penulisan packages yaitu:
package name is
…package header contents
end package;
package body name is
… package body contents
end package body;
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
function and10 (a,b,c,d,e,f,g,h,i,j : bit) return bit;
end
Sedangkan untuk bagian body, yaitu tempat untuk menjabarkan lebih lanjut deklarasi pada header, dapat ditulis:
package body new_functions is
function and10 (a,b,c,d,e,f,g,h,i,j : bit) return
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
function and10 (a,b,c,d,e,f,g,h,i,j : bit) return bit;
end;
package body new_functions is
function and10 (a,b,c,d,e,f,g,h,i,j : bit) return
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:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE work.my_package.all;
ENTITY…
…
ARCHITECTURE…
…
Demikian sedikit banyak pembahasan mengenai tentang packages. Artikel selanjutnya akan membahas mengenai component, function, dan procedure.
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.

