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

Subversion Repositories alternascope

[/] [alternascope/] [branches/] [Alpha/] [d_TopLevel.v] - Blame information for rev 17

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

Line No. Rev Author Line
1 5 smpickett
//==================================================================//
2
// File:    d_TopLevel.v                                            //
3 11 smpickett
// Version: 0.0.0.3                                                 //
4 5 smpickett
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
5
// Copyright (C) Stephen Pickett                                    //
6
//   Jun 08, 2005                                                   //
7
//                                                                  //
8
// This program is free software; you can redistribute it and/or    //
9
// modify it under the terms of the GNU General Public License      //
10
// as published by the Free Software Foundation; either version 2   //
11
// of the License, or (at your option) any later version.           //
12
//                                                                  //
13
// This program is distributed in the hope that it will be useful,  //
14
// but WITHOUT ANY WARRANTY; without even the implied warranty of   //
15
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    //
16
// GNU General Public License for more details.                     //
17
//                                                                  //
18
// If you have not received a copy of the GNU General Public License//
19
// along with this program; write to:                               //
20
//     Free Software Foundation, Inc.,                              //
21
//     51 Franklin Street, Fifth Floor,                             //
22
//     Boston, MA  02110-1301, USA.                                 //
23
//                                                                  //
24
//------------------------------------------------------------------//
25
// Revisions:                                                       //
26
// Ver 0.0.0.1     Apr   , 2005   Under Development                 //
27
// Ver 0.0.0.2     Jun 08, 2005    Updates                          //
28 11 smpickett
// Ver 0.0.0.3     Jun 19, 2005    Added Character Display          //
29 5 smpickett
//                                                                  //
30
//==================================================================//
31 2 smpickett
 
32
module TopLevel(
33
    CLK_50MHZ_IN, MASTER_RST,
34
    H_SYNC, V_SYNC, VGA_OUTPUT,
35
    PS2C, PS2D,
36
//    TIME_BASE,
37
    ADC_DATA, ADC_CLK,
38
    VGA_RAM_ADDR, VGA_RAM_DATA,
39
    VGA_RAM_OE, VGA_RAM_WE, VGA_RAM_CS,
40
 
41
    SEG_OUT, SEG_SEL, leds, SHOW_LEVELS_BUTTON
42
    );
43
 
44
//==================================================================//
45
// DEFINITIONS                                                      //
46
//==================================================================//
47
 
48
//==================================================================//
49
// VARIABLE DEFINITIONS                                             //
50
//==================================================================//
51
 
52
//----------------------//
53
// INPUTS / OUTPUTS     //
54
//----------------------//
55
input CLK_50MHZ_IN, MASTER_RST;
56
output H_SYNC, V_SYNC;
57
output[2:0] VGA_OUTPUT;
58
//input[5:0] TIME_BASE;
59
inout PS2C, PS2D;
60
input[7:0] ADC_DATA;
61
output ADC_CLK;
62
output[17:0] VGA_RAM_ADDR;
63
inout[15:0] VGA_RAM_DATA;
64
output VGA_RAM_OE, VGA_RAM_WE, VGA_RAM_CS;
65
 
66
output[7:0] leds;
67
output[6:0] SEG_OUT;
68
output[3:0] SEG_SEL;
69
input SHOW_LEVELS_BUTTON;
70
wire SHOW_LEVELS_BUTTON;
71
 
72
 
73
//----------------------//
74
// WIRES / NODES        //
75
//----------------------//
76
wire      CLK_50MHZ_IN, MASTER_RST;
77
wire      H_SYNC, V_SYNC;
78
wire[2:0] VGA_OUTPUT;
79
wire[5:0] TIME_BASE;
80
wire      PS2C, PS2D;
81
wire[7:0] ADC_DATA;
82
wire      ADC_CLK;
83
wire[17:0] VGA_RAM_ADDR;
84
wire[15:0] VGA_RAM_DATA;
85
wire       VGA_RAM_OE, VGA_RAM_WE, VGA_RAM_CS;
86
 
87
 
88
//----------------------//
89
// VARIABLES            //
90
//----------------------//
91
assign TIME_BASE = 6'b0;
92
 
93
 
94
//==================================================================//
95
// TEMP                                                             //
96
//==================================================================//
97
wire[17:0] VGA_RAM_ADDRESS_w;
98
wire[15:0] VGA_RAM_DATA_w;
99 5 smpickett
wire L_BUTTON, R_BUTTON, M_BUTTON;
100 2 smpickett
 
101
wire VGA_RAM_ACCESS_OK;
102
wire CLK_50MHZ, CLK_64MHZ, CLK180_64MHZ;
103 11 smpickett
reg CLK_VGA;
104 2 smpickett
wire[6:0] SEG_OUT;
105
wire[3:0] SEG_SEL;
106
 
