Testbench Yazma
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 82 / 90.
Görev
Bu derste, trafik ışığı denetleyicisinin doğru çalıştığını doğrulamak için bir testbench oluşturacaksınız.
Yapılacaklar:
Aşağıdaki adımları gerçekleştiren bir testbench oluşturun:
- Sinyalleri tanımlayın (clk ve reset için
reg, red, yellow, green içinwire) traffic_lightmodülünüuutadıyla örnekleyin (instantiate edin)- Her 1 zaman biriminde (1 time unit) durum değiştiren bir saat (clock) oluşturun
- 2 zaman birimi boyunca reset uygulayın, ardından serbest bırakın
- Simülasyonu 100 zaman birimi boyunca çalıştırın
Kendin dene
module traffic_light (
input clk,
input reset,
output reg red,
output reg yellow,
output reg green
);
reg [1:0] state;
reg [5:0] counter;
// Çı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
// Zamanlamalı durum makinesi
always @(posedge clk or posedge reset) begin
if (reset) begin
state <= 2;
counter <= 0;
end else begin
if (counter == 0) begin
case (state)
0: begin
state <= 1;
counter <= 10;
end
1: begin
state <= 2;
counter <= 40;
end
2: begin
state <= 0;
counter <= 30;
end
endcase
end else begin
counter <= counter - 1;
end
end
end
endmodule
module testbench;
// TODO: clk ve reset için reg bildir
// TODO: red, yellow, green için wire bildir
// TODO: traffic_light modülünü uut adıyla örnekle
// clk, reset, red, yellow, green bağla
// TODO: Saat üret (her 1 zaman biriminde değiştir)
initial begin
$display("Traffic Light Test");
// TODO: clk'yi 0'a başlat
// TODO: Reset uygula (2 zaman birimi için reset=1, sonra reset=0)
// TODO: Simülasyonu 100 zaman birimi çalıştır
$display("Test complete");
$finish;
end
endmoduleTemeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı