VHDL’de OTHERS Kullanımı, Seçilmiş Sinyal Atamaları ve Şartlı Sinyal Atamaları

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;

Bir yanıt yazın

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