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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [mc/] [boards/] [s3e-500/] [src/] [toplevel/] [eco32.v] - Blame information for rev 230

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

Line No. Rev Author Line
1 216 hellwig
//
2
// eco32.v -- ECO32 top-level description
3
//
4
 
5
 
6
module eco32(clk_in,
7
             reset_in,
8
             sdram_ck_p,
9
             sdram_ck_n,
10
             sdram_cke,
11
             sdram_cs_n,
12
             sdram_ras_n,
13
             sdram_cas_n,
14
             sdram_we_n,
15
             sdram_ba,
16
             sdram_a,
17
             sdram_udm,
18
             sdram_ldm,
19
             sdram_udqs,
20
             sdram_ldqs,
21
             sdram_dq,
22
             flash_ce_n,
23
             flash_oe_n,
24
             flash_we_n,
25
             flash_byte_n,
26
             flash_a,
27
             flash_d,
28
             vga_hsync,
29
             vga_vsync,
30
             vga_r,
31
             vga_g,
32
             vga_b,
33
             ps2_clk,
34
             ps2_data,
35
             rs232_0_rxd,
36
             rs232_0_txd,
37
             rs232_1_rxd,
38
             rs232_1_txd,
39
             spi_sck,
40
             spi_mosi,
41
             dac_cs_n,
42
             dac_clr_n,
43
             amp_cs_n,
44
             amp_shdn,
45
             ad_conv,
46
             sw,
47
             led,
48
             lcd_e,
49
             lcd_rw,
50
             lcd_rs,
51
             spi_ss_b,
52
             fpga_init_b);
53
    // clock and reset
54
    input clk_in;
55
    input reset_in;
56
    // SDRAM
57
    output sdram_ck_p;
58
    output sdram_ck_n;
59
    output sdram_cke;
60
    output sdram_cs_n;
61
    output sdram_ras_n;
62
    output sdram_cas_n;
63
    output sdram_we_n;
64
    output [1:0] sdram_ba;
65
    output [12:0] sdram_a;
66
    output sdram_udm;
67
    output sdram_ldm;
68
    inout sdram_udqs;
69
    inout sdram_ldqs;
70
    inout [15:0] sdram_dq;
71
    // flash ROM
72
    output flash_ce_n;
73
    output flash_oe_n;
74
    output flash_we_n;
75
    output flash_byte_n;
76
    output [23:0] flash_a;
77
    input [15:0] flash_d;
78
    // VGA display
79
    output vga_hsync;
80
    output vga_vsync;
81
    output vga_r;
82
    output vga_g;
83
    output vga_b;
84
    // keyboard
85
    input ps2_clk;
86
    input ps2_data;
87
    // serial line 0
88
    input rs232_0_rxd;
89
    output rs232_0_txd;
90
    // serial line 1
91
    input rs232_1_rxd;
92
    output rs232_1_txd;
93
    // SPI bus controller
94
    output spi_sck;
95
    output spi_mosi;
96
    output dac_cs_n;
97
    output dac_clr_n;
98
    output amp_cs_n;
99
    output amp_shdn;
100
    output ad_conv;
101
    // board I/O
102
    input [3:0] sw;
103
    output [7:0] led;
104
    output lcd_e;
105
    output lcd_rw;
106
    output lcd_rs;
107
    output spi_ss_b;
108
    output fpga_init_b;
109
 
110 225 hellwig
  // clk_rst
111 216 hellwig
  wire ddr_clk_0;
112
  wire ddr_clk_90;
113
  wire ddr_clk_180;
114
  wire ddr_clk_270;
115
  wire ddr_clk_ok;
116
  wire clk;
117
  wire reset;
118
  // cpu
119
  wire cpu_en;
120
  wire cpu_wr;
121
  wire [1:0] cpu_size;
122
  wire [31:0] cpu_addr;
123
  wire [31:0] cpu_data_in;
124
  wire [31:0] cpu_data_out;
125
  wire cpu_wt;
126
  wire [15:0] cpu_irq;
127
  // ram
128
  wire ram_en;
