Defining The States
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 79 / 90.
Görev
Bir traffic light controller, belirli zaman aralıklarıyla farklı ışık state'leri (Kırmızı, Sarı, Yeşil) arasında geçiş yapan bir sonlu durum makinesidir. Sonlu durum makinesi (FSM), sınırlı sayıda state'ten birinde bulunabilen bir devredir. Girişlere veya zamanlamaya bağlı olarak bir state'ten diğerine geçer.
Bu projede basit bir kavşak için bir traffic light controller oluşturacaksınız. Traffic light'ı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ı
| State | Süre | Sonraki State |
|---|---|---|
| Green | 30 saniye | Yellow |
| Yellow | 10 saniye | Red |
| Red | 40 saniye | Green |
Bu derste traffic light controller için state'leri tanımlayacaksınız.
Bir traffic light'ın üç olası state'i vardır:
| State | Işık | Kod |
|---|---|---|
| Green | Yeşil ışık AÇIK | 2'b00 |
| Yellow | Sarı ışık AÇIK | 2'b01 |
| Red | Kırmızı ışık AÇIK | 2'b10 |
Eksik kısımları ekleyerek modülü tamamlayın.
Yapılacaklar:
state kodlamasını tanımlayın: 0=Green, 1=Yellow, 2=Red
-
stateadlı 2 bitlik bir register Declare edin - 40 saniyeye kadar zamanlama için
counteradlı 6 bitlik bir register Declare edin - Çıkış atamalarını, içinde
case (state)bulunan bir kombinasyonel always bloğunun,always @(*) begin ... end, içine ekleyin.red,yellowvegreen,output regolarak Declare edilir 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ı tanımla (2 bit)
// TODO: Görev 2 - Sayaç register'ını tanımla (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
endmoduleTemeller bölümündeki tüm dersler
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicKendi başına pratik yap: Online Verilog derleyicisi