我在verilog中实现了一组完全加法器,但是当涉及到减法时,我从未得到任何预期的结果。
SW [9]:被忽略,SW [8]:随身输入,SW [7:4]:前4位输入,SW [3:0]:后4位输入,LEDR [3:0] ]:输出,LEDR [4]:最终结转
例如,在我的情况下,将进位值(SW [8])设置为1并在0101和1101之间进行减法运算,我应该得到1000,进位值为0,但实际上是0011,进位值为0。携带1。
module adder (SW, LEDR);
input [9:0] SW;
output [4:0] LEDR;
wire c1, c2, c3;
FullAdder adder_1(
.a(SW[4]),
.b(SW[0]),
.s(LEDR[0]),
.cin(SW[8]),
.cout(c1)
);
FullAdder adder_2(
.a(SW[5]),
.b(SW[1]),
.s(LEDR[1]),
.cin(c1),
.cout(c2)
);
FullAdder adder_3(
.a(SW[6]),
.b(SW[2]),
.s(LEDR[2]),
.cin(c2),
.cout(c3)
);
FullAdder adder_4(
.a(SW[7]),
.b(SW[3]),
.s(LEDR[3]),
.cin(c3),
.cout(LEDR[4])
);
endmodule
module FullAdder (a, b, s, cin, cout);
input a, b, cin;
output s, cout;
assign s = a ^ b ^ cin;
assign cout = a & b | (a ^ b) & cin;
endmodule