129
  wire ram_wr;
130
  wire [1:0] ram_size;
131
  wire [25:0] ram_addr;
132
  wire [31:0] ram_data_in;
133
  wire [31:0] ram_data_out;
134
  wire ram_wt;
135
  // rom
136
  wire rom_en;
137
  wire rom_wr;
138
  wire [1:0] rom_size;
139
  wire [23:0] rom_addr;
140
  wire [31:0] rom_data_out;
141
  wire rom_wt;
142 228 hellwig
  // tmr0
143
  wire tmr0_en;
144
  wire tmr0_wr;
145
  wire [3:2] tmr0_addr;
146
  wire [31:0] tmr0_data_in;
147
  wire [31:0] tmr0_data_out;
148
  wire tmr0_wt;
149
  wire tmr0_irq;
150
  // tmr1
151
  wire tmr1_en;
152
  wire tmr1_wr;
153
  wire [3:2] tmr1_addr;
154
  wire [31:0] tmr1_data_in;
155
  wire [31:0] tmr1_data_out;
156
  wire tmr1_wt;
157
  wire tmr1_irq;
158 216 hellwig
  // dsp
159
  wire dsp_en;
160
  wire dsp_wr;
161
  wire [13:2] dsp_addr;
162
  wire [15:0] dsp_data_in;
163
  wire [15:0] dsp_data_out;
164
  wire dsp_wt;
165
  // kbd
166
  wire kbd_en;
167
  wire kbd_wr;
168
  wire kbd_addr;
169
  wire [7:0] kbd_data_in;
170
  wire [7:0] kbd_data_out;
171
  wire kbd_wt;
172
  wire kbd_irq;
173
  // ser0
174
  wire ser0_en;
175
  wire ser0_wr;
176
  wire [3:2] ser0_addr;
177
  wire [7:0] ser0_data_in;
178
  wire [7:0] ser0_data_out;
179
  wire ser0_wt;
180
  wire ser0_irq_r;
181
  wire ser0_irq_t;
182
  // ser1
183
  wire ser1_en;
184
  wire ser1_wr;
185
  wire [3:2] ser1_addr;
186
  wire [7:0] ser1_data_in;
187
  wire [7:0] ser1_data_out;
188
  wire ser1_wt;
189
  wire ser1_irq_r;
190
  wire ser1_irq_t;
191
  // fms
192
  wire fms_en;
193
  wire fms_wr;
194
  wire [11:2] fms_addr;
195
  wire [31:0] fms_data_in;
196
  wire [31:0] fms_data_out;
197
  wire fms_wt;
198
  // spi
199
  wire [15:0] dac_sample_l;
200
  wire [15:0] dac_sample_r;
201
  wire dac_next;
202
  // bio
203
  wire bio_en;
204
  wire bio_wr;
205
  wire bio_addr;
206
  wire [31:0] bio_data_in;
207
  wire [31:0] bio_data_out;
208
  wire bio_wt;
209
  wire spi_en;
210
 
211 225 hellwig
  clk_rst clk_rst1(
212 216 hellwig
    .clk_in(clk_in),
213
    .reset_in(reset_in),
214
    .ddr_clk_0(ddr_clk_0),
215
    .ddr_clk_90(ddr_clk_90),
216
    .ddr_clk_180(ddr_clk_180),
217
    .ddr_clk_270(ddr_clk_270),
218
    .ddr_clk_ok(ddr_clk_ok),
219
    .clk(clk),
220
    .reset(reset)
221
  );
222
 
