fpganedir.com'da ara

fpganedir mail

ÖZEL TANIMLI ATTRIBUTE

Attribute'lar, program içerisinde herhangi bir türdeki sinyal veya değişkeni alıp bir değer döndüren yapılardır. Ön tanımlı ve özel tanımlı olarak iki farklı şekilde kullanılabilirler

Kullanıcıya özel tanımlı atribute’lar sayesinde;  tasarımda kullanılan herhangi bir elemana ait fazladan bilgi toplayabiliriz..

attribute attribute_ismi: type;                                             -- attribute deklarasyonu
attribute attribute_ismi of item : item_sınıfı is ifade;     -- attribute tanımlama

Örnek:

package Attribute_paket is   --Attribute_paket  package’ı altında bir çok attribute deklarasyonu görülüyor.
  
    attribute Pin : Positive;
    attribute Comp_sembol : String;    
    attribute Max_gecikme: Time;

    type Nokta is record
         x, y: Real;
    end record;

   attribute Pin : Nokta;
    ........
end package Attribute_paket;

Örnek:

package Deklarasyonlar is     --Attribute_paket altında deklare edilen atribute’lar, burada kullanılıyor..
  use Work.Attribute_paket.Comp_sembol,
     Work.Attribute_paket.Koordinat,
     Work.Attribute_paket.Pin,
     Work.Attribute_paket.Max_gecikme;

  constant Sabit1: Positive := 14;
  signal S1: Bit_vector (0 to 15);

  component Comp1 is
        port ( ... );
  end component;

  attribute Comp_sembol of Comp1: component is "Sayac 2 ";
  attribute Koordinat of Comp1: component is (0.0, 19.3);
  attribute Pin of S1: signal is 24;
  attribute Max_gecikme of Sabit1: constant is 100 ns;
    .........
end package Deklarasyonlar;

Örnek:

package TestPaket is
    attribute PaketAttrib : String;         
    attribute PaketAttrib of  TestPaket:
    package is "Egitim Paketi ";
    .........
end package TestPaket;

TestPaket package’ına ait PaketAttrib isimli attribute tanımlaması, paketin deklare edildiği kısımda yapılıyor.

Örnek:

procedure Alt_deger (a, b : in Integer; result: out Integer);
procedure Alt_deger (a, b : in Bit_vector; result: out Bit_vector);
procedure Tanim : String;
attribute Tanim of   Alt_deger [Integer, Integer, Integer] : procedure is "Integer_alt degerler ";
attribute Tanim of   Alt_deger [Bit_vector, Bit_vector, Bit_vector] : procedure is "Bit_vector_alt degerler";

“Alt_deger” ismi iki farklı procedure’de de kullanıldığı için aşırı yükleme (overloading) olmuştur. Bu nedenle, attribute tanımlaması yaparken, hangi procedure’e ait olduğunu belli etmek için köşeli parantez içinde parametre listesi verilir.

Örnek:

function "*" (x,y : yeni_tip) return yeni_tip;
attribute Karakteristik : String;
attribute Karakteristik of  "*" [ yeni_tip, yeni_tip return yeni_tip]: function is "yeni_tip_operator ";

“*” operatörü aşırı yüklenmiş olduğundan, attribute tanımlaması yazılırken, fonksiyon parametrelerinin tipleri köşeli parantez içinde belirtiliyor.

Örnek:

procedure P1 (FIFO : inout Fifo_tip; ELEMAN: in Eleman_tip) is
   attribute Sayi of FIFO: variable is 67;                                       -- Procedure içinde tanımlanmıştır.
   attribute Izle of ELEMAN: constant is "Tamsayi/Ondalik";     -- Procedure içinde tanımlanmıştır.
   .........
end procedure P1;

Örnek:

architecture Stru of ALU is
    component C1 is
        port (...)
   end component;
   attribute Koor of TA: label is (0.1, 1.4);
begin
     TA : C1 port map ( ... );
      .........
end architecture Struct;

Örnekte “TA” etiketiyle bir component kullanımı görülüyor. Bu yüzden component’e bağlı olan attribute tanımlaması da, component’in kullanıldığı yapının dışında, Struct architecture’ı altında yapılıyor.

Örnek:

type Uc_seviye is (Low, High, Idle);
type Dort_seviye is (Low, High, Idle, Uninitialized);

attribute
Hex_deger : string (0 to 1);
attribute Hex_deger of Low [return Four_level_logic]: literal is "EE";
attribute Hex_deger of High [return Four_level_logic]: literal is "F0";
attribute Hex_deger of Idle [return Four_level_logic]: literal is "A8";
attribute Hex_deger of Uninitialized: literal is "1F";

Low, High ve Idle literal’leri iki kez kullanıldığı için aşırı yükleme olmuştur. Uninitialized literal’i için aşırı yükleme söz konusu olmadığından, Hex_deger attribute’ını tanımlarken imza işlemine gerek kalmamıştır.

DETAYLI AÇIKLAMA:

 

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.