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

Subversion Repositories eco32

[/] [eco32/] [tags/] [eco32-0.24/] [fpga/] [src/] [eco32.v] - Blame information for rev 69

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

Line No. Rev Author Line
1 27 hellwig
//
2 68 hellwig
// eco32.v -- ECO32 top-level description
3 27 hellwig
//
4
 
5
 
6
module eco32(clk_in,
7
             reset_inout_n,
8
             sdram_clk,
9
             sdram_fb,
10
             sdram_cke,
11
             sdram_cs_n,
12
             sdram_udqm,
13
             sdram_ldqm,
14
             sdram_ras_n,
15
             sdram_cas_n,
16
             sdram_we_n,
17
             sdram_ba,
18
             sdram_a,
19
             sdram_dq,
20
             flash_ce_n,
21
             flash_oe_n,
22
             flash_we_n,
23
             flash_rst_n,
24
             flash_byte_n,
25
             flash_a,
26
             flash_d,
27 68 hellwig
             vga_hsync,
28
             vga_vsync,
29
             vga_r,
30
             vga_g,
31
             vga_b,
32 27 hellwig
             ps2_clk,
33
             ps2_data,
34
             rs232_0_rxd,
35
             rs232_0_txd,
36
             rs232_1_rxd,
37
             rs232_1_txd,
38
             pbus_d,
39
             pbus_a,
40
             pbus_read_n,
41
             pbus_write_n,
42
             ata_cs0_n,
43
             ata_cs1_n,
44
             ata_intrq,
45
             ata_dmarq,
46
             ata_dmack_n,
47
             ata_iordy,
48
             slot1_cs_n,
49
             slot2_cs_n,
50
             ether_cs_n);
51
 
52
    // clock and reset
53
    input clk_in;
54
    inout reset_inout_n;
55
    // SDRAM
56
    output sdram_clk;
57
    input sdram_fb;
58
    output sdram_cke;
59
    output sdram_cs_n;
60
    output sdram_udqm;
61
    output sdram_ldqm;
62
    output sdram_ras_n;
63
    output sdram_cas_n;
64
    output sdram_we_n;
65
    output [1:0] sdram_ba;
66
    output [12:0] sdram_a;
67
    inout [15:0] sdram_dq;
68
    // flash ROM
69
    output flash_ce_n;
70
    output flash_oe_n;
71
    output flash_we_n;
72
    output flash_rst_n;
73
    output flash_byte_n;
74
    output [19:0] flash_a;
75
    input [15:0] flash_d;
76
    // VGA display
77 68 hellwig
    output vga_hsync;
78
    output vga_vsync;
79
    output [2:0] vga_r;
80
    output [2:0] vga_g;
81
    output [2:0] vga_b;
82 27 hellwig
    // keyboard
83
    input ps2_clk;
84
    input ps2_data;
85
    // serial line 0
86
    input rs232_0_rxd;
87
    output rs232_0_txd;
88
    // serial line 1
89
    input rs232_1_rxd;
90
    output rs232_1_txd;
91
    // peripheral bus
92
    inout [15:0] pbus_d;
93
    output [4:0] pbus_a;
94
    output pbus_read_n;
95
    output pbus_write_n;
96
    // ATA adapter
97
    output ata_cs0_n;
98
    output ata_cs1_n;
99
    input ata_intrq;
100
    input ata_dmarq;
101
    output ata_dmack_n;
102
    input ata_iordy;
103
    // expansion slot 1
104
    output slot1_cs_n;
105
    // expansion slot 2
106
    output slot2_cs_n;
107
    // ethernet
108
    output ether_cs_n;
109
 
110
  // clk_reset
111
  wire clk;
112
  wire clk_ok;
113
  wire reset;
114
  // cpu
115
  wire cpu_en;
116
  wire cpu_wr;
117
  wire [1:0] cpu_size;
118
  wire [31:0] cpu_addr;
119
  wire [31:0] cpu_data_in;
120
  wire [31:0] cpu_data_out;
121
  wire cpu_wt;
122
  wire [15:0] cpu_irq;
123
  // ram
124
  wire ram_en;
125
  wire ram_wr;
126
  wire [1:0] ram_size;
127
  wire [24:0] ram_addr;
128
  wire [31:0] ram_data_in;
129
  wire [31:0] ram_data_out;
