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

Subversion Repositories amber

[/] [amber/] [trunk/] [hw/] [vlog/] [amber25/] [a25_core.v] - Blame information for rev 27

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

Line No. Rev Author Line
1 16 csantifort
//////////////////////////////////////////////////////////////////
2
//                                                              //
3
//  Amber 25 Core top-Level module                              //
4
//                                                              //
5
//  This file is part of the Amber project                      //
6
//  http://www.opencores.org/project,amber                      //
7
//                                                              //
8
//  Description                                                 //
9
//  Instantiates the core consisting of fetch, instruction      //
10 17 csantifort
//  decode, execute, memory access and write back. The          //
11
//  Wishbone interface and Co-Processor modules are also        //
12
//  instantiated here.                                          //
13 16 csantifort
//                                                              //
14
//  Author(s):                                                  //
15
//      - Conor Santifort, csantifort.amber@gmail.com           //
16
//                                                              //
17
//////////////////////////////////////////////////////////////////
18
//                                                              //
19
// Copyright (C) 2011 Authors and OPENCORES.ORG                 //
20
//                                                              //
21
// This source file may be used and distributed without         //
22
// restriction provided that this copyright statement is not    //
23
// removed from the file and that any derivative work contains  //
24
// the original copyright notice and the associated disclaimer. //
25
//                                                              //
26
// This source file is free software; you can redistribute it   //
27
// and/or modify it under the terms of the GNU Lesser General   //
28
// Public License as published by the Free Software Foundation; //
29
// either version 2.1 of the License, or (at your option) any   //
30
// later version.                                               //
31
//                                                              //
32
// This source is distributed in the hope that it will be       //
33
// useful, but WITHOUT ANY WARRANTY; without even the implied   //
34
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
35
// PURPOSE.  See the GNU Lesser General Public License for more //
36
// details.                                                     //
37
//                                                              //
38
// You should have received a copy of the GNU Lesser General    //
39
// Public License along with this source; if not, download it   //
40
// from http://www.opencores.org/lgpl.shtml                     //
41
//                                                              //
42
//////////////////////////////////////////////////////////////////
43
 
44
 
45
module a25_core
46
(
47
input                       i_clk,
48
 
49
input                       i_irq,              // Interrupt request, active high
50
input                       i_firq,             // Fast Interrupt request, active high
51
 
52
input                       i_system_rdy,       // Amber is stalled when this is low
53
 
54
// Wishbone Master I/F
55
output      [31:0]          o_wb_adr,
56
output      [3:0]           o_wb_sel,
57
output                      o_wb_we,
58
input       [31:0]          i_wb_dat,
59
output      [31:0]          o_wb_dat,
60
output                      o_wb_cyc,
61
output                      o_wb_stb,
62
input                       i_wb_ack,
63
input                       i_wb_err
64
 
65
);
66
 
67
wire      [31:0]          execute_iaddress;
68
wire                      execute_iaddress_valid;
69
wire      [31:0]          execute_iaddress_nxt;  // un-registered version of execute_address
70
                                                 // to the instruction cache rams
71
wire      [31:0]          execute_daddress;
72
wire                      execute_daddress_valid;
73
wire      [31:0]          execute_daddress_nxt; // un-registered version of execute_daddress
74
                                                // to the data cache rams
75
wire      [31:0]          write_data;
76
wire                      write_enable;
77
wire      [31:0]          fetch_instruction;
78
wire                      decode_exclusive;
79
wire                      decode_iaccess;
80
wire                      decode_daccess;
81
wire      [3:0]           byte_enable;
82
wire                      exclusive;            // swap access
83
wire                      cache_enable;         // Enabel the cache
84
wire                      cache_flush;          // Flush the cache
85
wire      [31:0]          cacheable_area;
86
 
87
wire                      fetch_stall;
88
wire                      mem_stall;
89
wire                      access_stall;
90
 
91
wire     [1:0]            status_bits_mode;
92
wire                      status_bits_irq_mask;
93
wire                      status_bits_firq_mask;
94
wire                      status_bits_flags_wen;
95
wire                      status_bits_mode_wen;
96
wire                      status_bits_irq_mask_wen;
97
wire                      status_bits_firq_mask_wen;
98
wire     [31:0]           execute_status_bits;
99
 
100
wire     [31:0]           imm32;
101
wire     [4:0]            imm_shift_amount;
102
wire                      shift_imm_zero;
103
wire     [3:0]            condition;
104
 
105
wire     [3:0]            rm_sel;
106
wire     [3:0]            rs_sel;
107
wire     [7:0]            decode_load_rd;
108
wire     [7:0]            exec_load_rd;
109
wire     [3:0]            rn_sel;
110
wire     [1:0]            barrel_shift_amount_sel;
111
wire     [1:0]            barrel_shift_data_sel;
112
wire     [1:0]            barrel_shift_function;
113
wire     [8:0]            alu_function;
114
wire     [1:0]            multiply_function;
115
wire     [2:0]            interrupt_vector_sel;
116
wire     [3:0]            iaddress_sel;
117
wire     [3:0]            daddress_sel;
118
wire     [2:0]            pc_sel;
119
wire     [1:0]            byte_enable_sel;
120
wire     [2:0]            status_bits_sel;
121
wire     [2:0]            reg_write_sel;
122
wire                      user_mode_regs_store_nxt;
123
wire                      firq_not_user_mode;
124
 
125
wire                      write_data_wen;
126
wire                      copro_write_data_wen;
127
wire                      base_address_wen;
128
wire                      pc_wen;
129
wire     [14:0]           reg_bank_wen;
130
 
131
wire     [2:0]            copro_opcode1;
132
wire     [2:0]            copro_opcode2;
133
wire     [3:0]            copro_crn;
134
wire     [3:0]            copro_crm;
135
wire     [3:0]            copro_num;
136
wire     [1:0]            copro_operation;
137
wire     [31:0]           copro_read_data;
138
wire     [31:0]           copro_write_data;
139
wire                      multiply_done;
140
 
141
wire                      decode_fault;
142
wire                      iabt_trigger;
143
wire                      dabt_trigger;
144
 
145
wire     [7:0]            decode_fault_status;
146
wire     [7:0]            iabt_fault_status;
147
wire     [7:0]            dabt_fault_status;
148
 
149
wire     [31:0]           decode_fault_address;
150
wire     [31:0]           iabt_fault_address;
151
wire     [31:0]           dabt_fault_address;
152
 
153
wire                      adex;
154
 
155
wire     [31:0]           mem_read_data;
156
wire                      mem_read_data_valid;
157
wire     [9:0]            mem_load_rd;
158
 
159
wire     [31:0]           wb_read_data;
160
wire                      wb_read_data_valid;
161
wire     [9:0]            wb_load_rd;
162
 
163
wire                      dcache_wb_cached_req;
164
wire                      dcache_wb_uncached_req;
165
wire                      dcache_wb_qword;
166
wire                      dcache_wb_write;
167
wire     [3:0]            dcache_wb_byte_enable;
168
wire     [31:0]           dcache_wb_address;
169
wire     [31:0]           dcache_wb_read_data;
170
wire     [31:0]           dcache_wb_write_data;
171
wire                      dcache_wb_cached_ready;
172
wire                      dcache_wb_uncached_ready;
173
wire     [31:0]           icache_wb_address;
174
wire                      icache_wb_req;
175
wire                      icache_wb_qword;
176
wire     [31:0]           icache_wb_adr;
177
wire     [31:0]           icache_wb_read_data;
178
wire                      icache_wb_ready;
179
 
180
wire                      conflict;
181 20 csantifort
wire                      rn_use_read;
182
wire                      rm_use_read;
183
wire                      rs_use_read;
184
wire                      rd_use_read;
185 16 csantifort
 
186
// data abort has priority
187
assign decode_fault_status  = dabt_trigger ? dabt_fault_status  : iabt_fault_status;
188
assign decode_fault_address = dabt_trigger ? dabt_fault_address : iabt_fault_address;
189
assign decode_fault         = dabt_trigger | iabt_trigger;
190
 
191
assign access_stall         = fetch_stall || mem_stall;
192
 
193
// ======================================
194
//  Fetch Stage
195
// ======================================
196
a25_fetch u_fetch (
197
    .i_clk                              ( i_clk                             ),
198
    .i_mem_stall                        ( mem_stall                         ),
199
    .i_conflict                         ( conflict                          ),
200
    .i_system_rdy                       ( i_system_rdy                      ),
201
    .o_fetch_stall                      ( fetch_stall                       ),
202
 
203
    .i_iaddress                         ( {execute_iaddress[31:2], 2'd0}    ),
204
    .i_iaddress_valid                   ( execute_iaddress_valid            ),
205
    .i_iaddress_nxt                     ( execute_iaddress_nxt              ),
206
    .o_fetch_instruction                ( fetch_instruction                 ),
207
    .i_cache_enable                     ( cache_enable                      ),
208
    .i_cache_flush                      ( cache_flush                       ),
209
    .i_cacheable_area                   ( cacheable_area                    ),
210
 
211
 
212
    .o_wb_req                           ( icache_wb_req                     ),
213
    .o_wb_qword                         ( icache_wb_qword                   ),
214
    .o_wb_address                       ( icache_wb_address                 ),
215
    .i_wb_read_data                     ( icache_wb_read_data               ),
216
    .i_wb_ready                         ( icache_wb_ready                   )
217
);
218
 
219
 
220
// ======================================
221
//  Decode Stage
222
// ======================================
223
a25_decode u_decode (
224
    .i_clk                              ( i_clk                             ),
225
    .i_access_stall                     ( access_stall                      ),
226
 
227
    // Instruction fetch or data read signals
228
    .i_fetch_instruction                ( fetch_instruction                 ),
229
    .i_execute_iaddress                 ( execute_iaddress                  ),
230
    .i_execute_daddress                 ( execute_daddress                  ),
231
    .i_adex                             ( adex                              ),
232
    .i_iabt                             ( 1'd0                              ),
233
    .i_dabt                             ( 1'd0                              ),
234
    .i_abt_status                       ( 8'd0                              ),
235
 
236
    .i_irq                              ( i_irq                             ),
237
    .i_firq                             ( i_firq                            ),
238
    .i_execute_status_bits              ( execute_status_bits               ),
239
    .i_multiply_done                    ( multiply_done                     ),
240
 
241
    .o_status_bits_mode                 ( status_bits_mode                  ),
242
    .o_status_bits_irq_mask             ( status_bits_irq_mask              ),
243
    .o_status_bits_firq_mask            ( status_bits_firq_mask             ),
244
    .o_imm32                            ( imm32                             ),
245
    .o_imm_shift_amount                 ( imm_shift_amount                  ),
246
    .o_shift_imm_zero                   ( shift_imm_zero                    ),
247
    .o_condition                        ( condition                         ),
248
    .o_decode_exclusive                 ( decode_exclusive                  ),
249
    .o_decode_iaccess                   ( decode_iaccess                    ),
250
    .o_decode_daccess                   ( decode_daccess                    ),
251
    .o_rm_sel                           ( rm_sel                            ),
252
    .o_rs_sel                           ( rs_sel                            ),
253
    .o_load_rd                          ( decode_load_rd                    ),
254
    .o_rn_sel                           ( rn_sel                            ),
255
    .o_barrel_shift_amount_sel          ( barrel_shift_amount_sel           ),
256
    .o_barrel_shift_data_sel            ( barrel_shift_data_sel             ),
257
    .o_barrel_shift_function            ( barrel_shift_function             ),
258
    .o_alu_function                     ( alu_function                      ),
259
    .o_multiply_function                ( multiply_function                 ),
260
    .o_interrupt_vector_sel             ( interrupt_vector_sel              ),
261
    .o_iaddress_sel                     ( iaddress_sel                      ),
262
    .o_daddress_sel                     ( daddress_sel                      ),
263
    .o_pc_sel                           ( pc_sel                            ),
264
    .o_byte_enable_sel                  ( byte_enable_sel                   ),
265
    .o_status_bits_sel                  ( status_bits_sel                   ),
266
    .o_reg_write_sel                    ( reg_write_sel                     ),
267
    .o_user_mode_regs_store_nxt         ( user_mode_regs_store_nxt          ),
268
    .o_firq_not_user_mode               ( firq_not_user_mode                ),
269
    .o_write_data_wen                   ( write_data_wen                    ),
270
    .o_base_address_wen                 ( base_address_wen                  ),
271
    .o_pc_wen                           ( pc_wen                            ),
272
    .o_reg_bank_wen                     ( reg_bank_wen                      ),
273
    .o_status_bits_flags_wen            ( status_bits_flags_wen             ),
274
    .o_status_bits_mode_wen             ( status_bits_mode_wen              ),
275
    .o_status_bits_irq_mask_wen         ( status_bits_irq_mask_wen          ),
276
    .o_status_bits_firq_mask_wen        ( status_bits_firq_mask_wen         ),
277
 
278
    .o_copro_opcode1                    ( copro_opcode1                     ),
279
    .o_copro_opcode2                    ( copro_opcode2                     ),
280
    .o_copro_crn                        ( copro_crn                         ),
281
    .o_copro_crm                        ( copro_crm                         ),
282
    .o_copro_num                        ( copro_num                         ),
283
    .o_copro_operation                  ( copro_operation                   ),
284
    .o_copro_write_data_wen             ( copro_write_data_wen              ),
285
 
286
    .o_iabt_trigger                     ( iabt_trigger                      ),
287
    .o_iabt_address                     ( iabt_fault_address                ),
288
    .o_iabt_status                      ( iabt_fault_status                 ),
289
    .o_dabt_trigger                     ( dabt_trigger                      ),
290
    .o_dabt_address                     ( dabt_fault_address                ),
291
    .o_dabt_status                      ( dabt_fault_status                 ),
292
 
293 20 csantifort
    .o_conflict                         ( conflict                          ),
294
    .o_rn_use_read                      ( rn_use_read                       ),
295
    .o_rm_use_read                      ( rm_use_read                       ),
296
    .o_rs_use_read                      ( rs_use_read                       ),
297
    .o_rd_use_read                      ( rd_use_read                       )
298 16 csantifort
);
299
 
300
 
301
// ======================================
302
//  Execute Stage
303
// ======================================
304
a25_execute u_execute (
305
    .i_clk                              ( i_clk                             ),
306
    .i_access_stall                     ( access_stall                      ),
307
    .i_mem_stall                        ( mem_stall                         ),
308
 
309
    .i_wb_read_data                     ( wb_read_data                      ),
310
    .i_wb_read_data_valid               ( wb_read_data_valid                ),
311
    .i_wb_load_rd                       ( wb_load_rd                        ),
312
 
313
    .i_copro_read_data                  ( copro_read_data                   ),
314
 
315
    .o_write_data                       ( write_data                        ),
316
    .o_copro_write_data                 ( copro_write_data                  ),
317
    .o_iaddress                         ( execute_iaddress                  ),
318
    .o_iaddress_valid                   ( execute_iaddress_valid            ),
319
    .o_iaddress_nxt                     ( execute_iaddress_nxt              ),
320
    .o_daddress                         ( execute_daddress                  ),
321
    .o_daddress_nxt                     ( execute_daddress_nxt              ),
322
    .o_daddress_valid                   ( execute_daddress_valid            ),
323
    .o_byte_enable                      ( byte_enable                       ),
324
    .o_write_enable                     ( write_enable                      ),
325
    .o_exclusive                        ( exclusive                         ),
326
    .o_priviledged                      (                                   ),
327
    .o_exec_load_rd                     ( exec_load_rd                      ),
328
 
329
    .o_adex                             ( adex                              ),
330
    .o_status_bits                      ( execute_status_bits               ),
331
    .o_multiply_done                    ( multiply_done                     ),
332
 
333
    .i_status_bits_mode                 ( status_bits_mode                  ),
334
    .i_status_bits_irq_mask             ( status_bits_irq_mask              ),
335
    .i_status_bits_firq_mask            ( status_bits_firq_mask             ),
336
    .i_imm32                            ( imm32                             ),
337
    .i_imm_shift_amount                 ( imm_shift_amount                  ),
338
    .i_shift_imm_zero                   ( shift_imm_zero                    ),
339
    .i_condition                        ( condition                         ),
340
    .i_decode_exclusive                 ( decode_exclusive                  ),
341
    .i_decode_iaccess                   ( decode_iaccess                    ),
342
    .i_decode_daccess                   ( decode_daccess                    ),
343
    .i_rm_sel                           ( rm_sel                            ),
344
    .i_rs_sel                           ( rs_sel                            ),
345
    .i_decode_load_rd                   ( decode_load_rd                    ),
346
    .i_rn_sel                           ( rn_sel                            ),
347
    .i_barrel_shift_amount_sel          ( barrel_shift_amount_sel           ),
348
    .i_barrel_shift_data_sel            ( barrel_shift_data_sel             ),
349
    .i_barrel_shift_function            ( barrel_shift_function             ),
350
    .i_alu_function                     ( alu_function                      ),
351
    .i_multiply_function                ( multiply_function                 ),
352
    .i_interrupt_vector_sel             ( interrupt_vector_sel              ),
353
    .i_iaddress_sel                     ( iaddress_sel                      ),
354
    .i_daddress_sel                     ( daddress_sel                      ),
355
    .i_pc_sel                           ( pc_sel                            ),
356
    .i_byte_enable_sel                  ( byte_enable_sel                   ),
357
    .i_status_bits_sel                  ( status_bits_sel                   ),
358
    .i_reg_write_sel                    ( reg_write_sel                     ),
359
    .i_user_mode_regs_store_nxt         ( user_mode_regs_store_nxt          ),
360
    .i_firq_not_user_mode               ( firq_not_user_mode                ),
361
    .i_write_data_wen                   ( write_data_wen                    ),
362
    .i_base_address_wen                 ( base_address_wen                  ),
363
    .i_pc_wen                           ( pc_wen                            ),
364
    .i_reg_bank_wen                     ( reg_bank_wen                      ),
365
    .i_status_bits_flags_wen            ( status_bits_flags_wen             ),
366
    .i_status_bits_mode_wen             ( status_bits_mode_wen              ),
367
    .i_status_bits_irq_mask_wen         ( status_bits_irq_mask_wen          ),
368
    .i_status_bits_firq_mask_wen        ( status_bits_firq_mask_wen         ),
369
    .i_copro_write_data_wen             ( copro_write_data_wen              ),
370 20 csantifort
    .i_conflict                         ( conflict                          ),
371
    .i_rn_use_read                      ( rn_use_read                       ),
372
    .i_rm_use_read                      ( rm_use_read                       ),
373
    .i_rs_use_read                      ( rs_use_read                       ),
374
    .i_rd_use_read                      ( rd_use_read                       )
375 16 csantifort
);
376
 
377
 
378
// ======================================
379
//  Memory access stage with data cache
380
// ======================================
381
a25_mem u_mem (
382
    .i_clk                              ( i_clk                             ),
383
    .i_fetch_stall                      ( fetch_stall                       ),
384
    .o_mem_stall                        ( mem_stall                         ),
385
 
386
    .i_daddress                         ( execute_daddress                  ),
387
    .i_daddress_valid                   ( execute_daddress_valid            ),
388
    .i_daddress_nxt                     ( execute_daddress_nxt              ),
389
    .i_write_data                       ( write_data                        ),
390
    .i_write_enable                     ( write_enable                      ),
391
    .i_byte_enable                      ( byte_enable                       ),
392
    .i_exclusive                        ( exclusive                         ),
393
    .i_exec_load_rd                     ( exec_load_rd                      ),
394
 
395
    .o_mem_read_data                    ( mem_read_data                     ),
396
    .o_mem_read_data_valid              ( mem_read_data_valid               ),
397
    .o_mem_load_rd                      ( mem_load_rd                       ),
398
 
399
    .i_cache_enable                     ( cache_enable                      ),
400
    .i_cache_flush                      ( cache_flush                       ),
401
    .i_cacheable_area                   ( cacheable_area                    ),
402
 
403
    .o_wb_cached_req                    ( dcache_wb_cached_req              ),
404
    .o_wb_uncached_req                  ( dcache_wb_uncached_req            ),
405
    .o_wb_qword                         ( dcache_wb_qword                   ),
406
    .o_wb_write                         ( dcache_wb_write                   ),
407
    .o_wb_write_data                    ( dcache_wb_write_data              ),
408
    .o_wb_byte_enable                   ( dcache_wb_byte_enable             ),
409
    .o_wb_address                       ( dcache_wb_address                 ),
410
    .i_wb_read_data                     ( dcache_wb_read_data               ),
411
    .i_wb_cached_ready                  ( dcache_wb_cached_ready            ),
412
    .i_wb_uncached_ready                ( dcache_wb_uncached_ready          )
413
);
414
 
415
 
416
// ======================================
417
//  Write back stage with data cache
418
// ======================================
419
a25_write_back u_write_back (
420
    .i_clk                              ( i_clk                             ),
421
    .i_mem_stall                        ( mem_stall                         ),
422
 
423
    .i_daddress                         ( execute_daddress                  ),
424
    .i_daddress_valid                   ( execute_daddress_valid            ),
425
 
426
    .i_mem_read_data                    ( mem_read_data                     ),
427
    .i_mem_read_data_valid              ( mem_read_data_valid               ),
428
    .i_mem_load_rd                      ( mem_load_rd                       ),
429
 
430
    .o_wb_read_data                     ( wb_read_data                      ),
431
    .o_wb_read_data_valid               ( wb_read_data_valid                ),
432
    .o_wb_load_rd                       ( wb_load_rd                        )
433
);
434
 
435
 
436
 
437
// ======================================
438
//  Wishbone Master I/F
439
// ======================================
440
a25_wishbone u_wishbone (
441
    // CPU Side
442
    .i_clk                              ( i_clk                             ),
443
 
444
    // Instruction Cache Accesses
445
    .i_icache_req                       ( icache_wb_req                     ),
446
    .i_icache_qword                     ( icache_wb_qword                   ),
447
    .i_icache_address                   ( icache_wb_address                 ),
448
    .o_icache_read_data                 ( icache_wb_read_data               ),
449
    .o_icache_ready                     ( icache_wb_ready                   ),
450
 
451
    // Data Cache Accesses 
452
    .i_exclusive                        ( exclusive                         ),
453
    .i_dcache_cached_req                ( dcache_wb_cached_req              ),
454
    .i_dcache_uncached_req              ( dcache_wb_uncached_req            ),
455
    .i_dcache_qword                     ( dcache_wb_qword                   ),
456
    .i_dcache_write                     ( dcache_wb_write                   ),
457
    .i_dcache_write_data                ( dcache_wb_write_data              ),
458
    .i_dcache_byte_enable               ( dcache_wb_byte_enable             ),
459
    .i_dcache_address                   ( dcache_wb_address                 ),
460
    .o_dcache_read_data                 ( dcache_wb_read_data               ),
461
    .o_dcache_cached_ready              ( dcache_wb_cached_ready            ),
462
    .o_dcache_uncached_ready            ( dcache_wb_uncached_ready          ),
463
 
464
    .o_wb_adr                           ( o_wb_adr                          ),
465
    .o_wb_sel                           ( o_wb_sel                          ),
466
    .o_wb_we                            ( o_wb_we                           ),
467
    .i_wb_dat                           ( i_wb_dat                          ),
468
    .o_wb_dat                           ( o_wb_dat                          ),
469
    .o_wb_cyc                           ( o_wb_cyc                          ),
470
    .o_wb_stb                           ( o_wb_stb                          ),
471
    .i_wb_ack                           ( i_wb_ack                          ),
472
    .i_wb_err                           ( i_wb_err                          )
473
);
474
 
475
 
476
 
477
// ======================================
478
//  Co-Processor #15
479
// ======================================
480
a25_coprocessor u_coprocessor (
481
    .i_clk                              ( i_clk                             ),
482
    .i_access_stall                     ( access_stall                      ),
483
 
484
    .i_copro_opcode1                    ( copro_opcode1                     ),
485
    .i_copro_opcode2                    ( copro_opcode2                     ),
486
    .i_copro_crn                        ( copro_crn                         ),
487
    .i_copro_crm                        ( copro_crm                         ),
488
    .i_copro_num                        ( copro_num                         ),
489
    .i_copro_operation                  ( copro_operation                   ),
490
    .i_copro_write_data                 ( copro_write_data                  ),
491
 
492
    .i_fault                            ( decode_fault                      ),
493
    .i_fault_status                     ( decode_fault_status               ),
494
    .i_fault_address                    ( decode_fault_address              ),
495
 
496
    .o_copro_read_data                  ( copro_read_data                   ),
497
    .o_cache_enable                     ( cache_enable                      ),
498
    .o_cache_flush                      ( cache_flush                       ),
499
    .o_cacheable_area                   ( cacheable_area                    )
500
);
501
 
502
 
503
endmodule
504
 

powered by: WebSVN 2.1.0

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