FPGA İLE UYGULAMA ÖRNEKLERİ

Benzer belgeler
FPGA ile 2x16 LCD Uygulaması

FPGA İLE UYGULAMA ÖRNEKLERİ

FPGA İLE UYGULAMA ÖRNEKLERİ

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

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

Programlanabilir Devreler

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

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

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

VERILOG. Modüller

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

T.C. RC SERVO MOTOR KONTROLÜ

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

EEM 419-Mikroişlemciler Güz 2017

FBs-serisi. Programlanabilir Kontrol Cihazı. Kullanım Kitabı - II [ İleri Düzey Uygulamalar. Önsöz, İçerik. FBs-PLC Interrupt Fonksiyonu 9

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

ENROUTEPLUS TA YAPILMASI GEREKENLER

LPC2104 Mikro Denetleyicisini KEIL İle Programlamak

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

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

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

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

Proje #2 - Lojik Devre Benzetimi

PIC TABANLI, 4 BASAMAKLI VE SER

Föy Kitapçıg ı O NDOKUZ M AYIS Ü N I VERS I TES I B I LG I SAYAR M ÜHEND I SL I G I B ÖLÜMÜ S AYISAL TASARIM L ABORATUVARI

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

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

DSPIC30F2010 ASSEMBLER PROGRAMI İÇERİSİNDE KONFİGÜRASYON BİTLERİNİ TANIMLAMA

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

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

PIC Mikrodenetleyicileri

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

CPU ONE PLC KULLANMA KLAVUZU

4-Deney seti modüler yapıya sahiptir ve kabin içerisine tek bir board halinde monte edilmiştir.

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

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

Chapter1: Introduction. Ders 1: Giriş. Digital System Designs and Practices Using Verilog HDL and 2008~2010, John Wiley 1-1

Mikroişlemciler. Microchip PIC

BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Hacettepe Üniversitesi Bilgisayar Müh. Bölümü

LCD (Liquid Crystal Display)

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

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

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

Bu derste! BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Yazmaç Aktarımı Düzeyi! Büyük Sayısal Sistemler! 12/25/12

Melih Hilmi ULUDAĞ. Yazılım Mühendisi Mekatronik Mühendisi. a aittir.

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ

Fırat Üniversitesi DENEY NO: 5 GÖMÜLÜ SİSTEM PROGRAMLAMA

İçİndekİler. 1. Bölüm - Mİkro Denetleyİcİ Nedİr? 2. Bölüm - MİkroDenetleyİcİlerİ Anlamak

Birol Çapa Özen Özkaya Güz Dönemi Eğitimleri

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

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

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

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

Program Kodları. void main() { trisb=0; portb=0; while(1) { portb.b5=1; delay_ms(1000); portb.b5=0; delay_ms(1000); } }

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

İ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

8086 nın Bacak Bağlantısı ve İşlevleri. 8086, 16-bit veri yoluna (data bus) 8088 ise 8- bit veri yoluna sahip16-bit mikroişlemcilerdir.

Tek Müşteri Resmi(360)-Hasar Bilgileri Ekranı Kullanım Kılavuzu

NX-CIF105 MODBUS CIF MANAGER. NX-CIF105 CIF MANAGER CIF105 Ayarları CIF Mapping yazılımı Yazılım yapısı

SAYISAL MANTIK LAB. PROJELERİ

Deney No Deney Adı Tarih. 3 Mikrodenetleyici Portlarının Giriş Olarak Kullanılması / /201...

INFONAV HARİTA GÜNCELLEME

LAB 0 : Xilinx ISE Kullanımı

IdeaSoft E-Ticaret ile LOGO Ticari Yazılım Entegrasyon Kullanım Kılavuzu

Deney 6: Ring (Halka) ve Johnson Sayıcılar

Deney 2: Flip-Floplar

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

DCAS NGP operatör panel

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

Mikrokontrolcu Portları {\} /\ Suhap SAHIN

5. Atlama, Karar ve Çevrim Kontrol Deyimleri

Fatih Üniversitesi. İstanbul. Haziran Bu eğitim dokümanlarının hazırlanmasında SIEMENS ve TEKO eğitim dokümanlarından faydalanılmıştır.

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

MADE IN TURKEY KOD ELEKTRONİK GÜVENLİK SİSTEMLERİ SAN. VE TİC. LTD. ŞTİ. ADRESLENEBİLİR AKILLI YANGIN ALARM SİSTEMİ 2015 FİYAT LİSTESİ

ALTYAPI ADAPTASYON ÇALIŞMALARI PANO/KABLO KODLAMA TABLOLARI KLEMENS PİN NUMARALARI ŞEMASI

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Erzurum Teknik Üniversitesi RobETÜ Kulübü Robot Eğitimleri. ARDUİNO EĞİTİMLERİ I Arş. Gör. Nurullah Gülmüş

ABAQUS Programına Giriş Kullanılacak Sürümler

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

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ DENEY #6

1. Ders Giriş. Mikroişlemcili Sistem Uygulamaları

BM-311 Bilgisayar Mimarisi


Mikroişlemci Nedir? Mikrodenetleyici Nedir? Mikroişlemci iç yapısı Ders Giriş. Mikroişlemcili Sistem Uygulamaları

PİC HAKKINDA KISA KISA BİLGİLER GİRİŞ/ÇIKIŞ PORTLARI

INVT IVC1. -Kompakt Tip PLC. Marketing 2014 HM

FP52 PROXIMITY KART OKUYUCUSU KULLANIM KILAVUZU

24 Mart İlgili Modül/ler : Transfer. İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL

ETA Versiyon 7 üzerinden USB portlu yazıcılardan barkod etiketi yazdırılabilirsiniz.

Qt ile Bir Ağ Uygulaması

Eğitim Amaçlı Temel Bir Mikrobilgisayarın Tasarlanması ve Gerçeklemesi Design and Implementation of a Basic Microcomputer for Educational Purpose

Algoritma ve Akış Diyagramları

Teorik Bilgi DENEY 7: ASENKRON VE SENKRON SAYICILAR

Q-P 50 B KULLANIM KILAVUZU

WAM 918. DIRAC ELECTRONICS WAM 918 Kablosuz Erişim Ünitesi. Kullanıcı El Kitabı

Seri Takibi Yenilikleri


1. PROGRAMLAMA. PDF created with pdffactory Pro trial version

Sistem Nasıl Çalışıyor: Araç İzleme ve Filo Yönetim Sistemi

User [Şirket adını. LTr Kullanım Kılavuzu. yazın]

Transkript:

FPGA ile Display Kontrol ve (0-9999) Sayıcı Uygulaması 1 FPGA ile (Sahada Programlanabilir Mantık Dizeleri) gerçekleştirilen bu örnek uygulamamızda deneme kartımız üzerinde bulunan 8 adet (4x2 display bloğu) 7 segment display ile 2 örnek uygulama yapacağız. İlk örnek uygulamamızda bu sekiz display de, 7,6,5,4,3,2,1,0 rakam değerlerini sırası ile yazdıracağız. İkinci örnek uygulamamızda ise 0 ile 9999 arasında sürekli dönen bir sayıcı gerçekleştireceğiz. Uygulamaların açıklamaları, komut satırlarının yanında yorum olarak yapılmıştır. Yorumlar dikkatli okunduğunda programların çalışma algoritması anlaşılmaktadır. Ö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. 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 ve Display arasındaki Pin Bag lantıları : 2

Display Kontrol Uygulaması Pin Tanımlama & Bag lantıları Çıkış Pinleri etkin[0] >>PIN_128 etkin[1] >>PIN_129 etkin[2] >>PIN_132 etkin[3] >>PIN_133 etkin[4] >>PIN_135 etkin[5] >>PIN_136 etkin[6] >>PIN_137 vericikisi[0] >>PIN_127 vericikisi[1] >>PIN_126 vericikisi[2] >>PIN_125 vericikisi[3] >>PIN_124 vericikisi[4] >>PIN_121 vericikisi[5] >>PIN_120 vericikisi[6] >>PIN_119 vericikisi[7] >>PIN_115 Giriş Pinleri PIN_23 << saatdarbesi PIN_87 << saatdarbesi 3 Display Kontrol Uygulaması Program Kodu / @dosya LCD Uygulaması @yazar Erkan ÇİL @sürüm V0.0.1 @tarih 13-Temmuz-2016 @özet Cyclone IV EP4CE6 FPGA Yedi Segment Display Kontrol Uygulaması Bu örnek uygulamada, Cyclone IV EP4CE6 FPGA kartını ile 3461BS display kullanılarak 7,6,5,4,3,2,1,0 rakam değerlerini sırası gösterilecektir. Bu program özgür yazılımdır: Özgür Yazılım Vakfı tarafından yayımlanan GNU Genel 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 yedisegdisplay (saatdarbesi,reset,vericikisi,etkin); // yedi segment display(yedisegdisplay) MODÜLÜ TANIMI //-------------Giriş Portları----------------------------- input saatdarbesi,reset; //50mHz saatdarbesi ve giriş olarka tanımlanması //-------------Çıkış Portları----------------------------- output[7:0] vericikisi; //vericikisi çıkış olarak tanımlanması output[7:0] etkin; //etkinleştirme çıkış olarak tanımlanması //-------------Çıkış Portları Veri Tipleri------------------ // Çıkış portları bellek elemanı(reg-yazmaç) veya bir tel olabilir reg[7:0] vericikisi; //vericikisi registerinin oluşturulması reg[7:0] etkin; //etkinkeştirme registerinin oluşturulması reg[15:0] sayactarama; //sayactarama registerinin oluşturulması reg[4:0] vericikisi_buf; //vericikisi_buf registerinin oluşturulması //------------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 veya, // reset butonun alçalan kenarına göre tetikleyeceğiz. always@(posedge saatdarbesi or negedge reset)

if(!reset) sayactarama<=0; sayactarama<=sayactarama+1; // reset e basılmazsa döngüye başla // 0 değerinin sayactarama registerine aktarılması //sayactarama registerininin içeriğini 1 arttır 4 always @(sayactarama) case(sayactarama[15:13]) // sayactarama[15:13] registerinin sırası ile taranması 3'b000 : etkin = 8'b1111_1110; // 0. Displayin taranması 3'b001 : etkin = 8'b1111_1101; 3'b010 : etkin = 8'b1111_1011; 3'b011 : etkin = 8'b1111_0111; 3'b100 : etkin = 8'b1110_1111; 3'b101 : etkin = 8'b1101_1111; 3'b110 : etkin = 8'b1011_1111; 3'b111 : etkin = 8'b0111_1111; // 1. Displayin taranması // 2. Displayin taranması // 3. Displayin taranması // 4. Displayin taranması // 5. Displayin taranması // 6. Displayin taranması // 7. Displayin taranması default : etkin = 8'b1111_1110; // Default durum tanımı case // Displaylerin sırası ile aktif hale getirilmesi always@(etkin) case(etkin) //etkinleştirme registerinin taranması 8'b1111_1110: vericikisi_buf=0; // 0. Display Segmentinin enable edilmesi 8'b1111_1101: vericikisi_buf=1; // 1. Display Segmentinin enable edilmesi 8'b1111_1011: vericikisi_buf=2; // 2. Display Segmentinin enable edilmesi 8'b1111_0111: vericikisi_buf=3; // 3. Display Segmentinin enable edilmesi 8'b1110_1111: vericikisi_buf=4; // 4. Display Segmentinin enable edilmesi 8'b1101_1111: vericikisi_buf=5; // 5. Display Segmentinin enable edilmesi 8'b1011_1111: vericikisi_buf=6; // 6. Display Segmentinin enable edilmesi 8'b0111_1111: vericikisi_buf=7; // 7. Display Segmentinin enable edilmesi default: vericikisi_buf=8; // Default durum tanımı case // Displaylerin rakam segment datasının dönderilmesi always@(vericikisi_buf) case(vericikisi_buf) 4'b0000: vericikisi=8'b1100_0000; //0 4'b0001: vericikisi=8'b1111_1001; //1 4'b0010: vericikisi=8'b1010_0100; //2 4'b0011: vericikisi=8'b1011_0000; //3 4'b0100: vericikisi=8'b1001_1001; //4 4'b0101: vericikisi=8'b1001_0010; //5 //DP-G-F-E-D-C-B-A

4'b0110: vericikisi=8'b1000_0010; //6 4'b0111: vericikisi=8'b1111_1000; //7 default: vericikisi=8'b1000_0000; // Default durum tanımı case 5 module // yedi segment Display(yediSegDisplay) MODÜLÜ SONU Display Kontrol Uygulaması Go rseli :

Yedi Segment (0-9999) Sayıcı Uygulaması Pin Tanımlama & Bag lantıları Çıkış Pinleri a >>PIN_127 an[0] >>PIN_128 an[1] >>PIN_129 an[2] >>PIN_132 an[3] >>PIN_133 an[4] >>PIN_135 an[5] >>PIN_136 an[6] >>PIN_137 an[7] >>PIN_138 b >>PIN_126 c >>PIN_125 d >>PIN_124 dp >>PIN_115 e >>PIN_121 f >>PIN_120 g >>PIN_119 Giriş Pinleri PIN_23 << saatdarbesi PIN_87 << saatdarbesi Yedi Segment (0-9999) Sayıcı Uygulaması Program Kodu 6 / @dosya LCD Uygulaması @yazar Erkan ÇİL @sürüm V0.0.1 @tarih 13-Temmuz-2016 @özet Cyclone IV EP4CE6 FPGA Yedi Segment Sayici Uygulaması Bu örnek uygulamada, Cyclone IV EP4CE6 FPGA kartını ile 3461BS display kullanılarak 0-9999 rakamları arası sayan bir sayıcı üretilecektir. Bu program özgür yazılımdır: Özgür Yazılım Vakfı tarafından yayımlanan GNU Genel 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 yedisegsayici( // yedi segment sayıcı(yedisegsayici) MODÜLÜ TANIMI //-------------Giriş Portları----------------------------- input saatdarbesi, // clock girişi input reset, // reset girişi //-------------Çıkış Portları----------------------------- output a, // a segmenti çıkışı output b, // b segmenti çıkışı output c, // c segmenti çıkışı output d, // d segmenti çıkışı output e, // e segmenti çıkışı output f, // f segmenti çıkışı output g, // g segmenti çıkışı output dp, // nokta segmenti çıkışı output [7:0]an // tarama çıkışı ); //-------------Çıkış Portları Veri Tipleri------------------ // Çıkış portları bellek elemanı(reg-yazmaç) veya bir tel olabilir reg [3:0]basamak1; // basamak1 hanesi yazmacı reg [3:0]basamak2; // basamak2 hanesi yazmacı reg [3:0]basamak3; // basamak3 hanesi yazmacı reg [3:0]basamak4; // basamak3 hanesi yazmacı reg [22:0] gecikmesuresi; //gecikme/bekleme süresi yazmacı wire test; // test bağlantısı

//------------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 veya, // reset butonun alçalan kenarına göre tetikleyeceğiz. always @ (posedge saatdarbesi or negedge reset) if (!reset) //reset e basılılırsa gecikmesuresi <= 0; // gecikmesuresi ne 0 değeri yükle gecikmesuresi <= gecikmesuresi + 1; // gecikmesuresi nin değerini 1 arttır // test atamasının tanımlanması assign test = &gecikmesuresi; // gecikmesuresi nin her bit inin kisi ile VE işlemi uygulanması; gecikmesuresi nin her biti 1 olduğunda test değeri de 1 olacak always @ (posedge test or negedge reset) if (!reset) basamak1 <= 0; //birler basamağına 0 değerinin yüklenmesi basamak2 <= 0; //onlar basamağına 0 değerinin yüklenmesi basamak3 <= 0; //yüzler basamağına 0 değerinin yüklenmesi basamak4 <= 0; //binler basamağına 0 değerinin yüklenmesi if (basamak1==4'd9) //birler basamağında 9 değerine ulaşılırsa basamak1 <= 0; //birler basamağına 0 değerinin yüklenmesi if (basamak2 == 4'd9) //onlar basamağında 9 değerine ulaşılırsa basamak2 <= 0; //onlar basamağına 0 değerinin yüklenmesi if (basamak2==4'd9 && basamak1==4'd9) //99 değerine ulaşılırsa basamak2 <= 0 && basamak1 <= 0; //xx00 değerinin yüklenmesi if (basamak3 == 4'd9) //yüzler basamağında 9 değerine ulaşılırsa basamak3 <= 0; //yüzler basamağına 0 değerinin yüklenmesi 7 if (basamak3==4'd9 && basamak2==4'd9 && basamak1==4'd9) //999 değerine ulaşılırsa basamak3 <= 0 && basamak2 <= 0 && basamak1 <= 0; //x000 değerinin yüklenmesi if (basamak4 == 4'd9) //binler basamağında 9 değerine ulaşılırsa basamak4 <= 0; yüklenmesi basamak4 <= basamak4 + 1; //binler basamağı değerinin 1 arttırılması basamak3 <= basamak3 + 1; //yüzler basamağı değerinin 1 arttırılması //binler basamağına 0 değerinin basamak2 <= basamak2 + 1; //onlar basamağı değerinin 1 arttırılması basamak1 <= basamak1 + 1; //birler basamağı değerinin 1 arttırılması //Display Segmentlerinin Taranması localparam N = 18; reg [N-1:0]sayac; always @ (posedge saatdarbesi or negedge reset) if (!reset) sayac <= 0; sayac <= sayac + 1; reg [6:0]yediSegment; // Parametre tanımlanması // sayac yazmacının oluşturulması // reset e basılılırsa // sayac degerini bir arttir // yedisegment yazmacının oluşturulması

reg [7:0]etkinTarama; always @ () // etkintarama yazmacının oluşturulması 8 case(sayac[15:13]) // sayac[15:13] registerinin sırası ile taranması 3'b000 : yedisegment = basamak1; etkintarama = 8'b1111_1110; // 0. Displayin taranması 3'b001 : yedisegment = basamak2; etkintarama = 8'b1111_1101; // 1. Displayin taranması 3'b010 : 3'b011 : 3'b100 : 3'b101 : 3'b110 : 3'b111 : yedisegment = basamak3; etkintarama = 8'b1111_1011; // 2. Displayin taranması yedisegment = basamak4; etkintarama = 8'b1111_0111; // 3. Displayin taranması etkintarama = 8'b1110_1111; // 4. Displayin taranması etkintarama = 8'b1101_1111; // 5. Displayin taranması etkintarama = 8'b1011_1111; // 6. Displayin taranması etkintarama = 8'b0111_1111; // 7. Displayin taranması default : etkintarama = 8'b1111_1110; // Default durum tanımı case assign an = etkintarama; // an içerine etkintarama değerinin tanımlanması reg [6:0] yedisegment_gecici; // yedisegment_gecici yazmacının oluşturulması always @ () case(yedisegment) 4'd0 : yedisegment_gecici = 7'b1000000; //0 rakamı oluşturulması 4'd1 : yedisegment_gecici = 7'b1111001; //1 rakamı oluşturulması 4'd2 : yedisegment_gecici = 7'b0100100; //2 rakamı oluşturulması 4'd3 : yedisegment_gecici = 7'b0110000; //3 rakamı oluşturulması 4'd4 : yedisegment_gecici = 7'b0011001; //4 rakamı oluşturulması 4'd5 : yedisegment_gecici = 7'b0010010; //5 rakamı oluşturulması 4'd6 : yedisegment_gecici = 7'b0000010; //6 rakamı oluşturulması 4'd7 : yedisegment_gecici = 7'b1111000; //7 rakamı oluşturulması 4'd8 : yedisegment_gecici = 7'b0000000; //8 rakamı oluşturulması 4'd9 : yedisegment_gecici = 7'b0010000; //9 rakamı oluşturulması default : yedisegment_gecici = 7'b0111111; //nokta case assign {g, f, e, d, c, b, a} = yedisegment_gecici;

assign dp = 1'b1; // display noktalari SÖNÜK hale getiriliyor 9 module // yedi segment sayıcı(yedisegsayici) MODÜLÜ SONU Yedi Segment (0-9999) Sayıcı Uygulaması Go rseli :