Durum Makinesi Mantığı
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 80 / 90.
Görev
Bu derste, trafik ışığı denetleyicisine durum geçişi mantığını ekleyeceksin. Durum makinesi, bir durumdan bir sonraki duruma ne zaman geçileceğini belirler.
Durum makinesi mantığı, trafik ışığının durumlarını ne zaman ve nasıl değiştireceğini kontrol eder.
Durum Sırası
Yeşil → Sarı → Kırmızı → Yeşil → …
Görevin, durum makinesi mantığını modüle eklemektir.
Bu adımda yeni bir giriş sinyali olan next, her değişikliği tetikler; zamanlama sayacı bir sonraki adımda eklenecek. Önceki adımda yazdığın her şeyi (state yazmacını, kullanılmayan counter bildirimini ve çıktı always @(*) bloğunu) koru.
Yapılacaklar:
- Modül başlığına,
reset'ten sonranextadlı 1 bitlik bir giriş portu ekle:input next,. Testbench, bir sonraki durumu istemek için bu porta darbe uygular - Bir
always @(posedge clk or posedge reset)bloğu ekle - Reset durumunda
statedeğerini Kırmızı'ya (2) ayarla next1 olduğunda bir sonraki duruma geç:- Durum Yeşil (0) ise Sarı'ya değiştir
- Durum Sarı (1) ise Kırmızı'ya değiştir
- Durum Kırmızı (2) ise Yeşil'e değiştir
Kendin dene
module traffic_light (
input clk,
input reset,
input next, // Durumu değiştirmek için tetikleyici
output reg red,
output reg yellow,
output reg green
);
reg [1:0] state;
// Çıkış atamaları
always @(*) begin
case (state)
0: begin green = 1; yellow = 0; red = 0; end
1: begin green = 0; yellow = 1; red = 0; end
2: begin green = 0; yellow = 0; red = 1; end
default: begin green = 0; yellow = 0; red = 1; end
endcase
end
// TODO: Durum makinesi mantığını ekle (zamanlama olmadan)
// always @(posedge clk or posedge reset) begin
// if (reset) begin
// state <= 2;
// end else if (next) begin
// case (state)
// 0: state <= 1;
// 1: state <= 2;
// 2: state <= 0;
// endcase
// end
// end
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