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

Subversion Repositories alternascope

[/] [alternascope/] [tags/] [rels3/] [AdcDriver/] [d_Driver_ADC.v] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 smpickett
//==================================================================
2
// File:    d_Driver_ADC.v
3
// Version: 0.01
4
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
5
// Copyright Stephen Pickett
6
//   April 28, 2005
7
//------------------------------------------------------------------
8
// Revisions:
9
// Ver 0.01     Apr 28, 2005    Initial Release
10
//
11
//==================================================================
12
 
13
module Driver_ADC(
14
    CLK_64MHZ, MASTER_RST,
15
    TIME_BASE,
16
    ADC_CLK, ADC_DATA,
17
    DATA_OUT
18
    );
19
 
20
//==================================================================//
21
// DEFINITIONS                                                      //
22
//==================================================================//
23
parameter US1       = 5'd0;
24
parameter US2       = 5'd1;
25
parameter US4       = 5'd2;
26
parameter US8       = 5'd3;
27
parameter US16      = 5'd4;
28
parameter US32      = 5'd5;
29
parameter US64      = 5'd6;
30
parameter US128     = 5'd7;
31
parameter US512     = 5'd8;
32
parameter US1024    = 5'd9;
33
parameter US2048    = 5'd10;
34
parameter US4096    = 5'd11;
35
parameter US8192    = 5'd12;
36
parameter US16384   = 5'd13;
37
parameter US32768   = 5'd14;
38
parameter US65536   = 5'd15;
39
parameter US131072  = 5'd16;
40
parameter US262144  = 5'd17;
41
parameter US524288  = 5'd18;
42
parameter US1048576 = 5'd19;
43
parameter US2097152 = 5'd20;
44
parameter US4194304 = 5'd21;
45
parameter US8388608 = 5'd22;
46
 
47
 
48
//==================================================================//
49
// VARIABLE DEFINITIONS                                             //
50
//==================================================================//
51
 
52
//----------------------//
53
// INPUTS / OUTPUTS     //
54
//----------------------//
55
input       CLK_64MHZ;          // Global System Clock
56
input       MASTER_RST;         // Global Asyncronous Reset
57
input[5:0]  TIME_BASE;          // The selected V/Div
58
input[7:0]  ADC_DATA;           // Data recieved from ADC
59
output      ADC_CLK;            // Clock out to the ADC
60
output[7:0] DATA_OUT;           // Data output (essentially buffered from ADC by one clk)
61
 
62
//----------------------//
63
// WIRES / NODES        //
64
//----------------------//
65
wire CLK_64MHZ, MASTER_RST;
66
wire[5:0] TIME_BASE;
67
wire[7:0] ADC_DATA;
68
reg  ADC_CLK;
69
wire [7:0] DATA_OUT;
70
 
71
//----------------------//
72
// VARIABLES            //
73
//----------------------//
74
 
75
 
76
 
77
 
78
//==================================================================//
79
// FUNCTIONAL DEFINITIONS                                           //
80
//==================================================================//
81
 
82
 
83
 
84
//------------------------------------------------------------------//
85
// CLOCK GENERATION AND SELECTION                                   //
86
//------------------------------------------------------------------//
87
reg[15:0] Counter_CLK;
88
wire CLK_32MHZ, CLK_16MHZ, CLK_8MHZ, CLK_4MHZ, CLK_2MHZ, CLK_1MHZ, CLK_500KHZ, CLK_250KHZ, CLK_125KHZ,
89
     CLK_62KHZ, CLK_31KHZ, CLK_16KHZ, CLK_8KHZ, CLK_4KHZ, CLK_2KHZ, CLK_1KHZ;
90
 
