Menu
Coddy logo textTech

Testbench

Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 90번째.

challenge icon

챌린지

testbench는 설계에 입력을 제공하고 파형 파일을 생성합니다. 자체 포트는 없습니다.

과제

다음 조건을 만족하는 testbench를 작성하세요:

  1. clk, start, data_in(8비트)에 대해 reg를 선언합니다.
  2. tx에 대해 wire를, cnt에 대해 wire [3:0]를 선언합니다.
  3. uart_tx 모듈을 인스턴스화하고 모든 포트를 연결합니다: .clk, .start, .data_in, .tx, .cnt
  4. 클록을 생성합니다(5시간 단위마다 토글).
  5. initial 블록 내부에서:
    • $dumpfile$dumpvars를 사용하여 uart.vcd라는 파형 파일을 생성합니다.
    • clk = 0, start = 1, data_in = 8'b01000001을 시간 0에 설정합니다.
    • 10시간 단위 후에 start를 해제합니다(start = 0).
    • 200시간 단위 동안 실행합니다.

testbench를 실행한 후 파형을 열어 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 컴파일러