VHDL. Ece Olcay Güneş & S. Berna Örs



Benzer belgeler
Yazılan programın simülasyonu için; (A<B), (A>B) ve (A=B) durumunu sağlayacak 2 şer tane değeri girerek modelsimde oluşan sonuçları çiziniz.

Digital Design HDL. Dr. Cahit Karakuş, February-2018

T.C. RC SERVO MOTOR KONTROLÜ

EK A VHDL DONANIM TANIMLAMA DİLİ

Sahada Programlanabilir Kapı Dizileri (FPGA) Sayısal CMOS Tümdevre Tasarımı Y. Fırat Kula

Bölüm 4 Aritmetik Devreler

DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM223 SAYISAL MANTIK TASARIMI : QUARTUS II TASARIM ORTAMI: TEMEL VHDL KULLANIMI

VHDL DONANIM TANIMLAMA DİLİD ve FPGA, CPLD DONANIMLARI. Yard. Doç. Dr. Özdemir ÇETİN

Bu deney çalışmasında kombinasyonel lojik devrelerden decoder incelenecektir.

Deney 8: ALU da Aritmetik Fonksiyonlar

Verilog HDL e Giriş Bilg. Yük. Müh. Selçuk BAŞAK

Ders Notlarının Creative Commons lisansı Feza BUZLUCA ya aittir. Lisans:

Deney 7: Aritmetik ve Lojik İşlem Birimi(ALU)

İçindekiler. Sinyal İşleme Donanımları FPGA FPGA ile Tasarım VHDL Uygulama Gerçekleştirme Kart Üzerinde Çalıştırma

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

Proje #2 - Lojik Devre Benzetimi

ELN1001 BİLGİSAYAR PROGRAMLAMA I

FPGA ile Gömülü Sistem Tasarımına Giriş

BÖLÜM Mikrodenetleyicisine Giriş

Tek Vuruşluk Đşlemci. -- Company : Ege Universitesi, Elektrik-Elektronik Mühendisliği

BSE 207 Mantık Devreleri Lojik Kapılar ve Lojik Devreler (Logic Gates And Logic Circuits)

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

SAYI SİSTEMLERİ ve BOOLE CEBİRİ 1+1=1 ÖĞR.GÖR. GÜNAY TEMÜR - TEKNOLOJİ F. / BİLGİSAYAR MÜH.

SAYISAL ELEKTRONİK. Ege Üniversitesi Ege MYO Mekatronik Programı

18. FLİP FLOP LAR (FLIP FLOPS)

HDL Dilleri VHDL. Son olarak, spesifik ASIC teknolojisi için devrenin yerleşimi netlist tanımlamalarından gelen diğer araçlarla oluşturulmuş olunur.

Mantık Devreleri Laboratuarı

Algoritmalar ve Programlama. Algoritma

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

SAYISAL VLSI SİSTEM TASARIM AKIŞI

Temel Mikroişlemci Tabanlı Bir Sisteme Hata Enjekte Etme Yöntemi Geliştirilmesi. Buse Ustaoğlu Berna Örs Yalçın

Chapter 8. Komut düzeyi kontrol yapıları ISBN

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

25. Aşağıdaki çıkarma işlemlerini doğrudan çıkarma yöntemi ile yapınız.

Gömülü Sistemler. (Embedded Systems)

ANKARA ÜNİVERSİTESİ GAMA MESLEK YÜKSEKOULU

Diziler İndisli Değişkenler

Makine Mühendisliği İçin Elektrik-Elektronik Bilgisi. Sayısal Elektronik

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PASCAL PROGRAMLAMA DİLİ YAPISI

T.C. TRAKYA ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ ŞİFRELEME İŞLEMLERİ İÇİN FPGA İLE YÜKSEK KAPASİTELİ ÇARPMA DEVRESİ TASARIMI.

VHDL Programlama Dili ve Sayısal Elektronik Devrelerin FPGA Tabanlı Uygulaması

BOOLEAN İŞLEMLERİ Boolean matematiği sayısal sistemlerin analizinde ve anlaşılmasında kullanılan temel sistemdir.

BLM 221 MANTIK DEVRELERİ

Bölüm 20 FBs-4A2D Analog Giriş/Çıkış Modülü

DENEY 2-1 VEYA DEĞİL Kapı Devresi

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

PostgreSQL ve PL/pgSQL

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

