fpganedir.com'da ara

fpganedir mail

DATA TİPLERİ

Herhangi bir data tipi, fonksiyonlar kullanılarak farklı tiplere çevrilebilirler.

1. STD_LOGIC                           

VHDL dilinde en çok kullanılan data tipidir. IEEE kütüphenesi, STD_LOGIC_1164 paketi içinde yer alır. 8 farklı değeri olmasına rağmen, genelde bunların üç tanesi kullanılır: “1”, “0” ve “Z”.

“1” :mantıksal 1
“0” :mantıksal 0
“H” :zayıf 1
“L” :zayıf 0
“X” :bilinmeyen
“U”:tanımlanmamış
“Z” :yüksek empedance (high impedance)
“D” :önemsiz (don’t care)
“W” :zayıf bilinmeyen

2. STD_LOGIC_VECTOR          

Çoklu std_logic tipindeki dataları tanımlamak için kullanılır.

Örnek:  “00000”, “1X00” , “UXZ0011”

 3. BOOLEAN                           

True ya da false değerlerinden birini alır .Varsayılan değerleri False’tur. Şartlı ifadelerde “<, >, <=, >=, = or /=” operatörleri ile birlikte kullanılırlar. Standart package’ında tanımlıdır.

type boolean is (false,true);

Örnek:

signal CondSup : boolean;
. . .
CondSup <= true;
. . .
if CondSup then

4. INTEGER         

Integer değeridir ve  genellikle negatif (2e31 -1) den pozitif  (2e31 -1)e kadar  değer alabilir. Kullanıcıya bağlı olarak değer aralığı ve sıralaması değişebilir. Tanımlanan aralığı dışında bir değer atanması halinde hata meydana gelir.
Toplama, çıkarma, çarpma, bölme, modül gibi standart operatörlerle birlikte kullanılabilecekleri gibi; büyük, küçük, büyük eşit, küçük eşit gibi karşılaştırma işlemlerinde de kullanılabilirler.

type Voltage_Level is range 0 to 5;
type Int_64K is range -65536 to 65535;
type WORD is range 31 downto 0;
Variable akım:integer:=12;
signal temp:integer range 0 to 200;

5. NATURAL                                 

0 eşit ve sıfırdan büyük olan integer değerini gösterir.

signal counter :natural range 0 to 200;

6. POSITIVE                                   

Sıfırdan büyük olan integer değerini gösterir.

signal counter :positive :=100;

7. BIT                                                --

'0','1' değerlerini alır.
Standart package’ında her  objenin varsayılan değeri ‘0’dır.Mantık değerleri olan ‘0’ ve ‘1’, integer olanlarla karıştırılmaması için tırnak içerisinde kullanılmalıdır.

type bit is ('0','1');
signal BitSig1, BitSig2 : bit;
. . .
BitSig1 <= '1';
BitSig2 <= not BitSig1;

8. BIT_VECTOR      

Bit_vector tipi, elemanlarının herbiri bit’lerden oluşan bir array olarak tanımlanır. Dizi genişliği deklare edilirken belirlenir. Dizi şeklinde bit_vector tipindeki değerler “çift tırnak” içinde gösterilemlidir.  Bit tipindeki tekli elementler ise ‘tek tırnak’ içinde yazılmalıdır.

type bit_vector is array (natural range <>) of bit;

signal DataBus : Bit_vector(7 downto 0);
signal FlagC : Bit;
DataBus(0) <= '1';                         
DataBus <= '0' & "111000" & FlagC;        
DataBus <= ('0', others => '1');           
DataBus <= DataBus(6 downto 0) & DataBus(7);
DataBus <= "01110001";  

9. REAL        

Gerçek sayıları ifade eder.                               

constant  PI SAYISI : REAL := 6.28318530717958647693;
constant  PI SAYISI: REAL := 6.2831_8530_7179_5864_7693;

10. CHARACTER     

Standart package’ında tanımlıdır.
"=", "/=", "<', "<=", ">", ">=" karakterleri de dahil olmak üzere 256 karakter vardır.

11. STRING (POSITIVE)                 

