Advertisement
Guest User

Untitled

a guest
Oct 27th, 2018
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module multT (
  2.     input signed [31:0]M,
  3.     input signed [31:0]Q,
  4.     input MultiCon,
  5.     input clk,
  6.     input reset,
  7.     output reg signed [31:0]hi,
  8.     output reg signed [31:0]lo
  9. );
  10.  
  11. reg signed [64:0]A;
  12. reg signed [64:0]S;
  13. reg signed [64:0]P;
  14. reg signed [31:0]aux;
  15. integer i;
  16. reg con;
  17.  
  18. initial begin
  19.     i = 32;
  20.     con = 0;
  21. end
  22.  
  23. always @ (posedge clk) begin
  24.     if (reset == 1) begin
  25.         A = 65'd0;
  26.         S = 65'd0;
  27.         P = 65'd0;
  28.         aux = 32'd0;
  29.         i = 32;
  30.         con = 0;
  31.     end
  32.     if (MultiCon == 0) begin
  33.         con = 0;
  34.     end
  35.     if (MultiCon == 1) begin
  36.         if (i > 31 && con == 0) begin
  37.             A = {Q, 33'b0};
  38.             aux = ~Q + 1;
  39.             S = {aux, 33'b0};
  40.             P = {32'b0, M, 1'b0};
  41.             i = 0;
  42.         end
  43.     end
  44.     if (i < 32) begin
  45.         case (P[1:0])
  46.         2'b01: begin
  47.             P = P + A;
  48.         end
  49.         2'b10: begin
  50.             P = P + S;
  51.         end
  52.         endcase
  53.         P = P >>> 1;
  54.         i = i + 1;
  55.         //hi = i;
  56.         if (i == 32) begin
  57.             hi = P[64:33];
  58.             lo = P[32:1];
  59.             con = 1;
  60.         end
  61.     end
  62. end
  63.  
  64. endmodule //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement