Testbench Yazma
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 82 / 90.
Görev
Bu derste, trafik ışığı kontrolörünün doğru çalıştığını doğrulamak için bir testbench oluşturacaksınız.
Yapılacaklar:
Şunları yapan bir testbench oluşturun:
- Sinyalleri tanımlar (clk ve reset için
reg, red, yellow, green içinwire) traffic_lightmodülünüuutadıyla örnekler- Her 1 zaman biriminde bir değişen bir saat üretir
- 2 zaman birimi boyunca reset uygular, ardından serbest bırakır
- Simülasyonu 100 zaman birimi boyunca çalıştırır
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;
// YAPILACAK: clk ve reset için reg tanımlayın
// YAPILACAK: red, yellow, green için wire tanımlayın
// YAPILACAK: traffic_light modülünü uut adıyla örnekleyin
// clk, reset, red, yellow, green bağlantılarını yapın
// YAPILACAK: Saat sinyali oluşturun (her 1 zaman biriminde tersleyin)
initial begin
$display("Traffic Light Test");
// YAPILACAK: clk değerini 0 olarak başlatın
// YAPILACAK: Reset uygulayın (2 zaman birimi boyunca reset=1, sonra reset=0)
// YAPILACAK: Simülasyonu 100 zaman birimi boyunca çalıştırın
$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ığı