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

Subversion Repositories cic

[/] [cic/] [trunk/] [header/] [cicDecimator.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ahmed.shah
#include "integrator.h"
2
#include "comb.h"
3
#include "downsample.h"
4
 
5
#define N 3
6
 
7
SC_MODULE(cicDecimator)
8
{
9
        sc_in<bool>     CLR;
10
        sc_in<bool>     CLK;
11
        sc_in<double>   cicIN;
12
        sc_out<double>  cicOUT;
13
 
14
        integrator      *I[N];
15
        comb            *C[N];
16
        downsample      *D;
17
 
18
        sc_signal<double>       internalI[N];
19
        sc_signal<double>       internalC[N];
20
        sc_signal<bool>         slowclock;
21
        sc_signal<double>       handoff;
22
 
23
        SC_CTOR(cicDecimator)
24
        {
25
                SC_METHOD(output);
26
                        sensitive << internalC[N-1];
27
 
28
                for (unsigned j = 0; j < N; j++)
29
                {
30
                        I[j] = new integrator(sc_gen_unique_name("I"));
31
                        if (j == 0)
32
                        {
33
                                I[j] -> CLR                     (CLR);
34
                                I[j] -> CLK                     (CLK);
35
                                I[j] -> integratorIN    (cicIN);
36
                                I[j] -> integratorOUT   (internalI[j]);
37
                        }
38
                        else
39
                        {
40
                                I[j] -> CLR                     (CLR);
41
                                I[j] -> CLK                     (CLK);
42
                                I[j] -> integratorIN    (internalI[j-1]);
43
                                I[j] -> integratorOUT   (internalI[j]);
44
                        }
45
                }
46
 
47
                D = new downsample("D");
48
                D ->    CLR             (CLR);
49
                D ->    CLK             (CLK);
50
                D ->    samplesIN       (internalI[N-1]);
51
                D ->    sampleOUT       (handoff);
52
                D ->    SCLK            (slowclock);
53
 
54
                for (unsigned i = 0; i < N; i++)
55
                {
56
                        C[i] = new comb(sc_gen_unique_name("C"));
57
                        if (i == 0)
58
                        {
59
                                C[i] -> CLR             (CLR);
60
                                C[i] -> CLK             (slowclock);
61
                                C[i] -> combIN          (handoff);
62
                                C[i] -> combOUT         (internalC[i]);
63
                        }
64
                        else
65
                        {
66
                                C[i] -> CLR             (CLR);
67
                                C[i] -> CLK             (CLK);
68
                                C[i] -> combIN          (internalC[i-1]);
69
                                C[i] -> combOUT         (internalC[i]);
70
                        }
71
                }
72
 
73
                 cicOUT.initialize(0);
74
        }
75
 
76
        void output()
77
        {
78
                cicOUT.write(internalC[N-1]);
79
        }
80
 
81
};

powered by: WebSVN 2.1.0

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