223
  busctrl busctrl1(
224
    // cpu
225
    .cpu_en(cpu_en),
226
    .cpu_wr(cpu_wr),
227
    .cpu_size(cpu_size[1:0]),
228
    .cpu_addr(cpu_addr[31:0]),
229
    .cpu_data_in(cpu_data_in[31:0]),
230
    .cpu_data_out(cpu_data_out[31:0]),
231
    .cpu_wt(cpu_wt),
232
    // ram
233
    .ram_en(ram_en),
234
    .ram_wr(ram_wr),
235
    .ram_size(ram_size[1:0]),
236
    .ram_addr(ram_addr[25:0]),
237
    .ram_data_in(ram_data_in[31:0]),
238
    .ram_data_out(ram_data_out[31:0]),
239
    .ram_wt(ram_wt),
240
    // rom
241
    .rom_en(rom_en),
242
    .rom_wr(rom_wr),
243
    .rom_size(rom_size[1:0]),
244
    .rom_addr(rom_addr[23:0]),
245
    .rom_data_out(rom_data_out[31:0]),
246
    .rom_wt(rom_wt),
247 228 hellwig
    // tmr0
248
    .tmr0_en(tmr0_en),
249
    .tmr0_wr(tmr0_wr),
250
    .tmr0_addr(tmr0_addr[3:2]),
251
    .tmr0_data_in(tmr0_data_in[31:0]),
252
    .tmr0_data_out(tmr0_data_out[31:0]),
253
    .tmr0_wt(tmr0_wt),
254
    // tmr1
255
    .tmr1_en(tmr1_en),
256
    .tmr1_wr(tmr1_wr),
257
    .tmr1_addr(tmr1_addr[3:2]),
258
    .tmr1_data_in(tmr1_data_in[31:0]),
259
    .tmr1_data_out(tmr1_data_out[31:0]),
260
    .tmr1_wt(tmr1_wt),
261 216 hellwig
    // dsp
262
    .dsp_en(dsp_en),
263
    .dsp_wr(dsp_wr),
264
    .dsp_addr(dsp_addr[13:2]),
265
    .dsp_data_in(dsp_data_in[15:0]),
266
    .dsp_data_out(dsp_data_out[15:0]),
267
    .dsp_wt(dsp_wt),
268
    // kbd
269
    .kbd_en(kbd_en),
270
    .kbd_wr(kbd_wr),
271
    .kbd_addr(kbd_addr),
272
    .kbd_data_in(kbd_data_in[7:0]),
273
    .kbd_data_out(kbd_data_out[7:0]),
274
    .kbd_wt(kbd_wt),
275
    // ser0
276
    .ser0_en(ser0_en),
277
    .ser0_wr(ser0_wr),
278
    .ser0_addr(ser0_addr[3:2]),
279
    .ser0_data_in(ser0_data_in[7:0]),
280
    .ser0_data_out(ser0_data_out[7:0]),
281
    .ser0_wt(ser0_wt),
282
    // ser1
283
    .ser1_en(ser1_en),
284
    .ser1_wr(ser1_wr),
285
    .ser1_addr(ser1_addr[3:2]),
286
    .ser1_data_in(ser1_data_in[7:0]),
287
    .ser1_data_out(ser1_data_out[7:0]),
288
    .ser1_wt(ser1_wt),
289
    // fms
290
    .fms_en(fms_en),
291
    .fms_wr(fms_wr),
292
    .fms_addr(fms_addr[11:2]),
293
    .fms_data_in(fms_data_in[31:0]),
294
    .fms_data_out(fms_data_out[31:0]),
295
    .fms_wt(fms_wt),
296
    // bio
297
    .bio_en(bio_en),
298
    .bio_wr(bio_wr),
299
    .bio_addr(bio_addr),
300
    .bio_data_in(bio_data_in[31:0]),
301
    .bio_data_out(bio_data_out[31:0]),
302
    .bio_wt(bio_wt)
303
  );
304
 
305
  cpu cpu1(
306
    .clk(clk),
307
    .reset(reset),
308
    .bus_en(cpu_en),
309
    .bus_wr(cpu_wr),
310
    .bus_size(cpu_size[1:0]),
311
    .bus_addr(cpu_addr[31:0]),
312
    .bus_data_in(cpu_data_in[31:0]),
313
    .bus_data_out(cpu_data_out[31:0]),
314
    .bus_wt(cpu_wt),
315
    .irq(cpu_irq[15:0])
316
  );
317
 
318 228 hellwig
  assign cpu_irq[15] = tmr1_irq;
319
  assign cpu_irq[14] = tmr0_irq;
