Multiplier.Lola.txt 493 B

123456789101112131415161718
  1. MODULE Multiplier ( (*NW 13.9.2014*)
  2. IN clk, run, u: BIT;
  3. OUT stall: BIT;
  4. IN x, y: WORD; (*32 bit*)
  5. OUT z: [64] BIT);
  6. REG (clk) S: [6] BIT; (*state*)
  7. P: [64] BIT; (*product*)
  8. VAR w0: WORD;
  9. w1: [33] BIT;
  10. BEGIN stall := run & (S # 33);
  11. w0 := P.0 -> y : 0;
  12. w1 := (S =32) & u -> {P.63, P[63:32]} - {w0.31, w0} : {P.63, P[63:32]} + {w0.31, w0};
  13. S := run -> S+1 : 0;
  14. P := (S = 0) -> {0'32, x} : {w1[32:0], P[31:1]};
  15. z := P
  16. END Multiplier.