Bahasa Pemrograman VHDL

Bahasa VHDL

Gambaran Umum VHDL

VHDL (VHSIC Hardware Description Language) adalah bahasa deskripsi perangkat keras yang kuat dan serbaguna yang digunakan untuk desain, simulasi, dan sintesis sistem elektronik digital. Awalnya dikembangkan untuk program Very High Speed Integrated Circuits (VHSIC) Departemen Pertahanan AS pada tahun 1980-an, VHDL memungkinkan insinyur untuk membuat model abstrak dari perilaku dan struktur perangkat keras. Kemampuannya untuk mendeskripsikan sistem yang kompleks telah menjadikannya penting di berbagai industri, terutama untuk desain FPGA (Field Programmable Gate Array) dan ASIC (Application-Specific Integrated Circuit).

Aspek Historis

Penciptaan

VHDL diciptakan pada awal 1980-an sebagai bagian dari upaya untuk menstandarisasi desain sirkuit digital. Bahasa ini dikembangkan oleh tim yang dipimpin oleh Peter Ashenden di Departemen Pertahanan AS untuk memenuhi kebutuhan cara yang konsisten dalam mendeskripsikan perangkat keras. Niat awalnya adalah untuk memfasilitasi dokumentasi desain yang ada untuk program VHSIC, tetapi kemudian berkembang menjadi bahasa yang sepenuhnya untuk deskripsi perangkat keras.

Standarisasi dan Evolusi

Pada tahun 1987, VHDL distandarisasi oleh IEEE sebagai IEEE 1076. Sejak saat itu, bahasa ini telah mengalami berbagai pembaruan, dengan IEEE 1076-1993 dan IEEE 1076-2002 sebagai revisi signifikan. Bahasa ini telah diperluas untuk mencakup konstruksi yang mendukung verifikasi desain, batasan sintesis, dan kemampuan simulasi.

Keadaan Saat Ini dan Pengaruh

Saat ini, VHDL banyak digunakan di akademisi dan industri untuk merancang sistem listrik yang kompleks. Sintaksis dan perilakunya dipengaruhi oleh bahasa pemrograman seperti Ada, Pascal, dan C. Berbagai alat untuk simulasi dan sintesis dapat menginterpretasikan kode VHDL, dan sering digunakan bersamaan dengan bahasa deskripsi perangkat keras lainnya, terutama Verilog.

Fitur Sintaksis

Tipe Kuat

VHDL adalah bahasa yang bertipe kuat, yang berarti bahwa setiap variabel harus dideklarasikan dengan tipe tertentu sebelum digunakan. Ini mencegah banyak kesalahan umum.

signal CLK : std_logic; -- Mendeklarasikan sinyal bertipe std_logic

Pernyataan Konkuren

VHDL mendukung eksekusi pernyataan secara konkuren. Beberapa proses dapat berjalan secara bersamaan, yang penting untuk memodelkan perilaku perangkat keras.

process (CLK)
begin
    if rising_edge(CLK) then
        -- Tugas yang akan dilakukan
    end if;
end process;

Model Entitas-Arsitektur

VHDL menggunakan model entitas-arsitektur di mana entitas mendeskripsikan antarmuka dari komponen perangkat keras, sementara arsitektur mendeskripsikan perilaku internalnya.

entity AND_Gate is
    Port ( A, B : in std_logic;
           Y : out std_logic);
end AND_Gate;

architecture Behavior of AND_Gate is
begin
    Y <= A and B;
end Behavior;

Tipe Data

VHDL memiliki beberapa tipe data bawaan, termasuk skalar (misalnya, integer, bit), komposit (misalnya, array, record), dan tipe akses.

type MyArray is array (0 to 9) of integer; -- Deklarasi array

Penugasan Sinyal

Penugasan sinyal terjadi secara konkuren di VHDL. Anda dapat menggerakkan sinyal menggunakan penugasan yang dieksekusi setiap kali suatu peristiwa terjadi.

signal C : std_logic;
C <= A and B; -- C diperbarui ketika A atau B berubah

Paket

VHDL mendukung paket, yang memungkinkan pengguna untuk mendefinisikan komponen dan tipe yang dapat digunakan kembali. Paket membantu dalam mengorganisir kode dan mempromosikan penggunaan kembali.

package MyLib is
    type MyType is array (0 to 7) of std_logic_vector(3 downto 0);
end MyLib;

Konfigurasi