T.C. İstanbul Medeniyet Üniversitesi Mühendislik ve Doğa Bilimleri Fakültesi Elektrik-Elektronik Mühendisliği Bölümü

Saklayıcı (veya Yazmaç) (Register)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

DOĞRULUK TABLOLARI (TRUTH TABLE)

1. Sayıcıların çalışma prensiplerini ve JK flip-floplarla nasıl gerçekleştirileceğini anlamak. 2. Asenkron ve senkron sayıcıları incelemek.

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Bölüm 9. Altprogramlar ISBN

5.27. ŞİFRELİ OTOMATİK KAPI KONTROL PROJESİ

6. Fiziksel gerçeklemede elde edilen sonuç fonksiyonlara ilişkin lojik devre şeması çizilir.

BÖLÜM III: Şebeke Modelleri. Şebeke Kavramları. Şebeke Kavramları. Şebeke Kavramları. Yönlü Şebeke (Directed Network) Dal / ok

Özyineleme (Recursion)

1. PL/SQL de kontrol yapıları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

PostgreSQL ve PL/pgSQL

HSancak Nesne Tabanlı Programlama I Ders Notları

BM208- Nesneye Dayalı Analiz ve Tasarım. Sunum 7

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

GENEL BİLGİ: GEREKLİ MALZEMELER:

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Bölüm 2 Kombinasyonel Lojik Devreleri

EAGLE KÜTÜPHANE OLUŞTURMA

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

SAYISAL UYGULAMALARI DEVRE. Prof. Dr. Hüseyin EKİZ Doç. Dr. Özdemir ÇETİN Arş. Gör. Ziya EKŞİ

İKİLİ SAYILAR VE ARİTMETİK İŞLEMLER

1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

How to ASP Language. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. Hafta V

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Temel Bilgisayar Programlama

SAYICILAR. Tetikleme işaretlerinin Sayma yönüne göre Sayma kodlanmasına göre uygulanışına göre. Şekil 52. Sayıcıların Sınıflandırılması

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

DESTEK DOKÜMANI KAYIT NUMARALAMA ŞABLONLARI

Mikroişlemcili Sistemler ve Laboratuvarı

BİLGİSAYAR MİMARİSİ. İkili Kodlama ve Mantık Devreleri. Özer Çelik Matematik-Bilgisayar Bölümü

Şekil 1. 74LS47 entegresi bağlantı şeması

VERILOG. Modüller

Deney 3: Asenkron Sayıcılar

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

C Dersleri Bölüm 3 : Program akışı

BÖLÜM 2 SAYI SİSTEMLERİ

2. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

PROGRAMLAMAYA GİRİŞ DERS 2

Bölüm 6 Multiplexer ve Demultiplexer

YENİ NESİL ÖKC İLE ON-LİNE İŞLEMLER (Hugin / Profilo)

Fatih University- Faculty of Engineering- Electric and Electronic Dept.

Bölüm 4 Ardışıl Lojik Devre Deneyleri

VEKTÖR UZAYLARI 1.GİRİŞ

MX2 İNVERTÖRLERLE DÂHİLİ POZİSYONLAMA

Transkript:

VHDL Ece Olcay Güneş & S. Berna Örs

Giriş VHDL VHSIC Hardware Description Language in kısaltmasıdır. VHSIC Very High Speed Integrated Circuit in kısaltmasıdır. VHDL dışında da pekçok donanım tasarlama dilleri mevcuttur. Verilog, AHDL, ABEL and CUPL diğer donanım tasarlama dillerine örnek olarak gösterilebilir. VHDL ilk olarak 1981 yılında tasarım yöntemlerinden ve var olan teknolojiden bağımsız olarak tasarım için ABD savunma bakanlığı tarafından geliştirilmiştir. Daha sonra IEEE'ye yönlendirilmiş ilk standart hali 1983 yılında yayımlanmıştır. 1993 yılında geliştirilerek yine IEEE standart dilleri arasında yeralmıştır.

Sayısal lojik tasarımda VHDL kullanımı Programın ne yapacağını tanımla Programın yapacağı işi nasıl yapacağını tanımla VHDL Program kodunu yaz Program kodunu derle ve test et Hedef cihazda tasarımı uygula

