OpenCores
URL https://opencores.org/ocsvn/freq_div/freq_div/trunk

Subversion Repositories freq_div

[/] [freq_div/] [trunk/] [rtl/] [even.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 joecrop
 
2
`include "defines.v"
3
 
4 4 joecrop
module even(clk, out, N, reset, not_zero, enable);
5 2 joecrop
 
6 4 joecrop
        input clk;                              // fast input clock
7
        output out;                             // slower divided clock
8
        input [`SIZE-1:0] N;     // divide by factor 'N'
9
        input reset;                    // asynchronous reset
10
        input not_zero;                 // if !not_zero divide by 1
11
        input enable;                   // enable the even divider
12 2 joecrop
 
13
        reg [`SIZE-1:0] counter;
14
        reg out_counter;
15
        wire [`SIZE-1:0] div_2;
16
 
17
 
18 4 joecrop
        // if N=0 just output the clock, otherwise, divide it.
19 2 joecrop
        assign out = (clk & !not_zero) | (out_counter & not_zero);
20 4 joecrop
        assign div_2 = {1'b0, N[`SIZE-1:1]};
21 2 joecrop
 
22 4 joecrop
        // simple flip-flop even divider
23 2 joecrop
        always @(posedge reset or posedge clk)
24
        begin
25 4 joecrop
                if(reset)                                               // asynch. reset
26 2 joecrop
                begin
27
                        counter <= 1;
28
                        out_counter <= 1;
29
                end
30 4 joecrop
                else if(enable)                                 // only use switching power if enabled
31 2 joecrop
                begin
32 4 joecrop
                        if(counter == 1)                        // divide after counter has reached bottom
33
                        begin                                           // of interval 'N' which will be value '1'
34 2 joecrop
                                counter <= div_2;
35
                                out_counter <= ~out_counter;
36
                        end
37
                        else
38 4 joecrop
                        begin                                           // decrement the counter and wait
39
                                counter <= counter-1;   // to start next trasition.
40 2 joecrop
                        end
41
                end
42
        end
43
 
44
endmodule //even

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.