320 216 hellwig
  assign cpu_irq[13] = 1'b0;
321
  assign cpu_irq[12] = 1'b0;
322
  assign cpu_irq[11] = 1'b0;
323
  assign cpu_irq[10] = 1'b0;
324
  assign cpu_irq[ 9] = 1'b0;
325
  assign cpu_irq[ 8] = 1'b0;  //dsk_irq;
326
  assign cpu_irq[ 7] = 1'b0;
327
  assign cpu_irq[ 6] = 1'b0;
328
  assign cpu_irq[ 5] = 1'b0;
329
  assign cpu_irq[ 4] = kbd_irq;
330
  assign cpu_irq[ 3] = ser1_irq_r;
331
  assign cpu_irq[ 2] = ser1_irq_t;
332
  assign cpu_irq[ 1] = ser0_irq_r;
333
  assign cpu_irq[ 0] = ser0_irq_t;
334
 
335
  ram ram1(
336
    .ddr_clk_0(ddr_clk_0),
337
    .ddr_clk_90(ddr_clk_90),
338
    .ddr_clk_180(ddr_clk_180),
339
    .ddr_clk_270(ddr_clk_270),
340
    .ddr_clk_ok(ddr_clk_ok),
341
    .clk(clk),
342
    .reset(reset),
343
    .en(ram_en),
344
    .wr(ram_wr),
345
    .size(ram_size[1:0]),
346
    .addr(ram_addr[25:0]),
347
    .data_in(ram_data_in[31:0]),
348
    .data_out(ram_data_out[31:0]),
349
    .wt(ram_wt),
350
    .sdram_ck_p(sdram_ck_p),
351
    .sdram_ck_n(sdram_ck_n),
352
    .sdram_cke(sdram_cke),
353
    .sdram_cs_n(sdram_cs_n),
354
    .sdram_ras_n(sdram_ras_n),
355
    .sdram_cas_n(sdram_cas_n),
356
    .sdram_we_n(sdram_we_n),
357
    .sdram_ba(sdram_ba[1:0]),
358
    .sdram_a(sdram_a[12:0]),
359
    .sdram_udm(sdram_udm),
360
    .sdram_ldm(sdram_ldm),
361
    .sdram_udqs(sdram_udqs),
362
    .sdram_ldqs(sdram_ldqs),
363
    .sdram_dq(sdram_dq[15:0])
364
  );
365
 
366
  rom rom1(
367
    .clk(clk),
368
    .reset(reset),
369
    .en(rom_en),
370
    .wr(rom_wr),
371
    .size(rom_size[1:0]),
372
    .addr(rom_addr[23:0]),
373
    .data_out(rom_data_out[31:0]),
374
    .wt(rom_wt),
375
    .spi_en(spi_en),
376
    .ce_n(flash_ce_n),
377
    .oe_n(flash_oe_n),
378
    .we_n(flash_we_n),
379
    .byte_n(flash_byte_n),
380
    .a(flash_a[23:0]),
381
    .d(flash_d[15:0])
382
  );
383
 
384 228 hellwig
  tmr tmr1_0(
385 216 hellwig
    .clk(clk),
386
    .reset(reset),
387 228 hellwig
    .en(tmr0_en),
388
    .wr(tmr0_wr),
389
    .addr(tmr0_addr[3:2]),
390
    .data_in(tmr0_data_in[31:0]),
391
    .data_out(tmr0_data_out[31:0]),
392
    .wt(tmr0_wt),
393
    .irq(tmr0_irq)
394 216 hellwig
  );
395
 
396 228 hellwig
  tmr tmr1_1(
397
    .clk(clk),
398
    .reset(reset),
399
    .en(tmr1_en),
400
    .wr(tmr1_wr),
401
    .addr(tmr1_addr[3:2]),
402
    .data_in(tmr1_data_in[31:0]),
403
    .data_out(tmr1_data_out[31:0]),
404
    .wt(tmr1_wt),
405
    .irq(tmr1_irq)
406
  );
407
 
