FPGA İLE UYGULAMA ÖRNEKLERİ

Benzer belgeler
FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile Seri Haberleşme (RS232) Uygulaması

FPGA İLE UYGULAMA ÖRNEKLERİ

FPGA İLE UYGULAMA ÖRNEKLERİ

FPGA ile 2x16 LCD Uygulaması

İçindekiler FPGA GELİŞTİRME KARTI ENERJİ BESLEMESİ:... 5 ENERJİ SİSTEMİ ŞEMASI:... 5 FPGA GELİŞTİRME KARTINA PROGRAM YÜKLEME:... 6

Altera ile proje hazırlama. Quarturs programı üzerinde Altera De0 kartı için proje hazırlama

FPGA ile Gömülü Sistem Tasarımı (EE 525) Ders Detayları

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

FPGA ile Gömülü Sistem Tasarımı (EE 525) Ders Detayları

Döviz tipi ve döviz fiyatı aynı olan kalemlerde kümülasyon desteği,

(I) şimdiki. durum (S) belleği. saat. girşi

Programlanabilir Devreler

Seri Takibi Yenilikleri

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

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


GĐRĐŞ. 1 Nisan 2009 tarihinde BDP programının yeni bir sürümü yayınlanmış ve bu sürümde yapılan değişikliklere

DENEY-2. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

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

FORMEL DİLLER VE SOYUT MAKİNALAR. Hafta 2

ADUC841 MİKRODENETLEYİCİ TABANLI GELİŞTİRME KARTININ TANITIMI:

MİKRODENETLEYİCİLER ÖRNEK PROGRAMLAR

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

ELN1001 BİLGİSAYAR PROGRAMLAMA I

LAB 0 : Xilinx ISE Kullanımı

Ekrana gelen diyalog penceresinden Typical radyo düğmesi seçilir ve Next düğmesine basılır.

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

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

XILINX PROGRAMI İLE PROJE HAZIRLANMASI İÇİNDEKİLER

1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

HDL ile Gelişmiş Sayısal Tasarım (EE 425) Ders Detayları

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

Windows 10 için Java JDK 8 ve NetBeans IDE 8.2 Kurulumu Detaylı Anlatım

PIC TABANLI, 4 BASAMAKLI VE SER

Ürün Profil ve Yapılandırma Kodu Tanımlama

Mikroişlemcili Sistemler ve Laboratuvarı

Mühendislik Tasarım-3 ve Bitirme Çalışması Konuları

EEM 419-Mikroişlemciler Güz 2017

1S Servolarda Safety Over Ethercat (FSoE) İÇİNDEKİLER Giriş FSoE Protokolü hakkinda FSoE Aktivasyonu ve konfigürasyonu FSoE Safety Programı

T.C. RC SERVO MOTOR KONTROLÜ

DD2 DOT MATRIX DISPLAY KARTI PROGRAMLAMA VE MONTAJ KILAVUZU SÜRÜM: 1.1

Tüm personel kendi KEP hesapları üzerinden mevcut ve önceki maaş bordrolarını görüntüleyebilecektir.

Proje #2 - Lojik Devre Benzetimi

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

CPU ONE PLC KULLANMA KLAVUZU

EK1 PortalPLUS GİB arayüzü ile kullanım kılavuzu

KONTROL VE OTOMASYON KULÜBÜ

FULMATIC 7 GÜMÜŞ SERİSİ PLC PLC KULLANMA KLAVUZU

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

NİTELİKLİ ELEKTRONİK SERTİFİKA KURULUM AŞAMALARI

SM 100 Terazi Ayarları. Digi SM 100. SM 100 Terazi Ayarları

SAYISAL MANTIK LAB. PROJELERİ

UYGULAMA 1 24V START CPU V LO. Verilen PLC bağlantısına göre; START butonuna basıldığında Q0.0 çıkışını aktif yapan PLC programını yazınız.

LUCA Sabit Kıymet İşlemleri

