Hazırlayan : Erman Üret

Slides:



Advertisements
Benzer bir sunumlar
HTML e GİRİŞ Temel HTML etiketleri.
Advertisements

Hazırlayan ve Sunan Ali Yasin Çakılcı HUNROBOTX
8259A Programlanabilir Kesme Denetleyicisi (PIC)
VHDL Kullanarak FPGA İle Yüksek Kapasİtelİ Tam ÇIkarIcI Devre TasarImI
Bölüm 2 C Dilinin Temelleri
METODLAR Program yazarken bazı durumlarda bir işi gerçekleştiren kod yapılarını tekrar tekrar yazmak durumunda kaldığımız olur. Bu kodları yeniden yazmak.
C PROGRAMLAMA DİLİNE GİRİŞ
Programlanabilir Mantık Tümdevreleri Tasarımı
Yazılım Mühendisliği Bölüm - 6 Gerçekleştirim
SQL de Değişken Tanımlama
IT504 ~~DOM~~ Belge Nesne Modeli I
T-SQL-2.Konu Akış Kontrolleri.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
EMİN CELİLOĞLU - IT Eğitmeni SAMSUNG AKADEMİ Emin CELİLOĞLU IT Eğitmeni KONNEKTÖRLER.
Nesneye Dayalı Programlama
Yapısal Program Geliştirme – if, if-else
5. EGITIM Mikrodenetleyiciler PIC16F628 – PIC16F877
Temel Bilgisayar Yapısı ve Devreleri
BAĞLANTI (KÖPRÜ) OLUŞTURMA
SQL de Değişken Tanımlama
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
İnternet Teknolojisi Temel Kavramlar
Paralel Programlamaya Giriş
LaTeX’i Özelleştirmek
HTML HYPER TEXT MARKUP LANGUAGE Burcu Yılmaz – İ brahim Mert Bilişim Teknolojileri Ö ğ retmeni.
1) ÖZELLİKLER 120 FRAME/SEWC OUTPUT HIGH SPEED PCI 2.1 INTERFACE MAX 16CH VIDEO INPUT WINDOWS 98 SDK / WIN2000 / WINXP NTSC/PAL VIDEO FORMAT YUV422 FORMAT.
ERASMUS’A GİDEN ÖĞRENCİLERİN TRANSKRİPTLERİNİ TESLİM EDERKEN UYMASI GEREKEN KURALLAR VE DİKKAT ETMELERİ GEREKEN HUSUSLAR.
Ece Olcay Güneş & S. Berna Örs
Temel Kavramlar, İşlemler, Operatörler
Bilgisayar Mimarisi ve Organizasyonu
PHP'de Program Denetimi
FONKSİYONLAR İbrahim Onur Sığırcı.
Elektronik Devre Yapıları Modelleme ve Optimizasyonda Elektronik Devre Tasarım Araçları Revna ACAR VURAL 28/12/2010.
İnternet Teknolojisi Temel Kavramlar
LD/LDI LD X0 LDI X0 X0 Y0 X0 Y1 Temel Komutlar
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Ders Kodu: EET134 Ders Adı: Sayısal Elektronik Ders Hocası: Assist. Prof. Dr. MUSTAFA İLKAN.
HTML HYPER TEXT MARKUP LANGUAGE Ayşe AK İ DA Ğ I Bilişim Teknolojileri Ö ğ retmeni.
Programlama Dilleri Visual Basic C# C++ Pascal Delphi.
Dijital Çıkış Mantığı.
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
Doç.Dr. Ahmet ÖZMEN Sakarya Üniversitesi
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı Arş. Gör. Pınar CİHAN.
8.SINIF / SOSYAL BİLGİLER Modül Soru Bankası.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
ALGORİTMA DERS 3 AKIŞ ŞEMALARI.
5. HAFTA Mart Discussion: comp.soft-sys.matlab An unmoderated newsgroup that focuses on the.
Neden donanım kullanıyoruz? Daha hızlı (Performans) Paralel Düşük güç tüketimi Maliyet Boyut Her yere bilgisayar?
PiSi ile Paket Yapımı S.Çağlar Onur. PiSi ile Paket Yapımı ● Paket nedir? ● actionsAPI nedir? ● pspec.xml ne işe yarar? ● actions.py ne işe yarar? ● Örnek.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Bölüm 2 C Dilinin Temelleri
C Programlama Dili Bilgisayar Mühendisliği.
Altera ile proje hazırlama
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Veri Tabanı Yönetimi Dersi 8. Laboratuvarı
Mikroişlemciler Adresleme Modları.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
Bölüm 2 C Dilinin Temelleri
DERS 1 Gömülü Sistemlere Giriş
ÖDE5024 DAVRANIŞ BİLİMLERİNDE İSTATİSTİK Yüksek Lisans
Discussion: comp.soft-sys.matlab
FONKSİYONLAR İbrahim Onur Sığırcı.
ETHERNET KARTI(AĞ KARTI)
BİLGİ GİRİŞ VE MESAJ PENCERELERİ
NİŞANTAŞI ÜNİVERSİTESİ
Bölüm 2 C Dilinin Temelleri
Ders Adı: Sayısal Elektronik
Sunum transkripti:

