VHDL (VHSIC Donanım Tanım Dili), dijital elektronik sistemlerin tasarımı, simülasyonu ve sentezi için kullanılan güçlü ve çok yönlü bir donanım tanım dilidir. 1980'lerde ABD Savunma Bakanlığı'nın Çok Yüksek Hızlı Entegre Devreler (VHSIC) programı için geliştirilen VHDL, mühendislerin donanım davranışını ve yapısını soyut modellerle oluşturmasına olanak tanır. Karmaşık sistemleri tanımlama yeteneği, onu çeşitli endüstrilerde, özellikle FPGA (Alan Programlanabilir Kapı Dizisi) ve ASIC (Uygulamaya Özel Entegre Devre) tasarımları için vazgeçilmez hale getirmiştir.
VHDL, dijital devrelerin tasarımını standartlaştırma çabası kapsamında 1980'lerin başında oluşturulmuştur. Dil, donanımı tanımlamak için tutarlı bir yol sağlamak amacıyla ABD Savunma Bakanlığı'nda Peter Ashenden liderliğindeki bir ekip tarafından geliştirilmiştir. Başlangıçta, VHSIC programı için mevcut tasarımların belgelenmesini kolaylaştırmak amacıyla oluşturulmuş, ancak zamanla donanım tanımı için tam teşekküllü bir dil haline gelmiştir.
1987'de VHDL, IEEE tarafından IEEE 1076 olarak standartlaştırılmıştır. O tarihten bu yana, IEEE 1076-1993 ve IEEE 1076-2002 gibi önemli revizyonlarla çeşitli güncellemeler geçirmiştir. Dil, tasarım doğrulama, sentez kısıtlamaları ve simülasyon yeteneklerini destekleyen yapılar içerecek şekilde genişletilmiştir.
Günümüzde VHDL, karmaşık elektrik sistemlerinin tasarımı için hem akademide hem de sanayide yaygın olarak kullanılmaktadır. Söz dizimi ve davranışı, Ada, Pascal ve C gibi programlama dillerinden etkilenmiştir. VHDL kodunu yorumlayabilen çeşitli simülasyon ve sentez araçları bulunmaktadır ve genellikle diğer donanım tanım dilleriyle, özellikle Verilog ile birlikte kullanılmaktadır.
VHDL, güçlü tipli bir dildir; bu, her değişkenin kullanılmadan önce belirli bir tür ile tanımlanması gerektiği anlamına gelir. Bu, birçok yaygın hatayı önler.
signal CLK : std_logic; -- std_logic türünde bir sinyal tanımlama
VHDL, ifadelerin eşzamanlı olarak yürütülmesini destekler. Birden fazla işlem aynı anda çalışabilir, bu da donanım davranışını modellemek için gereklidir.
process (CLK)
begin
if rising_edge(CLK) then
-- Yapılacak görev
end if;
end process;
VHDL, varlığın bir donanım bileşeninin arayüzünü tanımladığı ve mimarinin içsel davranışını tanımladığı bir varlık-mimari modeli kullanır.
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;
VHDL, skalar (örneğin, integer, bit), bileşik (örneğin, dizi, kayıt) ve erişim türleri gibi birkaç yerleşik veri türüne sahiptir.
type MyArray is array (0 to 9) of integer; -- Dizi tanımı
VHDL'de sinyal atamaları eşzamanlı olarak gerçekleşir. Olay meydana geldiğinde yürütülen atamalar kullanarak sinyalleri yönlendirebilirsiniz.
signal C : std_logic;
C <= A and B; -- C, A veya B değiştiğinde güncellenir
VHDL, kullanıcıların yeniden kullanılabilir bileşenler ve türler tanımlamasına olanak tanıyan paketleri destekler. Paketler, kodun düzenlenmesine ve yeniden kullanımın teşvik edilmesine yardımcı olur.
package MyLib is
type MyType is array (0 to 7) of std_logic_vector(3 downto 0);
end MyLib;
VHDL, varlıklar için farklı mimarilerin seçilmesine olanak tanıyan daha yüksek bir seviyede konfigürasyonların ayarlanmasına izin verir.
configuration MyConfig of AND_Gate is
for Behavior
end for;
end MyConfig;
VHDL, donanım tasarımlarını simüle etmek için test tezgahlarının oluşturulmasını kolaylaştırır. Bir test tezgahı, test edilen tasarımın örneklerini içerir ve uyarı uygular.
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);
-- Uyarı süreci burada
end sim;
İddialar, simülasyon sırasında özellikleri kontrol etmek ve tasarımları hata ayıklamak için kullanılabilir.
assert (A = '1') report "A yüksek değil" severity error;
Genel değişkenler, tasarımların parametreleştirilmesine olanak tanır, böylece ana mantığı değiştirmeden esnek ve yeniden kullanılabilir hale gelir.
entity Counter is
generic (N : integer := 4);
port (CLK : in std_logic;
COUNT : out std_logic_vector(N-1 downto 0));
end Counter;
VHDL geliştirmesini destekleyen birkaç Entegre Geliştirme Ortamı (IDE) ve araç bulunmaktadır:
Bir VHDL projesi oluşturmak için tasarımcılar genellikle VHDL kodlarını .vhdl
veya .vhd
dosyalarında yazar, simülasyon için bir test tezgahı oluşturur ve tasarımı hedef donanıma sentezlemek için uygun bir aracı kullanır. Süreç genellikle şunları içerir:
VHDL, hassas zamanlama ve işlevsellik gerektiren dijital sistemlerin tasarımında yaygın olarak kullanılmaktadır. Uygulamaları şunları içerir:
VHDL, her birinin kendine özgü özellikleri ve amaçlanan uygulamaları olan birkaç diğer programlama dili ile karşılaştırılabilir:
C ve C++, prosedürel ve nesne yönelimli programlamaya olanak tanıyan genel amaçlı programlama dilleridir. Buna karşın, VHDL, donanım tanımı için açıkça tasarlanmış olup, ardışık yerine eşzamanlı yürütmeye odaklanmaktadır.
Verilog, VHDL ile benzerlikler taşıyan başka bir donanım tanım dilidir, ancak genellikle daha az ayrıntılı olarak kabul edilir. Verilog, daha özlü bir sözdizimi kullanır ve genellikle sistem düzeyinde tasarım için tercih edilir.
Python, hızlı uygulama geliştirmede mükemmel olan yüksek seviyeli bir betik dilidir, ancak doğrudan donanım tanımı için tasarlanmamıştır. Ancak, MyHDL gibi kütüphaneler, Python kodunun VHDL'ye dönüştürülmesine olanak tanır.
MATLAB, sayısal hesaplama ve algoritma geliştirme için kullanılır, ancak HDL Coder ve Simulink aracılığıyla donanım uygulaması ile VHDL ile entegre edilebilir.
Rust ve Ada, bellek güvenliğini ve eşzamanlı programlamayı teşvik eden özelliklere sahiptir, ancak donanım tanımı için özel değildir. VHDL'nin donanım soyutlamasına olan vurgusu, bu diller arasında benzersizdir.
Diğer dillerden VHDL'ye kaynak kodu çevirirken, donanım tasarımında var olan eşzamanlılık ve zamanlama gibi özel hususların dikkate alınması genellikle gereklidir.
Kodun dönüştürülmesine yardımcı olmak için mevcut birkaç kaynak-kaynağa çeviri aracı bulunmaktadır:
Sonuç olarak, VHDL dijital tasarımda kritik bir araç olarak hizmet vermekte, sağlam özellikler, zengin bir tarih ve elektronik ve bilgisayar alanında çeşitli uygulamalar sunmaktadır. Donanım tanımındaki benzersiz yetenekleri, onu birçok yaygın kullanılan programlama dilinden ayırmaktadır.