18 Ekim Programlarımız ile Uyumlu Olan Yazar Kasa Modelleri. Profilo VX 680 E-1 Profilo YK-8200 Farex FR-8300 Telestar TLS-8100

18 Haziran Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Muhasebe

SYC / SYT / SYP ÖZEL TASARIM RGB LCD DISPLAY KARTI PROGRAMLAMA VE MONTAJ KILAVUZU SÜRÜM: 1.1

STOK KARTLARINDA ÇOKLU ÖLÇÜ BİRİMLERİ

LOJİK İFADENİN VE-DEĞİL VEYA VEYA-DEĞİL LOJİK DİYAGRAMLARINA DÖNÜŞTÜRÜLMESİ

Argox Yazıcılar İçin Bartender Programı Üzerinden Etiket Tasarımı Yardım Dosyası

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

BLM 221 MANTIK DEVRELERİ

ARDUINO NEXTION UYGULAMASI. Bu makale, Arduino UNO kartı ile Nextion HMI ekranlarının nasıl kontrol edildiğini anlatmaktadır.

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

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

Haftalık Ders Saati Okul Eğitimi Süresi

2. Sentinel Devriye Tur Kontrol yazılımını yükleme. 4. Güvenlik Görevlisi ve Kontrol Noktaları nın tanımlanması

Bankacõlõk işlemlerinde IBAN desteği

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

LOJİK DEVRELER-I IV. HAFTA DENEY FÖYÜ

ML TFT 5 ARAYÜZ KULLANIM KILAVUZU

Harcama Yönetim Sistemi e-fatura Uygulama Kılavuz

efatura UYGULAMASI HAKKINDA

Veri Yapıları ve Algoritmalar

İşlem Adımları. 23 Haziran Stok, Cari, Fatura

5 Haziran Kıymetli ETA Dostu Bayimiz,

1. Admin kullanıcı ile sisteme giriş yapınız. Ekranın sağ üstünde yer alan defter yaprakları ikonuna tıklayınız.

AKINSOFT Market Otomasyonu. IBM POS Genius. Yardım Dosyası. Sayfa 1

Java da Program Denetimi ve Operatörler

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Tarihli Mikro Müşavir 07a Sürümü

DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ (TÜRKÇE) BLGM223 SAYISAL MANTIK TASARIMI

Mikroişlemciler Ara Sınav---Sınav Süresi 90 Dk.

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

DENEY-1. SABANCI ATL ÖĞRETMENLERİNDEN YAVUZ AYDIN ve UMUT MAYETİN'E VERDİKLERİ DESTEK İÇİN TEŞEKKÜR EDİYORUZ

Hamming Kodlamasının FPGA Ortamında Gerçekleştirilmesi

Internet Programming II

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

Uygulamalı Yapay Zeka. Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş

A Class Terazi Kurulumu ve Kullanım Kılavuzu

BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI

MUHASEBECĐ PAKETĐNDE B FORMLARINININ DÜZENLENMESĐ

AKINSOFT WOLVOX Mobil Server Yardım Dosyası

BAY.t ENTEGRE PRO e-fatura ÇÖZÜMÜ ENTEGRATÖR KULLANIM YÖNTEMİ

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

LOJİK DEVRELER-I IV. HAFTA DENEY FÖYÜ

PROGRAMLAMAYA GİRİŞ DERS 2

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

Transkript:

