Anda di halaman 1dari 9

[Pengenalan VHDL] BAB VII

Pengenalan VHDL

A. Pengenalan Bahasa VHDL


VHDL adalah kepanjangan dari VHSIC (Very High Speed Integrated Circuits)
Hardware Description Language. Pada pertengahan tahun 1980 Departemen
Pertahanan Amerika Serikat dan IEEE mensponsori pengembangan bahasa
pemrograman untuk perangkat keras dengan tujuan untuk mengembangkan very
high-speed integrated circuit. Sampai saat ini bahasa tersebut tetap digunakan
sebagai standar industry untuk desain sistem digital. Selain itu bahasa yang
digunakan untuk pemrograman perangkat keras yang digunakan secara luas adalah
Verilog. Kedua bahasa tersebut mempunyai kemampuan lebih untuk membuat dan
mensimulasikan rangkaian digital yang kompleks. Versi ketiga untuk bahasa HDL
adalah ABEL (Advanced Boolean Equation Language) yang mana bahasa ini didesain
untuk Programmable Logic Devices (PLD). ABEL mempunyai kemampuan dibawah
VHDL serta Verilog dan kurang populer di industry. Meskipun bahasa ini terlihat
seperti bahasa pemrograman konvensional, tetapi ada beberapa perbedaan penting.
Bahasa pemrograman HDL bersifat parallel dimana untuk perintah yang
berhubungan dengan gerbang logika akan dieksekusi secara parallel, segera setelah
input diterima. Program HDL menirukan perilaku secara fisik dari sistem digital.
Program ini juga menyediakan penggambungan spesifikasi pewaktuan (gate delay)
yang baik seperti membuat penggambungan sistem untuk komponen yang berbeda.

Pentingnya Penggunaan VHDL


Mendesain sebuah rangkaian digital tanpa mengerti dasar gerbang dan flip-flop
sangatlah sulit. Secara konvensional mendesain banyak rangkaian gerbang logika
dan flip-flop tidak terlepas dari persamaan Bolean, agar didapatkan hasil sebuah
rangkaian yang sederhana sehingga lebih efektif.
Teknik mendesain dengan Bolean memerlukan pengkabelan sebuah persamaan
untuk masing-masing flip-flop data input dan gerbang. Pembuatan persamaan
bolean ini tidak dapat digunakan untuk desain rangkaian yang lebih besar dan
memerlukan ribuan gerbang dan Flip-flop karena akan membuat persamaan bolean
menjadi rumit.

Metode untuk mendesain rangkaian logika setelah menggnakan persamaan


Bolean adalah dengan menggunakan skema rangkaian gerbang logika. Mendesain
[Pengenalan VHDL] BAB VII

dengan skema ini sangatlah mudah dan jelas karena langsung diketahui hubungan
antara gerbang satu dengan yang lainnya. Sebagian besar orang lebih menyukai
menggunakan skema ini untuk mendesain rangkaian digital.

(Sumber : http://digitronways.blogspot.coml)
Gambar 7.1. Desain Skema Rangkaian Gerbang Logika

Berikut ini adalah gambaran tahapan pembuatan desain sebuah rangkaian logika
dengan menggunakan cara-cara konvensional. Perbedaan tahapan desain rangkaian
logika konvensional dan dengan konsep VHDL terlihat pada gambar 7.2 dan 7.3.
[Pengenalan VHDL] BAB VII

(Sumber : http://digitronways.blogspot.coml)
Gambar 7.2 Tahapan Desain Rangkaian Logika Konvensional.
Dengan adanya bahasa perangkat keras VHDL ini, metode konvensional diatas dapat
diminimalkan, sehingga proses desainnya akan lebih ringan dan cepat. Proses
tersebut dipaparkan pada gambar dibawah ini.

(Sumber : http://digitronways.blogspot.coml)
Gambar 7.3.Tahapan Desain Rangkaian Logika VHDL.
[Pengenalan VHDL] BAB VII

B. Terlihat seperti pada gambar 7.3 bahwa proses penggunaan persamaan bolean
dan skema akan diabaikan dalam mendesain dengan teknologi VHDL ini, dimana
desain langsung dideskripsikan melalui program VHDL yang kemudian
dimasukkan dalam sebuah IC.
C.
B.Mendesain Rangkaian Digital dengan VHDL
VHDL merupakan case insensitive, dimana penamaan dan pelabelan harus
mulai dengan huruf baik kecil maupun besar sama saja, terdiri dari hanya karakter
alfanumerik, dan dapat mengandung underscore, tidak boleh ada karakter lain, tidak
boleh mempunyai dua underscore berturutan dan tidak boleh diakhiri dengan
underscore. Semua nama dan label yang diberikan di entity dan architecture harus
unik, tidak boleh sama.
VHDL merupakan bahasa format bebas, yang mengijinkan penggunaan spasi
untuk mempermudah pembacaan. Penulisan komen dimulai dengan dan untuk
mengakhiri sebuah entity, architecture atau proses sekuensial menggunakan
perintah end. Perlu diperhatikan, satu file terdiri dari entity nama file dan nama file
harus sesuai dengan nama entity.
Deskripsi VHDL terdiri dari dua bagian pernyataan entity dan pernyataan
architecture. Entity mendeskripsikan antarmuka (misal masukan dan keluaran),
sedangkan architecture mendeskripsikan implementasi rangkaian.
Pernyataan entity memerlukan nama dengan menentukan port masukan dan
keluaran. Penentuan port mengandung nama, mode, dan tipe data. Mode port
terdiri dari 4 jenis, yaitu IN (driver di luar entity dan dapat dibaca), OUT (driver di
dalam entity dan tidak dapat dibaca), INOUT (driver di dalam dan di luar entity, dan
dapat dibaca), dan BUFFER (driver di dalam entity dan dapat dibaca).
Pernyataan Architecture memerlukan nama, biasanya namanya
disesuaikan dengan nama modelnya, referensi nama terkait di dalam entity,
menentukan fungsi dari entity menggunakan satu atau beberapa jenis implementasi,
dan architecture terkait dengan entity, sehingga memungkinkan banyak architecture
untuk satu entity, tetapi hanya satu yang terhubung sekali waktu.
Model architecture VHDL terdiri dari fungsi functional logic, behavioral
terdiri informasi pewaktuan, structural terdiri dari component dan wire, dan
physical menentukan informasi paket. Setiap model dapat digunakan untuk
mendeskripsikan fungsionalitas dari rangkaian logika. Model bukanlah saling
eksklusif, namun saling terkait.
Penyambungan dalam VHDL dapat berupa wire atau bus (kumpulan wire).
Wire dapat dituliskan sebagai SIGNAL a: STD_LOGIC;, bus (dengan 8 wire) dapat
[Pengenalan VHDL] BAB VII

dituliskan sebagai SIGNAL bus8: STD_LOGIC_VECTOR(7 DOWNTO 0);, sedangkan


bus (dengan 16 wire) dapat dituliskan dengan SIGNAL bus16:
STD_LOGIC_VECTOR(15 DOWNTO 0);. Wire digunakan untuk menghubungkan antar
entity dan dapat digunakan dalam model architecture structural.

Contoh:

ENTITY contoh IS
PORT ( x1, x2, x3 : IN BIT ; f : OUT BIT );
END;
ARCHITECTURE fungsilogik OF contoh IS
BEGIN
f <= (x1 AND x2) OR (NOT x2 AND x3) ;
END;
Penulisan END bisa dituliskan dengan menuliskan END <nama
ENTITY> untuk entity, dan END <nama ARCHITECTURE> untuk
architecture.

C. Membuat Comparator, dekoder dan Enkoder dengan VHDL


Software yang digunakan adalah active HDL
1. Comparator
library ieee;
use ieee.std_logic_1164.all;

entity comparator is
port(a : in std_logic;
b : in std_logic;
aequab : out std_logic);
end comparator;
architecture RTL of comparator is
begin
process
[Pengenalan VHDL] BAB VII

begin
if a = b then
aequab <= '1';
else
aequab <= '0';
end if;
end process;
end RTL;

2. Multiplexer
library ieee;
use ieee.std_logic_1164.all;
entity muks21 is
port(s: in std_logic_vector (1 downto 0);
a,b: in std_logic;
mux_out: out std_logic);
end;
architecture behav of muks21 is
begin
mux_out<= a when (s(0)='1') else
b when (s(1)='1') else 'Z';
end behav;

Listing kedua :

library ieee;
use ieee.std_logic_1164.all;
entity muks21 is
port(s: in std_logic_vector (1 downto 0);
a,b: in std_logic;
mux_out: out std_logic);
end;
architecture behav of muks21 is
begin
mux_out<= a when (s(0)='1') else
b when (s(1)='1') else 'Z';
end behav;
[Pengenalan VHDL] BAB VII

3. Demultiplexer
library ieee;
use ieee.std_logic_1164.all;
entity Demultiplexor is
port(i, E, S: in std_logic;
O1, O2: in std_logic;
);
End Demultiplexor;
architecture RTL of Demultiplexor is
begin
process
begin
O1 <= 1 and E and S; else
O2 <= 1 and E and not(S);
end process;
end RTL;

4. Register
library ieee;
use ieee.std_logic_1164.all;
use.ieee.std_logic_aruth.all

entity reg8 is
port (
clk : in std_logic;
rst : in std_logic;
ena : in_std_logic;
d : in_std_logic_vector (7 downto 0);
q : out_std_logic_vector (7 downto 0);
); end reg8;

Architecture a of reg8 is
signal d_s : std_logic_vector (7 downto 0);
signal q_s : std_logic_vector (7 downto 0);

begin
d_s <= d when ena = 1 else q_s;
reg8_bit : process (clk,rst)
begin
if (clkevent and clk = 1) then
if (rst = 1) then
q_s <- 00000000;
[Pengenalan VHDL] BAB VII

else
q_s <- d_s;
end if;
end process;
q <- q_s;
end a;

5. Dekoder BCD
library ieee;
use IEEE.std_logic_1164.all;

entity bcd_7 is
port(
i: in bit_vector(3 downto 0);
o: out std_logic_vector(6 downto 0);
ca: out std_logic_vector(3 downto 0));
end bcd_7;

architecture RTL of bcd_7 is


begin
ca <= "1110";
process(i)
begin
case i is
when "0000" =>
o <= "1000000";
when "0001" =>
o <= "1111001";
when "0010" =>
o <= "0100100";
when "0011" =>
o <= "0110000";
when "0100" =>
o <= "0011001";
when "0101" =>
o <= "0010010";
when "0110" =>
o <= "0000010";
when "0111" =>
o <= "1111000";
when "1000" =>
[Pengenalan VHDL] BAB VII

o <= "0000000";
when "1001" =>
o <= "0010000";
when "1010" =>
o <= "0001000";
when "1011" =>
o <= "0000011";
when "1100" =>
o <= "1000110";
when "1101" =>
o <= "0100001";
when "1110" =>
o <= "0000110";
when "1111" =>
o <= "0001110";
end case;
end process;
end RTL;

Anda mungkin juga menyukai