Vhdl e t m
This presentation is the property of its rightful owner.
Sponsored Links
1 / 48

VHDL EĞİTİMİ PowerPoint PPT Presentation


  • 121 Views
  • Uploaded on
  • Presentation posted in: General

VHDL EĞİTİMİ . Hazırlayan : Erman Üret. GİRİŞ. 1986 da IEEE standardı olmuş 1993 de bugünkü halini almıştır. “Very high speed integrated circuit hardware description language”’ın kısaltılmasıdır.

Download Presentation

VHDL EĞİTİMİ

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Vhdl e t m

VHDL EĞİTİMİ

Hazırlayan : Erman Üret


Vhdl e t m

GİRİŞ

  • 1986 da IEEE standardı olmuş 1993 de bugünkü halini almıştır.

  • “Very high speed integrated circuit hardware description language”’ın kısaltılmasıdır.

  • VHDL kodu genellikle Entity, Package / Architecture, Package Body ve Process kısımlarından oluşur.

  • Her VHDL kodu bir yada daha fazla kütüphane dosyası içerir.

  • Case sensitive bir dil değildir ancak dile özel kelimelerin büyük harfle yazılması önerilir.


Ent ty

ENTİTY

  • Entity: Modülün dış dünya ile olan bağlantılarını içerir.

  • “PORT();” ifadesi giriş çıkışların yönünü sayısını ve türünü belirtmekte kullanılır. Böylece modüle olan giriş çıkışlar belirtilir.

  • Bir “entity” birden fazla “architecture” ’ a sahip olabilir.

  • Entity bir architecture a sahipse ikisine de aynı ismi vermek okunabilirliği arttırır.


Ent ty rnek

ENTİTY ÖRNEK

Entity ismi

Bir bitlik giriş ve çıkışlar

“std_logic” olarak

Da tanımlanabilir

Bu satır ile entity bitiriliyor


Architecture

ARCHITECTURE

  • Architecture: Entity ‘de belirtilen kısımların davranışlarının belirlendiği yerdir.

  • BEGIN – END komutları arası paralel (concurent) olarak işlenir.

  • “<=” sinyalleri eşitlemekte kullanılır.

  • “ := ” değişkenlere değer atamalarında kullanılır.

  • VHDL ‘de sürücü (driver) mantığı vardır. Bir sinyalin sürücü değeri değişmedikçe yeni atama yapılmaz

  • “a <= b” b sinyali a sinyalinin sürücü sinyaldir.

  • “AFTER 0.5 NS” atamadan sonra yazılabilir, atamanın ne zaman yapılacağını belirtir.


Architecture rnek

ARCHITECTURE ÖRNEK

Bağlı olduğu entity ismi

Architecture ismi

Sinyal tanımlaması

Bu satır ile entity bitiriliyor


Process fadeler

PROCESS İFADELERİ

  • Process: 3 ana kısımdan oluşur

    • Duyarlılık listesi

    • İfadeler

    • İşlemler

  • Duyarlılık listesindeki elemanlarda herhangi bir değişiklik olmadıkça içerisindeki işlemler gerçekleştirilmez.

  • Process ifadelerinde işlemler diğer programlama dillerinde olduğu gibi sıralı (sequential) işenir.


Process rnek

PROCESS ÖRNEK


Vhdl tanimlama