FPGA ile Sonlu Durum Makinesi Uygulaması FPGA İLE UYGULAMA ÖRNEKLERİ FPGA ile (Sahada Programlanabilir Mantık Dizeleri) gerçekleştirilen bu örnek uygulamamızda geliştirme kartımız üzerinde bulunan 8 adet (4x2 display bloğu) 7 segment display ile 2 adet Sonlu Durum Makinesi(SDM) örneği uygulaması yapacağız. Bu uygulamalar sırası ile; 1. Geliştirme kartı üzerindeki butona basıldığında bunu lojik 1 değeri olarak algılayıp, bir sonraki duruma geçen, 8 adet (4x2 display bloğu) 7 segment display üzerinde 0 dan 7 ye kadar sayan sonlu durum makinesi örnek uygulaması 2. Geliştirme kartındaki 8 adet (4x2 display bloğu) 7 segment display üzerinde 0 dan F ye kadar zamana bağlı olarak bir sonraki duruma geçen, sonlu durum makinesi örnek uygulaması Sonlu Durum Makinesi(Finite State Machine) nedir? 1 Sonlu durum makinası (veya durum makinası), sınırlı sayıda durumdan, durumlar arası geçişlerden ve eylemlerin birleşmesiyle oluşan davranışların bir modelidir. Yukarıdaki görselde basit bir durum makinesinin mantıksal çalışması gösterilmiştir. A,B,C olarak 3 adet durum tanımlaması yapılmıştır. Girişten lojik 1 değeri geldikçe durum, bir sonraki duruma doğru ilerleyecektir. Son durum olan C durumunda da gene lojik 1 değeri geldiğinde işlem tamamlanmış olacaktır. Herhangi bir durumda lojik 0 değeri geldiğinde ise makine A durumuna geri dönecektir. Örneğin bir yazı editörü içinde bir metinde FPGA kelimesini aradığımızı varsayalım. Kelime 4 harfli olduğu için, dört durum oluşacaktır, bunlara; DurumA, DurumB, DurumC ve DurumD diyelim. DurumA; FPGA kelimesinin ilk harfi olan F harfini arayacak, bulursa DurumB aşamasına geçecek, bulamazsa ise DurumA, durumunda kalacak ve çıkış ise 0 değerinde olmayı sürürecek. DurumB de makine P harfini bulduğunda DurumC ye geçecek. DurumC de G harfi bulunduğunda DurumD ye geçilecek bulunamaz ise DurumA durumuna geri dönecek ver herşey yeniden başlayacak. DurumD de ise A harfi bulunduğunda FPGA kelimesi tamamlanmış olacak ve kelimenin bulunduğunu belirten çıkış durumu ise 1 değerinde olacak. Sonlu Durum Makineleri(SDM) Moore ve Mealy Makinesi olarak temelde iki tipe ayrılmaktadırlar. Moore Makinesi, sadece giriş eylemlerini kullanır, çıkış duruma bağlıdır. Moore Makine modelinin avantajı, davranışın basitleşmesidir.

Mealy Makinesi, sadece girdi eylemlerini kullanır, çıktı girdi ve duruma bağlıdır. Mealy SDM'lerinin kullanımı durum sayısının azalmasını sağlamaktadır. Biz örneklerimizde, Moore Makinesi yapısındaki Verilog HDL tasarımını kullanacağız. Örnek kodlarının içerisinde, aşağıdaki tabloda gösterildiği gibi önce, durumlar tanımlanır; 2 //-------------Parametre Tanımlamaları-------------------- parameter durum0=3'b000, //0. durum durum1=3'b001, //1. durum durum2=3'b010, //2. durum durum3=3'b011, //3. durum durum4=3'b100, //4. durum durum5=3'b101, //5. durum durum6=3'b110, //6. durum durum7=3'b111; //7. durum Burada 0 dan 7 ye kadar olan, 8 durum 3 bit olarak tanımlanmıştır. Sondasında durum(case) ifadesi yapısında tüm durumlar bir sonraki durumu ifade edecek şekilde düzenlenmiştir. Burada dikkat edilmesi gereken nokta, durum7 durumunun bir sonraki durumuna, durum0 yüklemesi yapılarak döngü sürekli hale getirilmiştir. Eğer döngünün durum7 durumundan sonra sona ermesini istiyorsanız, ikinci örnekte de olduğu gibi son durumu yoruma çekebilirsiniz. Bu durumda duran döngüyü sıfırlama butonuna basarak bir sonraki sefer için başlatabilirsiniz. case(durum) //koşula göre durum seçimi durum0: durum<=durum1; //sonraki durumun yüklenmesi durum1 durum1: durum<=durum2; //sonraki durumun yüklenmesi durum2 durum2: durum<=durum3; //sonraki durumun yüklenmesi durum3 durum3: durum<=durum4; //sonraki durumun yüklenmesi durum4 durum4: durum<=durum5; //sonraki durumun yüklenmesi durum5 durum5: durum<=durum6; //sonraki durumun yüklenmesi durum6 durum6: durum<=durum7; //sonraki durumun yüklenmesi durum7 durum7: //durum7 durum<=durum0; //sonraki durumun yüklenmesi durum0 case İlk örnekte, lojik 1 değeri için buton(pin_91) kullanılmıştır, lojik 0 değeri için ise sıfırlama(reset) butonu(pin_87) kullanılmaktadır. // sayac, ffffff değerine ulaşırsa ve butona basılırsa if(sayac==24'hffffff && buton ==0) Yukarıdaki ifadede butona basılmasını kontrol eden eğer(if) ifadesindeki sayaç değeri, butona basım sürecini sabitleyen bir zaman sabitesidir, sayaç değeri sayesinde butona basım titreşimleri göz ardı edilmiştir.

İkinci örnekte ise, lojik 1 değeri girişi yapan buton kullanılmamış, sadece zaman sabitesi ile durumlar arası geçiş yapılmıştır. Butona basıldığında lojik 0 sinyali girişe gitmekte, 7 segment display için ise yakılmak istenen segmente ve aktif edilmek istenen displaye ise lojik 0 değeri gönderilmelidir. Örnek uygulamalarımızda; FPGA çipi olarak ALTERA Firmasının Cyclone IV ailesinden EP4CE6E22C8 model bir FPGA ve 3461BS (4x2 display bloğu) kulandık. Bu FPGA çipinin gelişmiş özellikleri için modelin datasheet i(bilgisayfası) incelenmelidir. Ama kabaca olarak kullandığımız FPGA çipi; 6272 Lojik Elementli, 270Kbit Gömülü Hafızası, 91 adet I/O (Giriş/Çıkış) Pini bulunan, 144 ayaklı bir çiptir. 3 ALTERA firmasının üretmiş olduğu FPGA ları programlayabilmek için, Quartus Derleyicisini kullanıyoruz. Quartus Derleyicisinin kurumsal internet sitesinden indirdiğimiz Demo versiyonu ile bu örnek uygulamayı gerçekleştirdik. FPGA ları programlayabilmek için yaygın olarak kullanılan iki dil; VDHL ve Verilog içerisinden, C söz dizimine daha yakın geldiği için Verilog ile programlamayı tercih ettik. FPGA ile Butonlar ve Display arasındaki Pin Bag lantıları :

Sonlu Durum Makinesi Uygulaması Pin Tanımlama & Bag lantıları 4 Çıkış Pinleri LED_A LED_B LED_C LED_D LED_E LED_F LED_G LED_H LED_BIT0 LED_BIT1 LED_BIT2 LED_BIT3 LED_BIT4 LED_BIT5 LED_BIT6 LED_BIT7 PIN_127 PIN_126 PIN_125 PIN_124 PIN_121 PIN_120 PIN_119 PIN_115 PIN_128 (En Sağ Display) PIN_129 PIN_132 PIN_133 PIN_135 PIN_136 PIN_137 PIN_138 (En Sol Display) Giriş Pinleri saatdarbesi PIN_23 1,2. Uygulama sifirlama(reset) PIN_87 1,2. Uygulama buton PIN_91 1. Uygulama

