TEMEL VHDL BLEENLER VHDL OPERATRLER VE NTELKLER Abdurrahman
TEMEL VHDL BİLEŞENLERİ, VHDL OPERATÖRLERİ VE NİTELİKLERİ Abdurrahman BAYRAK ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 1
XILINX VIVADO ARAYÜZ TANITIMI VE PROJE OLUŞTURMA ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 2
VHDL KODUNUN BÖLÜMLERİ VHDL Tasarımı Kütüphane (Library) Varlık (Entity) ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ Mimari (Architecture) 3
KÜTÜPHANE (LIBRARY) BİLDİRİMİ library kutuphane_adi; use kutuphane_adi. paket_adi. paket_bolumu; … … use kutuphane_adi. paket_bolumu; ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 4
VARLIK (ENTITY) BİLDİRİMİ entity varlik_adi is port ( port_adi : ); end varlik_adi; [port_modu] tip_adi; tip_adi ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 5
VARLIK (ENTITY) BİLDİRİMİ entity ornek_varlik is port ( in_giris : inout_giris : out_cikis : ); end ornek_varlik; in std_logic; inout std_logic; out std_logic ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ inout_giris in_giris ornek_varlik out_cikis 6
MİMARİ (ARCHITECTURE) architecture mimari_adi of varlik_adi is [signal tanımlama] [constant tanımlama] [type tanımlama] [component tanımlama] [attribute tanımlama] begin {COMPONENT örnek ifadeleri; } {PROCESS ifadeleri; } {GENERATE ifadeleri; } {Eş zamanlı atama ifadeleri; } end mimari_adi; Tanımlama Mimari Bileşenleri ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 7
MİMARİ (ARCHITECTURE) architecture behavioral of ornek_varlik is begin inout_giris <= in_giris; out_cikis <= inout_giris; end behavioral; ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 8
ÖRNEK UYGULAMA: YARI TOPLAYICI DEVRESİ ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 9
VHDL OPERATÖRLERİ VE NİTELİKLERİ • VHDL dilinde tasarım yaparken kullanılabilecek 3 tür operatör vardır. Bunlar sırasıyla: • Mantıksal (Boolean) Operatörler, • Aritmetik Operatörler, • İlişkisel Operatörler (Not: Yukarıdaki liste operatörlerin öncelik sırasına göre sıralanmıştır. ) ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 10
MANTIKSAL OPERATÖRLER • and : Mantıksal VE işlemi • out_cikis <= in_giriş_1 and in_giriş_2; • or : Mantıksal VEYA işlemi • out_cikis <= in_giriş_1 or in_giriş_2; • nand : Mantıksal VE DEĞİL işlemi • out_cikis <= in_giriş_1 nand in_giriş_2; • nor : Mantıksal VEYA DEĞİL işlemi • out_cikis <= in_giriş_1 nor in_giriş_2; • xor : Mantıksal ÖZEL VEYA işlemi • out_cikis <= in_giriş_1 xor in_giriş_2; • xnor : Mantıksal ÖZEL VEYA DEĞİL işlemi • out_cikis <= in_giriş_1 xnor in_giriş_2; ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 11
İLİŞKİSEL OPERATÖRLER • • • =(eşittir) /=(eşit değil) <(küçük) <=(küçük eşit) >(büyük) >=(büyük eşit) if A <= B then out_cikis <= in_giris_1; else out_cikis <= in_giris_2; end if; ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 12
ARİTMETİK OPERATÖRLER • • • +(toplama) -(çıkarma) &(ekleme) *(çarpma) /(bölme) mod(mod alma) rem(artan) **(üs alma) abs(mutlak değer) not(tersi) ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 13
NİTELİKLER (ATTRIBUTES) • Önceden Tanımlı Nitelikler • • Signal ornek_signal : std_logic_vector(3 downto 0) : =" 0101 "; A<=ornek_signal(ornek_signal’low); B<=ornek_signal(ornek_signal’high); C<=ornek_signal(ornek_signal’left); D<=ornek_signal(ornek_signal’right); E<=ornek_signal’range; F<=ornek_signal’reverse_range; ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 14
NİTELİKLER (ATTRIBUTES) • Sinyal Nitelikleri • EVENT: Olay gerçekleştiğinde doğru değeri döndürür. • if (in_clk’event and in_clk=‘ 1’) then • STABLE: Olay gerçekleşmediğinde doğru değeri döndürür. • if (not in_clk’stable and in_clk=‘ 1’) then • ACTIVE: Herhangi bir hareket meydana geldiğinde doğru değeri döndürür. • QUIET(süre): Belirtilen zaman diliminde hiçbir hareket meydana gelmediğinde doğru değeri döndürür. • LAST_VALUE: Son olaydan önceki değeri döndürür. ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 15
NİTELİKLER (ATTRIBUTES) • Kullanıcı tanımlı nitelikler attribute nitelik_ismi : nitelik_tipi; attribute nitelik_ismi of hedef_isim : nesne is deger; • nitelik_tipi: bit, integer, std_logic_vector (tüm veri tipleri). • nesne: type, signal, procedure, vb. • deger: ‘ 1’, 254, vb. attribute kosul_nitelik : boolean; attribute kosul_nitelik of in_clk : signal is "true"; ANKARA EMO FPGA PROGRAMLAMA EĞİTİMİ 16
- Slides: 16