VHDL TANIMLAMA

  • VHDL ile tasarımını yapacağınız modülü birden fazla şekilde tanımlayabilirsiniz.

  • Tanımlamayı ne şekilde yapacağınız (Architecture kısmı için) tecrübe ve ihtiyaçlara göre belirleniyor.

  • Temel tanımlama türlerinden bazıları;

    • Structural (yapısal)

    • Behavioral(Davranışsal)

  • Bu tanımlama türlerinden yapısal olanda şematik tasarım gibi parçalar birleştiriliyor. Davranışsal olanda ise parçaların davranışları bildiriliyor ve vhdl bu davranışlara göre parçaları modelliyor.


  • Structural yapisal d zayn

    STRUCTURAL (YAPISAL) DİZAYN

    Sinyal tanımlamaları begin bloğunun üzerinde yapılıyor


    Configuration

    CONFIGURATION

    • Configutation anahtar sözcüğü bir entity için birden fazla architecture kullandığımızdan ne zaman ve hangi durumlarda hangi architecture ‘ın kullanılacağını seçmemize olanak tanıyor.


    And kapisi

    AND KAPISI

    • library IEEE;

    • use IEEE.std_logic_1164.all;

    • entity AND_2 is

      Port ( A : In STD_LOGIC;

      B : In STD_LOGIC;

      Q : Out STD_LOGIC );

      end AND_2;

      architecture BEHAVIORAL of AND_2 is

      begin

      Q <= A and B;

      end BEHAVIORAL;


    4 1 se c

    4 – 1 SEÇİCİ

    Bu kod sıralı işlense hata verir.

    “sel” ataması yapılmadan kullanılıyor.


    Primitives templates

    PRIMITIVES & TEMPLATES

    • VHDL ve verilog dilinde bazı önceden tanımlı yapılar vardır. Bu yapılar kütüphane dosyalarında saklanabilecekleri gibi kullanıcılar tarafından da oluşturulabilirler.

    • Örneğin “and - or” gibi yapılar primitive yapılarıdır.

    • Kod yazımı tamamlandığında derleme aşamasında kompiler bizim yazdığımız yapıların yerine optimize edilmiş uygun primitive leri yerleştirebilir. Bu bir sorun teşkil etmez.

    • Bunun dışında ISE yazılımında “language templates” adındaki bölümde kullanılan dille ve fpga ile ilgili hazır yapılarda bulunmaktadır.

    • Kullanıcılar kendi kodlar ile de kütüphane oluşturabilir.


    Gec kmeler

    GECİKMELER

    • VHDL ‘de transport(taşıma) ve inertial gecikmeler olmak üzere 2 çeşittir.

    • A <= B AND C; Satırı simulasyonda hemen gerçekleşse de gerçekte belirli bir zaman almaktadır.

    • Transport gecikmesi inertial gecikmesine göre çok küçüktür ve yoksayılabilir.

    • Sistemin gerçek modellemesinde bu gecikmeler koda eklenmelidir.

    • A <= B AND C AFTER 10 NS; // şeklinde yapılabilir.


    Gec kmeler rnek

    GECİKMELER ÖRNEK

    Simülasyon için delta delay yapılabiliyor


    S r c ler

    SÜRÜCÜLER

    • Bir sinyal bir tek sürücü tarafından sürülmelidir.

    • Eğer birden fazla sürücüye ihtiyaç varsa “resolution function” yazılmalıdır.

    • Yukarıdaki örnekte “a” sinyali iki farklı sürücü tarafından kontrol ediliyor. Derleyici otomatikman “b” sinyalini “c” sinyaline bağlayacak.


    S r c ler rnek

    SÜRÜCÜLER ÖRNEK

    • Yukarıdaki örnekte doğru gibi görünse de q sinyali birden fazla sürücünün etkisinde, bir satır değer yüklese bile diğer satırlar “0” yüklüyor!!!


    Generic

    GENERIC

    • Generic anahtar sözcüğü entity ye bir bilgi aktarmak için kullanılır.

    • Entity içerisinde tanımlanır ve kullanılacak modüle “Generic map” komutu ile map edilir.

    • Kullanılacak değerler aynı olduğunda “C” dilindeki “#define” ön işlemci komutuna benzer işlem yürütür.


    Generic rnek

    GENERIC ÖRNEK


    Block yapilari

    BLOCK YAPILARI

    • Block: bu anahtar sözcük kullanılarak tasarım bloklar halinde tasarlanabilir.

    • Block içindeki ifadeler block içerisinde görülebilir durumdadır.

    • “C” ve “C#” dillerinde olduğu gibi sinyallerin de bir yaşam süreçleri – alanları vardır.

    • Architecture daki sinyallere blocklar ulaşabilir ancak bloklar içinde tanımlanmış sinyallere dışarıdan erişilemez.

    • İç içe geçmiş bloklarda her alt block üst bloklarının sinyallerine ulaşabilirken alt bloklara ulaşamaz.


    Vhdl e t m

    Oluşturulmuş paket kullanılıyor

    Sinyal tanımlamaları herzaman

    “begin” anahtar sözcüğünden

    önce yapılıyor!!!


    Block yapilari1

    BLOCK YAPILARI

    • Yukarıdaki örnekte Alu bloğu dışındakiler bu blokta tanımlanmış sinyallere ulaşamazlar.

    • Farklı yaşam alanları olan iki sinyal aynı isime sahip olabilir ancak bu tavsiye edilmez (okumayı zorlaştıdığından).

    • Bir block başka bir bloğu içerebilir.

    • Guarded block ta ise “BLOCK” anahtar sözcüğünün yanındaki boolean ifadenin değeri doğru ise “GUARDED” anahtar sözcüğü ile belirtilen ifadeler işleniyor. Değer yanlış ise bu ifadeler işlenmiyor.

    • Tasarımı ne kadar küçük bloklara bölersek tasarımın kontrolü ve yönetilmesi o kadar kolaylaşır.


    Guarded block

    GUARDED BLOCK


    Process

    PROCESS

    • Architecture  Paralel işleme (concurrent)

    • Process  Seri - sıralı işleme (squential)

    • Architecture bloğunun içine birden fazla process konulursa bu process ler kendi içlerinde seri çalışırken dışarıda parallel çalışırlar.

    • Process bloğunda sıralı işlemlerden “CASE” , “IF ELSE” , “LOOP” komutları kullanılabilir.

    • Process blokları bir sensivity (duyarılık) listesine yada “wait” komutuna sahip olmalıdır.


    Process1

    PROCESS

    • Process bloğu bir duyarlılık listesine sahipse içerisindeki sıralı kodlar yalnızca bu duyarlılık listesindeki sinyallerde bir değişiklik olduğunda tekrar işlenir.

    • Yukarıda bahsedilen nedenden dolayı process bloğuna input olacak her sinyal sensivity list e eklenmelidir.


    Process rne

    PROCESS ÖRNEĞİ

    “USE” anahtar sözcüğü ile koda vhdl

    Paketleri eklenebilir.


    S nyal ve de ken

    SİNYAL VE DEĞİŞKEN

    • Değişkene yapılan atama herhangi bir süre gerektirmezken bir sinyale yapılan atamalar belirli bir süre gerektirir. Bu bazı durumlarda hatalara neden olabilir.

    • Sonraki slaytta değişken kullanılması gerekirken sinyal kullanıldığında yanlış sonuç elde edilir.

    • Hatalı durumda process bloğuna girildiğinde “muxval” değerinde “garbage” bir değer vardır ve yeni değer process bloğu bittiğinde yüklenir. Bu da hatalı değerlerin hesaplanmasına neden olabilir.


    If else elsif

    IF – ELSE – ELSIF


    Vhdl e t m

    CASE

    “OTHERS” anahtar sözcüğü ile olabilecek tüm olasılıklar kapsanıyor

    Kod yazarken buna dikkat edilmeli.


    Loop komutlari

    LOOP KOMUTLARI

    VHDL loopindex değişkenine

    yapılan atamalara izin vermez.

    İndex değişkeninin

    tanımlanmasına gerek yoktur.


    Vhdl e t m

    NEXT

    “NEXT” anahtar sözcüğü o anki

    iterasyonu başa döndürür. İndex

    değişkeni arttırılır.


    Vhdl e t m

    EXIT

    “EXIT” anahtar sözcüğü o an işlenen

    loop dan çıkmayı sağlar.

    İç içe loop ta sadece alt loop tan

    çıkmaya yarar.

    EXIT “loop name” WHEN (i<10);


    Assert

    ASSERT

    • “Report” ve “Severity” ile kullanılır.

    • Sentezleyiciler bu kodu dikkate

    • almaz.

    İfade yanlış olduğunda hata mesajı veriyor!!!


    Vhdl e t m

    WAIT

    • Sıralı programın

    • duraksatılmasına imkan tanır

    • Squentiallogic oluşturulabilir.

    • Alttaki kodda senkron bir reset sinyalinin oluşturulması verilmiştir.


    Vhdl e t m

    WAIT

    • “wait on” yanında verilen sinyal yada değişkenlerde değişiklik olana kadar bekleme yapar

    • “waituntil” yanında verilen ifade doğru değer verene kadar bekleme yapar.

    • “waitfor” yanındaki zaman tanımlaması kadar bekleme yapar.

    • “wait” ifadeleri birlikte de kullanılabilir.


    Vhdl e t m

    WAIT

    Deadlock(sonsuz döngü) ‘a giriyor


    Vhdl e t m

    “Wait” için bir time-out belirlemiş olduk


    Wait ve duyarlilik l stes

    WAIT VE DUYARLILIK LİSTESİ

    Aynı ifadeler. Sona eklenen “wait” ifadesi duyarlılık listesi ile aynı görevi üsleniyor.


    Paralel atama problem

    PARALEL ATAMA PROBLEMİ

    Alttaki kodda “sel” değerini direk “0” olarak okuyamıyoruz.


    Paralel atama

    PARALEL ATAMA

    Aralara “0”değerlikli gecikme de girsek artık kod çalışacak çünkü aralara girilen kodlar atamaların yapılabilmesini sağlıyor.

    Bu problemden kurtulmanın başka bir yolu da daha önce gördüğümüz sinyal yerine değişken kullanmaktır.


    Pas ve process ler

    PASİVE PROCESS ‘LER

    • Entity içerisine yazılırlar.

    • Sinyal ataması içermezler.

    • Giriş kontrolü ve veri ayarlamaları için kullanılırlar.

    • Sonraki slaytta bir d flip flop için veri düzenlemesi yapan bir pasive process kullanımıştır.


    Data t rler

    DATA TÜRLERİ

    • VHDL objeleri aşşağıdaki 3 türden birine dahildir;

      • Sinyal: Bağlantı kablolarını simgeler

      • Variable: Yerel geici veri deposudur. Sadece process içerisinde görülebilir.

      • Constant: Sabit değerleri tutmakta kullanılır.


    Ler vhdl konulari

    İLERİ VHDL KONULARI

    • Veri türleri ve kullanımı

    • Alt programlar, fonksiyonlar, prosedürler ve paket kullanımı

    • Attributes

    • Konfigürasyonlar

    • Overloading

    • Text dosyası kulanımı

    • ……


    Vhdl e t m

    • Dinlediğiniz için teşekkür ederim.


  • Login