📄 iface.vhd
字号:
------------------------------------------------------------------------------ This file is a part of the LEON VHDL model-- Copyright (C) 1999 European Space Agency (ESA)---- This library is free software; you can redistribute it and/or-- modify it under the terms of the GNU Lesser General Public-- License as published by the Free Software Foundation; either-- version 2 of the License, or (at your option) any later version.---- See the file COPYING.LGPL for the full details of the license.------------------------------------------------------------------------------- Entity: iface-- File: iface.vhd-- Author: Jiri Gaisler - ESA/ESTEC-- Description: Package with type declarations for module interconnections------------------------------------------------------------------------------ library IEEE;use IEEE.std_logic_1164.all;use work.target.all;use work.config.all;use work.mmuconfig.all;use work.sparcv8.all;package iface issubtype clk_type is std_logic;-------------------------------------------------------------------------------- Add I/Os for custom peripherals in the records below-------------------------------------------------------------------------------- peripheral inputstype io_in_type is record piol : std_logic_vector(15 downto 0); -- I/O port inputs pci_arb_req_n : std_logic_vector(0 to 3);end record;-- peripheral outputstype io_out_type is record piol : std_logic_vector(15 downto 0); -- I/O port outputs piodir : std_logic_vector(15 downto 0); -- I/O port direction errorn : std_logic; -- CPU in error mode wdog : std_logic; -- watchdog output pci_arb_gnt_n : std_logic_vector(0 to 3);end record;-------------------------------------------------------------------------------- IU register file signalstype rf_in_type is record rd1addr : std_logic_vector(RABITS-1 downto 0); -- read address 1 rd2addr : std_logic_vector(RABITS-1 downto 0); -- read address 2 wraddr : std_logic_vector(RABITS-1 downto 0); -- write address wrdata : std_logic_vector(RDBITS-1 downto 0); -- write data ren1 : std_logic; -- read 1 enable ren2 : std_logic; -- read 2 enable wren : std_logic; -- write enableend record;type rf_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;-- co-processor register file signalstype rf_cp_in_type is record rd1addr : std_logic_vector(3 downto 0); -- read address 1 rd2addr : std_logic_vector(3 downto 0); -- read address 2 wraddr : std_logic_vector(3 downto 0); -- write address wrdata : std_logic_vector(RDBITS-1 downto 0); -- write data ren1 : std_logic; -- read 1 enable ren2 : std_logic; -- read 2 enable wren : std_logic; -- write enableend record;type rf_cp_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;-- instruction cache diagnostic access inputstype icdiag_in_type is record addr : std_logic_vector(31 downto 0); -- memory stage address enable : std_logic; read : std_logic; tag : std_logic; ctx : std_logic; flush : std_logic; pflush : std_logic; pflushaddr : std_logic_vector(VA_I_U downto VA_I_D); pflushtyp : std_logic; ilramen : std_logic;end record;-- data cache controller inputstype dcache_in_type is record asi : std_logic_vector(7 downto 0); -- ASI for load/store maddress : std_logic_vector(31 downto 0); -- memory stage address eaddress : std_logic_vector(31 downto 0); -- execute stage address edata : std_logic_vector(31 downto 0); -- execute stage data size : std_logic_vector(1 downto 0); signed : std_logic; enaddr : std_logic; eenaddr : std_logic; nullify : std_logic; lock : std_logic; read : std_logic; write : std_logic; flush : std_logic; dsuen : std_logic; msu : std_logic; -- memory stage supervisor esu : std_logic; -- execution stage supervisorend record;-- data cache controller outputstype dcache_out_type is record data : std_logic_vector(31 downto 0); -- Data bus address mexc : std_logic; -- memory exception hold : std_logic; mds : std_logic; werr : std_logic; -- memory write error icdiag : icdiag_in_type; dsudata : std_logic_vector(31 downto 0);end record;type icache_in_type is record rpc : std_logic_vector(31 downto PCLOW); -- raw address (npc) fpc : std_logic_vector(31 downto PCLOW); -- latched address (fpc) dpc : std_logic_vector(31 downto PCLOW); -- latched address (dpc) rbranch : std_logic; -- Instruction branch fbranch : std_logic; -- Instruction branch nullify : std_logic; -- instruction nullify su : std_logic; -- super-user flush : std_logic; -- flush icacheend record;type icache_out_type is record data : std_logic_vector(31 downto 0); exception : std_logic; hold : std_logic; flush : std_logic; -- flush in progress diagrdy : std_logic; -- diagnostic access ready diagdata : std_logic_vector(31 downto 0); -- diagnostic data mds : std_logic; -- memory data strobeend record;type memory_ic_in_type is record address : std_logic_vector(31 downto 0); -- memory address burst : std_logic; -- burst request req : std_logic; -- memory cycle request su : std_logic; -- supervisor address space flush : std_logic; -- flush in progressend record;type memory_ic_out_type is record data : std_logic_vector(31 downto 0); -- memory data ready : std_logic; -- cycle ready grant : std_logic; -- retry : std_logic; -- mexc : std_logic; -- memory exception burst : std_logic; -- memory burst enable ics : std_logic_vector(1 downto 0); -- icache state (from CCR) cache : std_logic; -- cacheable dataend record;type memory_dc_in_type is record address : std_logic_vector(31 downto 0); data : std_logic_vector(31 downto 0); asi : std_logic_vector(3 downto 0); -- ASI for load/store size : std_logic_vector(1 downto 0); burst : std_logic; read : std_logic; req : std_logic; flush : std_logic; -- flush in progress lock : std_logic; su : std_logic;end record;type memory_dc_out_type is record data : std_logic_vector(31 downto 0); -- memory data ready : std_logic; -- cycle ready grant : std_logic; -- retry : std_logic; -- mexc : std_logic; -- memory exception werr : std_logic; -- memory write error dcs : std_logic_vector(1 downto 0); iflush : std_logic; -- flush icache (from CCR) dflush : std_logic; -- flush dcache (from CCR) cache : std_logic; -- cacheable data dsnoop : std_logic; -- snoop enable ba : std_logic; -- bus active (used for snooping) bg : std_logic; -- bus grant (used for snooping)end record;type memory_in_type is record data : std_logic_vector(31 downto 0); -- Data bus address brdyn : std_logic; bexcn : std_logic; writen : std_logic; wrn : std_logic_vector(3 downto 0); sd : std_logic_vector(63 downto 0);end record;type memory_out_type is record address : std_logic_vector(27 downto 0); sa : std_logic_vector(14 downto 0); data : std_logic_vector(31 downto 0); ramsn : std_logic_vector(4 downto 0); ramoen : std_logic_vector(4 downto 0); iosn : std_logic; romsn : std_logic_vector(1 downto 0); oen : std_logic; writen : std_logic; wrn : std_logic_vector(3 downto 0); bdrive : std_logic_vector(3 downto 0); read : std_logic;end record;type sdram_in_type is record haddr : std_logic_vector(31 downto 0); -- memory address rhaddr : std_logic_vector(31 downto 0); -- memory address hready : std_logic; hsize : std_logic_vector(1 downto 0); hsel : std_logic; hwrite : std_logic; htrans : std_logic_vector(1 downto 0); rhtrans : std_logic_vector(1 downto 0); nhtrans : std_logic_vector(1 downto 0); idle : std_logic; enable : std_logic;end record; type sdram_mctrl_out_type is record address : std_logic_vector(16 downto 2); busy : std_logic; aload : std_logic; bdrive : std_logic; hready : std_logic; hsel : std_logic; bsel : std_ulogic; hresp : std_logic_vector ( 1 downto 0);end record;type sdram_out_type is record sdcke : std_logic_vector ( 1 downto 0); -- clk en sdcsn : std_logic_vector ( 1 downto 0); -- chip sel sdwen : std_logic; -- write en rasn : std_logic; -- row addr stb casn : std_logic; -- col addr stb dqm : std_logic_vector ( 7 downto 0); -- data i/o maskend record;type pio_in_type is record piol : std_logic_vector(15 downto 0); pioh : std_logic_vector(15 downto 0);end record;type pio_out_type is record irq : std_logic_vector(3 downto 0); piol : std_logic_vector(31 downto 0); piodir : std_logic_vector(17 downto 0); io8lsb : std_logic_vector(7 downto 0); rxd : std_logic_vector(1 downto 0); ctsn : std_logic_vector(1 downto 0); wrio : std_logic;end record;type wprot_out_type is record wprothit : std_logic;end record;type ahbstat_out_type is record ahberr : std_logic;end record;type mctrl_out_type is record pioh : std_logic_vector(15 downto 0);end record;type itram_in_type is record tag : std_logic_vector(ITAG_BITS - ILINE_SIZE - 1 downto 0); lrr : std_logic; lock : std_logic; valid : std_logic_vector(ILINE_SIZE -1 downto 0); enable : std_logic; ctx : std_logic_vector(M_CTX_SZ-1 downto 0); --#mmu: ctx number write : std_logic_vector(0 to MAXSETS-1); flush : std_logic;end record;type itram_out_single_type is record tag : std_logic_vector(ITAG_BITS - ILINE_SIZE -1 downto 0); lrr : std_logic; lock : std_logic; valid : std_logic_vector(ILINE_SIZE -1 downto 0); ctx : std_logic_vector(M_CTX_SZ-1 downto 0); --#mmu: ctx numberend record;type itram_out_type is array (0 to MAXSETS-1) of itram_out_single_type;type idram_in_type is record address : std_logic_vector((IOFFSET_BITS + ILINE_BITS -1) downto 0); data : std_logic_vector(31 downto 0); enable : std_logic; write : std_logic_vector(0 to MAXSETS-1);end record;type idram_out_single_type is record data : std_logic_vector(31 downto 0);end record;type idram_out_type is array (0 to MAXSETS-1) of idram_out_single_type;type dtram_in_type is record tag : std_logic_vector(DTAG_BITS - DLINE_SIZE - 1 downto 0); lrr : std_logic_vector(0 to MAXSETS-1); lock : std_logic_vector(0 to MAXSETS-1); valid : std_logic_vector(DLINE_SIZE -1 downto 0); enable : std_logic; write : std_logic_vector(0 to MAXSETS-1); ctx : std_logic_vector(M_CTX_SZ-1 downto 0); --#mmu: ctx number flush : std_logic;end record;type dtram_out_single_type is record tag : std_logic_vector(DTAG_BITS - DLINE_SIZE -1 downto 0); lrr : std_logic; lock : std_logic;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -