VHDL Operatörleri – Toplama, Çıkarma ve Ekleme Operatörleri

VHDL dilinde kullanılan toplama, çıkarma ve ekleme operatörleri aşağıda listelenmiştir:

  • + : toplama

out_cikis <= in_giris_1 + in_giris_2;

Yukarıda verilen tanımlamada çıkış değerine in_giris_1 ve in_giris_2 değerlerinin toplamı atanmaktadır. Örneğin in_giris_1 değeri”1010” ve in_giris_2 değeri “0101” olsun. Bu durumda out_cikis değerine “1111” olmaktadır.

  • – : çıkarma

out_cikis <= in_giris_1 – in_giris_2;

Yukarıda verilen tanımlamada çıkış değerine in_giris_1 değerinden in_giris_2 değerinin farkı atanmaktadır. Örneğin in_giris_1 değeri“1010” ve in_giris_2 değeri “0101” olsun. Bu durumda out_cikis değerine “0101” olmaktadır.

  • & : ekleme
out_cikis <= in_giris_1 & in_giris_2;

Yukarıda verilen tanımlamada çıkış değerine in_giris_1 değerine in_giris_2 değeri eklenerek atanmaktadır. Örneğin in_giris_1 değeri  “1010” ve in_giris_2 değeri “0101” olsun. Bu durumda out_cikis değerine “10100101” olmaktadır.

Bu operatör aynı zamanda kaydırma (shifting) işlemleri için de kullanılmaktadır. Bu sayede sağa ya da sola kaydırma yapılabilir. Bunun için sınır değerlerin kontrolü gerekmektedir. Örneğin gelen_veri değeri 8 bit uzunluğunda “10100101” başlangıç değerinde verilmiş olsun. Verilen veriyi sola kaydırmak için yazmamız gereken kod aşağıda verilmiştir:

signal gelen_veri : std_logic_vector(7 downto 0):=”10100101”;
..
..
gelen_veri <= gelen_veri(6 downto 0) & ‘0’;

Eğer kaydırma işlemini diğer yöne, sağa yaptırmak isteseydik yazmamız gereken kod aşağıdaki gibi olacaktır:

gelen_veri <= ‘0’ & gelen_veri(7 downto 1);

Örnek : Toplama operatörlerinin kullanıldığı toplama_operatorleri.vhd VHDL kodu aşağıda gösterilmiştir. toplama_operatorleri varlığı 4 bitlik in_giris_1 ve in_giris_2 giriş portlarına sahiptir.

  • 4 bitlik out_cikis_toplam çıkış portuna in_giris_1 ve in_giris_2 giriş port değerlerinin toplama işlemi sonucu atanmaktadır.
  • 4 bitlik out_cikis_fark çıkış portuna in_giris_1 ve in_giris_2 giriş port değerlerinin çıkarma işlemi sonucu atanmaktadır.
  • 8 bitlik out_cikis_ekleme çıkış portuna in_giris_1 ve in_giris_2 giriş port değerleri eklenerek atanmaktadır.

Şekil1’de toplama_operatorleri varlığının ilgili çıkışlara ilişkin benzetim çıktısı gösterilmiştir. Şekil 4‑2’de in_giris_1 giriş portunun “0101” ve in_giris_2 giriş portunun “0010” değeri için; out_cikis_toplam çıkış portu değeri “0111”, out_cikis_fark çıkış portu değeri “0011”  ve . out_cikis_ekleme çıkış portu değeri “01010010” olmaktadır.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_SIGNED.ALL;

entity toplama_operatorleri is
  Port (
    in_giris_1 : in std_logic_vector(3 downto 0);
    in_giris_2 : in std_logic_vector(3 downto 0);
    out_cikis_toplam : out std_logic_vector(3 downto 0);
    out_cikis_fark : out std_logic_vector(3 downto 0);
    out_cikis_ekleme : out std_logic_vector(7 downto 0)
  );
end toplama_operatorleri;

architecture Behavioral of toplama_operatorleri is

begin

  process(in_giris_1, in_giris_2)
  begin

    out_cikis_toplam  <= in_giris_1 + in_giris_2;
    out_cikis_fark    <= in_giris_1 - in_giris_2;
    out_cikis_ekleme  <= in_giris_1 & in_giris_2;

  end process;

end Behavioral;

Şekil 1 toplama_operatorleri varlığının ilgili çıkışlara ilişkin benzetim çıktısı

Bir yanıt yazın

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