Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Struktur Dasar VHDL

VHDL terdiri dari beberapa elemen dasar, yaitu :


1. Identifier 4. Entity
2. Data Object 5. Architecture
3. Data Types 6. Package

1. Identifier
Dalam VHDL, Identifier memiliki beberapa karakter dengan aturan sebagai berikut :
1. Karakter yang diperbolehkan adalah huruf besar(A..Z), huruf kecil(a..z), huruf(0..9) dan garis
bawah(_).
2. Karakter pertama harus berupa huruf.
3. Karakter terakhir tidak diperbolehkan berupa garis bawah(_), penggunaan 2 karakter garis
bawah(_) juga tidak diperbolehkan.
4. Penggunaan huruf besar dan huruf kecil dianggap sama (tidak case sensitive).
5. Komentar dalam VHDL dimulai dengan karakter --.

2. Data Object
Terdapat 3 obyek data yaitu :
1. Konstanta
Obyek konstanta dapat menyimpan sebuah nilai yang didefiniskan saat deklarasi konstanta. Nilai yang
sudah didefinisikan tersebut tidak dapat diubah selama proses desain.

Constant identifier[,identifier..]:type[:value];

2. Variabel
Obyek variabel dapat menyimpan sebuah nilai yang diberikan saat desain, dan nilai tersebut dapat dirubah
kapanpun saat desain.
Variable identifier[,identifier..]:type[:value];

Syntax:
variable ctrl_bits: std_logic;

3. Signal
Obyek Signal bisa disamakan dengan variable, perbedaannya adalah bahwa signal dapat menyimpan
ataupun melepaskan nilai logika, sedangkan variable tidak dapat, oleh karena itu, signal dapat diwujudkan
dalam elemen memori.

Signal identifier[,identifier..]:type[:value];

Syntax:
signal con: std_logic;

3. Data Types
Ada 2 macam Data type yang digunakan berdasarkan standar IEEE, yaitu :
a. Berdasarkan standar IEEE 1076/93, yaitu : Boolean, Bit, Bit_vector dan Integer.
b. Berdasarkan standar IEEE 1164, yaitu Std Ulogic, std Logic dan std_Logic Vector.

4. 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 ;

Syntax:
entity entity_name is
Port declaration;
end entity_name;

Sebuah deklarasi entity harus diawali dengan ‘entity’ dan diakhiri dengan kata ‘end’.
Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah menggunakan PORTS.
Sebuah port harus memiliki nama, arah/mode dan tipe. 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 mengunakan 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.

5. Architecture
Architecture Body dalam sebuah entity berfungsi untuk mendeskripsikan apa yang akan dilakukan atau
proses apa yang akan sikerjakan oleh perangkat keras yang didesain.

ARCHTECTURE architecture-name OF entity-name IS


[type-declarations]
[signal-declarations]
[constant-declarations]
BEGIN
[architecture definition]
END architecture-name;

Dalam architecture body ada beberapa jenis, antara lain :

a. Structural description
Perencanaan didasarkan pada pemakaian komponen (logical gate) pada library dan hubungan antar
componen-componen tersebut (a set of interconected component).

Structural description meliputi :


· Signal declaration.
· Component instances
· Port maps.
· Wait statements.

Component declaration:
Syntax:
component component_name [is]
List_of_interface ports;
end component component_name;

b. Data flow description


Perencanaan berdasarkan pada proses data transfer ( dari signal atau dari input ke output tanpa statement
sequential ) yang merupakan sekumpulan dari concurent assignment statement. Perbedaan utama antara
data flow dengan behavioral adalah yang satu menggunakan proses yang lain tidak.

Berikut ini adalah coding half adder yang mempunyai 1 XOR gate dan sebuahAND gate.

Library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity ha_en is
port (A,B:in bit;S,C:out bit);
end ha_en;
architecture ha_ar of ha_en is
begin
S<=A xor B;
C<=A and B;
end ha_ar;

c. Behavioral description
Perencanaan didasarkan pada proses pengerjaan statement antar input dan output secara
sequential/berurutan/step by step dengan menggunakan statement sequential (a set of sequential
statement). Keuntungan dari behavioral description yang merupakan high level description adalah kita
tidak perlu memfokuskan pada gate level pada desain implementasi tetapi kita fokuskan pada usaha
mengakuratkan model fungsi. Proses statement dimulai dengan sebuah label yang diikuti dengan tanda ‘:’
kemudian kata ‘proses’ dan sensitivity list dan dibawahnya diikuti dengan sequential statement, setelah
bagian sequential statement selesai diakhiri dengan ‘end process’ dan label process.

Yang termasuk sequential statement, antara lain :


1) Process statement
2) If-then-else statement
3) Case-when statement
4) For-loop statement
5) While-loop statement

6. Package
Sebuah package dapat mendeklarasikan komponen berupa pasangan entity dan architecture, type,
konstanta atau fungsi agar item-item tersebut dapat digunakan pada desain yang lain. Package sering kali
dituliskan sebelum entity dan architecture. Agar sebuah desain dapat menggunakan package yang sudah
dibuat, maka pada desain tersebut harus memanggil package yang akan dipakai dengan menggunakan
klausa USE

ENTITY entity-name IS PORT


[signal][sig-name,..]:[direction] type;
[;signal[sig-name,..]:[direction] type]
.
.
);
END entity-name;
ARCHITECTURE architecture-name OF entity-name IS
[type-declarations]
[signal-declarations]
[constant-declarations]
BEGIN
[architecture definition]
END architecture-name;

Berikut ini adalah contoh coding d-flip flop menggunakan process dan if statement.

library IEEE;
use IEEE.std_logic_1164.all;

entity dffv1 is

port(
d : in std_logic;
ena : in std_logic;
q : out std_logic
);

end dffv1;

architecture arch1 of dffv1 is


begin

process (d, ena)


begin
if (ena = '1') then
q <= d;
end if;
end process;

end arch1;

Berikut ini adalah contoh coding d-flip flop menggunakan wait statement.

library IEEE;
use IEEE.std_logic_1164.all;

entity dff is

port(
D : in std_logic;
CLK : in std_logic;
Q : out std_logic;
Qbar : out std_logic
);

end dff;

architecture arch1 of dff is

begin

-- Your VHDL code defining the model goes here


output: process
begin
wait until (CLK'event and CLK = '1');
Q <= D after 10 ns;
Qbar <= not D after 10 ns;
end process output;
end arch1;

You might also like