module DIV2N (clkDiv, divider, inClk);
   output     clkDiv;
   input[2:0] divider;
   input      inClk;

   reg        clkDiv;

   function [8:0] exp2;
     input [2:0] power;

     reg [2:0] index;

     begin
       exp2 = 1;
       for(index = 1; index < power; index = index+1)
         exp2 = exp2 * 2;
     end
   endfunction

   always @(inClk) begin
      if (inClk === 1'bx )  clkDiv = 1'bx;
      if (clkDiv === 1'bx) @(posedge inClk) clkDiv = inClk;
      if (divider > 0)
        begin
`ifdef DIV_DEBUG
              $display ("%t: inClk edge\n", $time);
`endif
          if (inClk == 1'b0)
            begin
`ifdef DIV_DEBUG
              $display ("%0t: inClk is 0.  Setting up repeat loop: %d\n",
                        $time, exp2(divider));
              $display ("    clkDiv is now: %b\n", clkDiv);
`endif
              clkDiv = repeat (exp2(divider)) @(posedge inClk) ~clkDiv;
              #0 ;
            end
        end
      else
        clkDiv = inClk;
   end

endmodule