Karakterlerden oluşan tek boyutlu bir dizidir. Dizinin boyutu ve sıralaması, deklarasyon bölümünde belirlenir. (Örnek)
Concatenation ( birleştirme) , aggregate (gruplama) veya slice (parçalar ayırma) işlemlerinde kullanılırlar.
"=", "/=", "<", "<=", ">", ">=" operatörleri ile string’ler karşılaştırılabilmekte ve "&" işareti ile birleştirilebilmektedirler.
Çift tırnak içinde yazılırlar. Sentezlenemezler, sadece simülasyon sırasında mesaj yayınlamak için kulanılırlar. (assertion)


constant Name: STRING      := "FPGA";
constant Message1 : String(1 to 6) := "Nedir?";
signal Letter1 : character;
signal Message2 : string(1 to 10);
. . .
Message2 <= Name & Message1;

12. TIME                                       

Zamanı gösterir. hr, min, sec, ms, us, ns, ps, fs değerlerini alır.

constant clk_period : time := 2 us;


13. DELAY_LENGTH   
    
       
0' dan büyük zamanları gösterir.

14. COMPOSITE TYPE

Çoklu elemanlara sahip objelerin data tipidir. “Array type” ve “recor type” olmak üzere iki composite tip vardır. Bir record’un tüm eleamnları birbirinden farklı tiplerde olabilir, fakat array’da tüm elemanlar aynı olmak zorundadır. Array elemanları indeks sırası alırlar.

15. SIGNED-UNSIGNED

İki önemli tip olan signed ve unsigned, std_logic_arith  paketi içinde yeralır. Bu tipler, integer’dan farklı olarak sayısal değerlerin tek tek bitlerine erişim sağlarlar. Bu yönüyle bit_vector tipine benzerler. Fakat std_arith paketinde bu tiplerdeki sinyal ve değişken işlemleri sayısal işlemler olarak tanımlanmıştır.

type UNSIGNED is array (natural range <>) of std_logic;
type SIGNED is array (natural range <>) of std_logic;

Unsigned

İşeretlenmemiş sayısal değer demektir. En soldaki bit en anlamlı (MSB) bit olan bir sayıdır. 10’luk sistemdeki 8 sayısı UNSIGNED’("1000") olarak gösterilir. N bitlik bir unsigned sinyal ya da değişken için (2eN -1) boyutunda sayısal bir aralık tutulur. Örneğin, 4 bitlik bir bir değişken 15’e kadar sayısal değer tutar.

variable VAR: UNSIGNED (1 to 10);
-- 10 bitlik sayı
-- MSB:  VAR(VAR’left) = VAR(1)

signal SIG: UNSIGNED (5 downto 0);
-- 6-bitlik sayı
-- MSB: SIG(SIG’left) = SIG(5)

Signed

İşeretlenmiş sayısal değer demektir. En soldaki bit işaret bitinin ‘1’ olması sayının nedatif, ‘0’ olması ise pozitif olduğunu gösterir.

SIGNED’("0101") -- (+5)
SIGNED’("1011") -- (-5)

N bitlik bir signed sinyal ya da değişken için (-2eN)  ile (2eN -1) boyutunda sayısal bir aralık tutulur. Örneğin 4 bitlik bir değişken -8’den 7’ye kadar sayısal değer tutar.

variable S_VAR: SIGNED (1 to 10);
-- 11-bitlik sayı
-- işaret biti: S_VAR(S_VAR’left) = S_VAR(1)

signal S_SIG: SIGNED (5 downto 0);
-- 6-bitlik sayı
-- işaret biti: S_SIG(S_SIG’left) = S_SIG(5)

18. FLOATING POINT TYPE

Özel olarak belirtilmiş sınırlarda tanımlanan reel sayılardan oluşan tiptir. Toplama, çıkarma, çarpma, bölme, mutlak değer ve üs alma fonksiyonlarında kullanılabilirler.

type type_ismi is reel_sayı_sol_sınır downto reel_sayı_sağ_sınır;
type type_ismi is reel_sayı_sol_sınır to reel_sayı_sağ_sınır;

ÖRNEK:

type Voltage_Level is range -5.5 to +5.5;
type Int_64K is range - 65536.00 to 65535.00;

 

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.