130
  wire ram_wt;
131
  // rom
132
  wire rom_en;
133
  wire rom_wr;
134
  wire [1:0] rom_size;
135
  wire [20:0] rom_addr;
136
  wire [31:0] rom_data_out;
137
  wire rom_wt;
138
  // tmr
139
  wire tmr_en;
140
  wire tmr_wr;
141 69 hellwig
  wire [3:2] tmr_addr;
142 27 hellwig
  wire [31:0] tmr_data_in;
143
  wire [31:0] tmr_data_out;
144
  wire tmr_wt;
145
  wire tmr_irq;
146
  // dsp
147
  wire dsp_en;
148
  wire dsp_wr;
149
  wire [13:2] dsp_addr;
150
  wire [15:0] dsp_data_in;
151
  wire [15:0] dsp_data_out;
152
  wire dsp_wt;
153
  // kbd
154
  wire kbd_en;
155
  wire kbd_wr;
156 67 hellwig
  wire kbd_addr;
157 27 hellwig
  wire [7:0] kbd_data_in;
158
  wire [7:0] kbd_data_out;
159
  wire kbd_wt;
160
  wire kbd_irq;
161
  // ser0
162
  wire ser0_en;
163
  wire ser0_wr;
164
  wire [3:2] ser0_addr;
165
  wire [7:0] ser0_data_in;
166
  wire [7:0] ser0_data_out;
167
  wire ser0_wt;
168
  wire ser0_irq_r;
169
  wire ser0_irq_t;
170
  // ser1
171
  wire ser1_en;
172
  wire ser1_wr;
173
  wire [3:2] ser1_addr;
174
  wire [7:0] ser1_data_in;
175
  wire [7:0] ser1_data_out;
176
  wire ser1_wt;
177
  wire ser1_irq_r;
178
  wire ser1_irq_t;
179
  // dsk
180
  wire dsk_en;
181
  wire dsk_wr;
182
  wire [19:2] dsk_addr;
183
  wire [31:0] dsk_data_in;
184
  wire [31:0] dsk_data_out;
185
  wire dsk_wt;
186
  wire dsk_irq;
187
 
188
  clk_reset clk_reset1(
189
    .clk_in(clk_in),
190
    .reset_inout_n(reset_inout_n),
191
    .sdram_clk(sdram_clk),
192
    .sdram_fb(sdram_fb),
193
    .clk(clk),
194
    .clk_ok(clk_ok),
195
    .reset(reset)
196
  );
197
 
198
  busctrl busctrl1(
199
    // cpu
200
    .cpu_en(cpu_en),
201
    .cpu_wr(cpu_wr),
202
    .cpu_size(cpu_size[1:0]),
203
    .cpu_addr(cpu_addr[31:0]),
204
    .cpu_data_in(cpu_data_in[31:0]),
205
    .cpu_data_out(cpu_data_out[31:0]),
206
    .cpu_wt(cpu_wt),
207
    // ram
208
    .ram_en(ram_en),
209
    .ram_wr(ram_wr),
210
    .ram_size(ram_size[1:0]),
211
    .ram_addr(ram_addr[24:0]),
212
    .ram_data_in(ram_data_in[31:0]),
213
    .ram_data_out(ram_data_out[31:0]),
214
    .ram_wt(ram_wt),
215
    // rom
216
    .rom_en(rom_en),
217
    .rom_wr(rom_wr),
218
    .rom_size(rom_size[1:0]),
219
    .rom_addr(rom_addr[20:0]),
220
    .rom_data_out(rom_data_out[31:0]),
221
    .rom_wt(rom_wt),
222
    // tmr
223
    .tmr_en(tmr_en),
224
    .tmr_wr(tmr_wr),
225 69 hellwig
    .tmr_addr(tmr_addr[3:2]),
226 27 hellwig
    .tmr_data_in(tmr_data_in[31:0]),
227
    .tmr_data_out(tmr_data_out[31:0]),
228
    .tmr_wt(tmr_wt),
229
    // dsp
230
    .dsp_en(dsp_en),
231
    .dsp_wr(dsp_wr),
232
    .dsp_addr(dsp_addr[13:2]),
233
    .dsp_data_in(dsp_data_in[15:0]),
234
    .dsp_data_out(dsp_data_out[15:0]),
235
    .dsp_wt(dsp_wt),
236
    // kbd
237
    .kbd_en(kbd_en),
238
    .kbd_wr(kbd_wr),
239 67 hellwig
    .kbd_addr(kbd_addr),
240 27 hellwig
    .kbd_data_in(kbd_data_in[7:0]),
241
    .kbd_data_out(kbd_data_out[7:0]),
242
    .kbd_wt(kbd_wt),
243
    // ser0
244
    .ser0_en(ser0_en),
245
    .ser0_wr(ser0_wr),
246
    .ser0_addr(ser0_addr[3:2]),
247
    .ser0_data_in(ser0_data_in[7:0]),
248
    .ser0_data_out(ser0_data_out[7:0]),
249
    .ser0_wt(ser0_wt),
250
    // ser1
251
    .ser1_en(ser1_en),
252
    .ser1_wr(ser1_wr),
253
    .ser1_addr(ser1_addr[3:2]),
254
    .ser1_data_in(ser1_data_in[7:0]),
255
    .ser1_data_out(ser1_data_out[7:0]),
256
    .ser1_wt(ser1_wt),
257
    // dsk
258
    .dsk_en(dsk_en),
259
    .dsk_wr(dsk_wr),
260
    .dsk_addr(dsk_addr[19:2]),
261
    .dsk_data_in(dsk_data_in[31:0]),
262
    .dsk_data_out(dsk_data_out[31:0]),
263
    .dsk_wt(dsk_wt)
264
  );
