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

Subversion Repositories alternascope

[/] [alternascope/] [trunk/] [d_TopLevel.v] - Blame information for rev 30

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 21 smpickett
    ADC_DATA, CLK_ADC,
38 2 smpickett
    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 21 smpickett
input[8:0] ADC_DATA;
61
output CLK_ADC;
62 2 smpickett
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 21 smpickett
wire[8:0] ADC_DATA;
82
wire      CLK_ADC;
83 2 smpickett
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 21 smpickett
reg[8:0] fake_adcData;
98
 
99 2 smpickett
wire[17:0] VGA_RAM_ADDRESS_w;
100
wire[15:0] VGA_RAM_DATA_w;
101 5 smpickett
wire L_BUTTON, R_BUTTON, M_BUTTON;
102 2 smpickett
 
103
wire VGA_RAM_ACCESS_OK;
104
wire CLK_50MHZ, CLK_64MHZ, CLK180_64MHZ;
105 11 smpickett
reg CLK_VGA;
106 2 smpickett
wire[6:0] SEG_OUT;
107
wire[3:0] SEG_SEL;
108
 
109 11 smpickett
wire[7:0] data_charRamRead;
110
reg[7:0] data_charRamRead_buf;
111
wire[7:0] mask_charMap;
112
reg[7:0] mask_charMap_buf;
113
 
114 17 smpickett
 
115 11 smpickett
always @ (posedge CLK_50MHZ) begin
116
    if(R_BUTTON) begin
117
        data_charRamRead_buf <= data_charRamRead_buf;
118
        mask_charMap_buf <= mask_charMap_buf;
119
    end else begin
120
        data_charRamRead_buf <= data_charRamRead;
121
        mask_charMap_buf <= mask_charMap;
122
    end
123
end
124
 
125 2 smpickett
sub_SegDriver segs(
126
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
127 21 smpickett
    .DATA_IN(fake_adcData[7:0]),
128 2 smpickett
    .SEG_OUT(SEG_OUT), .SEG_SEL(SEG_SEL)
129
    );
130
 
131
wire[7:0] leds;
132 21 smpickett
assign leds[7:0] = 8'b0;
133 11 smpickett
 
134 17 smpickett
/*- - - - - - - - - - - - - */
135
/* Fake ADC data            */
136
/*- - - - - - - - - - - - - */
137 27 smpickett
always @ (posedge CLK_64MHZ or posedge MASTER_RST) begin
138 17 smpickett
    if(MASTER_RST)
139 21 smpickett
        fake_adcData <= 9'd0;
140 17 smpickett
    else
141
        fake_adcData <= fake_adcData+1;
142
end
143
 
144
 
145 21 smpickett
 
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 27 smpickett
wire[9:0] TRIGGER_LEVEL, HORZ_OFFSET, VERT_OFFSET;
174
wire[3:0] TIMESCALE;
175
wire[1:0] TRIGGERSTYLE;
176 2 smpickett
Driver_mouse driver_MOUSE(
177
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
178
    .PS2C(PS2C), .PS2D(PS2D),
179
    .XCOORD(XCOORD), .YCOORD(YCOORD),
180
    .L_BUTTON(L_BUTTON), .M_BUTTON(M_BUTTON), .R_BUTTON(R_BUTTON)
181
    );
182
 
183
Driver_MouseInput Driver_MouseInput_inst(
184
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
185 5 smpickett
    .XCOORD(XCOORD[9:0]), .YCOORD(YCOORD[9:0]),
186 2 smpickett
    .L_BUTTON(L_BUTTON), .M_BUTTON(M_BUTTON), .R_BUTTON(R_BUTTON),
187 27 smpickett
    .TRIGGER_LEVEL(TRIGGER_LEVEL), .HORZ_OFFSET(HORZ_OFFSET), .VERT_OFFSET(VERT_OFFSET),
188
    .TIMESCALE(TIMESCALE),
189
    .TRIGGERSTYLE(TRIGGERSTYLE)
190 2 smpickett
    );
191
 
192
 
193
 
194 21 smpickett
wire[8:0] ADC_RAM_DATA;
195 2 smpickett
wire[10:0] ADC_RAM_ADDR;
196
wire ADC_RAM_CLK;
197
wire[10:0] TRIG_ADDR;
198
wire VGA_WRITE_DONE;
199 21 smpickett
 
200
ADCDataBuffer ADC_Data_Buffer(
201
    .CLK_64MHZ(CLK_64MHZ),  .MASTER_CLK(MASTER_CLK), .MASTER_RST(MASTER_RST),
202 27 smpickett
    .TIMESCALE(TIMESCALE), .TRIGGER_LEVEL(TRIGGER_LEVEL),
203
    .VERT_OFFSET(VERT_OFFSET), .HORZ_OFFSET(HORZ_OFFSET),
204
//    .ADC_DATA(ADC_DATA[7:0]),
205
    .ADC_DATA(fake_adcData),
206 21 smpickett
    .CLK_ADC(CLK_ADC),
207 27 smpickett
    .SNAP_DATA_EXT(ADC_RAM_DATA), .SNAP_ADDR_EXT(ADC_RAM_ADDR), .SNAP_CLK_EXT(ADC_RAM_CLK),
208
    .TRIGGERSTYLE(TRIGGERSTYLE)
209 2 smpickett
    );
210
 
211
 
212 11 smpickett
//------------------------------------------------------------------//
213
//   VGA                                                            //
214
//------------------------------------------------------------------//
215
wire[9:0] HCNT, VCNT;
216
wire[2:0] RGB_CHAR;
217
 
218
 
219
CharacterDisplay charTest(
220
    .MASTER_CLK(CLK_50MHZ), .MASTER_RST(MASTER_RST),
221
    .CLK_VGA(CLK_VGA), .HCNT(HCNT), .VCNT(VCNT),
222 27 smpickett
    .RGB_OUT(RGB_CHAR),
223
    .TIMESCALE(TIMESCALE),
224
    .TRIGGERSTYLE(TRIGGERSTYLE),
225
    .XCOORD(XCOORD), .YCOORD(YCOORD)
226 11 smpickett
    );
227
 
228
 
229 2 smpickett
wire VGA_RAM_OE_w, VGA_RAM_WE_w, VGA_RAM_CS_w;
230
wire[17:0] VGA_RAM_ADDRESS_r;
231
wire VGA_RAM_OE_r, VGA_RAM_WE_r, VGA_RAM_CS_r;
232
 
233
assign VGA_RAM_ADDR = (VGA_RAM_ACCESS_OK) ? VGA_RAM_ADDRESS_w : VGA_RAM_ADDRESS_r;
234
assign VGA_RAM_DATA = (VGA_RAM_ACCESS_OK) ? VGA_RAM_DATA_w : 16'bZ;
235
assign VGA_RAM_OE = (VGA_RAM_ACCESS_OK) ? VGA_RAM_OE_w : VGA_RAM_OE_r;
236
assign VGA_RAM_WE = (VGA_RAM_ACCESS_OK) ? VGA_RAM_WE_w : VGA_RAM_WE_r;
237
assign VGA_RAM_CS = (VGA_RAM_ACCESS_OK) ? VGA_RAM_CS_w : VGA_RAM_CS_r;
238
 
239
VGADataBuffer ram_VGA_ramwrite(
240
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
241
    .VGA_RAM_DATA(VGA_RAM_DATA_w), .VGA_RAM_ADDR(VGA_RAM_ADDRESS_w),
242
    .VGA_RAM_OE(VGA_RAM_OE_w), .VGA_RAM_WE(VGA_RAM_WE_w), .VGA_RAM_CS(VGA_RAM_CS_w),
243
    .VGA_RAM_ACCESS_OK(VGA_RAM_ACCESS_OK),
244
    .ADC_RAM_DATA(ADC_RAM_DATA), .ADC_RAM_ADDR(ADC_RAM_ADDR), .ADC_RAM_CLK(ADC_RAM_CLK),
245 21 smpickett
    .TIME_BASE(TIME_BASE)
246 2 smpickett
    );
247
 
248
Driver_VGA driver_VGA(
249
    .CLK_50MHZ(CLK_50MHZ), .MASTER_RST(MASTER_RST),
250 11 smpickett
    .CLK_VGA(CLK_VGA),
251 2 smpickett
    .H_SYNC(H_SYNC), .V_SYNC(V_SYNC), .VGA_OUTPUT(VGA_OUTPUT),
252
    .XCOORD(XCOORD), .YCOORD(YCOORD),
253
    .VGA_RAM_DATA(VGA_RAM_DATA), .VGA_RAM_ADDR(VGA_RAM_ADDRESS_r),
254
    .VGA_RAM_OE(VGA_RAM_OE_r), .VGA_RAM_WE(VGA_RAM_WE_r), .VGA_RAM_CS(VGA_RAM_CS_r),
255
    .VGA_RAM_ACCESS_OK(VGA_RAM_ACCESS_OK),
256 27 smpickett
    .TRIGGER_LEVEL(TRIGGER_LEVEL), .HORZ_OFFSET(HORZ_OFFSET), .VERT_OFFSET(VERT_OFFSET),
257 11 smpickett
    .SHOW_LEVELS(SHOW_LEVELS_BUTTON),
258
    .HCNT(HCNT), .VCNT(VCNT),
259
    .RGB_CHAR(RGB_CHAR)
260 2 smpickett
    );
261
 
262
 
263
 
264
 
265
 
266
 
267
//==================================================================//
268
// FUNCTIONAL DEFINITIONS                                           //
269
//==================================================================//
270
 
271
endmodule
272
 

powered by: WebSVN 2.1.0

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