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

Subversion Repositories robust_fir

[/] [robust_fir/] [trunk/] [src/] [base/] [fir_Nserial.v] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 eyalhoc
OUTFILE fir_MAC_NUMserial_TOPO.v
2
 
3
ITER CX COEFF_NUM
4
ITER MX MAC_NUM
5
ITER DX SON_DELAY
6
 
7
//  Built In Parameters:
8
//  
9
//    Filter Order              = ORDER
10
//    Input Precision           = DIN_BITS
11
//    Coefficient Precision     = COEFF_BITS
12
//    Sum of Products Latency   = LATENCY
13
//    Number of serial FIR sons = MAC_NUM
14
//    Number of multiplayers    = MAC_NUM
15
 
16
 
17
module fir_MAC_NUMserial_TOPO (PORTS);
18
 
19
    input clk;
20
    input reset;
21
    input clken;
22
        input  [EXPR(COEFF_BITS-1):0] kCX;
23
        input  [EXPR(DIN_BITS-1):0] data_in;
24
        output [EXPR(DOUT_BITS-1):0] data_out;
25
        output valid;
26
 
27
 
28
        wire [EXPR(DIN_BITS-1):0] data_inMX;
29
    wire [EXPR(SON_DOUT-1):0] data_outMX;
30
        wire validMX;
31
        wire null;
32
 
33
        //delay inputs per son
34
    assign data_in0 = data_in;
35
    CREATE prgen_delayN.v DEFCMD(SWAP CONST(DELAY) SON_DELAY) DEFCMD(DEFINE CLKEN)
36
    prgen_delaySON_DELAY_en #(DIN_BITS) delay_dinMX (clk, reset, clken, data_inMX, data_inEXPR(MX+1));
37
        STOMP LINE
38
 
39
 
40
        //the FIR sons
41
LOOP MX MAC_NUM
42
        CREATE fir_serial.v def_fir_basic.txt DEFCMD(SWAP CONST(ORDER) EXPR(SON_DELAY-1)) DEFCMD(SWAP CONST(COEFF_BITS) COEFF_BITS) DEFCMD(SWAP CONST(DIN_BITS) DIN_BITS)
43
    fir_serial_EXPR(SON_DELAY-1)_INPUT_BITS firMX
44
                                                                (
45
                                                                .clk(clk),
46
                                                                .reset(reset),
47
                                                                .clken(clken),
48
                                                                .kDX(kEXPR((MX*SON_DELAY)+DX)) ,
49
                                                                .data_in(data_inMX),
50
                                                                .data_out(data_outMX),
51
                                                                .valid(validMX)
52
                                                                );
53
 
54
ENDLOOP MX
55
 
56
        //Pipline the output additions  
57
        CREATE bintree_adder.v DEFCMD(SWAP INPUT_NUM MAC_NUM)
58
        bintree_adder_MAC_NUM #(SON_DOUT) bintree_adder
59
                (
60
                .clk(clk),
61
                .reset(reset),
62
                .data_inMX(data_outMX),
63
IF TRUE(ADD_DOUT!=DOUT_BITS) .data_out({null, data_out}),
64
IF TRUE(ADD_DOUT==DOUT_BITS) .data_out(data_out),
65
                .valid_in(valid0),
66
                .valid_out(valid)
67
                );
68
 
69
endmodule
70
 
71
 
72
 
73
 
74
 
75
 
76
 

powered by: WebSVN 2.1.0

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