Overflow underflow , 4- , 5 .
+ ve
3 : [0]0011
+ 3 : [0]0011
= 6 : [0]0110
-3 : [1]1101
+ -3 : [1]1101
= -6 : [1]1010
: +8, 4 .
+7 : [0]0111
+1 : [0]0001
+8 : [0]1000
underflow: -9, 4 .
-8 : [1]1000
+ -1 : [1]1111
-9 : [1]0111
, 1
localparam WIDTH = 4;
localparam MSB = WIDTH-1;
logic [WIDTH-1:0] a;
logic [WIDTH-1:0] b;
logic [WIDTH-1:0] result;
logic extra;
logic overflow;
logic underflow;
always @* begin
{extra, result} = {a[MSB], a} + {b[MSB], b} ;
overflow = ({extra, result[MSB]} == 2’b01 );
underflow = ({extra, result[MSB]} == 2’b10 );
end
, , 32- . 16.
, , .
NB: , 1 , . / .
, 16 * 16 32- . , 33 . , , . ALU.
, 32- max/min 16- , 16- .