在Verilog中设计一个四位加法器/减法器,并将其显示在七段显示器上。
然而,当我需要一个负数的减法时,我的大部分代码都在起作用,它会产生错误的结果。
例如,5-7应该会导致2,但我会收到E。
下面是我的代码:
module fullAdder (a0,a1,carry_in,s,carry_out);
input a0,a1,carry_in;
output s, carry_out;
assign s = (a0 ^ a1) ^ carry_in;
assign carry_out = (a0 & a1 & carry_in)|(a0 & a1 & ~carry_in)|(a0 & ~a1 & carry_in)|(~a0 & a1 & carry_in);
endmodule
module Lab3(a0,a1,s,cout);
input s;
input [3:0] a0, a1;
output [3:0] cout;
wire c,d,e,f;
wire input1, input2, input3, input4;
xor(input1, s, a1[0]);
xor(input2, s, a1[1]);
xor(input3, s, a1[2]);
xor(input4, s, a1[3]);
//a0,a1,carry_in,s,carry_out
fullAdder fa0(a0[0],input1,s,cout[0],c);
fullAdder fa1(a0[1],input2,c,cout[1],d);
fullAdder fa2(a0[2],input3,d,cout[2],e);
fullAdder fa3(a0[3],input4,e,cout[3],f);
endmodule
发布于 2020-10-31 13:02:01
E是正确的结果,因为它是-2在4位2的补码。
从负二的补值到正的技巧,如果你还没有涵盖它,那就是倒置并加一个。
中的1110
https://stackoverflow.com/questions/64618720
复制相似问题