📄 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 + -