1 编写全加器和全加器放着顶层
使用vim或者其他编辑器编写fulladd.v和tb_fulladd.v
1 ) 全加器verilog代码
module fulladd(sum,c_out,a,b,c_in);
output sum,c_out;
input a,b,c_in;
wire s1,c1,c2;
xor (s1,a,b);
and (c1,a,b);
xor (sum,s1,c_in);
and (c2,s1,c_in);
or (c_out,c2,c1);
endmodule
2) 全加器仿真顶层
module tb_fulladd;
wire sum,c_out;
reg a,b,c_in;
fulladd fadd(sum,c_out,a,b,c_in);
/*
//输出fsdb格式的波形文件,使verdi能够查看
initial
begin
$fsdbDumpfile("tb_fulladd.fsdb");
$fsdbDumpvars(0,fadd);
$fsdbDumpon();
end
*/
initial begin
$vcdpluson();
end
initial
begin
a=0;b=0;c_in=0;
#10 a=0;b=0;c_in=1;
#10 a=0;b=1;c_in=0;
#10 a=0;b=1;c_in=1;
#10 a=1;b=0;c_in=0;
#10 a=1;b=0;c_in=1;
#10 a=1;b=1;c_in=0;
#10 a=1;b=1;c_in=1;
#10 $stop;
end
endmodule
2 VCS仿真
vcs +v2k tb_fulladd.v fulladd.v -debug_all
./simv -gui &
10003为进程号。
3 查看波形和电路
仿真电路图
全加器内部电路图
选中需要观察的信号,右键 add To waves 然后 New Wave view
点击箭头所指的地方完成仿真。
仿真波形如下所示: