Sahabat Robonesia, parameter GENERIC dalam pemrograman VHDL merupakan mekanisme yang memungkinkan pengguna untuk menentukan nilai-nilai yang akan digunakan oleh suatu komponen (entitas) program VHDL tanpa perlu mengubah arsitektur atau kode internal komponen tersebut.
Table of Contents
Toggle6.1 Pengertian Parameter GENERIC
Parameter GENERIC adalah parameter yang didefinisikan dalam entitas suatu komponen VHDL. Parameter ini digunakan untuk menentukan nilai-nilai yang akan mempengaruhi perilaku komponen tersebut, dimana nilai-nilai tersebut dapat diubah saat komponen di-instantiasi dalam suatu desain, tanpa perlu mengubah kode sumber komponen. Dengan menggunakan parameter GENERIC, desain menjadi lebih fleksibel dan dapat digunakan kembali (reusable) untuk berbagai keperluan dengan konfigurasi yang berbeda.
6.2 Syntax Pembuatan Parameter GENERIC
Pernyataan GENERIC, jika digunakan, harus dideklarasikan dalam ENTITY. Parameter yang ditentukan kemudian akan benar-benar menjadi parameter global. Artinya, dapat dilihat dan diakses oleh seluruh bagian desain program VHDL, termasuk ENTITY itu sendiri. Syntax-nya sebagai berikut:
|
1 |
GENERIC (parameter_name : parameter_type := parameter_value); |
6.3 Langkah-Langkah Pembuatan Parameter GENERIC
Step 1: Deklarasi Parameter GENERIC.
Parameter GENERIC dideklarasikan di dalam bagian entitas suatu program VHDL. Nilai-nilai parameter GENERIC dapat berupa integer, waktu, atau tipe data lainnya.
|
1 2 3 4 5 6 7 8 9 10 11 |
ENTITY counter IS GENERIC ( WIDTH : INTEGER := 8; -- Lebar data (default: 8 bit) RESET_VALUE : INTEGER := 0 -- Nilai reset (default: 0) ); PORT ( clk : IN STD_LOGIC; reset : IN STD_LOGIC; data_out : OUT STD_LOGIC_VECTOR(WIDTH - 1 DOWNTO 0) ); END counter; |
Step 2: Penggunaan GENERIC dalam Arsitektur.
Nilai-nilai parameter GENERIC digunakan dalam arsitektur untuk menentukan perilaku komponen.
Contoh:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ARCHITECTURE behavioral OF counter IS SIGNAL count : UNSIGNED(data_out'LENGTH - 1 DOWNTO 0) := (OTHERS => '0'); BEGIN PROCESS(clk) BEGIN IF RISING_EDGE(clk) THEN IF reset = '1' THEN count <= (OTHERS => '0'); ELSE count <= count + 1; END IF; END IF; END PROCESS; data_out <= STD_LOGIC_VECTOR(count); END behavioral; |
Step 3: Instantiasi dengan Parameter GENERIC.
Saat meng-instantiasi komponen, nilai-nilai parameter GENERIC dapat diubah sesuai kebutuhan desain.
Contoh:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
COMPONENT counter GENERIC ( WIDTH : INTEGER := 16; -- Mengubah lebar data menjadi 16 bit RESET_VALUE : INTEGER := 100 -- Mengubah nilai reset menjadi 100 ); PORT ( clk : IN STD_LOGIC; reset : IN STD_LOGIC; data_out : OUT STD_LOGIC_VECTOR ); END COMPONENT; U0 : counter GENERIC MAP ( WIDTH => 16, RESET_VALUE => 100 ) PORT MAP ( clk => clk, reset => reset, data_out => data_out ); |
6.4 Contoh Lengkap Penggunaan Parameter GENERIC
Berikut adalah contoh lengkap penggunaan parameter GENERIC dalam pemrograman VHDL untuk membuat komponen counter yang dapat diatur lebar datanya:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
-- Mendefinisikan entitas dengan GENERIC ENTITY generic_counter IS GENERIC ( WIDTH : INTEGER := 8; -- Lebar data (default: 8 bit) RESET_VALUE : INTEGER := 0 -- Nilai reset (default: 0) ); PORT ( clk : IN STD_LOGIC; reset : IN STD_LOGIC; data_out : OUT STD_LOGIC_VECTOR(WIDTH - 1 DOWNTO 0) ); END generic_counter; -- Mendefinisikan arsitektur ARCHITECTURE behavioral OF generic_counter IS SIGNAL count : UNSIGNED(WIDTH - 1 DOWNTO 0) := (OTHERS => '0'); BEGIN PROCESS(clk) BEGIN IF RISING_EDGE(clk) THEN IF reset = '1' THEN count <= (OTHERS => '0'); ELSE count <= count + 1; END IF; END IF; END PROCESS; data_out <= STD_LOGIC_VECTOR(count); END behavioral; |
6.5 Manfaat Penggunaan Parameter GENERIC
- Reusabilitas: Komponen dapat digunakan kembali dengan konfigurasi yang berbeda tanpa perlu mengubah kode sumber.
- Fleksibilitas: Memungkinkan komponen untuk menyesuaikan diri dengan kebutuhan desain yang berbeda.
- Kemudahan Perawatan: Perubahan pada komponen dapat dilakukan hanya dengan mengubah nilai-nilai parameter GENERIC, tanpa perlu memodifikasi kode internal.
6.6 Batasan Penggunaan Parameter GENERIC
Dalam penggunaan parameter GENERIC dalam pemrograman VHDL terdapat keterbatasan sebagai berikut:
- Parameter Statis: Nilai-nilai GENERIC tidak dapat diubah setelah komponen di-instantiasi.
- Synthesizability: Beberapa alat sintesis mungkin memiliki keterbatasan dalam menangani GENERIC yang rumit atau dinamis.
- Kompatibilitas: Pastikan bahwa semua nilai GENERIC yang ditentukan didukung oleh alat sintesis yang digunakan.



