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

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [vhdl/] [sparc/] [mmu_cache.vhd] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
 
2
 
3
 
4
 
5
----------------------------------------------------------------------------
6
--  This file is a part of the LEON VHDL model
7
--  Copyright (C) 2003  Gaisler Research
8
--
9
--  This library is free software; you can redistribute it and/or
10
--  modify it under the terms of the GNU Lesser General Public
11
--  License as published by the Free Software Foundation; either
12
--  version 2 of the License, or (at your option) any later version.
13
--
14
--  See the file COPYING.LGPL for the full details of the license.
15
 
16
 
17
-----------------------------------------------------------------------------
18
-- Entity:      cache
19
-- File:        cache.vhd
20
-- Author:      Jiri Gaisler - Gaisler Research
21
-- Description: Complete cache sub-system with controllers and rams
22
------------------------------------------------------------------------------
23
 
24
library IEEE;
25
use IEEE.std_logic_1164.all;
26
use work.leon_config.all;
27
use work.amba.all;
28
use work.leon_iface.all;
29
use work.mmuconfig.all;
30
 
31
entity mmu_cache is
32
  port (
33
    rst   : in  std_logic;
34
    clk   : in  clk_type;
35
    ici   : in  icache_in_type;
36
    ico   : out icache_out_type;
37
    dci   : in  dcache_in_type;
38
    dco   : out dcache_out_type;
39
    iuo   : in  iu_out_type;
40
    apbi  : in  apb_slv_in_type;
41
    apbo  : out apb_slv_out_type;
42
    ahbi  : in  ahb_mst_in_type;
43
    ahbo  : out ahb_mst_out_type;
44
    ahbsi : in  ahb_slv_in_type;
45
    crami : out cram_in_type;
46
    cramo : in  cram_out_type;
47
    fpuholdn : in  std_logic
48
  );
49
end;
50
 
51
architecture rtl of mmu_cache is
52
 
53
component mmu_acache
54
  port (
55
    rst    : in  std_logic;
56
    clk    : in  clk_type;
57
    mcii   : in  memory_ic_in_type;
58
    mcio   : out memory_ic_out_type;
59
    mcdi   : in  memory_dc_in_type;
60
    mcdo   : out memory_dc_out_type;
61
    mcmmi  : in  memory_mm_in_type;
62
    mcmmo  : out memory_mm_out_type;
63
    iuo    : in  iu_out_type;
64
    apbi   : in  apb_slv_in_type;
65
    apbo   : out apb_slv_out_type;
66
    ahbi   : in  ahb_mst_in_type;
67
    ahbo   : out ahb_mst_out_type
68
  );
69
end component;
70
 
71
component mmu_dcache
72
  port (
73
    rst    : in  std_logic;
74
    clk    : in  clk_type;
75
    dci    : in  dcache_in_type;
76
    dco    : out dcache_out_type;
77
    ico    : in  icache_out_type;
78
    mcdi   : out memory_dc_in_type;
79
    mcdo   : in  memory_dc_out_type;
80
    ahbsi : in  ahb_slv_in_type;
81
    dcrami : out dcram_in_type;
82
    dcramo : in  dcram_out_type;
83
    fpuholdn : in  std_logic;
84
    mmudci : out mmudc_in_type;
85
    mmudco : in mmudc_out_type
86
);
87
end component;
88
 
89
component mmu_icache
90
  port (
91
    rst    : in  std_logic;
92
    clk    : in  clk_type;
93
    ici    : in  icache_in_type;
94
    ico    : out icache_out_type;
95
    dci    : in  dcache_in_type;
96
    dco    : in  dcache_out_type;
97
    mcii   : out memory_ic_in_type;
98
    mcio   : in  memory_ic_out_type;
99
    icrami : out icram_in_type;
100
    icramo : in  icram_out_type;
101
    fpuholdn : in  std_logic;
102
    mmudci : in  mmudc_in_type;
103
    mmuici : out mmuic_in_type;
104
    mmuico : in mmuic_out_type
105
);
106
end component;
107
 
108
component mmu
109
  port (
110
    rst  : in std_logic;
111
    clk  : in clk_type;
112
 
113
    mmudci : in mmudc_in_type;
114
    mmudco : out mmudc_out_type;
115
    mmuici : in mmuic_in_type;
116
    mmuico : out mmuic_out_type;
117
 
118
    mcmmo  : in  memory_mm_out_type;
119
    mcmmi  : out memory_mm_in_type
120
    );
121
end component;
122
 
123
signal dcol : dcache_out_type;
124
signal mcdi : memory_dc_in_type;
125
signal mcdo : memory_dc_out_type;
126
signal icol : icache_out_type;
127
signal mcii : memory_ic_in_type;
128
signal mcio : memory_ic_out_type;
129
 
130
signal mcmmi  : memory_mm_in_type;
131
signal mcmmo  : memory_mm_out_type;
132
signal mmudci : mmudc_in_type;
133
signal mmudco : mmudc_out_type;
134
signal mmuici : mmuic_in_type;
135
signal mmuico : mmuic_out_type;
136
 
137
begin
138
 
139
-- instruction cache controller
140
  icache0 : mmu_icache port map ( rst, clk, ici, icol, dci, dcol, mcii, mcio,
141
                              crami.icramin, cramo.icramout, fpuholdn,
142
                              mmudci, mmuici, mmuico);
143
 
144
-- data cache controller
145
  dcache0 : mmu_dcache port map ( rst, clk, dci, dcol, icol, mcdi, mcdo, ahbsi,
146
                              crami.dcramin, cramo.dcramout, fpuholdn,
147
                              mmudci, mmudco);
148
 
149
-- AMBA AHB interface
150
  a0 : mmu_acache port map (rst, clk, mcii, mcio, mcdi, mcdo, mcmmi, mcmmo,
151
                        iuo, apbi, apbo, ahbi, ahbo);
152
 
153
-- MMU
154
    m0: mmu port map (rst, clk, mmudci, mmudco, mmuici, mmuico, mcmmo, mcmmi);
155
 
156
  ico <= icol;
157
  dco <= dcol;
158
 
159
end ;
160
 

powered by: WebSVN 2.1.0

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