1.Uygulama: Butona basılması ile 0 dan 7 ye kadar sayan Sonlu Durum Makinesi örnek uygulaması Verilog Program Kodu : 5 / @dosya Durum Makinesi(State Machine) Uygulaması @yazar Erkan ÇİL @sürüm V0.0.1 @tarih 21-Ağustos-2016 @özet Cyclone IV EP4CE6 FPGA Durum Makinesi Uygulaması Bu örnek uygulamada, Cyclone IV EP4CE6 FPGA kartını ile Durum Makinesi üretilecek, bu durumlar Display Gösterge üzerinde gösterilecektir edilecektir. Bu program özgür yazılımdır: Özgür Yazılım Vakfı tarafından yayımlanan GNU Getkinel Kamu Lisansı nın sürüm 3 ya da (isteğinize bağlı olarak) daha sonraki sürümlerinin hükümleri altında yeniden dağıtabilir ve/veya değiştirebilirsiniz. / module durummakinesi(saatdarbesi,sifirlama,display,etkin,buton); // durummakisi MODÜLÜ TANIMI //-------------Giriş Portları----------------------------- //saatdarbesi,sifirlama ve buton giriş olarak tanımlanmıştır input saatdarbesi,sifirlama,buton; //-------------Çıkış Portları----------------------------- output[7:0] display; //display Gösterge çıkışı olarak tanımlanmıştır output[7:0] etkin; //etkinleştirme çıkışı olarak tanımlanmıştır //-------------Parametre Tanımlamaları-------------------- parameter durum0=3'b000, //0. durum durum1=3'b001, //1. durum durum2=3'b010, //2. durum durum3=3'b011, //3. durum durum4=3'b100, //4. durum durum5=3'b101, //5. durum durum6=3'b110, //6. durum durum7=3'b111; //7. durum //-------------Çıkış Portları Veri Tipleri------------------ // Çıkış portları bellek elemanı(reg-yazmaç) veya bir tel olabilir reg[2:0] durum; //reg tipindeki durum değişkenin oluşturulması reg[7:0] display; //reg tipindeki display değişkenin oluşturulması reg[23:0] sayac; //reg tipindeki sayac değişkenin oluşturulması reg[7:0] etkin; //assign etkin=0; // etkinleştirme çıkışına 0 değeri atanmıştır. //------------Kod Burada Başlamaktadır------------------------- // Ana döngü bloğu // Bu sayaç yükselen kenar tetiklemeli olduğundan, // Bu bloğu saatin yükselen kenarına göre veya sifirlamanın alçalan // kenarına göre tetikleyeceğiz. always@(posedge saatdarbesi or negedge sifirlama) if(!sifirlama) //sifirlamaya basılmamışsa durum<=durum0; //duruma, durum0'ı yükle sayac<=0; //sayaç değişkenine 0 yükle else sayac<=sayac+1; // sayac değişkeninin içeriğini 1 arttır // sayac, ffffff değerine ulaşırsa ve butona basılırsa if(sayac==24'hffffff && buton ==0) case(durum) //koşula göre durum seçimi durum0: durum<=durum1; durum1: //sonraki durumun yüklenmesi durum1

durum<=durum2; durum2: durum<=durum3; durum3: durum<=durum4; durum4: durum<=durum5; durum5: durum<=durum6; durum6: durum<=durum7; durum7: durum<=durum0; case //sonraki durumun yüklenmesi durum2 //sonraki durumun yüklenmesi durum3 //sonraki durumun yüklenmesi durum4 //sonraki durumun yüklenmesi durum5 //sonraki durumun yüklenmesi durum6 //sonraki durumun yüklenmesi durum7 //durum7 //sonraki durumun yüklenmesi durum0 6 always@(durum) case(durum) durum0: display<=8'b1100_0000;//display göstergeye 0 değeri gönderilmesi etkin<=8'b1111_1110;//1. display gösterge aktif durum1: display<=8'b1111_1001;//display göstergeye 1 değeri gönderilmesi etkin<=8'b1111_1101;//2. display gösterge aktif durum2: display<=8'b1010_0100;//display göstergeye 2 değeri gönderilmesi etkin<=8'b1111_1011;//3. display gösterge aktif durum3: display<=8'b1011_0000;//display göstergeye 3 değeri gönderilmesi etkin<=8'b1111_0111;//4. display gösterge aktif durum4: display<=8'b1001_1001;//display göstergeye 4 değeri gönderilmesi etkin<=8'b1110_1111;//5. display gösterge aktif durum5: display<=8'b1001_0010;//display göstergeye 5 değeri gönderilmesi etkin<=8'b1101_1111;//6. display gösterge aktif durum6: display<=8'b1000_0010;//display göstergeye 6 değeri gönderilmesi etkin<=8'b1011_1111;//7. display gösterge aktif durum7: //durum7 display<=8'b1111_1000;//display göstergeye 7 değeri gönderilmesi etkin<=8'b0111_1111;//8. display gösterge aktif

