VHDL Veri Tipleri – Port Dizileri ve Record Tanımlaması

Port Dizileri

VHDL dilinde entity kısmında doğrudan istenilen tipte veri nesnesi tanımlayıp kullanmak mümkün değildir. VHDL dili ancak önceden tanımlanmış veri nesnelerinin entity kısmında kullanılmasına izin vermektedir. Bu kısıtlama ile en çok karşılaşılan durum ise entity kısmında çok boyutlu dizilerin kullanılmaya çalışıldığı anlardır.

Bu kısıtlamadan kurtulmak ve istediğiniz veri nesnesini (kendinize özel tanımladıklarınız da dâhil olmak üzere) kullanmak için kullanılan yöntem ise package tanımlamasıdır.

package içinde tanımlanan veri nesneleri ilgili package’in çağrıldığı tüm proje dosyaları tarafından entity kısmı da dahil olmak üzere her yerde kullanılabilir. package kullanımı ile ilgili ayrıntılı bilgili daha sonraki bölümlerde anlatılacak olup basit bir örnek aşağıda verilmiştir.

Aşağıda port dizi tanımlama işleminin yapıldığı port_dizi_paket.vhd VHDL kodu verilmiştir. 6. satırda her biri 8 bitlik std_logic_vector tipinde tanımlanmış 4 bileşenden oluşan port_dizi tipi tanımlanmıştır.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
 
package port_dizi_paket is
 
  type port_dizi is array (3 downto 0) of std_logic_vector(0 to 7);
 
end port_dizi_paket;

Aşağıda port dizi tanımlama işleminin yapıldığı port_dizi_ornek.vhd VHDL kodu verilmiştir. 3. satırda port_dizi_paket package tanımlama işlemi yapılarak port_dizi tipinin port_dizi_ornek varlığında kullanılabilir hale gelmesi sağlanmıştır. 7. satırda in_giris giriş portu port_dizi tipinde tanımlanmıştır. 8. satırda out_cikis çıkış portu port_dizi tipinde tanımlanmıştır.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use work.port_dizi_paket.all;
 
entity port_dizi_ornek is
  Port (
    in_giris : in port_dizi;
    out_cikis : out port_dizi
  );
end port_dizi_ornek;
 
architecture Behavioral of port_dizi_ornek is
 
begin
 
  out_cikis <= in_giris; 
 
end Behavioral;

Record Tanımlaması

record yapısı diziler ile benzer olmakla berber en önemli farkı içeriğinde farklı veri tiplerine izin veriyor olmasıdır. Bir record tanımlaması içinde birbirinden farklı tiplerde veriler bulunabilir. Aşağıda record tanımlamasına ait kullanım verilmiştir.

type record_ornek is record
   bilesen_adi : bilesen_tipi;
   bilesen_adi : bilesen_tipi;
…
…
end record;

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir