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

Subversion Repositories cic

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ahmed.shah
#define M 2
2
 
3
SC_MODULE(downsample)
4
{
5
        sc_in<bool>     CLR;
6
        sc_in<bool>     CLK;
7
        sc_in<double>   samplesIN;
8
        sc_out<double>  sampleOUT;
9
        sc_out<bool>    SCLK;
10
 
11
        sc_signal<double> reg[M];
12
 
13
        int count, scount;
14
 
15
        SC_CTOR(downsample)
16
        {
17
                SC_METHOD(lifo);
18
                        sensitive << CLK.pos();
19
 
20
                SC_METHOD(output);
21
                        sensitive << SCLK.pos();
22
 
23
                SC_METHOD(slowclock);
24
                        sensitive << CLK.neg();
25
        }
26
 
27
        void lifo()
28
        {
29
                if (CLR.read() == true)
30
                {
31
                        count = 0;
32
                }
33
                else
34
                {
35
                        if (CLK.posedge())
36
                        {
37
                                for (int i = 0; i < M; i++)
38
                                {
39
                                        if (i == 0)
40
                                        {
41
                                                reg[i].write( samplesIN.read() );
42
                                        }
43
                                        else
44
                                        {
45
                                                reg[i].write( reg[i-1] );
46
 
47
                                        }
48
                                }
49
                        }
50
                }
51
        }
52
 
53
        void slowclock()
54
        {
55
                if (CLR.read() == true)
56
                {
57
                        scount = 0;
58
                }
59
                else
60
                {
61
                        if (CLK.negedge())
62
                        {
63
                                if (scount < M/2)
64
                                {
65
                                        SCLK.write(1);
66
                                        scount++;
67
                                }
68
                                else if (scount < M-1)
69
                                {
70
                                        SCLK.write(0);
71
                                        scount++;
72
                                }
73
                                else
74
                                {
75
                                        SCLK.write(0);
76
                                        scount = 0;
77
                                }
78
                        }
79
                }
80
        }
81
 
82
        void output()
83
        {
84
                sampleOUT.write(reg[0].read());
85
        }
86
};

powered by: WebSVN 2.1.0

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