本帖最后由 fengyiyong 于 2012-12-7 11:03 编辑
编了一个四位全加器、但是仿真结果不对,请大神们给看看指指错。
测试信号:/***********************四位全加器*******************/
`include "adder.v"
module adder_tb();
reg[3:0]addend,adder;//被加数和加数
initial
begin
addend=4'b0001;//被加数为1
adder=4'b0010;//加数为2
end
adder m(.addend(addend),.adder(adder));//调用
endmodule
adder:
module adder(addend,adder,sum);
input[3:0] addend,adder;
output[4:0] sum;//和
wire a1,a2,a3,a4,b1,b2,b3,b4,c0,c1,c2,c3,c4,d1,d2,d3,d4;//被加数和加数的各个位、各个全加器的进位、各个全加器的和
assign c0=1'b0;
assign a1=addend[0];
assign a2=addend[1];
assign a3=addend[2];
assign a4=addend[3];
assign b1=adder[0];
assign b2=adder[1];
assign b3=adder[2];
assign b4=adder[3];
assign d1=((~a1)&(~b1)&c0)|((~a1)&b1&(~c0))|(a1&(~b1)&(~c0))|(a1&b1&c0);
assign d2=((~a2)&(~b2)&c1)|((~a2)&b2&(~c1))|(a2&(~b2)&(~c1))|(a2&b2&c1);
assign d3=((~a3)&(~b3)&c2)|((~a3)&b3&(~c2))|(a3&(~b3)&(~c2))|(a3&b3&c2);
assign d4=((~a4)&(~b4)&c3)|((~a4)&b4&(~c3))|(a4&(~b4)&(~c3))|(a4&b4&c3);
assign c1=(a1&b1)|(a1&(~b1)&c0)|((~a1)&b1&c0);
assign c2=(a2&b2)|(a2&(~b2)&c1)|((~a2)&b2&c1);
assign c3=(a3&b3)|(a3&(~b3)&c2)|((~a3)&b3&c2);
assign c4=(a4&b4)|(a4&(~b4)&c3)|((~a4)&b4&c3);
assign sum={c4,d4,d3,d2,d1};
endmodule
|