Testbench
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 90번째.
챌린지
testbench는 설계에 입력을 제공하고 파형 파일을 생성합니다. 자체 포트는 없습니다.
과제
다음 조건을 만족하는 testbench를 작성하세요:
clk,start,data_in(8비트)에 대해reg를 선언합니다.tx에 대해wire를,cnt에 대해wire [3:0]를 선언합니다.uart_tx모듈을 인스턴스화하고 모든 포트를 연결합니다:.clk,.start,.data_in,.tx,.cnt- 클록을 생성합니다(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기초의 모든 레슨
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic직접 연습해 보세요: 온라인 Verilog 컴파일러