VHDL memungkinkan konfigurasi diatur pada tingkat yang lebih tinggi, memungkinkan pemilihan arsitektur yang berbeda untuk entitas.

configuration MyConfig of AND_Gate is
    for Behavior
    end for;
end MyConfig;

Pembuatan Test Bench

VHDL memfasilitasi pembuatan test bench untuk mensimulasikan desain perangkat keras. Sebuah test bench berisi instance dari desain yang diuji dan menerapkan stimulus.

entity TB_AND_Gate is
end TB_AND_Gate;

architecture sim of TB_AND_Gate is
    signal A, B : std_logic;
    signal Y : std_logic;
begin
    uut: entity work.AND_Gate port map (A, B, Y);
    -- Proses stimulus di sini
end sim;

Pernyataan

Pernyataan dapat digunakan untuk memeriksa properti selama simulasi dan membantu dalam debugging desain.

assert (A = '1') report "A tidak tinggi" severity error;

Generik

Generik memungkinkan parameterisasi desain, menjadikannya fleksibel dan dapat digunakan kembali tanpa mengubah logika inti.

entity Counter is
    generic (N : integer := 4);
    port (CLK : in std_logic;
          COUNT : out std_logic_vector(N-1 downto 0));
end Counter;

Alat dan Runtime Pengembang

IDE dan Alat

Beberapa Integrated Development Environment (IDE) dan alat mendukung pengembangan VHDL, termasuk:

Membangun Proyek

Untuk membangun proyek VHDL, desainer biasanya menulis kode VHDL mereka dalam file .vhdl atau .vhd, membuat test bench untuk simulasi, dan memanfaatkan alat yang sesuai untuk mensintesis desain ke dalam perangkat keras target. Proses ini biasanya melibatkan:

  1. Menulis kode VHDL.
  2. Mengompilasi kode menggunakan alat yang dipilih.
  3. Mensimulasikan dan menguji desain.
  4. Mensintesis desain untuk implementasi perangkat keras.

Aplikasi VHDL

VHDL terutama digunakan dalam desain sistem digital yang memerlukan waktu dan fungsionalitas yang tepat. Aplikasinya meliputi:

Perbandingan dengan Bahasa Terkait

VHDL dapat dibandingkan dengan beberapa bahasa pemrograman lainnya, masing-masing memiliki fitur unik dan aplikasi yang dimaksudkan:

C dan C++

C dan C++ adalah bahasa pemrograman tujuan umum yang memungkinkan pemrograman prosedural dan berorientasi objek. Sebaliknya, VHDL secara eksplisit dirancang untuk deskripsi perangkat keras, dengan fokus pada eksekusi konkuren daripada berurutan.

Verilog

Verilog adalah bahasa deskripsi perangkat keras lain yang memiliki kesamaan dengan VHDL tetapi umumnya dianggap kurang verbose. Verilog menggunakan sintaksis yang lebih ringkas dan sering dipilih untuk desain tingkat sistem.

Python

Python adalah bahasa skrip tingkat tinggi yang unggul dalam pengembangan aplikasi cepat tetapi tidak dirancang untuk deskripsi perangkat keras secara langsung. Namun, pustaka seperti MyHDL memungkinkan kode Python dikonversi menjadi VHDL.

MATLAB

MATLAB digunakan untuk komputasi numerik dan pengembangan algoritma tetapi dapat diintegrasikan dengan VHDL untuk implementasi perangkat keras melalui HDL Coder dan Simulink.

Rust dan Ada

Rust dan Ada memiliki fitur yang mempromosikan keamanan memori dan pemrograman konkuren tetapi tidak khusus untuk deskripsi perangkat keras. Penekanan VHDL pada abstraksi perangkat keras adalah unik di antara bahasa-bahasa ini.

Tips Terjemahan Sumber ke Sumber

Menerjemahkan kode sumber dari bahasa lain ke VHDL sering kali memerlukan pertimbangan khusus tentang konkuren dan waktu yang melekat dalam desain perangkat keras.

Alat yang Ada

Beberapa alat terjemahan sumber ke sumber tersedia untuk membantu dalam mengonversi kode:

Sebagai kesimpulan, VHDL berfungsi sebagai alat penting dalam desain digital, menawarkan fitur yang kuat, sejarah yang kaya, dan berbagai aplikasi di seluruh elektronik dan komputasi. Kemampuannya yang unik dalam deskripsi perangkat keras membedakannya dari banyak bahasa pemrograman yang banyak digunakan.