Menu
Coddy logo textTech

סביבת בדיקה

חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 90 מתוך 90.

challenge icon

אתגר

סביבת בדיקה מספקת קלטים לתכנון שלך ויוצרת קובץ צורת גל. אין לה יציאות משלה.

המשימה שלך

צרו סביבת בדיקה ש:

  1. מכריזה על reg עבור clk, start ו-data_in (8 סיביות)
  2. מכריזה על wire עבור tx ועל wire [3:0] עבור cnt
  3. יוצרת מופע של המודול uart_tx, ומחברת את כל היציאות: .clk, .start, .data_in, .tx, .cnt
  4. מייצרת שעון (היפוך מצב כל 5 יחידות זמן)
  5. בתוך בלוק initial:
    • יוצרת קובץ צורת גל בשם uart.vcd באמצעות $dumpfile ו-$dumpvars
    • מגדירה את clk = 0, start = 1, data_in = 8'b01000001 בזמן 0
    • משחררת את start לאחר 10 יחידות זמן (start = 0)
    • לאחר מכן ממתינה עוד 200 יחידות זמן וקוראת ל-$finish (כך שהסימולציה מסתיימת בזמן 210)

לאחר הרצת סביבת הבדיקה, פתחו את צורת הגל כדי לאמת את האות tx.

נסו בעצמכם

module uart_tx (
  input clk,
  input start,
  input [7:0] data_in,
  output reg tx,
  output reg [3:0] cnt
);

  reg [9:0] shift_reg;

  initial begin
    cnt = 0;
    tx = 1;
    shift_reg = 0;
  end

  always @(posedge clk) begin
    if (cnt == 0 && start) begin
      shift_reg <= {1'b1, data_in, 1'b0};
      cnt <= 1;
    end
    else if (cnt > 0 && cnt < 9) begin
      tx <= shift_reg[0];
      shift_reg <= shift_reg >> 1;
      cnt <= cnt + 1;
    end
    else if (cnt == 9) begin
      tx <= shift_reg[0];
      shift_reg <= shift_reg >> 1;
      cnt <= 0;
    end
  end

endmodule

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין