VHDL Operatörleri – Çarpma, Bölme, Mod ve Artan Operatörleri

VHDL dilinde kullanılan çarpma, bölme, mod ve artan operatörleri aşağıda listelenmiştir:

  • * : çarpma
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 ile çarpılarak atanmaktadır. Örneğin in_giris_1 değeri “1010” ve in_giris_2 değeri “0101” olsun. Bu durumda out_cikis değerine “00110010” atanmaktadır.

  • / : bölme
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ğerine bölünerek atanmaktadır. Örneğin in_giris_1 değeri 19 ve in_giris_2 değeri 4 olsun. Bu durumda out_cikis değerine 4 atanmaktadır.

VHDL dilinde var olan bölme operatörü sadece 2’nin kuvvetleri şeklinde ifade edilebilen sayılar üzerinde sentezlenebilir sonuç üretmektedir.

  • mod : mod alma
out_cikis <= in_giris_1 mod in_giris_2;

Yukarıda verilen tanımlamada çıkış değerine in_giris_1 değerinin in_giris_2 değerine göre modu atanmaktadır. Örneğin in_giris_1 değeri19 ve in_giris_2 değeri 4 olsun. Bu durumda out_cikis değerine 19 mod 4 = 3 atanmaktadır. Eğer in_giris_1 değeri19 olsaydı out_cikis değerine –19 mod 4 = 1 atanacaktır.

VHDL dilinde var olan mod operatörü sadece 2’nin kuvvetleri şeklinde ifade edilebilen sayılar üzerinde sentezlenebilir sonuç üretmektedir.

  • rem : artan
out_cikis <= in_giris_1 rem in_giris_2;

Yukarıda verilen tanımlamada çıkış değerine, in_giris_1 değerinin in_giris_2 değerine göre artan değeri atanmaktadır. Örneğin in_giris_1 değeri 19 ve in_giris_2 değeri 4 olsun. Bu durumda out_cikis değerine 19 rem 4 = 3 atanmaktadır. Eğer in_giris_1 değeri19 olsaydı out_cikis değerine –19 mod 4 = -3 atanacaktır.

VHDL dilinde var olan rem operatörü sadece 2’nin kuvvetleri şeklinde ifade edilebilen sayılar üzerinde sentezlenebilir sonuç üretmektedir.

Örnek : Çarpım operatörlerinin kullanıldığı carpim_operatorleri.vhd VHDL kodu aşağıda gösterilmiştir. Şekil 4‑3’te carpim_operatorleri varlığının ilgili çıkışlara ilişkin benzetim çıktısı gösterilmiştir. Örnek içerisinde 25., 26. ve 27. satırlarda kullanılan conv_integer fonksiyonu std_logic_vector türünde sinyali integer tipine tür dönüşüm işlemini gerçekleştirmektedir. Detaylı olarak Bölüm 5 içerisinde anlatılacaktır.

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

entity carpim_operatorleri is
  Port (
    in_giris_1 : in std_logic_vector(3 downto 0) := "0011";
    in_giris_2 : in std_logic_vector(3 downto 0) := "0100";
    in_giris_3 : in integer := 19;
    out_cikis_carpim : out std_logic_vector(7 downto 0);
    out_cikis_bolme : out integer;  
    out_cikis_mod : out integer;
    out_cikis_rem : out integer
  );
end carpim_operatorleri;
 
architecture Behavioral of carpim_operatorleri is
 
begin
 
  process(in_giris_1, in_giris_2, in_giris_3)
  begin

    out_cikis_carpim <= in_giris_1 * in_giris_2;
    out_cikis_bolme <= in_giris_3 / conv_integer(in_giris_2);
    out_cikis_mod <= in_giris_3 mod conv_integer(in_giris_2);
    out_cikis_rem <= in_giris_3 rem conv_integer(in_giris_2);
 
  end process;
 
end Behavioral;

Şekil 1 carpim_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