写作目的:
写给新手,帮助新手快速上手verilog,能够实现快速的FPGA开发需求或者IC design需求。
设计代码:
其中Ai,Bi为输入,Ci为输入进位,So为输出结果,Co为输出进位。
module full_adder(
input Ai,Bi,Ci,
output So,Co
);
assign {Co,So} = Ai + Bi + Ci;
endmodule
testbench代码:
下面编写简单的testbench来进行仿真和验证。
`timescale 1ns/1ns
`include "full_adder.v"
module full_adder_tb();
reg Ai, Bi, Ci;
wire So, Co;
full_adder u_full_adder(
.Ai(Ai),
.Bi(Bi),
.Ci(Ci),
.So(So),
.Co(Co)
);
initial begin
Ai = 0;
Bi = 0;
Ci = 0;
# 50
Ai = 1;
Bi = 1;
#50
Ai = 1;
Bi = 0;
end
initial begin
$dumpfile("full_adder.vcd");
$dumpvars(0);
#200 $finish;
end
endmodule
仿真后的波形如图所示:
可以看到,波形正确,设计无误。
本文后续会持续更新,旨在帮助新手快速上手IC设计或者人工智能,新手想学习可以加关注~