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

📄 libiu.vhd

📁 leon3 source code 虽然gaisler网站上有下载
💻 VHD
字号:
--------------------------------------------------------------------------------  This file is a part of the GRLIB VHDL IP LIBRARY--  Copyright (C) 2003, Gaisler Research----  This program is free software; you can redistribute it and/or modify--  it under the terms of the GNU General Public License as published by--  the Free Software Foundation; either version 2 of the License, or--  (at your option) any later version.----  This program is distributed in the hope that it will be useful,--  but WITHOUT ANY WARRANTY; without even the implied warranty of--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the--  GNU General Public License for more details.----  You should have received a copy of the GNU General Public License--  along with this program; if not, write to the Free Software--  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA ------------------------------------------------------------------------------- Package: 	libiu-- File:	libiu.vhd-- Author:	Jiri Gaisler Gaisler Research-- Description:	LEON3 IU types and components------------------------------------------------------------------------------library ieee;use ieee.std_logic_1164.all;library techmap;use techmap.gencomp.all;library gaisler;use gaisler.leon3.all;use gaisler.arith.all;use gaisler.mmuconfig.all;--library fpu;--use fpu.libfpu.all;package libiu isconstant RDBITS : integer := 32;constant IDBITS : integer := 32;subtype cword is std_logic_vector(IDBITS-1 downto 0);type cdatatype is array (0 to 3) of cword;--type ctagpartype is array (0 to 3) of std_logic_vector(1 downto 0);--type cdatapartype is array (0 to 3) of std_logic_vector(3 downto 0);--type cvalidtype is array (0 to 3) of std_logic_vector(7 downto 0);type cpartype is array (0 to 3) of std_logic_vector(3 downto 0); -- byte paritytype iregfile_in_type is record  raddr1	: std_logic_vector(9 downto 0); -- read address 1  raddr2	: std_logic_vector(9 downto 0); -- read address 2  waddr	 	: std_logic_vector(9 downto 0); -- write address  wdata 	: std_logic_vector(31 downto 0); -- write data  ren1          : std_ulogic;			 -- read 1 enable  ren2          : std_ulogic;			 -- read 2 enable  wren          : std_ulogic;			 -- write enable  diag  	: std_logic_vector(3 downto 0); -- write dataend record;type iregfile_out_type is record  data1    	: std_logic_vector(RDBITS-1 downto 0); -- read data 1  data2    	: std_logic_vector(RDBITS-1 downto 0); -- read data 2end record;type cctrltype is record  burst  : std_ulogic;				-- icache burst enable  dfrz   : std_ulogic;				-- dcache freeze enable  ifrz   : std_ulogic;				-- icache freeze enable  dsnoop : std_ulogic;				-- data cache snooping  dcs    : std_logic_vector(1 downto 0);	-- dcache state  ics    : std_logic_vector(1 downto 0);	-- icache stateend record;type icache_in_type is record  rpc              : std_logic_vector(31 downto 0); -- raw address (npc)  fpc              : std_logic_vector(31 downto 0); -- latched address (fpc)  dpc              : std_logic_vector(31 downto 0); -- latched address (dpc)  rbranch          : std_ulogic;			-- Instruction branch  fbranch          : std_ulogic;			-- Instruction branch  inull            : std_ulogic;			-- instruction nullify  su               : std_ulogic;			-- super-user  flush            : std_ulogic;			-- flush icache  flushl           : std_ulogic;                        -- flush line  fline            : std_logic_vector(31 downto 3);     -- flush line offset  pnull            : std_ulogic;end record;type icache_out_type is record  data             : cdatatype;  set              : std_logic_vector(1 downto 0);  mexc             : std_ulogic;  hold             : std_ulogic;  flush            : std_ulogic;			-- flush in progress  diagrdy          : std_ulogic;			-- diagnostic access ready  diagdata         : std_logic_vector(IDBITS-1 downto 0);-- diagnostic data  mds              : std_ulogic;			-- memory data strobe  cfg              : std_logic_vector(31 downto 0);  idle             : std_ulogic;			-- idle modeend record;type icdiag_in_type is record  addr             : std_logic_vector(31 downto 0); -- memory stage address  enable           : std_ulogic;  read             : std_ulogic;  tag              : std_ulogic;  ctx              : std_ulogic;  flush            : std_ulogic;  ilramen          : std_ulogic;  cctrl		   : cctrltype;  pflush           : std_ulogic;  pflushaddr       : std_logic_vector(VA_I_U downto VA_I_D);   pflushtyp        : std_ulogic;  ilock            : std_logic_vector(0 to 3);   scanen           : std_ulogic;end record;type dcache_in_type is record  asi              : std_logic_vector(7 downto 0);   maddress         : std_logic_vector(31 downto 0);   eaddress         : std_logic_vector(31 downto 0);   edata            : std_logic_vector(31 downto 0);   size             : std_logic_vector(1 downto 0);  enaddr           : std_ulogic;  eenaddr          : std_ulogic;  nullify          : std_ulogic;  lock             : std_ulogic;  read             : std_ulogic;  write            : std_ulogic;  flush            : std_ulogic;  flushl           : std_ulogic;                        -- flush line    dsuen            : std_ulogic;  msu              : std_ulogic;                   -- memory stage supervisor  esu              : std_ulogic;                   -- execution stage supervisor  intack           : std_ulogic;end record;type dcache_out_type is record  data             : cdatatype;  set              : std_logic_vector(1 downto 0);  mexc             : std_ulogic;  hold             : std_ulogic;  mds              : std_ulogic;  werr             : std_ulogic;	  icdiag           : icdiag_in_type;  cache            : std_ulogic;  idle             : std_ulogic;			-- idle mode  scanen           : std_ulogic;  testen           : std_ulogic;end record;type tracebuf_in_type is record   addr             : std_logic_vector(11 downto 0);  data             : std_logic_vector(127 downto 0);  enable           : std_logic;  write            : std_logic_vector(3 downto 0);  diag             : std_logic_vector(3 downto 0);end record;type tracebuf_out_type is record   data             : std_logic_vector(127 downto 0);end record;                           component iu3  generic (    nwin     : integer range 2 to 32 := 8;    isets    : integer range 1 to 4 := 1;    dsets    : integer range 1 to 4 := 1;    fpu      : integer range 0 to 15 := 0;        v8       : integer range 0 to 63 := 0;    cp, mac  : integer range 0 to 1 := 0;    dsu      : integer range 0 to 1 := 0;    nwp      : integer range 0 to 4 := 0;    pclow    : integer range 0 to 2 := 2;    notag    : integer range 0 to 1 := 0;    index    : integer range 0 to 15:= 0;    lddel    : integer range 1 to 2 := 2;    irfwt    : integer range 0 to 1 := 0;    disas    : integer range 0 to 2 := 0;    tbuf     : integer range 0 to 64 := 0;  -- trace buf size in kB (0 - no trace buffer)    pwd      : integer range 0 to 2 := 0;   -- power-down        svt      : integer range 0 to 1 := 0;   -- single-vector trapping    rstaddr  : integer              := 0;    smp      : integer range 0 to 15 := 0;   -- support SMP systems    fabtech  : integer range 0 to NTECH := 0;    clk2x    : integer := 0    );  port (    clk   : in  std_ulogic;    rstn  : in  std_ulogic;    holdn : in  std_ulogic;    ici   : out icache_in_type;    ico   : in  icache_out_type;    dci   : out dcache_in_type;    dco   : in  dcache_out_type;    rfi   : out iregfile_in_type;    rfo   : in  iregfile_out_type;    irqi  : in  l3_irq_in_type;    irqo  : out l3_irq_out_type;    dbgi  : in  l3_debug_in_type;    dbgo  : out l3_debug_out_type;    muli  : out mul32_in_type;    mulo  : in  mul32_out_type;    divi  : out div32_in_type;    divo  : in  div32_out_type;    fpo   : in  fpc_out_type;    fpi   : out fpc_in_type;    cpo   : in  fpc_out_type;    cpi   : out fpc_in_type;    tbo   : in  tracebuf_out_type;    tbi   : out tracebuf_in_type;    sclk   : in  std_ulogic  );end component;  component tbufmem   generic (    tech   : integer := 0;    tbuf  : integer := 0    );  port (    clk : in std_ulogic;    di  : in tracebuf_in_type;    do  : out tracebuf_out_type);  end component;-- disassembly dummy module  component cpu_disasx is  port (    clk   : in std_ulogic;    rstn  : in std_ulogic;    dummy : out std_ulogic;    inst  : in std_logic_vector(31 downto 0);    pc    : in std_logic_vector(31 downto 2);    result: in std_logic_vector(31 downto 0);    index : in std_logic_vector(3 downto 0);    wreg  : in std_ulogic;    annul : in std_ulogic;    holdn : in std_ulogic;    pv    : in std_ulogic;    trap  : in std_ulogic;    disas : in std_ulogic);  end component;end;

⌨️ 快捷键说明

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