VHDL Veri Tipleri – Diziler

std_logic_vector ve bit_vector tipleri std_logic ve bit sinyallerinden oluşan dizilerdir. Bu dizilerin VHDL standardına göre gösterimi aşağıdaki gibidir.

type bit_vector is array (natural range<>) of bit;
type std_logic_vector is array (natural range<>) of std_logic;

Yukarıdaki gösterimden de görüleceği üzere dizilerin uzunlukları belirtilmemiştir. Dizi uzunluğu veri tipi tanımlanacağı zaman kullanıcı tarafından belirtilir.

type t_Kelime_10 is array (9 downto 0) of std_logic;
signal r_Kelime_10 : t_Kelime_10;

Yukarıda t_Kelime_10 tipi ile tanımlanan r_Kelime_10 sinyali, 10 elemanlı std_logic veri tipinden meydana gelmektedir.

VHDL’de diziler çok boyutlu olabilir. Dizi tanımlamalarını kavramak için öncelikle bir boyutlu dizi tanımlaması ile ilgili örnek aşağıda verilmiştir:

type t_dizi_1d is array (2 downto 0) of std_logic_vector(3 downto 0);
signal r_dizi_1d : t_dizi_1d;

r_dizi_1d sinyali her biri 4 bitlik std_logic_vector tipinde sinyallerinden oluşan 3 bileşenden meydana gelmektedir. Aşağıda r_dizi_1d bileşeni için bir atama işlemi gösterilmektedir.

r_dizi_1d <= ("0010", "1100", "1001"); -- Tüm değerlerin ataması.
r_dizi_1d(0) <= "1001"; -- 0. Elemanın değer ataması.
r_dizi_1d(1) <= "1100"; -- 1. Elemanın değer ataması.
r_dizi_1d(2) <= "0010"; -- 2. Elemanın değer ataması.
r_dizi_1d(2)(1) <= '1'; -- 2. Elemanın 1. bitine değer ataması.

VHDL ile iki boyutlu dizi tanımlaması bir boyutlu ile benzerdir. Aşağıda iki boyutlu dizi tanımlamasına ait örnek kullanım verilmiştir.

type t_dizi_2d is array (0 to 1, 2 downto 0) of std_logic_vector(3 downto 0);
signal r_dizi_2d : t_dizi_2d;

array_2d sinyali her biri 4 bitlik std_logic_vector sinyallerinden oluşan 6 bileşenden meydana gelmektedir. Aşağıda array_2d bileşeni için bir atama işlemi gösterilmektedir.

r_dizi_2d <= (("0010", "1100", "1001"),
              ("1101", "0011", "0110")); -- Tüm değerlerin atanması.
r_dizi_2d(0) <= ("0010", "1100", "1001");-- 0. satıra değer atanması.
r_dizi_2d(1) <= ("1101", "0011", "0110");-- 1. Satıra değer atanması.
r_dizi_2d(0, 2) <= "0010";--0. satırın 2. elemanına değer atanması.
r_dizi_2d(0, 1) <= "1100";--0. satırın 1. elemanına değer atanması.
r_dizi_2d(1, 1) <= "0011";--1. satırın 1. elemanına değer atanması.
r_dizi_2d(1, 0) <= "0110";--1. satırın 0. elemanına değer atanması.
r_dizi_2d(1, 0)(1) <= '1';--1. satır, 0. elemanın, 1. bitine değer atama.
r_dizi_2d(1, 0)(0) <= '0';--1. satır, 0. elemanın, 0. bitine değer atama.

Bir yanıt yazın

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