case module // durummakinesi MODÜLÜ SONU 7 Uygulamanın Go rseli :

2.Uygulama: 0 dan F ye kadar zamana bağlı olarak bir sonraki duruma geçen, Sonlu Durum Makinesi örnek uygulaması Verilog Program Kodu : 8 / @dosya Durum Makinesi(State Machine) Uygulaması @yazar Erkan ÇİL @sürüm V0.0.1 @tarih 21-Ağustos-2016 @özet Cyclone IV EP4CE6 FPGA Durum Makinesi Uygulaması Bu örnek uygulamada, Cyclone IV EP4CE6 FPGA kartını ile Durum Makinesi üretilecek, bu durumlar Display Gösterge üzerinde gösterilecektir edilecektir. Bu program özgür yazılımdır: Özgür Yazılım Vakfı tarafından yayımlanan GNU Getkinel Kamu Lisansı nın sürüm 3 ya da (isteğinize bağlı olarak) daha sonraki sürümlerinin hükümleri altında yeniden dağıtabilir ve/veya değiştirebilirsiniz. / module durummakinesi(saatdarbesi,sifirlama,display,etkin); // durummakisi MODÜLÜ TANIMI //-------------Giriş Portları----------------------------- input saatdarbesi,sifirlama; //saatdarbesi,sifirlama giriş olarak tanımlanmıştır //-------------Çıkış Portları----------------------------- output[7:0] display; //display Gösterge çıkışı olarak tanımlanmıştır output[7:0] etkin; //etkinleştirme çıkışı olarak tanımlanmıştır //-------------Parametre Tanımlamaları-------------------- parameter durum0=4'b0000, //0. durum durum1=4'b0001, //1. durum durum2=4'b0010, //2. durum durum3=4'b0011, //3. durum durum4=4'b0100, //4. durum durum5=4'b0101, //5. durum durum6=4'b0110, //6. durum durum7=4'b0111, //7. durum durum8=4'b1000, //0. durum durum9=4'b1001, //1. durum duruma=4'b1010, //2. durum durumb=4'b1011, //3. durum durumc=4'b1100, //4. durum durumd=4'b1101, //5. durum durume=4'b1110, //6. durum durumf=4'b1111; //7. durum //-------------Çıkış Portları Veri Tipleri------------------ // Çıkış portları bellek elemanı(reg-yazmaç) veya bir tel olabilir reg[3:0] durum; //reg tipindeki durum değişkenin oluşturulması reg[7:0] display; //reg tipindeki display değişkenin oluşturulması reg[25:0] sayac; //reg tipindeki sayac değişkenin oluşturulması reg[7:0] etkin; //assign etkin=0; // etkinleştirme çıkışına 0 değeri atanmıştır. //------------Kod Burada Başlamaktadır------------------------- // Ana döngü bloğu // Bu sayaç yükselen kenar tetiklemeli olduğundan, // Bu bloğu saatin yükselen kenarına göre veya sifirlamanın alçalan // kenarına göre tetikleyeceğiz. always@(posedge saatdarbesi or negedge sifirlama) if(!sifirlama) //sifirlamaya basılmamışsa durum<=durum0; //duruma, durum0'ı yükle sayac<=0; //sayaç değişkenine 0 yükle

else sayac<=sayac+1; // sayac değişkeninin içeriğini 1 arttır if(sayac==26'h3ffffff) // sayac, 3ffffff değerine ulaşırsa case(durum) //koşula göre durum seçimi durum0: durum<=durum1; //bir sonraki durumun yüklenmesi durum1 durum1: durum<=durum2; //bir sonraki durumun yüklenmesi durum2 durum2: durum<=durum3; //bir sonraki durumun yüklenmesi durum3 durum3: durum<=durum4; //bir sonraki durumun yüklenmesi durum4 durum4: durum<=durum5; //bir sonraki durumun yüklenmesi durum5 durum5: durum<=durum6; //bir sonraki durumun yüklenmesi durum6 durum6: durum<=durum7; //bir sonraki durumun yüklenmesi durum7 durum7: //durum7 durum<=durum8; //bir sonraki durumun yüklenmesi durum0 durum8: durum<=durum9; //bir sonraki durumun yüklenmesi durum1 durum9: durum<=duruma; //bir sonraki durumun yüklenmesi durum2 duruma: durum<=durumb; //bir sonraki durumun yüklenmesi durum3 durumb: durum<=durumc; //bir sonraki durumun yüklenmesi durum4 durumc: durum<=durumd; //bir sonraki durumun yüklenmesi durum5 durumd: durum<=durume; //bir sonraki durumun yüklenmesi durum6 durume: durum<=durumf; //bir sonraki durumun yüklenmesi durum7 // durumf: //durum7 // durum<=durum0; //bir sonraki durumun yüklenmesi durum0 case always@(durum) case(durum) durum0: display<=8'b1100_0000;//display göstergeye 0 değeri gönderilmesi etkin<=8'b1111_1110;//1. display gösterge aktif durum1: display<=8'b1111_1001;//display göstergeye 1 değeri gönderilmesi etkin<=8'b1111_1101;//2. display gösterge aktif durum2: display<=8'b1010_0100;//display göstergeye 2 değeri gönderilmesi etkin<=8'b1111_1011;//3. display gösterge aktif durum3: display<=8'b1011_0000;//display göstergeye 3 değeri gönderilmesi etkin<=8'b1111_0111;//4. display gösterge aktif 9

durum4: display<=8'b1001_1001;//display göstergeye 4 değeri gönderilmesi etkin<=8'b1110_1111;//5. display gösterge aktif durum5: display<=8'b1001_0010;//display göstergeye 5 değeri gönderilmesi etkin<=8'b1101_1111;//6. display gösterge aktif durum6: display<=8'b1000_0010;//display göstergeye 6 değeri gönderilmesi etkin<=8'b1011_1111;//7. display gösterge aktif durum7: //durum7 display<=8'b1111_1000;//display göstergeye 7 değeri gönderilmesi etkin<=8'b0111_1111;//8. display gösterge aktif durum8: //durum8 display<=8'b1000_0000;//display göstergeye 0 değeri gönderilmesi etkin<=8'b0111_1111;//1. display gösterge aktif durum9: //durum9 display<=8'b1001_0000;//display göstergeye 1 değeri gönderilmesi etkin<=8'b1011_1111;//2. display gösterge aktif duruma: //duruma display<=8'b1000_1000;//display göstergeye 2 değeri gönderilmesi etkin<=8'b1101_1111;//3. display gösterge aktif durumb: //durumb display<=8'b1000_0011;//display göstergeye 3 değeri gönderilmesi etkin<=8'b1110_1111;//4. display gösterge aktif durumc: //durumc display<=8'b1100_0110;//display göstergeye 4 değeri gönderilmesi etkin<=8'b1111_0111;//5. display gösterge aktif durumd: //durumd display<=8'b1010_0001;//display göstergeye 5 değeri gönderilmesi etkin<=8'b1111_1011;//6. display gösterge aktif durume: //durume display<=8'b1000_0110;//display göstergeye 6 değeri gönderilmesi etkin<=8'b1111_1101;//7. display gösterge aktif 10

case durumf: //durumf display<=8'b1000_1110;//display göstergeye 7 değeri gönderilmesi etkin<=8'b0000_0000;//8. display gösterge aktif module // durummakinesi MODÜLÜ SONU 11 Uygulamanın Go rseli :