107 11 smpickett
wire[7:0] data_charRamRead;
108
reg[7:0] data_charRamRead_buf;
109
wire[7:0] mask_charMap;
110
reg[7:0] mask_charMap_buf;
111
 
112 17 smpickett
wire[1:0] sm_trig;
113
 
114 11 smpickett
always @ (posedge CLK_50MHZ) begin
115
    if(R_BUTTON) begin
116
        data_charRamRead_buf <= data_charRamRead_buf;
117
        mask_charMap_buf <= mask_charMap_buf;
118
    end else begin
119
        data_charRamRead_buf <= data_charRamRead;
120
        mask_charMap_buf <= mask_charMap;
121
    end
122
end
123
 
124 2 smpickett
sub_SegDriver segs(
125
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
126 11 smpickett
    .DATA_IN(data_charRamRead_buf),
127 2 smpickett
    .SEG_OUT(SEG_OUT), .SEG_SEL(SEG_SEL)
128
    );
129
 
130
wire[7:0] leds;
131 17 smpickett
assign leds[1:0] = sm_trig;
132
assign leds[7:2] = 6'b0;
133 11 smpickett
 
134 17 smpickett
/*- - - - - - - - - - - - - */
135
/* Fake ADC data            */
136
/*- - - - - - - - - - - - - */
137
reg[7:0] fake_adcData;
138
always @ (posedge CLK_VGA or posedge MASTER_RST) begin
139
    if(MASTER_RST)
140
        fake_adcData <= 8'd0;
141
    else
142
        fake_adcData <= fake_adcData+1;
143
end
144
 
145
 
146 2 smpickett
//==================================================================//
147
// SUBROUTINES                                                      //
148
//==================================================================//
149 11 smpickett
//d_DCM_VGA clock_gen_VGA (
150
//    .CLKIN_IN(CLK_50MHZ_IN), 
151
//    .RST_IN(MASTER_RST), 
152
//    .CLKFX_OUT(CLK_VGA), 
153
//    .CLKIN_IBUFG_OUT(CLK_50MHZ_B), 
154
//    .LOCKED_OUT(CLK_VGA_LOCKED)
155
//    );
156
 
157
always @ (posedge CLK_50MHZ or posedge MASTER_RST)
158
    if(MASTER_RST) CLK_VGA <= 1'b0;
159
    else           CLK_VGA <= ~CLK_VGA;
160
 
161
 
162 2 smpickett
wire CLK_64MHZ_LOCKED;
163
d_DCM clock_generator(
164
    .CLKIN_IN(CLK_50MHZ_IN),
165
    .RST_IN(MASTER_RST),
166
    .CLKIN_IBUFG_OUT(CLK_50MHZ),
167
    .CLK_64MHZ(CLK_64MHZ),
168
    .CLK180_64MHZ(CLK180_64MHZ),
169
    .LOCKED_OUT(CLK_64MHZ_LOCKED)
170
    );
171
 
172
wire[11:0] XCOORD, YCOORD;
173 5 smpickett
wire[9:0] TRIGGER_LEVEL;
174 2 smpickett
Driver_mouse driver_MOUSE(
175
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
176
    .PS2C(PS2C), .PS2D(PS2D),
177
    .XCOORD(XCOORD), .YCOORD(YCOORD),
178
    .L_BUTTON(L_BUTTON), .M_BUTTON(M_BUTTON), .R_BUTTON(R_BUTTON)
179
    );
180
 
181
Driver_MouseInput Driver_MouseInput_inst(
182
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
183 5 smpickett
    .XCOORD(XCOORD[9:0]), .YCOORD(YCOORD[9:0]),
184 2 smpickett
    .L_BUTTON(L_BUTTON), .M_BUTTON(M_BUTTON), .R_BUTTON(R_BUTTON),
185 5 smpickett
    .TRIGGER_LEVEL(TRIGGER_LEVEL)
186 2 smpickett
    );
187
 
188
 
189
 
190
wire[7:0] ADC_RAM_DATA;
191
wire[10:0] ADC_RAM_ADDR;
192
wire ADC_RAM_CLK;
193
wire[10:0] TRIG_ADDR;
194
wire VGA_WRITE_DONE;
195
ADCDataBuffer ram_ADC_databuffer(
196
    .CLK_64MHZ(CLK_64MHZ), .MASTER_RST(MASTER_RST),
197
    .CLK180_64MHZ(CLK180_64MHZ),
198
    .TIME_BASE(TIME_BASE),
199
    .RAM_ADDR(ADC_RAM_ADDR), .RAM_DATA(ADC_RAM_DATA), .RAM_CLK(ADC_RAM_CLK),
200 17 smpickett
//    .ADC_DATA(ADC_DATA), .ADC_CLK(ADC_CLK),
201
    .ADC_DATA(fake_adcData), .ADC_CLK(ADC_CLK),
202 2 smpickett
    .TRIG_ADDR(TRIG_ADDR), .VGA_WRITE_DONE(VGA_WRITE_DONE),
203 17 smpickett
    .TRIGGER_LEVEL(TRIGGER_LEVEL[8:0]),
204
    .sm_trig(sm_trig)
205 2 smpickett
    );
206
 
207
 
208
 
209 11 smpickett
//------------------------------------------------------------------//
210
//   VGA                                                            //
211
//------------------------------------------------------------------//
212
wire[9:0] HCNT, VCNT;
213
wire[2:0] RGB_CHAR;
214
 
215
 
216
CharacterDisplay charTest(
217
    .MASTER_CLK(CLK_50MHZ), .MASTER_RST(MASTER_RST),
218
    .CLK_VGA(CLK_VGA), .HCNT(HCNT), .VCNT(VCNT),
219 17 smpickett
    .RGB_OUT(RGB_CHAR)
220 11 smpickett
    );
221
 
222
 
223 2 smpickett
//wire[17:0] VGA_RAM_ADDRESS_w;
224
//wire[15:0] VGA_RAM_DATA_w;
225
wire VGA_RAM_OE_w, VGA_RAM_WE_w, VGA_RAM_CS_w;
226
wire[17:0] VGA_RAM_ADDRESS_r;
227
wire VGA_RAM_OE_r, VGA_RAM_WE_r, VGA_RAM_CS_r;
228
//wire VGA_RAM_ACCESS_OK;
229
 
230
assign VGA_RAM_ADDR = (VGA_RAM_ACCESS_OK) ? VGA_RAM_ADDRESS_w : VGA_RAM_ADDRESS_r;
231
assign VGA_RAM_DATA = (VGA_RAM_ACCESS_OK) ? VGA_RAM_DATA_w : 16'bZ;
232
assign VGA_RAM_OE = (VGA_RAM_ACCESS_OK) ? VGA_RAM_OE_w : VGA_RAM_OE_r;
233
assign VGA_RAM_WE = (VGA_RAM_ACCESS_OK) ? VGA_RAM_WE_w : VGA_RAM_WE_r;
234
assign VGA_RAM_CS = (VGA_RAM_ACCESS_OK) ? VGA_RAM_CS_w : VGA_RAM_CS_r;
235
 
236
VGADataBuffer ram_VGA_ramwrite(
237
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
238
    .VGA_RAM_DATA(VGA_RAM_DATA_w), .VGA_RAM_ADDR(VGA_RAM_ADDRESS_w),
239
    .VGA_RAM_OE(VGA_RAM_OE_w), .VGA_RAM_WE(VGA_RAM_WE_w), .VGA_RAM_CS(VGA_RAM_CS_w),
240
    .VGA_RAM_ACCESS_OK(VGA_RAM_ACCESS_OK),
241
    .ADC_RAM_DATA(ADC_RAM_DATA), .ADC_RAM_ADDR(ADC_RAM_ADDR), .ADC_RAM_CLK(ADC_RAM_CLK),
242
    .TIME_BASE(TIME_BASE),
243
    .TRIG_ADDR(TRIG_ADDR), .VGA_WRITE_DONE(VGA_WRITE_DONE)
244
    );
245
 
246
Driver_VGA driver_VGA(
247
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
248 11 smpickett
    .CLK_VGA(CLK_VGA),
249 2 smpickett
    .H_SYNC(H_SYNC), .V_SYNC(V_SYNC), .VGA_OUTPUT(VGA_OUTPUT),
250
    .XCOORD(XCOORD), .YCOORD(YCOORD),
251
    .VGA_RAM_DATA(VGA_RAM_DATA), .VGA_RAM_ADDR(VGA_RAM_ADDRESS_r),
252
    .VGA_RAM_OE(VGA_RAM_OE_r), .VGA_RAM_WE(VGA_RAM_WE_r), .VGA_RAM_CS(VGA_RAM_CS_r),
253
    .VGA_RAM_ACCESS_OK(VGA_RAM_ACCESS_OK),
254 5 smpickett
    .TRIGGER_LEVEL(TRIGGER_LEVEL[8:0]),
255 11 smpickett
    .SHOW_LEVELS(SHOW_LEVELS_BUTTON),
256
    .HCNT(HCNT), .VCNT(VCNT),
257
    .RGB_CHAR(RGB_CHAR)
258 2 smpickett
    );
259
 
260
 
261
 
262
 
263
 
264
 
265
//==================================================================//
266
// FUNCTIONAL DEFINITIONS                                           //
267
//==================================================================//
268
 
269
endmodule
270
 

powered by: WebSVN 2.1.0

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