408 216 hellwig
  dsp dsp1(
409
    .clk(clk),
410
    .reset(reset),
411
    .en(dsp_en),
412
    .wr(dsp_wr),
413
    .addr(dsp_addr[13:2]),
414
    .data_in(dsp_data_in[15:0]),
415
    .data_out(dsp_data_out[15:0]),
416
    .wt(dsp_wt),
417
    .hsync(vga_hsync),
418
    .vsync(vga_vsync),
419
    .r(vga_r),
420
    .g(vga_g),
421
    .b(vga_b)
422
  );
423
 
424
  kbd kbd1(
425
    .clk(clk),
426
    .reset(reset),
427
    .en(kbd_en),
428
    .wr(kbd_wr),
429
    .addr(kbd_addr),
430
    .data_in(kbd_data_in[7:0]),
431
    .data_out(kbd_data_out[7:0]),
432
    .wt(kbd_wt),
433
    .irq(kbd_irq),
434
    .ps2_clk(ps2_clk),
435
    .ps2_data(ps2_data)
436
  );
437
 
438
  ser ser1_0(
439
    .clk(clk),
440
    .reset(reset),
441
    .en(ser0_en),
442
    .wr(ser0_wr),
443
    .addr(ser0_addr[3:2]),
444
    .data_in(ser0_data_in[7:0]),
445
    .data_out(ser0_data_out[7:0]),
446
    .wt(ser0_wt),
447
    .irq_r(ser0_irq_r),
448
    .irq_t(ser0_irq_t),
449
    .rxd(rs232_0_rxd),
450
    .txd(rs232_0_txd)
451
  );
452
 
453
  ser ser1_1(
454
    .clk(clk),
455
    .reset(reset),
456
    .en(ser1_en),
457
    .wr(ser1_wr),
458
    .addr(ser1_addr[3:2]),
459
    .data_in(ser1_data_in[7:0]),
460
    .data_out(ser1_data_out[7:0]),
461
    .wt(ser1_wt),
462
    .irq_r(ser1_irq_r),
463
    .irq_t(ser1_irq_t),
464
    .rxd(rs232_1_rxd),
465
    .txd(rs232_1_txd)
466
  );
467
 
468
  fms fms1(
469
    .clk(clk),
470
    .reset(reset),
471
    .en(fms_en),
472
    .wr(fms_wr),
473
    .addr(fms_addr[11:2]),
474
    .data_in(fms_data_in[31:0]),
475
    .data_out(fms_data_out[31:0]),
476
    .wt(fms_wt),
477
    .next(dac_next),
478
    .sample_l(dac_sample_l[15:0]),
479
    .sample_r(dac_sample_r[15:0])
480
  );
481
 
482
  spi spi1(
483
    .clk(clk),
484
    .reset(reset),
485
    .spi_en(spi_en),
486
    .dac_sample_l(dac_sample_l[15:0]),
487
    .dac_sample_r(dac_sample_r[15:0]),
488
    .dac_next(dac_next),
489
    .spi_sck(spi_sck),
490
    .spi_mosi(spi_mosi),
491
    .dac_cs_n(dac_cs_n),
492
    .dac_clr_n(dac_clr_n),
493
    .amp_cs_n(amp_cs_n),
494
    .amp_shdn(amp_shdn),
495
    .ad_conv(ad_conv)
496
  );
497
 
498
  bio bio1(
499
    .clk(clk),
500
    .reset(reset),
501
    .en(bio_en),
502
    .wr(bio_wr),
503
    .addr(bio_addr),
504
    .data_in(bio_data_in[31:0]),
505
    .data_out(bio_data_out[31:0]),
506
    .wt(bio_wt),
507
    .spi_en(spi_en),
508
    .sw(sw[3:0]),
509
    .led(led[7:0]),
510
    .lcd_e(lcd_e),
511
    .lcd_rw(lcd_rw),
512
    .lcd_rs(lcd_rs),
513
    .spi_ss_b(spi_ss_b),
514
    .fpga_init_b(fpga_init_b)
515
  );
516
 
517
endmodule

powered by: WebSVN 2.1.0

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