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

Subversion Repositories fft2_size

[/] [fft2_size/] [fft_int_size/] [bitrev_cnt.sv] - Blame information for rev 7

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 7 Papayaved
`ifndef _bitrev_cnt_
2
`define _bitrev_cnt_
3
 
4
module bitrev_cnt #(
5
        parameter WIDTH = 7,
6
        parameter WIDTH_WIDTH = (2**$clog2(WIDTH) > WIDTH - 1) ? $clog2(WIDTH) : $clog2(WIDTH) + 1
7
)(
8
        input clk, aclr,
9
        input clk_ena, sclr,
10
        input [WIDTH_WIDTH-1:0] width,
11
        input [WIDTH-1:0] cnt_max,
12
        output reg [WIDTH-1:0] cnt, cnt_rev
13
);
14
        wire [WIDTH-1:0] _cnt_rev;
15
 
16
        always_ff @(posedge clk, posedge aclr)
17
                if (aclr)
18
                        cnt <= '0;
19
                else if (clk_ena)
20
                        if (sclr || cnt == cnt_max)
21
                                cnt <= '0;
22
                        else
23
                                cnt <= cnt + 1'b1;
24
 
25
        bitrev #(.WIDTH(WIDTH)) bitrev_inst(.x(cnt + 1'b1), .y(_cnt_rev));
26
 
27
        always_ff @(posedge clk, posedge aclr)
28
                if (aclr)
29
                        cnt_rev <= '0;
30
                else if (clk_ena)
31
                        if (sclr || cnt == cnt_max)
32
                                cnt_rev <= '0;
33
                        else
34
                                cnt_rev <= _cnt_rev >> (WIDTH - width);
35
 
36
endmodule :bitrev_cnt
37
 
38
// Fix width bit reversial. It dont need any logic
39
module bitrev #(parameter WIDTH)(input [WIDTH-1:0] x, output [WIDTH-1:0] y);
40
        genvar i;
41
        generate for (i = 0; i < WIDTH; i++)
42
                begin :gen
43
                        assign y[WIDTH-1-i] = x[i];
44
                end
45
        endgenerate
46
endmodule :bitrev
47
 
48
`endif

powered by: WebSVN 2.1.0

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