91
always @ (posedge CLK_64MHZ or posedge MASTER_RST) begin
92
    if(MASTER_RST == 1'b1) begin
93
        Counter_CLK <= 16'b0;
94
    end else begin
95
        Counter_CLK <= Counter_CLK + 1;
96
    end
97
end
98
 
99
assign CLK_32MHZ    = Counter_CLK[0];
100
assign CLK_16MHZ    = Counter_CLK[1];
101
assign CLK_8MHZ     = Counter_CLK[2];
102
assign CLK_4MHZ     = Counter_CLK[3];
103
assign CLK_2MHZ     = Counter_CLK[4];
104
assign CLK_1MHZ     = Counter_CLK[5];
105
assign CLK_500KHZ   = Counter_CLK[6];
106
assign CLK_250KHZ   = Counter_CLK[7];
107
assign CLK_125KHZ   = Counter_CLK[8];
108
assign CLK_62KHZ    = Counter_CLK[9];
109
assign CLK_31KHZ    = Counter_CLK[10];
110
assign CLK_16KHZ    = Counter_CLK[11];
111
assign CLK_8KHZ     = Counter_CLK[12];
112
assign CLK_4KHZ     = Counter_CLK[13];
113
assign CLK_2KHZ     = Counter_CLK[14];
114
assign CLK_1KHZ     = Counter_CLK[15];
115
//assign CLK_500HZ    = Counter_CLK[16];
116
 
117
 
118
always @ (TIME_BASE or MASTER_RST or CLK_64MHZ or CLK_32MHZ or CLK_16MHZ or
119
            CLK_8MHZ or CLK_4MHZ or CLK_2MHZ or CLK_1MHZ or CLK_500KHZ or CLK_250KHZ or
120
            CLK_125KHZ or CLK_62KHZ or CLK_31KHZ or CLK_16KHZ or CLK_8KHZ or CLK_4KHZ or
121
            CLK_2KHZ or CLK_1KHZ) begin
122
    if(MASTER_RST == 1'b1) begin
123
        ADC_CLK = 1'b0;
124
    end else if(TIME_BASE == 6'd0) begin    // 1us/Div, 1samp/pxl
125
        ADC_CLK = CLK_64MHZ;
126
    end else if(TIME_BASE == 6'd1) begin    // 2us/Div, 2samp/pxl
127
        ADC_CLK = CLK_64MHZ;
128
    end else if(TIME_BASE == 6'd2) begin    // 4us/Div, 2samp/pxl
129
        ADC_CLK = CLK_32MHZ;
130
    end else if(TIME_BASE == 6'd3) begin    // 8us/Div, 2samp/pxl
131
        ADC_CLK = CLK_16MHZ;
132
    end else if(TIME_BASE == 6'd4) begin    // 16us/Div, 2samp/pxl
133
        ADC_CLK = CLK_8MHZ;
134
    end else if(TIME_BASE == 6'd5) begin    // 32us/Div, 2samp/pxl
135
        ADC_CLK = CLK_4MHZ;
136
    end else if(TIME_BASE == 6'd6) begin    // 64us/Div, 2samp/pxl
137
        ADC_CLK = CLK_2MHZ;
138
    end else if(TIME_BASE == 6'd7) begin    // 128us/Div, 2samp/pxl
139
        ADC_CLK = CLK_1MHZ;
140
    end else if(TIME_BASE == 6'd8) begin    // 256us/Div, 2samp/pxl
141
        ADC_CLK = CLK_500KHZ;
142
    end else if(TIME_BASE == 6'd9) begin    // 512us/Div, 2samp/pxl
143
        ADC_CLK = CLK_250KHZ;
144
    end else if(TIME_BASE == 6'd10) begin   //      ...
145
        ADC_CLK = CLK_125KHZ;
146
    end else if(TIME_BASE == 6'd11) begin
147
        ADC_CLK = CLK_62KHZ;
148
    end else if(TIME_BASE == 6'd12) begin
149
        ADC_CLK = CLK_31KHZ;
150
    end else if(TIME_BASE == 6'd13) begin
151
        ADC_CLK = CLK_16KHZ;
152
    end else if(TIME_BASE == 6'd14) begin
153
        ADC_CLK = CLK_8KHZ;
154
    end else if(TIME_BASE == 6'd15) begin
155
        ADC_CLK = CLK_4KHZ;
156
    end else if(TIME_BASE == 6'd16) begin
157
        ADC_CLK = CLK_2KHZ;
158
    end else if(TIME_BASE == 6'd17) begin
159
        ADC_CLK = CLK_1KHZ;
160
//    end else if(TIME_BASE == 6'd18) begin
161
//        ADC_CLK = CLK_500HZ;
162
/*
163
    end else if(TIME_BASE == 6'd19) begin
164
        ADC_CLK = CLK_US524288;
165
    end else if(TIME_BASE == 6'd20) begin
166
        ADC_CLK = CLK_US1048576;
167
    end else if(TIME_BASE == 6'd21) begin
168
        ADC_CLK = CLK_US2097152;
169
    end else if(TIME_BASE == 6'd22) begin
170
        ADC_CLK = CLK_US4194304;
171
    end else if(TIME_BASE == 6'd23) begin
172
        ADC_CLK = CLK_US8388608;
173
*/
174
    end else begin
175
        ADC_CLK = 1'b0;
176
    end
177
end
178
 
179
//------------------------------------------------------------------//
180
// ADC DATA READING                                                 //
181
//------------------------------------------------------------------//
182
/*
183
always @ (negedge ADC_CLK or posedge MASTER_RST) begin
184
    if(MASTER_RST == 1'b1) begin
185
        DATA_OUT <= 8'b0;
186
    end else begin
187
        DATA_OUT <= ADC_DATA;
188
    end
189
end
190
*/
191
 
192
assign DATA_OUT = ADC_DATA;
193
 
194
endmodule
195
 
196
 
197
 

powered by: WebSVN 2.1.0

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