3 farklı devre tanımlama şekli kullanılır Yapısal (Structural): Lojik fonksiyon basit kapılar ve bunların bağlantılarıyla tanımlanır. Veri Akışı (Data Flow):Kapılardan işaret geçişinin nasıl olacağı tanımlanır. Yapısal ve veri akışı tanımının ikisi de devrenin iç-yapısının ayrıntılarıyla ilgilidir. Davranışsal (Behavioral): Kapıların tipi ve bağlantılarının nasıl olduğu ya da bunlar arasında veri akışının nasıl olacağı önemli değildir. Devrenin giriş ve o andaki durumuna göre çıkışlarının ne olacağı davranışsal tanımı oluşturur. Lojik devre çok basitse yapısal ve veri akışı tanımı, devre karmaşıksa, davranışsal tanımı, çoğu zaman da 3 ü bir arada kullanılır

Alt Bloklar Bir tasarımı daha anlaşılabilir ve değişikliklere açık hale getirebilmek için devreler alt bloklara ayrılır. Daha sonra bu bloklar bütün devreyi oluşturmak üzere uygun şekilde bağlanır.

VHDL tasarım birimleri Entity Entity: VHDL de her blok kendi başına bir devre olarak düşünülür ve entity olarak adlandırılır. Verilen bir lojik fonksiyon için bütün giriş ve çıkışları tanımlar. Yani lojik fonksiyonun dış dünyayla bağlantısını tanımlar. entity entity tanımlayıcı is port (işaret tanımlama); end entity tanımlayıcı;

Port: port giriş ve çıkış işaretidir. Port ifadesi, her işaret için, port tanımlayıcı, port yönü ve port veri tipini belirlemelidir. Port da 3 yön kullanılır. Giriş için in, çıkış için out, çift yönlü portlar için inout kullanılır. Pek çok değişik veri tipi kullanılabilir. Veri tipleri: bit: 0 ve 1 değerini alabilir bit-vector: aynı isim altında bir dizi 0 ve 1 i göstermek için kullanılır. Bir dizideki herbir elemanın ortak bir tanımlayıcı adı vardır. Mesela dizinin adı A ise, ilk eleman A(0)'a, ikinci eleman A(1)'e karşı düşer. integer: pozitif ya da negatif tamsayılara karşı düşer natural: 0'dan başlayıp istenen bir limit değere kadar tamsayılar için kullanılır. positive: 1'den başlayıp istenen bir limit değere kadar tamsayılar için kullanılır. Boolean: Doğru ve yanlış olmak üzere 2 değerli bir veri tipidir.

Entity Örneği entity Ornek is port (A,B: in bit; Z: out naturel range 0 to 31); end Ornek; İlk satır yeni tanımlanacak devrenin ismini bildirir: Ornek Son satır tanımlamanın bittiğini gösterir. Aradaki satırlar devrenin giriş cıkışlarını tanımlar. Port tanımında her satır bir giriş-çıkış listesi, modunu ve veri tipini gösterir. İlk satırın dışındaki her satır ; ile bitirilir. Port tanımının tamamı da ; ile bitirilir.

Architecture Lojik fonksiyonun işlevi architecture tarafından belirlenir. Her entity için bir architecture tanımlanır. architecture mimari ismi of tanımlayıcı ismi is begin lojik fonksiyonun yapacağı iş burada tanımlanır; end mimari ismi;

Architecture Örneği entity AND_Gate is port(a, B: in bit; X:out bit); end entity AND_Gate; Architecture dataflow of AND_Gate is begin X <= A and B; end dataflow; İlk satır dataflow isimli mimarinin AND_Gate isimli devreye ait olduğunu gösteriyor. begin ve end arasındaki satırlar AND_Gate in nasıl bir işlem gerçekleyeceğini belirtir.

Yapısal Tanımlamalar Tasarımımızdaki temel bloklar entity ve karşılık gelen architecture kullanılarak tanımlandıktan sonra diğer tasarımlarda kullanılmak üzere birleştirilebilirler. Bir program içerisinde bir eleman çok kere kullanılıyorsa, buna ait entity ve architecture'i defalarca yazmak yerine component kullanılır. Bu işlem yapılırken alt bloklar üst bloğun içinde component olarak tanımlanırlar. component elemanın-adı is port (uç tanımları) end component;

Component Örneği IN 1 IN 2 OUT 1 OUT 3 IN 3 OUT 2 IN 4 Ara bağlantılara karşı düşer. Entegre içinde dış bağlantısı olmayan elemanlar arası bağlantılardır. entity AND-OR-logic is port(in1, IN2, IN3, IN4: in bit; OUT3: out bit); end AND-OR-logic; architecture LogicOperation of AND-OR-logic is component AND_Gate is port(a, B:in bit; X:out bit); end component; component OR_Gate is port(a,b:in bit; X:out bit); end component; signal OUT1, OUT2:bit; begin G1: AND_Gate port map (A IN1, B IN2, X OUT1); G2: AND_Gate port map (A IN3, B IN4, X OUT2); G3: OR_Gate port map (A OUT1, B OUT2, X OUT3); end LogicOperation;

Veri Akışı Tanımlama Veri akışı tanımlamada temel blokların (örneğin and kapısı) girişlerinin ve çıkışlarının devre içinde nasıl bağlanacağı tanımlanır. İşaretlerin devre içinde nasıl akacağı tanımlanır. Çıkışların Boole fonksiyonu ifadelerine ihtiyaç vardır.

Veri Akışı Tanımlama Örneği 1 entity latch is port (s,r : in bit; q,nq : inout bit); end latch; architecture dataflow of latch is begin q<=r nor nq; nq<=s nor q; end dataflow;

Sayıları BCD'den Decimal'e çeviren decoder tasarımı (Örnek 2) entity decoder is port (A: in bit-vector(0 to3); X:out bit-vector (0 to 9)); end decoder; A(0) A(1) A(2) A(3) X(0) X(1) X(2) X(3)... X(9) architecture BCD-to-decimal of decoder is begin X(0) not A(3) and not A(2) and not A(1) and not A(0); X(1) not A(3) and not A(2) and not A(1) and A(0); X(2) not A(3) and not A(2) and A(1) and not A(0); X(3) not A(3) and not A(2) and A(1) and A(0); X(4) not A(3) and A(2) and not A(1) and not A(0); X(5) not A(3) and A(2) and not A(1) and A(0); X(6) not A(3) and A(2) and A(1) and not A(0); X(7) not A(3) and A(2) and A(1) and A(0); X(8) A(3) and not A(2) and not A(1) and not A(0); X(9) A(3) and not A(2) and not A(1) and A(0); end BCD-to-decimal;

Not Bu örnekte birden fazla giriş çıkış söz konusu olduğu için bunlar VHDL'de bir dizi (bit-vector) veri tipi ile gösterilebilir. Genel olarak bit dizilerinin büyüklüğü 0'dan n'ye seçilir. 0 her zaman dizinin ilk elemanına karşı düşer. Bu nedenle n dizideki eleman sayısından 1 eksik olarak seçilmelidir. n+1 giriş veya çıkış dizi olarak bit-vector (0 to n) olarak gösterilir. Örnekte giriş bit-vector (0 to 3) Çıkış bit-vector (0 to 9) biçimindedir.

Durumsal ifadeler IF Bir sayısal sistem belirli durumlar içinden en uygununu seçme durumunda kalabilir. "If " bir Boole fonksiyonunu doğru veya yanlışa götüren ifadedir. Her zaman bir durumsal ifade ile birlikte kullanılır. Eğer ifade doğru ise VHDL ifadesi yerine getirilir. En sonunda mutlaka "end if" olmalıdır. If durumsal ifade then VHDL ifadesi end if

Örnek: 2 girişli 3 çıkışlı bir devre tasarlanmak istenmektedir. A girişi B girişine eşitse V1 değişkeni (yani çıkış) 1 arttırılır. (Çıkış 3 ile sınırlandırıldığı için natural veri tipi kullanılması uygundur) entity ornek1 is port (A,B: in bit; X:out natural range 0 to 7); end entity ornek; architecture islem1 of ornek1 is begin process (A,B) variable V1: natural range 0 to 7; begin V1:=0; if (A=B) then V1:=V1+1; end if; X V1; end process; end architecture islem1;

If Then Else Else, if içerisinde alternatif bir yol önerir. Eğer VHDL ifadesi yanlışa gidiyorsa, else ifadesini izler.

ÖRNEK: entity örnek2 is port (A,B: in bit; X:out natural range 0 to 7); end entity ornek2; architecture islem2 of ornek2 is begin process (A,B) variable V1: natural range 0 to 7; begin V1:=6; if (A=B) then V1:=V1+1; else V1:=0; end if X V1; end process; end architecture islem2;

Elsif Bazen giriş koşullarına göre birden fazla seçenek tanımlanabilir. Bu durumda "elsif" ifadesi kullanılır. İçiçe geçmiş if olarak tanımlanabilir.

