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

Subversion Repositories fft2_size

[/] [fft2_size/] [fft_int/] [delay_line.sv] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 9 Papayaved
`ifndef _delay_line_
2
`define _delay_line_
3
 
4
module delay_lines_reg #(parameter DELAY = 300, WIDTH = 3)(
5
        input aclr, sclr, clock, clock_ena,
6
        input [WIDTH-1:0] sig_in,
7
        output [WIDTH-1:0] sig_out
8
);
9
 
10
genvar i;
11
generate for (i = 0; i < WIDTH; i++)
12
        begin :line
13
                delay_line_reg #(.DELAY(DELAY)) delay_line_inst(.aclr, .sclr, .clock, .clock_ena, .sig_in(sig_in[i]), .sig_out(sig_out[i]));
14
        end
15
endgenerate
16
 
17
endmodule :delay_lines_reg
18
 
19
module delay_line_reg #(parameter DELAY = 300)(input aclr, sclr, clock, clock_ena, sig_in, output sig_out);
20
 
21
generate
22
        if (DELAY == 0)
23
                assign sig_out = !aclr && !sclr && sig_in;
24
        else if (DELAY == 1)
25
                begin
26
                        reg sig_reg = 1'b0;
27
 
28
                        always_ff @(posedge clock, posedge aclr)
29
                                if (aclr)                               sig_reg <= 1'b0;
30
                                else if (sclr)                  sig_reg <= 1'b0;
31
                                else if (clock_ena)     sig_reg <= sig_in;
32
 
33
                        assign sig_out = sig_reg;
34
                end
35
        else
36
                begin
37
                        reg [DELAY-1:0] sig_reg = '0;
38
 
39
                        always_ff @(posedge clock, posedge aclr)
40
                                if (aclr)                               sig_reg <= '0;
41
                                else if (sclr)                  sig_reg <= '0;
42
                                else if (clock_ena)     sig_reg <= {sig_reg[DELAY-2:0], sig_in};
43
 
44
                        assign sig_out = sig_reg[DELAY-1];
45
                end
46
endgenerate
47
 
48
endmodule :delay_line_reg
49
 
50
`endif

powered by: WebSVN 2.1.0

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