265
 
266
  cpu cpu1(
267
    .clk(clk),
268
    .reset(reset),
269
    .bus_en(cpu_en),
270
    .bus_wr(cpu_wr),
271
    .bus_size(cpu_size[1:0]),
272
    .bus_addr(cpu_addr[31:0]),
273
    .bus_data_in(cpu_data_in[31:0]),
274
    .bus_data_out(cpu_data_out[31:0]),
275
    .bus_wt(cpu_wt),
276
    .irq(cpu_irq[15:0])
277
  );
278
 
279
  assign cpu_irq[15] = 1'b0;
280
  assign cpu_irq[14] = tmr_irq;
281
  assign cpu_irq[13] = 1'b0;
282
  assign cpu_irq[12] = 1'b0;
283
  assign cpu_irq[11] = 1'b0;
284
  assign cpu_irq[10] = 1'b0;
285
  assign cpu_irq[ 9] = 1'b0;
286
  assign cpu_irq[ 8] = dsk_irq;
287
  assign cpu_irq[ 7] = 1'b0;
288
  assign cpu_irq[ 6] = 1'b0;
289
  assign cpu_irq[ 5] = 1'b0;
290
  assign cpu_irq[ 4] = kbd_irq;
291
  assign cpu_irq[ 3] = ser1_irq_r;
292
  assign cpu_irq[ 2] = ser1_irq_t;
293
  assign cpu_irq[ 1] = ser0_irq_r;
294
  assign cpu_irq[ 0] = ser0_irq_t;
295
 
296
  ram ram1(
297
    .clk(clk),
298
    .clk_ok(clk_ok),
299
    .reset(reset),
300
    .en(ram_en),
301
    .wr(ram_wr),
302
    .size(ram_size[1:0]),
303
    .addr(ram_addr[24:0]),
304
    .data_in(ram_data_in[31:0]),
305
    .data_out(ram_data_out[31:0]),
306
    .wt(ram_wt),
307
    .sdram_cke(sdram_cke),
308
    .sdram_cs_n(sdram_cs_n),
309
    .sdram_udqm(sdram_udqm),
310
    .sdram_ldqm(sdram_ldqm),
311
    .sdram_ras_n(sdram_ras_n),
312
    .sdram_cas_n(sdram_cas_n),
313
    .sdram_we_n(sdram_we_n),
314
    .sdram_ba(sdram_ba[1:0]),
315
    .sdram_a(sdram_a[12:0]),
316
    .sdram_dq(sdram_dq[15:0])
317
  );
318
 
319
  rom rom1(
320
    .clk(clk),
321
    .reset(reset),
322
    .en(rom_en),
323
    .wr(rom_wr),
324
    .size(rom_size[1:0]),
325
    .addr(rom_addr[20:0]),
326
    .data_out(rom_data_out[31:0]),
327
    .wt(rom_wt),
328
    .ce_n(flash_ce_n),
329
    .oe_n(flash_oe_n),
330
    .we_n(flash_we_n),
331
    .rst_n(flash_rst_n),
332
    .byte_n(flash_byte_n),
333
    .a(flash_a[19:0]),
334
    .d(flash_d[15:0])
335
  );
336
 
337
  tmr tmr1(
338
    .clk(clk),
339
    .reset(reset),
340
    .en(tmr_en),
341
    .wr(tmr_wr),
342 69 hellwig
    .addr(tmr_addr[3:2]),
343 27 hellwig
    .data_in(tmr_data_in[31:0]),
344
    .data_out(tmr_data_out[31:0]),
345
    .wt(tmr_wt),
346
    .irq(tmr_irq)
347
  );
348
 
349
  dsp dsp1(
350
    .clk(clk),
351
    .reset(reset),
352
    .en(dsp_en),
353
    .wr(dsp_wr),
354
    .addr(dsp_addr[13:2]),
355
    .data_in(dsp_data_in[15:0]),
356
    .data_out(dsp_data_out[15:0]),
357
    .wt(dsp_wt),
358 68 hellwig
    .hsync(vga_hsync),
359
    .vsync(vga_vsync),
360
    .r(vga_r[2:0]),
361
    .g(vga_g[2:0]),
362
    .b(vga_b[2:0])
363 27 hellwig
  );
364
 
365
  kbd kbd1(
366
    .ps2_clk(ps2_clk),
367
    .ps2_data(ps2_data),
368
    .clk(clk),
369
    .reset(reset),
370
    .en(kbd_en),
371
    .wr(kbd_wr),
372 67 hellwig
    .addr(kbd_addr),
373 27 hellwig
    .data_in(kbd_data_in[7:0]),
374
    .data_out(kbd_data_out[7:0]),
375
    .wt(kbd_wt),
376
    .irq(kbd_irq)
377
  );
378
 
379
  ser ser1_0(
380
    .clk(clk),
381
    .reset(reset),
382
    .en(ser0_en),
383
    .wr(ser0_wr),
384
    .addr(ser0_addr[3:2]),
385
    .data_in(ser0_data_in[7:0]),
386
    .data_out(ser0_data_out[7:0]),
387
    .wt(ser0_wt),
388
    .irq_r(ser0_irq_r),
389
    .irq_t(ser0_irq_t),
390
    .rxd(rs232_0_rxd),
391
    .txd(rs232_0_txd)
392
  );
393
 
394
  ser ser1_1(
395
    .clk(clk),
396
    .reset(reset),
397
    .en(ser1_en),
398
    .wr(ser1_wr),
399
    .addr(ser1_addr[3:2]),
400
    .data_in(ser1_data_in[7:0]),
401
    .data_out(ser1_data_out[7:0]),
402
    .wt(ser1_wt),
403
    .irq_r(ser1_irq_r),
404
    .irq_t(ser1_irq_t),
405
    .rxd(rs232_1_rxd),
406
    .txd(rs232_1_txd)
407
  );
408
 
409
  dsk dsk1(
410
    .clk(clk),
411
    .reset(reset),
412
    .en(dsk_en),
413
    .wr(dsk_wr),
414
    .addr(dsk_addr[19:2]),
415
    .data_in(dsk_data_in[31:0]),
416
    .data_out(dsk_data_out[31:0]),
417
    .wt(dsk_wt),
418
    .irq(dsk_irq),
419
    .ata_d(pbus_d[15:0]),
420
    .ata_a(pbus_a[2:0]),
421
    .ata_cs0_n(ata_cs0_n),
422
    .ata_cs1_n(ata_cs1_n),
423
    .ata_dior_n(pbus_read_n),
424
    .ata_diow_n(pbus_write_n),
425
    .ata_intrq(ata_intrq),
426
    .ata_dmarq(ata_dmarq),
427
    .ata_dmack_n(ata_dmack_n),
428
    .ata_iordy(ata_iordy)
429
  );
430
 
431
  assign pbus_a[4:3] = 2'b00;
432
  assign slot1_cs_n = 1;
433
  assign slot2_cs_n = 1;
434
  assign ether_cs_n = 1;
435
 
436
endmodule

powered by: WebSVN 2.1.0

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