Durumları Tanımlama
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 79 / 90.
Görev
Bir trafik ışığı denetleyicisi, belirli zaman aralıklarıyla farklı ışık durumları (Kırmızı, Sarı, Yeşil) arasında döngü yapan sonlu durum makinesidir. Bir sonlu durum makinesi (FSM), sınırlı sayıdaki durumdan birinde bulunabilen bir devredir. Girdilere veya zamanlamaya bağlı olarak bir durumdan diğerine geçer.
Bu projede, basit bir kavşak için trafik ışığı denetleyicisi oluşturacaksın. Trafik ışığının üç çıkışı vardır:
| Işık | Çıkış | Anlamı |
|---|---|---|
| Kırmızı | red = 1 | Dur |
| Sarı | yellow = 1 | Dikkat |
| Yeşil | green = 1 | Geç |
Işıklar şu sırayla döngü yapar:
Green → Yellow → Red → Green → …
Zamanlama Sırası
| Durum | Süre | Sonraki Durum |
|---|---|---|
| Yeşil | 30 saniye | Sarı |
| Sarı | 10 saniye | Kırmızı |
| Kırmızı | 40 saniye | Yeşil |
Bu derste, trafik ışığı denetleyicisinin durumlarını tanımlayacaksın.
Bir trafik ışığının üç olası durumu vardır:
| Durum | Işık | Kod |
|---|---|---|
| Yeşil | Yeşil ışık AÇIK | 2'b00 |
| Sarı | Sarı ışık AÇIK | 2'b01 |
| Kırmızı | Kırmızı ışık AÇIK | 2'b10 |
Eksik kısımları ekleyerek modülü tamamla.
Yapılacaklar:
Durum kodlamasını tanımla: 0=Yeşil, 1=Sarı, 2=Kırmızı
- called
stateadlı 2 bitlik bir register tanımla - Zamanlamanın 40 saniyeye kadar yapılabilmesi için
counteradlı 6 bitlik bir register tanımla. Bu adımda kullanılmaz: onunla sayım yapan zamanlama mantığı bu projenin ilerleyen bir adımında, Geçişleri Zamanlama adımında gelir - Çıkış atamalarını, içinde
case (state)bulunan birleşimsel bir always bloğunun (always @(*) begin ... end) içine ekle.red,yellowvegreendeğişkenlerioutput regolarak tanımlanmıştır ve birregyalnızca böyle bir blok içinde atanabilir.@(*), bloğun okuduğu herhangi bir şey değiştiğinde bloğun yeniden çalışacağı anlamına gelir; burada bu şeystate'tir:- state 0 olduğunda:
green = 1,yellow = 0,red = 0 - state 1 olduğunda:
green = 0,yellow = 1,red = 0 - state 2 olduğunda:
green = 0,yellow = 0,red = 1
- state 0 olduğunda:
Kendin dene
module traffic_light (
input clk,
input reset,
output reg red,
output reg yellow,
output reg green
);
// TODO: Görev 1 - Durum register'ını bildir (2 bit)
// TODO: Görev 2 - Sayaç register'ını bildir (6 bit)
// TODO: Görev 3 - case (state) kullanarak çıkış atamaları
// durum 0: green=1, yellow=0, red=0
// durum 1: green=0, yellow=1, red=0
// durum 2: green=0, yellow=0, red=1
endmoduleTemel Bilgiler bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi