Logika Mesin Status
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 80 dari 90.
Tantangan
Dalam pelajaran ini, kamu akan menambahkan logika transisi state ke pengontrol lampu lalu lintas. Mesin state menentukan kapan berpindah dari satu state ke state berikutnya.
Logika mesin state mengontrol kapan dan bagaimana lampu lalu lintas berpindah state.
Urutan State
Hijau → Kuning → Merah → Hijau → …
Tugasmu adalah menambahkan logika mesin state ke module.
Pada langkah ini, sinyal input baru, next, memicu setiap perubahan. Penghitung waktu akan ditambahkan pada langkah berikutnya. Pertahankan semua yang kamu tulis pada langkah sebelumnya, yaitu register state, deklarasi counter yang belum digunakan, dan blok output always @(*).
Yang harus dilakukan:
- Tambahkan port input 1-bit bernama
nextke header module, setelahreset:input next,. Testbench memberikan pulsa padanya untuk meminta state berikutnya - Tambahkan blok
always @(posedge clk or posedge reset) - Saat reset, atur
stateke Merah (2) - Saat
nextbernilai 1, pindah ke state berikutnya:- Jika state adalah Hijau (0): ubah ke Kuning
- Jika state adalah Kuning (1): ubah ke Merah
- Jika state adalah Merah (2): ubah ke Hijau
Coba sendiri
module traffic_light (
input clk,
input reset,
input next, // Pemicu untuk mengubah state
output reg red,
output reg yellow,
output reg green
);
reg [1:0] state;
// Penetapan output
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: Tambahkan logika mesin state (tanpa pengaturan waktu)
// 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
endmoduleSemua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online