Örnek: 2 kontrol girişli MUX tasarımı entity MUX2 is port(s:in bit_vector (0 to 1); D:in bit_vector (0 to 3); X:out bit); end entity MUX2; architecture islem of MUX2 is begin process (S,D) begin if (S="00") then X D(0); elsif (S="01") then X D(1); elsif (S="10") then X D(2); else X D(3); end if; end process; end architecture islem;

Case Case ifadesi içiçe geçmiş if (elsif) ifadesinin bir diğer seçeneğidir. Bir farkı case ifadesi, case bloğuna uygulanan tüm mümkün değerlere aynı kıymeti verir. VHDL keywordlerinden "others" kıymet verilmeyecek girişlerin cevaplarını belirlemeye yarar. Eğer tüm girişler belirliyse others'a gerek yoktur. case ifade is when seçenek 1 VHDL ifadesi; when seçenek 2 VHDL ifadesi; when seçenek 3 VHDL ifadesi; when others VHDL ifadesi; end case

Örnek: 1 kontrol girişli MUX entity MUX is port(s,d0,d1:in bit; X:out bit); end entity MUX; architecture islem for MUX is begin process (S, D0, D1) begin case S is when '0' X D0; when '1' X D1; end case; end process; end architecture islem;

For Çevrimi Davranışsal yaklaşımda belirli bir iterasyon sayısına sahip ardışıl bir ifadedir. For, çevrimin nerede başladığı nerede bittiği belli ise kullanılır. For çevrimi 4 bölümden oluşur. Giriş noktası: çevrimin başladığı nokta İterasyon: Terminal test: çevrimin bittiğini belirleyerek çıkış koşullarını test eder Çıkış noktası: Çevrimin son bulduğu nokta

for tanımlayıcı (kullanıcı tarafından belirlenir) in başlangıç noktası to durma noktası loop VHDL ifadeleri end loop; to durma noktasını izler. Başlangıç noktası terminal noktasından küçük ise kullanılır. downto başlangıç noktası terminal noktasından büyükse ve çevrim terminal noktasına doğru azalarak hareket ediyorsa kullanılır.

Örnek: 7 girişi olan ve girişine gelen sayı içindeki 1'lerin sayısını sayıp sonucu çıkışa aktaran bir devre tasarlanacaktır. ( A girişi için 8 bitlik std_logic_vector kullanılacaktır. X çıkışı için naturel veri tipi kullanılacak hesaplanan değer 0 ile 7 arasında olacaktır. V1 sayılan 1'lerin sayısını tutacaktır. library ieee; use ieee.std_logic_1164.all; entity Birsayici is port (A: in std_logic_vector (0 to 7); X:out natural range 0 to 7); end entity Birsayici; architecture benimsayicim of Birsayici is begin process(a) variable V1:natural range 0 to 7; begin V1:=0; for i in 0 to A'length-1 loop if (A(i)='1') then V1:=V1+1; end if; end loop; X V1; end process; ed architecture benimsayicim;

NOT Bu örnekte çevrim ve iterasyon sayısı bilindiği için for çevrimi kullanılmıştır. Sayıcı std_logic_vector (std_logic_1164 IEEE tarafından belirlenen bir standart kütüphanedir), 0 başlangıç pozisyonu ile başlamakta ve en son bit okunana kadar devam etmektedir. 1'lerin sayıldığı programda std_logic_vector ile belirlenen sayının bit sayısının belirlenmesi gerekir. Burada görüldüğü gibi bu tanımlayıcı ismi (vektörün ismi) ' ve length ile belirlenmiştir. 'length vektörün bit sayısını verir. Böylece değişik uzunluklu vektörler için program yeniden düzenlenebilir. Bit sayısı bilinmeden program tarafından otomatik olarak dizinin bit sayısı belirlenebilir.

While çevrimi İterasyon sayısının bilinemediği durumlarda kullanılır. While çevrimi herhangi bir Boole ifadesi sağlanıp çevrimi durduruncaya kadar devam eder. Ancak kilitlenen türden bir kod yazılmamasına dikkat edilmelidir. Bazen Boole ifadesi sağlanamadığı için çevrim son bulamaz. While çevrimi 3 bölümden oluşur. Giriş noktası: çevrimin başladığı nokta Terminal test: çevrimin bittiğini belirleyerek çıkış koşullarını test eder Çıkış noktası: Çevrimin son bulduğu nokta while boole ifadesi loop VHDL ifadeleri end loop;

1. Bölümün sonu