Hazırlayan : Erman Üret 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. 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 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 Entity ismi Bir bitlik giriş ve çıkışlar “std_logic” olarak Da tanımlanabilir Bu satır ile entity bitiriliyor

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 Bağlı olduğu entity ismi Architecture ismi Sinyal tanımlaması Bu satır ile entity bitiriliyor

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

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 Sinyal tanımlamaları begin bloğunun üzerinde yapılıyor

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 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İ Bu kod sıralı işlense hata verir. “sel” ataması yapılmadan kullanılıyor.

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 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 Simülasyon için delta delay yapılabiliyor

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 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 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

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.

Oluşturulmuş paket kullanılıyor Sinyal tanımlamaları herzaman “begin” anahtar sözcüğünden önce yapılıyor!!!

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

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.

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Ğİ “USE” anahtar sözcüğü ile koda vhdl Paketleri eklenebilir.

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

CASE “OTHERS” anahtar sözcüğü ile olabilecek tüm olasılıklar kapsanıyor Kod yazarken buna dikkat edilmeli.

LOOP KOMUTLARI VHDL loop index değişkenine yapılan atamalara izin vermez. İndex değişkeninin tanımlanmasına gerek yoktur.

NEXT “NEXT” anahtar sözcüğü o anki iterasyonu başa döndürür. İndex değişkeni arttırılır.

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 “Report” ve “Severity” ile kullanılır. Sentezleyiciler bu kodu dikkate almaz. İfade yanlış olduğunda hata mesajı veriyor!!!

WAIT Sıralı programın duraksatılmasına imkan tanır Squential logic oluşturulabilir. Alttaki kodda senkron bir reset sinyalinin oluşturulması verilmiştir.

WAIT “wait on” yanında verilen sinyal yada değişkenlerde değişiklik olana kadar bekleme yapar “wait until” yanında verilen ifade doğru değer verene kadar bekleme yapar. “wait for” yanındaki zaman tanımlaması kadar bekleme yapar. “wait” ifadeleri birlikte de kullanılabilir.

WAIT Deadlock(sonsuz döngü) ‘a giriyor

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

WAIT VE DUYARLILIK LİSTESİ Aynı ifadeler. Sona eklenen “wait” ifadesi duyarlılık listesi ile aynı görevi üsleniyor.

PARALEL ATAMA PROBLEMİ Alttaki kodda “sel” değerini direk “0” olarak okuyamıyoruz.

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 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İ 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 Veri türleri ve kullanımı Alt programlar, fonksiyonlar, prosedürler ve paket kullanımı Attributes Konfigürasyonlar Overloading Text dosyası kulanımı ……

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