Basit sinyal atamaları lojik veya aritmetik ifadelerde kullanılır. Atama işlemine ait genel form aşağıda verilmiştir.
sinyal_adi <= ifade;
<= operatörü VHDL’de atama operatörüdür. Aşağıdaki verilen örnekte bu operatörün kullanımını daha detaylı olarak göstermektedir. sinyal_sonuc sinyaline, sinyal_1 ve sinyal_2 sinyallerinin xor sonucunun sinyal_3 ile and işlemine tabi tutulmasında elde edilen sonuç atanmaktadır. Bu tanımlamada sinyal_sonuc ifadesi, bir bitlik sonucu içermektedir.
.. .. signal sinyal_1 : std_logic; signal sinyal_2 : std_logic; signal sinyal_3 : std_logic; signal sinyal_sonuc : std_logic; .. .. sinyal_sonuc <= (sinyal_1 xor sinyal_2) and sinyal_3; .. ..
VHDL’de aynı zamanda çoklu bit atamaları da yapılabilmektedir. Aşağıda verilen örnekte sinyal_1 ve sinyal_2 sinyalleri 3 bitlik std_logic_vector tipinde tanımlanmıştır. sinyal_1 ve sinyal_2 sinyallerinin or işleminin sonucu ise yine 3 bitlik std_logic_vector tipinde tanımlanan sinyal_sonuc sinyaline atanmaktadır.
.. .. signal sinyal_1 : std_logic_vector(2 downto 0); signal sinyal_2 : std_logic_vector(2 downto 0); signal sinyal_sonuc : std_logic_vector(2 downto 0); .. .. sinyal_sonuc <= sinyal_1 or sinyal_2; .. ..
Bu tanımlamada tek bitli olarak aslında aşağıdaki işlemler yapılmaktadır. sinyal_sonuc ifadesinin 0. bitine sinyal_1 ile sinyal_2’nin 0. bitlerinin or işlemlerinin sonucu atanmaktadır. Aynı şekilde sinyal_sonuc ifadesinin 1. bitine sinyal_1 ile sinyal_2’nin 1. bitlerinin or işlemlerinin sonucu ve sinyal_sonuc ifadesinin 2. bitine sinyal_1 ile sinyal_2’nin 2. bitlerinin or işlemlerinin sonucu atanmaktadır.
sinyal_sonuc(0) <= sinyal_1(0) or sinyal_2(0); sinyal_sonuc(1) <= sinyal_1(1) or sinyal_2(1); sinyal_sonuc(2) <= sinyal_1(2) or sinyal_2(2);
Aritmetik işlemlerde atama işlemlerine ilişkin örnek aşağıda verilmiştir. Verilen örnekte sinyal_1 ve sinyal_2 sinyalleri 4 bitlik std_logic_vector tipinde tanımlanmıştır. sinyal_1 ve sinyal_2 sinyallerinin toplama işleminin sonucu ise yine 4 bitlik std_logic_vector tipinde tanımlanan sinyal_sonuc sinyaline atanmaktadır.
.. .. signal sinyal_1 : std_logic_vector(3 downto 0); signal sinyal_2 : std_logic_vector(3 downto 0); signal sinyal_sonuc : std_logic_vector(3 downto 0); .. .. sinyal_sonuc <= sinyal_1 + sinyal_2; .. ..
Yukarda belirtilen tanımlamaya alternatif olarak aşağıdaki tanımlamada kullanılabilmektedir. Verilen örnekte sinyal_1 ve sinyal_2 sinyalleri 4 bitlik std_logic_vector tipinde tanımlanmıştır. sinyal_3 ise 1 bitlik std_logic tipinde tanımlanmıştır. sinyal_1 sinyali & operatörü ile başına ‘0’ eklenerek 5 bitlik hale getirilmiştir. Daha sonra elde edilen bu değer sinyal_2 ve sinyal_3 ile toplanarak işleminin sonucu ise 5 bitlik std_logic_vector tipinde tanımlanan sinyal_sonuc sinyaline atanmaktadır.
.. .. signal sinyal_1 : std_logic_vector(3 downto 0); signal sinyal_2 : std_logic_vector(3 downto 0); signal sinyal_3 : std_logic; signal sinyal_sonuc : std_logic_vector(4 downto 0); .. .. sinyal_sonuc<= ('0' & sinyal_1) + sinyal_2 + sinyal_3 ; .. ..
Örnek 7.1 : Aşağıda verilen tam_toplayici.vhd VHDL kodunda 21. satırda yukarda anlatılan ifadenin kullanımıyla, 4 bitlik tam toplayıcı devresinde kullanılması gösterilmektedir. Toplam değerinin, en anlamlı biti elde değerini tutmaktadır ve out_cikis_elde değerine atanmaktadır. Geri kalan 4 bit ise toplam sonucu olarak out_cikis değerine atanmaktadır.
library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_SIGNED.all; entity tam_toplayici is port ( in_giris_elde : in std_logic; in_giris_1 : in std_logic_vector(3 downto 0); in_giris_2 : in std_logic_vector(3 downto 0); out_cikis : out std_logic_vector(3 downto 0); out_cikis_elde : out std_logic ); end tam_toplayici; architecture Behavioral of tam_toplayici is signal r_Toplam : std_logic_vector(4 downto 0); begin r_Toplam<= ('0' & in_giris_1) + in_giris_2 + in_giris_elde; out_cikis_elde<= r_Toplam(4); out_cikis<= r_Toplam(3 downto 0); end Behavioral;