fpganedir.com'da ara

fpganedir mail

FONKSİYON

Bir değer döndüren ifadelerden oluşan alt programdır. Fonksiyon yanlızca giriş parametreleri içerir. Çıkış parametreleri içermez. Her fonksiyon yanlızca bir değer dönderir.

Fonksiyon Yapısı:   

function fonksiyon_adı (virgülle ayrılmış input lar : type) return  type is
      sabit ve değişken tanımlamaları (sinyal türü tanımlanmaz)
begin
      function body
end fonksiyon_adı;

Fonksiyon Deklarasyonu:  

function fonksiyon_adı(virgülle ayrılmış input lar : type) return  type;

Fonksiyonun Çağrılması:

signal <= fonksiyon_adı (virgülle ayrılmış input lar);

Eğer parantez içerisindeki input sırasına uyulmayacak ise aşağıdaki ifadenin kullanılması gerekir.:
signal = fonksiyon adı (input1 => insig1, input2 => insig2, ...);


ÖRNEK 1
(Üç Girişli AND ve OR Kapısı):

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity OR_AND is
         port( in0           :  in std_logic;
                  in1           :  in std_logic;
                  in2           :  in std_logic;
                 out_and   : out std_logic;
                 out_or      : out std_logic);
         end OR_AND;

architecture Behavioral of OR_AND is

--FONKSİYON BODY
function AND_GATE(in0,in1,in2:std_logic) return std_logic is
      variable temp:std_logic;
       begin  
             temp:=in0 and in1 and in2;
             return  temp;                
      end AND_GATE;

--FONKSİYON BODY
function OR_GATE(in0,in1,in2:std_logic) return std_logic is
     begin  
         return in0 OR in1 OR in2;                   
      end OR_GATE;

begin
--Fonksiyonun program içerisinde çağrılması
      out_and<=AND_GATE(in0,in1,in2);
       out_or<=OR_GATE(in0,in1,in2);
end Behavioral;

   Programın ModelSim’de simülasyonunu yaptıktan sonra aşağıdaki tabloyu elde ederiz.

ÖRNEK 2(PARITY)

library IEEE;
use
IEEE.STD_LOGIC_1164.ALL;

entity Parityh is
     Port (input :  in  STD_LOGIC_VECTOR (8 downto 0);
               output : out  STD_LOGIC);
end Parityh;

architecture Behavioral of Parityh is
      function PARITY(X:std_logic_vector) return std_logic is
         variable temp:std_logic:='0';
     begin  
          for I in X'range loop
               temp:= temp XOR X(I);
         end loop;          
         return  temp;                        
     end PARITY;
begin
     output<=PARITY(input);
end Behavioral;

Programın ModelSim’de simülasyonunu yaptıktan sonra aşağıdaki tabloyu elde ederiz.

 

Anasayfa | Fpga | VHDL | VHDL Sözlüğü | Embedded Sistem | Android | Sayısal Tasarım | Simulasyon | PCB | Örnekler | Forum | İletişim
Copyright © 2010-2013 FPGAnedir. All Rights Reserved.