EE 학부과목/verilog
[verilog] NAND 구현
colorful-palette
2023. 3. 13. 12:02
nand.v
module NANDgate(in1, in2, out1);
input in1;
input in2;
output out1;
assign out1 = ~(in1 & in2);
endmodule
nand_tb.v
`timescale 1ns/1ns
module NANDgate_tb();
reg a;
reg b;
wire out1;
NANDgate u1 (a, b,out1);
initial begin
a = 0 ;
b = 0 ;
#100 $finish;
end
always begin
#5 a = ~a;
end
always begin
#10 b = ~b;
end
/* 위 always문 이용 대신 initial문 안에
a = 0; b = 0 #5;
a = 1; b = 0 #5;
a = 0; b = 1 #5;
a = 1; b = 1 #5;
#100 $finish; 로 짤 수도 있다
*/
/*
begin - end가 하나의 구문이고, always가 블럭 단위로 반복한다.
#n: 'n x 단위시간'이 흐른다는 뜻. #n 뒤에 하나의 식만 들어가지 않아도 된다.
ex)
#1 a = ~a;
#1 a = ~a; b=~b; 식으로 쓰면 a의 주기는 2, b의 주기는 4가 된다.
*/
initial begin
$display("Hello World!\n");
$dumpfile("output.vcd");
$dumpvars(0);
end
endmodule