alu bugfix
This commit is contained in:
+1
-1
@@ -9,7 +9,7 @@ package adder16 (
|
|||||||
wire [15:0]c
|
wire [15:0]c
|
||||||
);
|
);
|
||||||
|
|
||||||
lookahead(c, a, b);
|
c = lookahead(c, a, b);
|
||||||
|
|
||||||
adder(sum16[0], carry16[0] = c[0], a16[0], b16[0],);
|
adder(sum16[0], carry16[0] = c[0], a16[0], b16[0],);
|
||||||
adder(sum16[1], carry16[1] = c[1], a16[1], b16[1]);
|
adder(sum16[1], carry16[1] = c[1], a16[1], b16[1]);
|
||||||
|
|||||||
+12
-12
@@ -12,14 +12,14 @@ package alu (
|
|||||||
output [2:0] flag
|
output [2:0] flag
|
||||||
);
|
);
|
||||||
|
|
||||||
assign za = sel[0]; // if zx=1, a=0
|
assign za = sel[0]; // if zx=1, a=0
|
||||||
assign na = sel[1]; // if nx=1, a=!a
|
assign na = sel[1]; // if nx=1, a=!a
|
||||||
assign zb = sel[2]; // if zy=1, b=0
|
assign zb = sel[2]; // if zy=1, b=0
|
||||||
assign nb = sel[3]; // if nx=1, b=!b
|
assign nb = sel[3]; // if nx=1, b=!b
|
||||||
assign f = sel[4]; // if f=0 -> a&b; else -> a+b
|
assign f = sel[4]; // if f=0 -> a&b; else -> a+b
|
||||||
assign no = sel[5]; // if no=1, out=!out
|
assign no = sel[5]; // if no=1, out=!out
|
||||||
|
|
||||||
wire [15:0]zero16 = 0;
|
wire [15:0] zero16 = 15'b0000000000000000;
|
||||||
|
|
||||||
always @(*) begin
|
always @(*) begin
|
||||||
|
|
||||||
@@ -47,12 +47,12 @@ always @(*) begin
|
|||||||
alu_out = tmpOut;
|
alu_out = tmpOut;
|
||||||
end
|
end
|
||||||
|
|
||||||
if (alu_out == 0)
|
if (alu_out < 0)
|
||||||
flag = 0; // zero flag
|
flag = 0; // negative flag
|
||||||
else if (alu_out < 0)
|
else if (alu_out = 0)
|
||||||
flag = 1; // negative flag
|
flag = 1; // zero flag
|
||||||
else if
|
else if
|
||||||
flag = 2 // positive flag
|
flag = 2 // positive flag
|
||||||
end
|
end
|
||||||
|
|
||||||
endpackage
|
endpackage
|
||||||
Reference in New Issue
Block a user