這是我的代碼:當所述操作碼的第一個比特是0,執行爲什麼COUT僅被佔加入期間和不減法在我的加法器/減法器(Verilog的)
module Adder_8b_df (A, B, opcode, S, Cout);
input [7:0] A, B;
input [3:0] opcode;
output [7:0] S;
output Cout;
wire [8:0] tmp;
assign tmp = (opcode[0] == 0) ? (A + B) : (A + (~B + 8'b1));
assign S = tmp [7:0];
assign Cout = tmp [8];
endmodule
加法,否則通過二進制補碼執行減法。看着波形,兩種操作都能正確執行。然而,只有執行添加時才執行(Cout)。
例如,當試圖從1100_0110中減去0110_0011時。操作應該是1100_0110 + 1001_1101,這會導致溢出。波形仍顯示正確答案:0110_0011。但是Cout低不高。任何想法,爲什麼是這種情況?