*Full Adder
*Full Adder Design Using Verilog
FullAdder.v file
`timescale 1ns/100ps
module FullAdder (input x, y, Cin, output Cout, Sum);
assign Sum = x ^ y ^ Cin;
assign Cout = (x & y) | (x & Cin) | (y & Cin);
endmodule
- timescale 1ns/100ps : time 프리시전으로 time step결정, 얼마나 쪼개서 할 것인지 설정
- FullAdder : module의 이름 / 순서에 맞게 mapping하기(순서중요)
- ^ : exclusive OR
FullAdderTester.v file
`timescale 1ns/100ps
module FullAdderTester;
reg x = 0, y = 0, Cin = 0;
wire Cout, Sum;
parameter tlimit = 500;
FullAdder FA1(x, y, Cin, Cout, Sum);
always begin
if ($time >= tlimit) $stop; //for문처럼 반복되는 문
else begin
#17;
x = ~x;
#13;
Cin = ~Cin;
#19;
y = ~y;
end
end
integer result; //txt파일에 저장 시작
wire on;
assign on = ($time < tlimit-1)? 1 : 0;
always@(x, y, Cin)begin
if(on)begin
result = $fopen("result.txt");
$fdisplay(result, $time, "%d, %d, %d, %d, %d", x, y, Cin, Sum, Cout);
end
else
$fclose(result); //저장 끝
end
endmodule
- parameter tlimit = 500 : 500ns까지만 시뮬레이션하라
- FullAdder : 앞의 module 불러오기
- FA1 : test bench에서 사용하는 module이름
- $time : 시간 가져오기 / 500ns 넘어가면 멈춰라
- # : 이만큼의 시간 후에 다음 명령을 실행하라
*Full Adder Design Using Verilog - Result(wave)
*Full Adder Design Using Verilog - Result(text file)
'Study > Digital System Design and Lab[Verilog]' 카테고리의 다른 글
#3 Modeling Flip-Flops Using Always Block (0) | 2023.10.14 |
---|---|
#2-2 Multiplexer Design (0) | 2023.10.11 |
#2-1 Design a 4-Bit Adder (0) | 2023.10.11 |
#2 Verilog Description of Digital Systems(Verilog Assignments) (0) | 2023.10.11 |
#1 Digital Circuit Design (0) | 2023.10.03 |