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

Subversion Repositories gppd

[/] [gppd/] [trunk/] [fir.h] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 ahmed.shah
/*
2
 * This is a behavioral model for direct-form FIR digital filters.
3
 * The template parameters are:
4
 * T:           defines the prefered data type for the FIR filter
5
 * order:       defines the filter length
6
 * The constractor parameters are:
7
 * name:        any given name to the module
8
 * h:           filter coefficients array
9
 */
10
 
11
template<class T, int order>
12
SC_MODULE(fir)
13
{
14
        /// Design entity
15
        sc_in<bool> CLR;                        // Asynchronous active high reset
16
        sc_in<bool> CLK;                        // Rising edge clock
17
        sc_in<T>        firIN;                  // Comb stage input
18
        sc_out<T>       firOUT;                 // Comb stage output
19
 
20
        /// Internal signals
21
        sc_signal<T> delay[order];      // Internal signal used for delay
22
 
23
        /// Constructor
24
        SC_HAS_PROCESS(fir);
25
 
26
        fir(sc_module_name name, T* _h) :
27
        sc_module(name),
28
        h(_h)
29
        {
30
                SC_METHOD(algorithm);
31
                        sensitive << CLR << CLK.pos();
32
                        firOUT.initialize(0);
33
 
34
        }
35
 
36
        /// Concurrent processes
37
        /*
38
         * This process emulates the direct-form FIR filter algorithm.
39
         */
40
        void algorithm()
41
        {
42
                delay[0].write(firIN.read());
43
 
44
                T add = h[0] * firIN.read();
45
 
46
                for (unsigned int i = 1; i < order; i++)
47
                {
48
                        delay[i].write(delay[i-1].read());
49
                }
50
 
51
                for (unsigned int i = 1; i < order; i++)
52
                {
53
                        add = add + h[i] * delay[i-1];
54
                }
55
 
56
                firOUT.write(add);
57
        }
58
 
59
        /// Deconstructor
60
        ~fir()
61
        {
62
        }
63
 
64
        /// Constructor parent variables
65
        T* h;
66
 
67
};

powered by: WebSVN 2.1.0

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