Advertisement
Guest User

Untitled

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