OSTİM OSB · Ankara  |  KÜ Teknopark · Kırıkkale LinkedIn TR | EN

VHDL’nin Temel Kavramları

VHDL’nin Temel Kavramları

VHDL (VHSIC Hardware Description Language), dijital sistemlerin tasarımı ve modellenmesi için kullanılan güçlü bir donanım tanımlama dilidir. Bu bölümde, VHDL’nin temel yapı taşlarını oluşturan varlıklar, mimariler, sinyaller, değişkenler, kütüphaneler ve paketler gibi kavramları ele alacağız. Amacımız, okuyuculara VHDL’nin temel prensiplerini ve kullanımını anlaşılır bir şekilde sunarak, dijital devre tasarımı konusunda sağlam bir temel oluşturmaktır. Bu sayede, VHDL ile gerçekleştirilecek projelerde başarılı ve verimli sonuçlar elde edilebilecektir.

Varlıklar (Entities) ve Mimariler (Architectures)

Yazılı Olmayan Kural – Bir HDL dosyası içerisinde (vhd/v/sv) sadece bir adet “entity” ve “architecture” tanımlanmalıdır. 🙂

Yazılı Olmayan Kural – “entity” ve “architecture” isimleri dahil bütün özel karakterler küçük harflerle yazılmalıdır. 🙂

Varlık ve Mimari Kavramlarının Açıklanması

Varlıklar (Entities): Varlık, VHDL’de bir dijital devrenin giriş ve çıkışlarının tanımlandığı bölümdür. Bir entity, devrenin dış dünyayla nasıl etkileşime girdiğini belirler. Her VHDL kodu bir entity bildirimi ile başlar ve bu bildirimin içinde giriş ve çıkış portları tanımlanır.

Yazılı Olmayan Kural – Entity içerisinde birbirleriyle alakalı portlar gruplandırılmalıdır. 🙂

-- Bu örnekte, AndGate adlı bir entity tanımlanmıştır. a ve b giriş portları, y ise çıkış portudur.

entity AndGate is
    port (
        -- input
        a : in std_logic;
        b : in std_logic;
       -- output
        y : out std_logic
    );
end entity AndGate;

Mimariler (Architectures): Mimari, varlık tarafından tanımlanan portların iç işleyişini açıklayan bölümdür. Bir mimari, varlık için bir veya birden fazla kez tanımlanabilir. Bu bölümde devrenin davranışsal, veri akışı veya yapısal tanımları bulunur.

Yazılı Olmayan Kural – “architecture” isimleri küçük harflerle yazılmalıdır. 🙂

--  Bu architecture tanımı, AndGate entitysinin A ve B girişlerini AND işlemi ile birleştirir ve sonucu Y çıkışına atar.

architecture Behavioral of AndGate is
begin
    y <= a and b;
end architecture Behavioral;

Sinyaller ve Değişkenler

Yazılı Olmayan Kural – Sinyal ve variable isimleri küçük harflerle yazılmalıdır. 🙂

Yazılı Olmayan Kural – Sinyal constant ve entity isimleri bloğun veya sinyalin yaptığı işleve göre anlamlı olmalıdır. 🙂

Sinyal ve Değişken Farkları

Sinyaller (Signals): Sinyaller, VHDL’de genellikle varlıklar arasındaki veri alışverişini sağlamak için kullanılır. Sinyaller, devre simülasyonu sırasında her zaman mevcut olan ve sürekli olarak değiştirilebilen veri hatlarıdır.

--Bu sinyal, herhangi bir işlem veya mimari içinde kullanılabilir.

signal temp_signal : std_logic;

Değişkenler (Variables): Değişkenler ise, bir işlem bloğu içinde yerel olarak tanımlanır ve sadece bu işlem bloğu içinde geçerlidir. Değişkenler, işlemin her çalıştırılmasında yeniden değerlendirilir ve sadece işlem tamamlandıktan sonra güncellenir.

-- Bu örnekte, temp_var adlı bir değişken tanımlanmış ve işlem bloğu içinde kullanılmıştır. Ancak, değişkenlerin kullanımı önerilmediği için sinyallerin tercih edilmesi gerekmektedir.

process (clk)
    variable temp_var : std_logic;
begin
    if rising_edge(clk) then
        temp_var := '1';
        output <= temp_var;
    end if;
end process;

Kütüphaneler ve Paketler

Yazılı Olmayan Kural – Kütüphane ve paket isimleri küçük harflerle yazılmalıdır. 🙂

Kütüphane ve Paket Kavramları

Kütüphaneler (Libraries): Kütüphaneler, VHDL tasarımlarında kullanılacak çeşitli paketleri ve modülleri içerir. Kütüphaneler, belirli bir isimle tanımlanır ve kodun başında library anahtar kelimesi ile çağrılır.

--Bu örnekte, ieee kütüphanesi çağrılmış ve std_logic_1164 paketi kullanılmıştır.

library ieee;
use ieee.std_logic_1164.all;

Paketler (Packages): Paketler, VHDL’de tekrar kullanılabilir bileşenler, veri tipleri, sabitler ve fonksiyonları içeren yapılandırmalardır. Paketler, belirli bir tasarımın bir parçası olarak tanımlanır ve bu paketlerin içeriği başka yerlerde kullanılabilir.

--Bu örnekte, my_package adlı bir paket tanımlanmış ve içinde bir sabit ile fonksiyon yer almaktadır. Bu paket başka VHDL kodlarında kullanılabilir.


package my_package is
    constant MY_CONSTANT : integer := 10;
    function my_function (a : integer) return integer;
end package my_package;

package body my_package is
    function my_function (a : integer) return integer is
    begin
        return a * MY_CONSTANT;
    end function my_function;
end package body my_package;

Bu temel kavramlarla VHDL’nin yapı taşlarını anlamış olduk. VHDL öğrenmeye başlamak ve dijital devre tasarımı yapabilmek için bu kavramların iyi anlaşılması gerekmektedir. İlerleyen yazılarda, bu temel bilgiler üzerine inşa ederek daha karmaşık tasarımlara ve uygulamalara geçiş yapacağız.

Bu yazı ilk olarak 17 Temmuz 2024 tarihinde LinkedIn üzerinde yayımlanmıştır.

← Tüm yazılar Paylaş: LinkedIn
Devamı

Diğer Yazılar