Menu
CoddyTech

Testbench

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 90 dari 90.

challenge icon

Tantangan

testbench memberikan input ke desainmu dan membuat file waveform. testbench tidak memiliki port sendiri.

Tugasmu

Buat testbench yang:

  1. Mendeklarasikan reg untuk clk, start, dan data_in (8 bit)
  2. Mendeklarasikan wire untuk tx dan wire [3:0] untuk cnt
  3. Membuat instance module uart_tx, dengan menghubungkan semua port: .clk, .start, .data_in, .tx, .cnt
  4. Membuat clock (berubah setiap 5 unit waktu)
  5. Di dalam blok initial:
    • Membuat file waveform bernama uart.vcd menggunakan $dumpfile dan $dumpvars
    • Mengatur clk = 0, start = 1, data_in = 8'b01000001 pada waktu 0
    • Menonaktifkan start setelah 10 unit waktu (start = 0)
    • Lalu menunggu 200 unit waktu lagi dan memanggil $finish (sehingga simulasi berakhir pada waktu 210)

Setelah menjalankan testbench, buka waveform untuk memeriksa sinyal tx.

Coba sendiri

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

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online