Kaynağa Gözat

synchronized with original

Alexander Shiryaev 8 yıl önce
ebeveyn
işleme
0369f0a1cc
1 değiştirilmiş dosya ile 6 ekleme ve 4 silme
  1. 6 4
      BlackBox/Po/Files/FPAdder.v

+ 6 - 4
BlackBox/Po/Files/FPAdder.v

@@ -1,4 +1,4 @@
-`timescale 1ns / 1ps  // NW 20.9.2015  pipelined
+`timescale 1ns / 1ps  // NW 4.10.2016  pipelined
 // u = 1: FLT; v = 1: FLOOR
 
 module FPAdder(
@@ -9,7 +9,7 @@ module FPAdder(
 
 reg [1:0] State;
 
-wire xs, ys;  // signs
+wire xs, ys, xn, yn;  // signs, null
 wire [7:0] xe, ye;
 wire [24:0] xm, ym;
 
@@ -32,9 +32,11 @@ reg [24:0] t3;
 assign xs = x[31];  // sign x
 assign xe = u ? 8'h96 : x[30:23];  // expo x
 assign xm = {~u|x[23], x[22:0], 1'b0};  //mant x
+assign xn = (x[30:0] == 0);
 assign ys = y[31];  // sign y
 assign ye = y[30:23];  // expo y
 assign ym = {~u&~v, y[22:0], 1'b0};  //mant y
+assign yn = (y[30:0] == 0);
 
 assign dx = xe - ye;
 assign dy = ye - xe;
@@ -122,8 +124,8 @@ assign stall = run & ~(State == 3);
 always @ (posedge(clk)) State <= run ? State + 1 : 0;
 
 assign z = v ? {{7{Sum[26]}}, Sum[25:1]} :  // FLOOR
-    (x[30:0] == 0) ? (~u ? y : 0) :
-    (y[30:0] == 0) ? x :
+    xn ? (u|yn ? 0 : y) :   // FLT or x = y = 0
+    yn ? x :
     ((t3 == 0) | e1[8]) ? 0 : 
 	 {Sum[26], e1[7:0], t3[23:1]};
 endmodule