Tags : PemrogramanAltera8051MikroprosesorProgrammablePLCrobotMikrokontrolerVHDLTeknologichipMCS-51FPGA
Home » FPGA » Component

Component

Oleh , 31 Juli 2009.

Sebagai lanjutan tulisan sebelumnya, berikut akan dijelaskan mengenai component. Sebuah component merupakan salah satu cara pembuatan berkas dalam rancangan bertingkat dalam VHDL. Selain component, dikenal juga istilah packages, function, dan procedures.  Berkas-berkas tersebut akan ditempatkan dalam library agar nantinya kode-kode yang terdapat pada berkas tersebut dapat digunakan lagi oleh rancangan lain.

Definisi dari component yaitu bagian sederhana dalam kode konvensional (seperti entity, architecture, dan library). Selanjutnya, dengan mendeklarasikan kode yang disebut component maka kode tersebut dapat dipakai untuk rangkaian lain mengikuti perancangan dari sistem bertingkat. Perlu diperhatikan bahwa terdapat 2 versi untuk metode component ini yaitu versi 1987 dan versi 1993. Jika menggunakan salah satu versi component maka sebaiknya konsisten untuk terus menggunakan versi tersebut. Hal ini berguna untuk menghindari kekacauan kode yang ditulis dalam component tersebut.

Beberapa fungsi component yaitu membagi-bagi sebuah kode yang kompleks dan panjang agar tidak terlalu rumit dan mudah dikoreksi serta  menyediakan kode untuk keperluan share antar rancangan. Selain itu jika fungsi lain component yakni menjadikan suatu kode dapat digunakan lagi oleh rancangan lain. Fungsi-fungsi yang sama tersebut terdapat misalnya pada library. Dalam library biasanya telah terdapat rangkaian flip flop, multiplexer, adder, dsb. Jadi ketika ingin menggunakan component maka berkas kode component tersebut tinggal dipanggil saja tanpa harus mendeklarasikan ulang.

Untuk menggunakan component, maka langkah pertama yang harus dilakukan adalah mendeklarasikannya. Syntax untuk pendeklarasian component :

COMPONENT component_name  IS

PORT (

port_name : signal_mode signal_type;

port_name : signal_mode signal_type;

…);

END COMPONENT;

Sedangkan untuk pemanggilan component dapat dliakukan dengan cara :

label: component_name PORT MAP (port_list);

Seperti yang terlihat, syntax dari component hampir mirip dengan syntax entity. Hal ini terlihat bahwa dalam component juga memerlukan nama yang spesifik beserta modelnya (IN, OUT, BUFFER, INOUT). Selain nama, di dalam component juga terdapat tipe data (STD_LOGIC_VECTOR, BOOLEAN, INTEGER, dsb). Perlu diperhatikan bahwa untuk memakai component, perlu memanggilnya lebih dulu, sesuai dengan nama component dan deklarasi dari PORT MAP nya. Sebagai tambahan, port_list hanyalah daftar jalur port pada sirkuit yang ada pada port rancangan yang hendak digunakan.

Sebuah component dapat dideklarasikan dengan menggunakan dua buah cara. Cara yang pertama, adalah mendeklarasikan berkas component satu per satu. Kemudian semua berkas component itu disimpan dalam library. Selanjutnya, untuk menggunakan component itu, perlu dipanggil memanggil library yang telah berisi component tadi. Sedangkan cara kedua adalah mendeklarasikan component satu per satu dalam sebuah packages. Seperti yang telah diketahui, packages merupakan berkas yang paling luas yang mampu mencakup function, procedures, dan component itu sendiri. Selanjutnya, packages yang telah berisi semua component disimpan dalam library. Untuk menggunakan component, perlu dipanggil library yang telah memuat berkas-berkas component tadi. Berikut terdapat gambar yang akan menjelaskan cara pendeklarsian component :

pendeklarasian component langsung

Pendeklarasian Component Secara Langsung

pendeklarasian component lewat packagesPendeklarasian Component Melalui Packages

Cara pendeklarsian component masing-masing, baik secara langsung maupun melalui packages dapat berfungsi sama baiknya. Hasil yang didapatkan juga sama baiknya.

PORT MAP

Ketika sebuah component diperlukan maka perlu adanya perintah pemanggilannya. Aturan syntax untuk memanggil component yaitu :

label: component_name PORT MAP (port_list);

Ada dua buah cara  memakai PORT MAP untuk penggunaannya dalam component, yakni positional mapping dan nominal mapping. Perhatikan contoh berikut:

COMPONENT inverter IS

PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC);

END COMPONENT;

U1: inverter PORT MAP (x, y);

Contoh diatas adalah  sebuah contoh untuk positional maping. Hal ini terlihat bahwa port x dan y  secara beurutan terhubung dengan a dan b. Sedangkan contoh untuk nominal mapping adalah

U1: inverter PORT MAP (x=>a, y=>b);

Secara kasat mata, terlihat jelas perbedaan antara nominal mapping dengan positional mapping. Bila dalam nominal mapping, port x dan y secara langsung dihubungkan dengan a dan b menggunakan tanda “=>”. Berbeda dengan positional mapping yang perlu dideklarsikan dahulu port-port nya. Salah satu keunggulan positional mapping adalah kemudahan dalam penulisan. Sedangkan keunggulan dari nominal mappping yaitu cenderung dapat mengurangi kesalahan penulisan. Selain itu, bila menggunakan nominal mapping sebuah port juga dapat tidak dihubungkan sama sekali dengan yang lain (menggunakan kata kunci OPEN). Misalnya,

U2: my_circuit PORT MAP (x=>a, y=>b, w=>OPEN, z=>d);

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.
· kirim komentar

Komentar

Tambahkan komentar anda di bawah, atau trackback dari situs anda. Berlangganan komentar ini melalui RSS.

Silahkan berdiskusi yang padat dan berisi. Tetap pada topik. Dilarang spam.