כתיבת סביבת הבדיקה
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 82 מתוך 90.
אתגר
בשיעור הזה תיצור ספסל בדיקה כדי לוודא שבקר הרמזור פועל כהלכה.
מה לעשות:
צור ספסל בדיקה ש:
- מצהיר על אותות (
regעבור clk ו-reset,wireעבור red, yellow, green) - יוצר מופע של המודול
traffic_lightבשםuut - יוצר שעון שמחליף מצב בכל יחידת זמן אחת
- מפעיל איפוס למשך 2 יחידות זמן, ואז משחרר אותו
- מריץ את הסימולציה למשך 100 יחידות זמן
הסימולציה נבדקת לפי מה שהיא מדפיסה, ולכן גם בלוק initial צריך להפיק בדיוק את השורות האלה:
- הדפס
Traffic Light Testבאמצעות$displayלפני הגדרת השעון והאיפוס - לאחר 100 יחידות הזמן, הדפס
Test completeבאמצעות$display - סיים את הסימולציה באמצעות
$finish, שמוסיף שורה משלו לפלט
נסו בעצמכם
module traffic_light (
input clk,
input reset,
output reg red,
output reg yellow,
output reg green
);
reg [1:0] state;
reg [5:0] counter;
// השמות לפלטים
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
// מכונת מצבים עם תזמון
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: להצהיר על reg עבור clk ו-reset
// TODO: להצהיר על wire עבור red, yellow, green
// TODO: ליצור מופע של המודול traffic_light בשם uut
// לחבר את clk, reset, red, yellow, green
// TODO: ליצור אות שעון (להחליף את ערכו כל יחידת זמן אחת)
initial begin
$display("Traffic Light Test");
// TODO: לאתחל את clk ל-0
// TODO: להפעיל reset (reset=1 למשך 2 יחידות זמן, ואז reset=0)
// TODO: להריץ סימולציה למשך 100 יחידות זמן
$display("Test complete");
$finish;
end
endmoduleכל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין