OTHERS Kullanarak Sinyal Değeri Atama
Bir sinyal değerinin belli bir kısmına aynı bitler yazılacaksa others kullanılarak bu işlem yapılabilmektedir. Aşağıda verilen tanımlamada sinyal_1 sinyalinin tüm bitlerine 0, sinyal_2 sinyalinin tüm bitlerine ise 1 atanmaktadır.
.. .. signal sinyal_1 : std_logic_vector(7 downto 0) signal sinyal_2 : std_logic_vector(3 downto 0); .. .. sinyal_1<= (others => '0'); sinyal_2<= (others => '1'); .. ..
Seçilmiş Sinyal Atama
Seçilmiş sinyal ifadesi, seçim koşullarına uygun birkaç alternatif değerden bir sinyalin değer olarak atanmasında kullanılır. Genel tanımlama ifadesi aşağıdaki gibidir.
with ifade select sinyal_adi<= ifade when sabit_deger {,ifade when sabit_deger } ;
Aşağıda verilen tanımlamada sinyal_cikis ifadesine yapılacak atama değeri sinyal_secme sinyalinin değerine bağlı olarak yapılmaktadır. Eğer sinyal_secme sinyali ‘0’ ise sinyal_cikis değerine sinyal_1 sinyali atanmaktadır. sinyal_secme sinyali 0 haricinde başka değerler alması durumunda ise sinyal_cikis değerine sinyal_2 sinyali atanmaktadır.
.. .. signal sinyal_1 : std_logic; signal sinyal_2 : std_logic; signal sinyal_secme : std_logic; signal sinyal_sonuc : std_logic; .. .. with sinyal_secme select sinyal_sonuc <= sinyal_1 when '0', sinyal_2 when others; .. ..
Şartlı Sinyal Atamaları
Seçilmiş sinyal atamalarına benzer olarak; şartlı sinyal atamaları da birkaç alternatif değerden bir sinyal değerinin atanması için kullanılır. Genel gösterim aşağıdaki gibidir:
sinyal_adi<= ifade when lojik_ifade else {ifade when lojik_ifade else} ifade ;
Aşağıda verilen tanımlamada sinyal_cikis ifadesine yapılacak atama değeri 3 farklı koşulda belirlenmektedir. Eğer sinyal_secme sinyali ‘0’ ise sinyal_cikis değerine sinyal_1 sinyali atanmaktadır. Eğer sinyal_secme sinyali ‘1’ ise sinyal_cikis değerine sinyal_2 sinyali atanmaktadır. sinyal_secme sinyali ‘0’ ve ‘1’ haricinde başka değerler alması durumunda ise sinyal_cikis değerine 0 atanmaktadır.
.. .. signal sinyal_1 : std_logic; signal sinyal_2 : std_logic; signal sinyal_secme : std_logic; signal sinyal_sonuc : std_logic; .. .. sinyal_cikis <= sinyal_1 when sinyal_secme = '0' else sinyal_2 when sinyal_secme = '1' else '0'; .. ..
Örnek 1: Aşağıda verilen oncelikli_atama.vhd VHDL kodunda şartlı sinyal atama kullanılarak tasarım yapılmıştır. Kodda in_giris_1, in_giris_2 ve in_giris_3 girişlerini 1 olması durumunda out_cikis değerine sırası ile “01“, “10” ve “11” atanmaktadır. Bu şartların dışında meydana gelebilecek durumlarda ise çıkışa “00” atanmaktadır.
library IEEE; use IEEE.STD_LOGIC_1164.all; entity oncelikli_atama is port ( in_giris_1 : in std_logic; in_giris_2 : in std_logic; in_giris_3 : in std_logic; out_cikis : out std_logic_vector(1 downto 0) ); end oncelikli_atama; architecture Behavioral of oncelikli_atama is begin out_cikis<= "01" when in_giris_1 = '1' else "10" when in_giris_2 = '1' else "11" when in_giris_3 = '1' else "00" ; end Behavioral;