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

Subversion Repositories minimips_superscalar

[/] [minimips_superscalar/] [trunk/] [sources/] [pack_mips.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mcafruni
-------------------------------------------------------------------------------
2
--                                                                           --
3
--                                                                           --
4
-- miniMIPS Superscalar Processor : Enumerations and components declarations --
5
-- based on miniMIPS Processor                                               --
6
--                                                                           --
7
--                                                                           --
8
-- Author : Miguel Cafruni                                                   --
9
-- miguel_cafruni@hotmail.com                                                --
10
--                                                           December 2018   --
11
-------------------------------------------------------------------------------
12
 
13
 
14
library ieee;
15
use ieee.std_logic_1164.all;
16
 
17
package pack_mips is
18
 
19
    -- Type signal on n bits
20
    subtype bus64 is std_logic_vector(63 downto 0);
21
    subtype bus33 is std_logic_vector(32 downto 0);
22
    subtype bus32 is std_logic_vector(31 downto 0);
23
    subtype bus31 is std_logic_vector(30 downto 0);
24
    subtype bus26 is std_logic_vector(25 downto 0);
25
    subtype bus24 is std_logic_vector(23 downto 0);
26
    subtype bus16 is std_logic_vector(15 downto 0);
27
    subtype bus8 is std_logic_vector(7 downto 0);
28
    subtype bus7 is std_logic_vector(6 downto 0);
29
    subtype bus6 is std_logic_vector(5 downto 0);
30
    subtype bus5 is std_logic_vector(4 downto 0);
31
    subtype bus4 is std_logic_vector(3 downto 0);
32
    subtype bus2 is std_logic_vector(1 downto 0);
33
    subtype bus1 is std_logic;
34
 
35
    -- Address of a register type
36
    subtype adr_reg_type is std_logic_vector(5 downto 0);
37
 
38
    -- Coding of the level of data availability for UR
39
    subtype level_type is std_logic_vector(2 downto 0);
40
    constant LVL_DI2  : level_type := "110";  -- Data available from the op2 of DI2 stage
41
    constant LVL_EX2  : level_type := "101";  -- Data available from the data_ual register of EX2 stage
42
    constant LVL_MEM2 : level_type := "100";  -- Data available from the data_ecr register of MEM2 stage
43
    constant LVL_DI   : level_type := "011";  -- Data available from the op2 of DI stage
44
    constant LVL_EX   : level_type := "010";  -- Data available from the data_ual register of EX stage
45
    constant LVL_MEM  : level_type := "001";  -- Data available from the data_ecr register of MEM stage
46
    constant LVL_REG  : level_type := "000";  -- Data available only in the register bank
47
 
48
    -- Different values of cause exceptions
49
    constant IT_NOEXC : bus32 := X"00000000";
50
    constant IT_ITMAT : bus32 := X"00000001";
51
    constant IT_OVERF : bus32 := X"00000002";
52
    constant IT_ERINS : bus32 := X"00000004";
53
    constant IT_BREAK : bus32 := X"00000008";
54
    constant IT_SCALL : bus32 := X"00000010";
55
 
56
 
57
    -- Operation type of the coprocessor system (only the low 16 bits are valid)
58
    constant SYS_NOP    : bus32 := X"0000_0000";
59
    constant SYS_MASK   : bus32 := X"0000_0001";
60
    constant SYS_UNMASK : bus32 := X"0000_0002";
61
    constant SYS_ITRET  : bus32 := X"0000_0004";
62
 
63
    -- Type for the alu control
64
    subtype alu_ctrl_type is std_logic_vector(27 downto 0);
65
 
66
    -- Arithmetical operations
67
    constant OP_ADD   : alu_ctrl_type := "1000000000000000000000000000"; -- op1 + op2 sign‰
68
    constant OP_ADDU  : alu_ctrl_type := "0100000000000000000000000000"; -- op1 + op2 non sign‰
69
    constant OP_SUB   : alu_ctrl_type := "0010000000000000000000000000"; -- op1 - op2 sign‰
70
    constant OP_SUBU  : alu_ctrl_type := "0001000000000000000000000000"; -- op1 - op2 non sign‰e
71
    -- Logical operations
72
    constant OP_AND   : alu_ctrl_type := "0000100000000000000000000000"; -- et logique
73
    constant OP_OR    : alu_ctrl_type := "0000010000000000000000000000"; -- ou logique
74
    constant OP_XOR   : alu_ctrl_type := "0000001000000000000000000000"; -- ou exclusif logique
75
    constant OP_NOR   : alu_ctrl_type := "0000000100000000000000000000"; -- non ou logique
76
    -- Tests : result to one if ok
77
    constant OP_SLT   : alu_ctrl_type := "0000000010000000000000000000"; -- op1 < op2 (sign‰)
78
    constant OP_SLTU  : alu_ctrl_type := "0000000001000000000000000000"; -- op1 < op2 (non sign‰)
79
    constant OP_EQU   : alu_ctrl_type := "0000000000100000000000000000"; -- op1 = op2
80
    constant OP_NEQU  : alu_ctrl_type := "0000000000010000000000000000"; -- op1 /= op2
81
    constant OP_SNEG  : alu_ctrl_type := "0000000000001000000000000000"; -- op1 < 0
82
    constant OP_SPOS  : alu_ctrl_type := "0000000000000100000000000000"; -- op1 > 0
83
    constant OP_LNEG  : alu_ctrl_type := "0000000000000010000000000000"; -- op1 <= 0
84
    constant OP_LPOS  : alu_ctrl_type := "0000000000000001000000000000"; -- op1 >= 0
85
    -- Multiplications
86
    constant OP_MULT  : alu_ctrl_type := "0000000000000000100000000000"; -- op1 * op2 sign‰ (chargement des poids faibles)
87
    constant OP_MULT2 : alu_ctrl_type := "0000000000000000000000000000"; -- op1 * op2 sign - MULT2 25.05.18 - Miguel
88
    constant OP_MULTU : alu_ctrl_type := "0000000000000000010000000000"; -- op1 * op2 non sign‰ (chargement des poids faibles)
89
    -- Shifts
90
    constant OP_SLL   : alu_ctrl_type := "0000000000000000001000000000"; -- decallage logique a gauche
91
    constant OP_SRL   : alu_ctrl_type := "0000000000000000000100000000"; -- decallage logique a droite
92
    constant OP_SRA   : alu_ctrl_type := "0000000000000000000010000000"; -- decallage arithmetique a droite
93
    constant OP_LUI   : alu_ctrl_type := "0000000000000000000001000000"; -- met en poids fort la valeur immediate
94
    -- Access to internal registers
95
    constant OP_MFHI  : alu_ctrl_type := "0000000000000000000000100000"; -- lecture des poids forts
96
    constant OP_MFLO  : alu_ctrl_type := "0000000000000000000000010000"; -- lecture des poids faibles
97
    constant OP_MTHI  : alu_ctrl_type := "0000000000000000000000001000"; -- ecriture des poids forts
98
    constant OP_MTLO  : alu_ctrl_type := "0000000000000000000000000100"; -- ecriture des poids faibles
99
    -- Operations which do nothing but are useful
100
    constant OP_OUI   : alu_ctrl_type := "0000000000000000000000000010"; -- met a 1 le bit de poids faible en sortie
101
    constant OP_OP2   : alu_ctrl_type := "0000000000000000000000000001"; -- recopie l'operande 2 en sortie
102
 
103
 
104
 
105
    -- Starting boot address (after reset)
106
    constant ADR_INIT : bus32 := X"00000000";
107
    constant ADR_INIT4 : bus32 := X"00000004";
108
    constant INS_NOP : bus32 := X"00000000";
109
 
110
    constant zero : bus1 := '0';
111
    -- Internal component of the pipeline stage
112
 
113
    component alu
114
    port (
115
        clock : in bus1;
116
        reset : in bus1;
117
        op1 : in bus32;
118
        op2 : in bus32;
119
        ctrl : in alu_ctrl_type;
120
        hilo_p2 : in bus64;
121
        hilo_p1p2 : out bus64;
122
        res : out bus32;
123
        overflow : out bus1
124
    );
125
    end component;
126
 
127
    component alu2
128
    port (
129
        clock : in bus1;
130
        reset : in bus1;
131
        op1 : in bus32;
132
        op2 : in bus32;
133
        ctrl : in alu_ctrl_type;
134
        hilo_p1 : in bus64;
135
        hilo_p2p1 : out bus64;
136
        res : out bus32;
137
        overflow : out bus1
138
    );
139
    end component;
140
 
141
    -- Pipeline stage components
142
 
143
    component pps_pf
144
    port (
145
        clock    : in bus1;
146
        clock2    : in bus1;
147
        reset    : in bus1;
148
        stop_all : in bus1;
149
        stop_all2: in bus1;
150
 
151
        bra_cmd : in bus1;
152
        bra_adr  : in bus32;
153
        exch_cmd : in bus1;
154
        exch_adr : in bus32;
155
 
156
        bra_cmd2 : in bus1;
157
        bra_adr2  : in bus32;
158
        exch_cmd2 : in bus1;
159
        exch_adr2 : in bus32;
160
 
161
        stop_pf  : in bus1;
162
        stop_pf2  : in bus1;
163
        PF_pc    : out bus32;
164
        PF_pc_4  : out bus32
165
    );
166
    end component;
167
 
168
    component clock_gate
169
    port (
170
        clock_in1   : in bus1;
171
        clock_in2   : in bus1;
172
        clock_out1  : out bus1;
173
        clock_out2  : out bus1;
174
        gate1       : in bus1;
175
        gate2       : in bus1
176
    );
177
    end component;
178
 
179
    component delay_gate
180
    port (
181
        clock : in bus1;
182
        in1   : in bus1;
183
        in2   : in bus1;
184
        in3   : in bus1;
185
        in4   : in bus1;
186
        in5   : in bus1;
187
        in6   : in bus1;
188
        in7   : in bus1;
189
        in8   : in bus1;
190
        in9   : in bus1;
191
        in10  : in bus1;
192
        in11  : in bus1;
193
        in12  : in bus1;
194
        out1  : out bus1;
195
        out2  : out bus1;
196
        out3  : out bus1;
197
        out4  : out bus1;
198
        out5  : out bus1;
199
        out6  : out bus1;
200
        out7  : out bus1;
201
        out8  : out bus1;
202
        out9  : out bus1;
203
        out10 : out bus1;
204
        out11 : out bus1;
205
        out12 : out bus1
206
    );
207
    end component;
208
 
209
    component pps_ei
210
    port (
211
        clock : in bus1;
212
        reset : in bus1;
213
        clear  : in bus1;
214
        stop_all : in bus1;
215
 
216
        stop_ei : in bus1;
217
        genop : in bus1;
218
 
219
        CTE_instr : in bus32;
220
        ETC_adr : out bus32;
221
 
222
        PF_pc : in bus32;
223
 
224
        EI_instr : out bus32;
225
        EI_adr : out bus32;
226
        EI_it_ok : out bus1
227
    );
228
    end component;
229
 
230
        component pps_ei_2
231
        port (
232
          clock : in bus1;
233
          reset : in bus1;
234
          clear : in bus1;
235
          stop_all2 : in bus1;
236
 
237
          stop_ei : in bus1;
238
          genop : in bus1;
239
 
240
          CTE_instr : in bus32;
241
          ETC_adr : out bus32;
242
 
243
          PF_pc : in bus32;
244
 
245
          EI_instr : out bus32;
246
          EI_adr : out bus32;
247
          EI_it_ok : out bus1
248
        );
249
        end component;
250
 
251
    component pps_di
252
    port (
253
        clock : in bus1;
254
        reset : in bus1;
255
        stop_all : in bus1;
256
        clear : in bus1;
257
 
258
        bra_detect : out bus1;
259
 
260
        adr_reg1 : out adr_reg_type;
261
        adr_reg2 : out adr_reg_type;
262
        use1 : out bus1;
263
        use2 : out bus1;
264
        --iload : out bus1;
265
        istore : out bus1;
266
        stop_di : in bus1;
267
        data1 : in bus32;
268
        data2 : in bus32;
269
 
270
        EI_adr : in bus32;
271
        EI_instr : in bus32;
272
        EI_it_ok : in bus1;
273
 
274
        DI_bra : out bus1;
275
        DI_link : out bus1;
276
        DI_op1 : out bus32;
277
        DI_op2 : out bus32;
278
        DI_code_ual : out alu_ctrl_type;
279
        DI_offset : out bus32;
280
        DI_adr_reg_dest : out adr_reg_type;
281
        DI_ecr_reg : out bus1;
282
        DI_mode : out bus1;
283
        DI_op_mem : out bus1;
284
        DI_r_w : out bus1;
285
        DI_adr : out bus32;
286
        DI_exc_cause : out bus32;
287
        DI_level : out level_type;
288
        DI_it_ok : out bus1
289
        --DI_SRC1 : out adr_reg_type; 
290
        --DI_SRC2 : out adr_reg_type
291
    );
292
    end component;
293
 
294
component pps_di_2
295
port (
296
    clock : in bus1;
297
    reset : in bus1;
298
    stop_all2 : in bus1;
299
    clear : in bus1;
300
 
301
    bra_detect : out bus1;
302
 
303
    adr_reg1 : out adr_reg_type;
304
    adr_reg2 : out adr_reg_type;
305
    use1 : out bus1;
306
    use2 : out bus1;
307
    --iload2 : out bus1;
308
    istore2 : out bus1;
309
    stop_di : in bus1;
310
    data1 : in bus32;
311
    data2 : in bus32;
312
 
313
    EI_adr : in bus32;
314
    EI_instr : in bus32;
315
    EI_it_ok : in bus1;
316
 
317
    DI_bra : out bus1;
318
    DI_link : out bus1;
319
    DI_op1 : out bus32;
320
    DI_op2 : out bus32;
321
    DI_code_ual : out alu_ctrl_type;
322
    DI_offset : out bus32;
323
    DI_adr_reg_dest : out adr_reg_type;
324
    DI_ecr_reg : out bus1;
325
    DI_mode : out bus1;
326
    DI_op_mem : out bus1;
327
    DI_r_w : out bus1;
328
    DI_adr : out bus32;
329
    DI_exc_cause : out bus32;
330
    DI_level : out level_type;
331
    DI_it_ok : out bus1
332
    --DI2_SRC3 : out adr_reg_type;
333
    --DI2_SRC4 : out adr_reg_type
334
);
335
end component;
336
 
337
    component pps_ex
338
    port (
339
        clock : in bus1;
340
        clock2 : in bus1;
341
        reset : in bus1;
342
        stop_all : in bus1;
343
        stop_all2 : in bus1;
344
        clear : in bus1;
345
 
346
        DI_bra : in bus1;
347
        DI_link : in bus1;
348
        DI_op1 : in bus32;
349
        DI_op2 : in bus32;
350
        DI_code_ual : in alu_ctrl_type;
351
        DI_offset : in bus32;
352
        DI_adr_reg_dest : in adr_reg_type;
353
        DI_ecr_reg : in bus1;
354
        DI_mode : in bus1;
355
        DI_op_mem : in bus1;
356
        DI_r_w : in bus1;
357
        DI_adr : in bus32;
358
        DI_exc_cause : in bus32;
359
        DI_level : in level_type;
360
        DI_it_ok : in bus1;
361
        EX2_data_hilo : in bus64;
362
        EX_data_hilo : out bus64;
363
        EX_adr : out bus32;
364
        EX_bra_confirm : out bus1;
365
        EX_data_ual : out bus32;
366
        EX_adresse : out bus32;
367
        EX_adresse_p1p2 : out bus32;
368
        EX_adr_reg_dest : out adr_reg_type;
369
        EX_ecr_reg : out bus1;
370
        EX_op_mem : out bus1;
371
        EX_r_w : out bus1;
372
        EX_exc_cause : out bus32;
373
        EX_level : out level_type;
374
        EX_it_ok : out bus1
375
--        EX_SRC1 : out adr_reg_type;
376
--        EX_SRC2 : out adr_reg_type 
377
 
378
    );
379
    end component;
380
 
381
component pps_ex_2
382
port(
383
    clock : in bus1;
384
    clock2 : in bus1;
385
    reset : in bus1;
386
    stop_all : in bus1;
387
    stop_all2 : in bus1;            -- Unconditionnal locking of outputs
388
    clear : in bus1;               -- Clear the pipeline stage
389
 
390
    -- Datas from DI stage
391
    DI_bra : in bus1;              -- Branch instruction
392
    DI_link : in bus1;             -- Branch with link
393
    DI_op1 : in bus32;                  -- Operand 1 for alu
394
    DI_op2 : in bus32;                  -- Operand 2 for alu
395
    DI_code_ual : in alu_ctrl_type;     -- Alu operation
396
    DI_offset : in bus32;               -- Offset for address calculation
397
    DI_adr_reg_dest : in adr_reg_type;  -- Destination register address for the result
398
    DI_ecr_reg : in bus1;          -- Effective writing of the result
399
    DI_mode : in bus1;             -- Address mode (relative to pc ou index by a register)
400
    DI_op_mem : in bus1;           -- Memory operation
401
    DI_r_w : in bus1;              -- Type of memory operation (read or write)
402
    DI_adr : in bus32;                  -- Instruction address
403
    DI_exc_cause : in bus32;            -- Potential cause exception
404
    DI_level : in level_type;           -- Availability stage of the result for bypassing
405
    DI_it_ok : in bus1;            -- Allow hardware interruptions
406
 
407
    EX_data_hilo : in bus64;--resultado da multiplicacao do pieline 1
408
    EX2_data_hilo : out bus64;
409
    -- Synchronous outputs to MEM stage
410
    EX_adr : out bus32;                 -- Instruction address
411
    EX_bra_confirm : out bus1;     -- Branch execution confirmation
412
    EX_data_ual : out bus32;            -- Ual result
413
    EX_adresse : out bus32;             -- Address calculation result
414
    EX_adresse_p2p1 : out bus32;-- 12-08-2018
415
    EX_adr_reg_dest : out adr_reg_type; -- Destination register for the result
416
    EX_ecr_reg : out bus1;         -- Effective writing of the result
417
    EX_op_mem : out bus1;          -- Memory operation needed
418
    EX_r_w : out bus1;             -- Type of memory operation (read or write)
419
    EX_exc_cause : out bus32;           -- Potential cause exception
420
    EX_level : out level_type;          -- Availability stage of result for bypassing
421
    EX_it_ok : out bus1            -- Allow hardware interruptions
422
);
423
end component;
424
 
425
    component pps_mem
426
    port (
427
        clock : in bus1;
428
                  clock2    : in bus1;
429
        reset : in bus1;
430
        stop_all : in bus1;
431
                  stop_all2 : in bus1;
432
 
433
        clear : in bus1;
434
 
435
        MTC_data : out bus32;
436
        MTC_adr : out bus32;
437
        MTC_r_w : out bus1;
438
        MTC_req : out bus1;
439
        CTM_data : in bus32;
440
 
441
        EX_adr : in bus32;
442
        EX_data_ual : in bus32;
443
        EX_adresse : in bus32;
444
        EX_adresse_p1p2 : in bus32;-- 12-08-2018
445
                  EX_bra_confirm : in bus1;-- Confirmacao do branch no pipe 1 (26-07-18)
446
        EX_adr_reg_dest : in adr_reg_type;
447
        EX_ecr_reg : in bus1;
448
        EX_op_mem : in bus1;
449
        EX_r_w : in bus1;
450
        EX_exc_cause : in bus32;
451
        EX_level : in level_type;
452
        EX_it_ok : in bus1;
453
 
454
        MEM_adr : out bus32;
455
        MEM_adr_reg_dest : out adr_reg_type;
456
        MEM_ecr_reg : out bus1;
457
        MEM_data_ecr : out bus32;
458
        MEM_exc_cause : out bus32;
459
        MEM_level : out level_type;
460
        MEM_it_ok : out bus1;
461
 
462
        -- duplicacao
463
        MTC_data2 : out bus32;
464
        MTC_adr2 : out bus32;
465
        MTC_r_w2 : out bus1;
466
        MTC_req2 : out bus1;
467
        CTM_data2 : in bus32;
468
 
469
        EX_adr2 : in bus32;
470
        EX_data_ual2 : in bus32;
471
        EX_adresse2 : in bus32;
472
        EX_adresse_p2p1 : in bus32;-- 12-08-2018
473
                  EX_bra_confirm2 : in bus1;-- Confirmacao do branch no pipe 2 (26-07-18)
474
        EX_adr_reg_dest2 : in adr_reg_type;
475
        EX_ecr_reg2 : in bus1;
476
        EX_op_mem2 : in bus1;
477
        EX_r_w2 : in bus1;
478
        EX_exc_cause2 : in bus32;
479
        EX_level2 : in level_type;
480
        EX_it_ok2 : in bus1;
481
 
482
        MEM_adr2 : out bus32;
483
        MEM_adr_reg_dest2 : out adr_reg_type;
484
        MEM_ecr_reg2 : out bus1;
485
        MEM_data_ecr2 : out bus32;
486
        MEM_exc_cause2 : out bus32;
487
        MEM_level2 : out level_type;
488
        MEM_it_ok2 : out bus1
489
    );
490
    end component;
491
 
492
 
493
    component renvoi
494
    port (
495
        adr1 : in adr_reg_type;
496
        adr2 : in adr_reg_type;
497
        use1 : in bus1;
498
        use2 : in bus1;
499
 
500
        data1 : out bus32;
501
        data2 : out bus32;
502
        alea : out bus1;
503
 
504
        DI_level : in level_type;
505
        DI_adr : in adr_reg_type;
506
        DI_ecr : in bus1;
507
        DI_data : in bus32;
508
 
509
        EX_level : in level_type;
510
        EX_adr : in adr_reg_type;
511
        EX_ecr : in bus1;
512
        EX_data : in bus32;
513
 
514
        MEM_level : in level_type;
515
        MEM_adr : in adr_reg_type;
516
        MEM_ecr : in bus1;
517
        MEM_data : in bus32;
518
 
519
        interrupt : in bus1;
520
 
521
        write_data : out bus32;
522
        write_adr : out bus5;
523
        write_GPR : out bus1;
524
        write_SCP : out bus1;
525
 
526
        read_adr1 : out bus5;
527
        read_adr2 : out bus5;
528
        read_data1_GPR : in bus32;
529
        read_data1_SCP : in bus32;
530
        read_data2_GPR : in bus32;
531
        read_data2_SCP : in bus32;
532
 
533
                  --duplicacao
534
        adr3 : in adr_reg_type;
535
        adr4 : in adr_reg_type;
536
        use12 : in bus1;
537
        use22 : in bus1;
538
 
539
        data3 : out bus32;
540
        data4 : out bus32;
541
        alea2 : out bus1;
542
 
543
        DI_level2 : in level_type;
544
        DI_adr2 : in adr_reg_type;
545
        DI_ecr2 : in bus1;
546
        DI_data2 : in bus32;
547
 
548
        EX_level2 : in level_type;
549
        EX_adr2 : in adr_reg_type;
550
        EX_ecr2 : in bus1;
551
        EX_data2 : in bus32;
552
 
553
        MEM_level2 : in level_type;
554
        MEM_adr2 : in adr_reg_type;
555
        MEM_ecr2 : in bus1;
556
        MEM_data2 : in bus32;
557
 
558
        write_data2 : out bus32;
559
        write_adr2 : out bus5;
560
        write_GPR2 : out bus1;
561
        --write_SCP2 : out bus1;
562
 
563
        read_adr3 : out bus5;
564
        read_adr4 : out bus5;
565
        read_data3_GPR : in bus32;
566
        read_data3_SCP : in bus32;
567
        read_data4_GPR : in bus32;
568
        read_data4_SCP : in bus32
569
    );
570
    end component;
571
 
572
 
573
    component banc
574
    port (
575
        clock : in bus1;
576
        clock2    : in bus1;
577
        reset : bus1;
578
 
579
        reg_src1 : in bus5;
580
        reg_src2 : in bus5;
581
 
582
        reg_dest : in bus5;
583
        donnee   : in bus32;
584
 
585
        cmd_ecr  : in bus1;
586
 
587
        data_src1 : out bus32;
588
        data_src2 : out bus32;
589
 
590
        reg_src3 : in bus5;
591
        reg_src4 : in bus5;
592
 
593
        reg_dest2 : in bus5;
594
        donnee2   : in bus32;
595
 
596
        cmd_ecr2  : in bus1;
597
 
598
        data_src3 : out bus32;
599
        data_src4 : out bus32
600
    );
601
    end component;
602
 
603
 
604
    component bus_ctrl01
605
    port
606
    (
607
        clock : bus1;
608
        reset : bus1;
609
 
610
        interrupt      : in std_logic;
611
 
612
        adr_from_ei    : in bus32;
613
        instr_to_ei    : out bus32;
614
        req_from_mem   : in bus1;
615
        r_w_from_mem   : in bus1;
616
        adr_from_mem   : in bus32;
617
        data_from_mem  : in bus32;
618
        data_to_mem    : out bus32;
619
 
620
        req_to_ram     : out std_logic;
621
        adr_to_ram     : out bus32;
622
        r_w_to_ram     : out bus1;
623
        ack_from_ram   : in bus1;
624
        data_inout_ram : inout bus32;
625
 
626
        stop_all       : out bus1
627
    );
628
    end component;
629
 
630
    component bus_ctrl02
631
    port
632
    (
633
        clock : bus1;
634
        reset : bus1;
635
 
636
        interrupt      : in std_logic;
637
 
638
        adr_from_ei    : in bus32;
639
        instr_to_ei    : out bus32;
640
        req_from_mem   : in bus1;
641
        r_w_from_mem   : in bus1;
642
        adr_from_mem   : in bus32;
643
        data_from_mem  : in bus32;
644
        data_to_mem    : out bus32;
645
 
646
        req_to_ram     : out std_logic;
647
        adr_to_ram     : out bus32;
648
        r_w_to_ram     : out bus1;
649
        ack_from_ram   : in bus1;
650
        data_inout_ram : inout bus32;
651
 
652
        stop_all       : out bus1
653
    );
654
    end component;
655
 
656
    component syscop
657
    port
658
    (
659
        clock         : in bus1;
660
        reset         : in bus1;
661
 
662
        MEM_adr       : in bus32;
663
        MEM_exc_cause : in bus32;
664
        MEM_it_ok     : in bus1;
665
 
666
        it_mat        : in bus1;
667
 
668
        interrupt     : out bus1;
669
        vecteur_it    : out bus32;
670
 
671
        write_data    : in bus32;
672
        write_adr     : in bus5;
673
        write_SCP     : in bus1;
674
 
675
        read_adr1     : in bus5;
676
        read_adr2     : in bus5;
677
        read_data1    : out bus32;
678
        read_data2    : out bus32;
679
--mod
680
        MEM_adr2       : in bus32;
681
        MEM_exc_cause2 : in bus32;
682
        MEM_it_ok2     : in bus1;
683
 
684
        write_data2    : in bus32;
685
        write_adr2     : in bus5;
686
        write_SCP2     : in bus1;
687
 
688
        read_adr3     : in bus5;
689
        read_adr4     : in bus5;
690
        read_data3    : out bus32;
691
        read_data4    : out bus32
692
    );
693
    end component;
694
 
695
 
696
    component minimips
697
    port (
698
        clock    : in bus1;
699
        clock2    : in bus1;
700
        reset    : in bus1;
701
 
702
        ram_req  : out bus1;
703
        ram_adr  : out bus32;
704
        ram_r_w  : out bus1;
705
        ram_data : inout bus32;
706
        ram_ack  : in bus1;
707
 
708
        ram_req2  : out bus1;
709
        ram_adr2  : out bus32;
710
        ram_r_w2  : out bus1;
711
        ram_data2 : inout bus32;
712
        ram_ack2  : in bus1;
713
 
714
        it_mat   : in bus1
715
    );
716
    end component;
717
 
718
end pack_mips;

powered by: WebSVN 2.1.0

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