📄 armcache.vhd
字号:
-- $(lic)
-- $(help_generic)
-- $(help_local)
library ieee;
use ieee.std_logic_1164.all;
use work.amba.all;
use work.bus_comp.all;
use work.corelib.all;
use work.cache_comp.all;
use work.genic_lib.all;
use work.gendc_lib.all;
use work.cache_comp.all;
use work.bus_comp.all;
entity armcache is
port (
rst : in std_logic;
clk : in std_logic;
hold : in cli_hold;
ici : in genic_type_in;
ico : out genic_type_out;
dci : in gendc_type_in;
dco : out gendc_type_out;
ahbi : in ahb_mst_in_type;
ahbo : out ahb_mst_out_type;
apbi : in apb_slv_in_type;
apbo : out apb_slv_out_type
);
end armcache;
architecture rtl of armcache is
type armcache_tmp_type is record
dummy : std_logic;
end record;
type armcache_reg_type is record
genic_ctrl : gicl_ctrl;
gendc_ctrl : gdcl_ctrl;
end record;
type armcache_dbg_type is record
dummy : std_logic;
-- pragma translate_off
dbg : armcache_tmp_type;
-- pragma translate_on
end record;
signal r, c : armcache_reg_type;
signal rdbg, cdbg : armcache_dbg_type;
signal mi : ahbmst_mp_in_a(1 downto 0);
signal mo : ahbmst_mp_out_a(1 downto 0);
signal genic_i : genic_type_in;
signal genic_o : genic_type_out;
signal genic_ctrl : gicl_ctrl;
signal genic_icmo : gencmem_type_ic_out;
signal genic_icmi : gencmem_type_ic_in;
signal genic_mcio : ahbmst_mp_out;
signal genic_mcii : ahbmst_mp_in;
signal gendc_i : gendc_type_in;
signal gendc_o : gendc_type_out;
signal gendc_ctrl : gdcl_ctrl;
signal gendc_dcmo : gencmem_type_dc_out;
signal gendc_dcmi : gencmem_type_dc_in;
signal gendc_wbi : genwb_type_in;
signal gendc_wbo : genwb_type_out;
signal genwb_i : genwb_type_in;
signal genwb_o : genwb_type_out;
signal genwb_mcwbo : ahbmst_mp_out;
signal genwb_mcwbi : ahbmst_mp_in;
signal gencmem_i : gencmem_type_in;
signal gencmem_o : gencmem_type_out;
begin
p0: process (clk, rst, r, apbi )
variable v : armcache_reg_type;
variable t : armcache_tmp_type;
variable vdbg : armcache_dbg_type;
begin
-- $(init(t:armcache_tmp_type))
v := r;
-- reset
if ( rst = '0' ) then
v.genic_ctrl.burst := '0';
v.gendc_ctrl.writeback := '0';
v.gendc_ctrl.allocateonstore := '0';
end if;
c <= v;
genic_ctrl <= r.genic_ctrl;
gendc_ctrl <= r.gendc_ctrl;
-- pragma translate_off
vdbg := rdbg;
vdbg.dbg := t;
cdbg <= vdbg;
-- pragma translate_on
end process p0;
pregs : process (clk, c)
begin
if rising_edge(clk) then
r <= c;
-- pragma translate_off
rdbg <= cdbg;
-- pragma translate_on
end if;
end process;
ic0: genic port map ( rst, clk, hold, genic_i, genic_o, genic_ctrl, genic_icmo, genic_icmi,
genic_mcio, genic_mcii );
genic_i <= ici;
ico <= genic_o;
genic_mcio <= mo(0);
mi(0) <= genic_mcii;
dc0: gendc port map ( rst, clk, hold, gendc_i, gendc_o, gendc_ctrl, gendc_dcmo, gendc_dcmi,
gendc_wbi, gendc_wbo );
gendc_i <= dci;
dco <= gendc_o;
wb0: genwb port map ( rst, clk, genwb_i, genwb_o, genwb_mcwbo, genwb_mcwbi );
genwb_i <= gendc_wbi;
gendc_wbo <= genwb_o;
genwb_mcwbo <= mo(1);
mi(1) <= genwb_mcwbi;
cm0: gencmem port map ( rst, clk, gencmem_i, gencmem_o);
gencmem_i.ic <= genic_icmi;
genic_icmo <= gencmem_o.ic;
gencmem_i.dc <= gendc_dcmi;
gendc_dcmo <= gencmem_o.dc;
ahbmast0: ahbmst_mp generic map ( AHBMST_PORTS => 2)
port map ( rst, clk, mi, mo, ahbi, ahbo );
end rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -