⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libcache.vhd

📁 leon3 source code 虽然gaisler网站上有下载
💻 VHD
📖 第 1 页 / 共 2 页
字号:
    rst    : in  std_ulogic;    clk    : in  std_ulogic;    mcii   : in  memory_ic_in_type;    mcio   : out memory_ic_out_type;    mcdi   : in  memory_dc_in_type;    mcdo   : out memory_dc_out_type;    ahbi   : in  ahb_mst_in_type;    ahbo   : out ahb_mst_out_type;    ahbso  : in  ahb_slv_out_vector;    hclken : in std_ulogic  );  end component;  component dcache  generic (    dsu       : integer range 0 to 1  := 0;    dcen      : integer range 0 to 1  := 0;    drepl     : integer range 0 to 2  := 0;    dsets     : integer range 1 to 4  := 1;    dlinesize : integer range 4 to 8  := 4;    dsetsize  : integer range 1 to 256 := 1;    dsetlock  : integer range 0 to 1  := 0;    dsnoop    : integer range 0 to 6 := 0;    dlram      : integer range 0 to 1 := 0;    dlramsize  : integer range 1 to 512 := 1;    dlramstart : integer range 0 to 255 := 16#8f#;    ilram      : integer range 0 to 1 := 0;    ilramstart : integer range 0 to 255 := 16#8e#;    memtech    : integer range 0 to NTECH := 0;    cached    : integer := 0);      port (    rst    : in  std_ulogic;    clk    : in  std_ulogic;    dci    : in  dcache_in_type;    dco    : out dcache_out_type;    ico    : in  icache_out_type;    mcdi   : out memory_dc_in_type;    mcdo   : in  memory_dc_out_type;    ahbsi : in  ahb_slv_in_type;    dcrami : out dcram_in_type;    dcramo : in  dcram_out_type;    fpuholdn : in  std_ulogic;    sclk : in std_ulogic  );  end component;   component icache   generic (    icen      : integer range 0 to 1  := 0;    irepl     : integer range 0 to 2  := 0;    isets     : integer range 1 to 4  := 1;    ilinesize : integer range 4 to 8  := 4;    isetsize  : integer range 1 to 256 := 1;    isetlock  : integer range 0 to 1  := 0;    lram      : integer range 0 to 1 := 0;    lramsize  : integer range 1 to 512 := 1;    lramstart : integer range 0 to 255 := 16#8e#);          port (    rst : in  std_ulogic;    clk : in  std_ulogic;    ici : in  icache_in_type;    ico : out icache_out_type;    dci : in  dcache_in_type;    dco : in  dcache_out_type;    mcii : out memory_ic_in_type;    mcio : in  memory_ic_out_type;    icrami : out icram_in_type;    icramo : in  icram_out_type;    fpuholdn : in  std_ulogic);  end component;  component cache  generic (    hindex    : integer              := 0;    dsu       : integer range 0 to 1 := 0;    icen      : integer range 0 to 1  := 0;    irepl     : integer range 0 to 2 := 0;    isets     : integer range 1 to 4 := 1;    ilinesize : integer range 4 to 8 := 4;    isetsize  : integer range 1 to 256:= 1;    isetlock  : integer range 0 to 1 := 0;    dcen      : integer range 0 to 1  := 0;    drepl     : integer range 0 to 2 := 0;    dsets     : integer range 1 to 4 := 1;    dlinesize : integer range 4 to 8 := 4;    dsetsize  : integer range 1 to 256:= 1;    dsetlock  : integer range 0 to 1 := 0;    dsnoop    : integer range 0 to 6 := 0;    ilram      : integer range 0 to 1 := 0;    ilramsize  : integer range 1 to 512 := 1;            ilramstart : integer range 0 to 255 := 16#8e#;    dlram      : integer range 0 to 1 := 0;    dlramsize  : integer range 1 to 512 := 1;            dlramstart : integer range 0 to 255 := 16#8f#;    cached     : integer := 0;    clk2x      : integer := 0;    memtech    : integer range 0 to NTECH := 0;        scantest   : integer := 0);  port (    rst   : in  std_ulogic;    clk   : in  std_ulogic;    ici   : in  icache_in_type;    ico   : out icache_out_type;    dci   : in  dcache_in_type;    dco   : out dcache_out_type;    ahbi  : in  ahb_mst_in_type;    ahbo  : out ahb_mst_out_type;    ahbsi : in  ahb_slv_in_type;    ahbso  : in  ahb_slv_out_vector;            crami : out cram_in_type;    cramo : in  cram_out_type;    fpuholdn : in  std_ulogic;    hclk, sclk : in std_ulogic;    hclken : in std_ulogic  );  end component;   component cachemem   generic (    tech      : integer range 0 to NTECH := 0;    icen      : integer range 0 to 1 := 0;    irepl     : integer range 0 to 2 := 0;    isets     : integer range 1 to 4 := 1;    ilinesize : integer range 4 to 8 := 4;    isetsize  : integer range 1 to 256 := 1;    isetlock  : integer range 0 to 1 := 0;    dcen      : integer range 0 to 1 := 0;    drepl     : integer range 0 to 2 := 0;    dsets     : integer range 1 to 4 := 1;    dlinesize : integer range 4 to 8 := 4;    dsetsize  : integer range 1 to 256 := 1;    dsetlock  : integer range 0 to 1 := 0;    dsnoop    : integer range 0 to 6 := 0;    ilram      : integer range 0 to 1 := 0;    ilramsize  : integer range 1 to 512 := 1;            dlram      : integer range 0 to 1 := 0;    dlramsize  : integer range 1 to 512 := 1;    mmuen     : integer range 0 to 1 := 0  );  port (    	clk   : in  std_ulogic;	crami : in  cram_in_type;	cramo : out cram_out_type;    	sclk  : in  std_ulogic  );  end component;  -- mmu versions  component mmu_acache     generic (      hindex    : integer range 0 to NAHBMST-1  := 0;      ilinesize : integer range 4 to 8 := 4;      cached    : integer := 0;      clk2x     : integer := 0;      scantest : integer := 0);    port (      rst    : in  std_logic;      clk    : in  std_logic;      mcii   : in  memory_ic_in_type;      mcio   : out memory_ic_out_type;      mcdi   : in  memory_dc_in_type;      mcdo   : out memory_dc_out_type;      mcmmi  : in  memory_mm_in_type;      mcmmo  : out memory_mm_out_type;      ahbi   : in  ahb_mst_in_type;      ahbo   : out ahb_mst_out_type;      ahbso  : in  ahb_slv_out_vector;      hclken : in std_ulogic    );  end component;    component mmu_icache     generic (      irepl     : integer range 0 to 2  := 0;      isets     : integer range 1 to 4  := 1;      ilinesize : integer range 4 to 8  := 4;      isetsize  : integer range 1 to 256 := 1;      isetlock  : integer range 0 to 1  := 0    );    port (      rst : in  std_logic;      clk : in  std_logic;      ici : in  icache_in_type;      ico : out icache_out_type;      dci : in  dcache_in_type;      dco : in  dcache_out_type;      mcii : out memory_ic_in_type;      mcio : in  memory_ic_out_type;      icrami : out icram_in_type;      icramo : in  icram_out_type;      fpuholdn : in  std_logic;      mmudci : in  mmudc_in_type;      mmuici : out mmuic_in_type;      mmuico : in mmuic_out_type    );  end component;   component mmu_dcache     generic (      dsu       : integer range 0 to 1  := 0;      drepl     : integer range 0 to 2  := 0;      dsets     : integer range 1 to 4  := 1;      dlinesize : integer range 4 to 8  := 4;      dsetsize  : integer range 1 to 256 := 1;      dsetlock  : integer range 0 to 1  := 0;      dsnoop    : integer range 0 to 6 := 0;      itlbnum   : integer range 2 to 64 := 8;      dtlbnum   : integer range 2 to 64 := 8;      tlb_type  : integer range 0 to 3 := 1;      memtech   : integer range 0 to NTECH := 0;          cached    : integer := 0);        port (      rst : in  std_logic;      clk : in  std_logic;      dci : in  dcache_in_type;      dco : out dcache_out_type;      ico : in  icache_out_type;      mcdi : out memory_dc_in_type;      mcdo : in  memory_dc_out_type;      ahbsi : in  ahb_slv_in_type;      dcrami : out dcram_in_type;      dcramo : in  dcram_out_type;      fpuholdn : in  std_logic;      mmudci : out mmudc_in_type;      mmudco : in mmudc_out_type;      sclk : in std_ulogic        );  end component;     component mmu_cache     generic (      hindex    : integer              := 0;      memtech   : integer range 0 to NTECH := 0;      dsu       : integer range 0 to 1 := 0;      icen      : integer range 0 to 1 := 0;      irepl     : integer range 0 to 2 := 0;      isets     : integer range 1 to 4 := 1;      ilinesize : integer range 4 to 8 := 4;      isetsize  : integer range 1 to 256 := 1;      isetlock  : integer range 0 to 1 := 0;      dcen      : integer range 0 to 1 := 0;      drepl     : integer range 0 to 2 := 0;      dsets     : integer range 1 to 4 := 1;      dlinesize : integer range 4 to 8 := 4;      dsetsize  : integer range 1 to 256 := 1;      dsetlock  : integer range 0 to 1 := 0;      dsnoop    : integer range 0 to 6 := 0;      itlbnum   : integer range 2 to 64 := 8;      dtlbnum   : integer range 2 to 64 := 8;      tlb_type  : integer range 0 to 3 := 1;      tlb_rep   : integer range 0 to 1 := 0;      cached    : integer := 0;      clk2x     : integer := 0;      scantest   : integer := 0);    port (      rst   : in  std_ulogic;      clk   : in  std_ulogic;      ici   : in  icache_in_type;      ico   : out icache_out_type;      dci   : in  dcache_in_type;      dco   : out dcache_out_type;      ahbi  : in  ahb_mst_in_type;      ahbo  : out ahb_mst_out_type;      ahbsi : in  ahb_slv_in_type;      ahbso : in  ahb_slv_out_vector;                    crami : out cram_in_type;      cramo : in  cram_out_type;      fpuholdn : in  std_ulogic;      hclk, sclk : in std_ulogic;      hclken : in std_ulogic          );  end component;   component clk2xqual   port (    rst   : in std_ulogic;    clk   : in std_ulogic;    clk2  : in std_ulogic;    clken : out std_ulogic);  end component;    component clk2xsync   generic (hindex : integer := 0;           clk2x  : integer := 1);  port (    rst    : in  std_ulogic;    hclk   : in  std_ulogic;    clk    : in  std_ulogic;    ahbi   : in  ahb_mst_in_type;    ahbi2  : out ahb_mst_in_type;    ahbo   : in  ahb_mst_out_type;    ahbo2  : out ahb_mst_out_type;        ahbsi  : in  ahb_slv_in_type;    ahbsi2 : out ahb_slv_in_type;    mcii   : in memory_ic_in_type;    mcdi   : in memory_dc_in_type;    mcdo   : in memory_dc_out_type;    mmreq  : in std_ulogic;    mmgrant: in std_ulogic;        hclken : in std_ulogic    );  end component;    function cache_cfg(repl, sets, linesize, setsize, lock, snoop,    lram, lramsize, lramstart, mmuen : integer) return std_logic_vector;end;package body libcache is  function cache_cfg(repl, sets, linesize, setsize, lock, snoop,      lram, lramsize, lramstart, mmuen : integer) return std_logic_vector is   variable cfg : std_logic_vector(31 downto 0);  begin    cfg := (others => '0');    cfg(31 downto 31) := conv_std_logic_vector(lock, 1);    cfg(30 downto 28) := conv_std_logic_vector(repl+1, 3);    if snoop /= 0 then cfg(27) := '1'; end if;    --cfg(27 downto 27) := conv_std_logic_vector(snoop, 1);    cfg(26 downto 24) := conv_std_logic_vector(sets-1, 3);    cfg(23 downto 20) := conv_std_logic_vector(log2(setsize), 4);    cfg(19 downto 19) := conv_std_logic_vector(lram, 1);    cfg(18 downto 16) := conv_std_logic_vector(log2(linesize), 3);    cfg(15 downto 12) := conv_std_logic_vector(log2(lramsize), 4);    cfg(11 downto  4) := conv_std_logic_vector(lramstart, 8);    cfg(3  downto  3) := conv_std_logic_vector(mmuen, 1);    return(cfg);  end;end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -