library ieee;
use ieee.std_logic_1164.all;
use work.corelib.all;
-- PREFIX: aco_xxx
package armcoproc is
-- locking>|<
-- +---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
-- |IMSTG |FESTG |DESTG |DRSTG |RRSTG |RSSTG |EXSTG |DMSTG |MESTG |WRSTG |
-- | | | | | | |take | | | |
-- | | | |[undef] | | |[undef] | | | |
-- | | | | | | | | | | |
-- | | |[insn] | | | | | | | |
-- +---------+---------++--------++--------+-+-------+---------+---------+---------+---------+-------+-+
-- V /\ /\ V
-- ++--------++--------+-+-------+---------+---------+---------+---------+-------+-+
-- | | ldc/stc | reg/lock| |ldc/mrc| |
-- | | ctrl | stc/mcr | |[reg] <+ |
-- | | busy | | |commit |
-- | | | | |use id |
-- +---------+---------+---------+ +---------+
-- CPFE CPDEC CPEX
-- |< DRSTG.netxinsn controled >|
--
--
-------------------------------------------------------------------------------
type aco_in is record
hold_r : cli_hold;
-- PRDESTG ->CPFESTG
fromPRDE_insn : std_logic_vector(31 downto 0);
fromPRDE_valid : std_logic;
-- PRDRSTG ->CPDESTG
fromPRDR_nextinsn_v : std_logic;
fromPRDR_valid : std_logic;
-- PRRRSTG ->CPEXSTG
fromPRRR_valid : std_logic;
-- PRWRSTG ->CPWRSTG
fromPRWR_data_v : std_logic_vector(31 downto 0);
fromPRWR_valid : std_logic;
end record;
-------------------------------------------------------------------------------
type aco_CPDE_PRDR_out is record
busy : std_logic; -- drive ctrlo.hold
last : std_logic; -- drive cmd_cl/cmd_cs issue
accept : std_logic; -- udef trap
active : std_logic; -- udef trap
end record;
type aco_CPEX_PRRR_out is record
data : std_logic_vector(31 downto 0);
lock : std_logic; -- lock regread
end record;
type aco_out is record
-- PRDRSTG <- CPDESTG
CPDE_PRDR : aco_CPDE_PRDR_out;
-- PRRRSTG <- CPEXSTG
CPEX_PRRR : aco_CPEX_PRRR_out;
end record;
-------------------------------------------------------------------------------
constant ACO_CREG_U : integer := 3;
constant ACO_CREG_D : integer := 0;
constant ACO_COPC_U : integer := 2;
constant ACO_COPC_D : integer := 0;
constant ACO_CPNUM_U : integer := 11;
constant ACO_CPNUM_D : integer := 8;
-- decode MCR
constant ACO_MCRMRC_CRN_U : integer := 19;
constant ACO_MCRMRC_CRN_D : integer := 16;
constant ACO_MCRMRC_CRM_U : integer := 3;
constant ACO_MCRMRC_CRM_D : integer := 0;
constant ACO_MCRMRC_OPCODE1_U : integer := 23;
constant ACO_MCRMRC_OPCODE1_D : integer := 21;
constant ACO_MCRMRC_OPCODE2_U : integer := 7;
constant ACO_MCRMRC_OPCODE2_D : integer := 5;
constant ACO_LDCSTC_CRD_U : integer := 15;
constant ACO_LDCSTC_CRD_D : integer := 12;
type aco_decinsn is (ACO_type_none, ACO_type_cdp, ACO_type_mrc, ACO_type_mcr, ACO_type_stc, ACO_type_ldc);
function aco_decodev4(
insn : std_logic_vector(31 downto 0)
) return aco_decinsn;
-------------------------------------------------------------------------------
end armcoproc;
package body armcoproc is
function aco_decodev4(
insn : std_logic_vector(31 downto 0)
) return aco_decinsn is
variable tmp : aco_decinsn;
begin
tmp := ACO_type_none;
case insn(27 downto 25) is
when "111" =>
if insn(24) = '0' then
if insn(1) = '0' then
if insn(20) = '0' then
tmp := ACO_type_mcr;
else
tmp := ACO_type_mrc;
end if;
else
tmp := ACO_type_cdp;
end if;
end if;
when "110" =>
if insn(20) = '0' then
tmp := ACO_type_ldc;
else
tmp := ACO_type_stc;
end if;
when others =>
end case;
return tmp;
end;
end armcoproc;
File /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd used by /tmp/build_html/vhdl/arm/cp/armcp_comp.vhd used by /tmp/build_html/vhdl/arm/cp/armcp_sctrl.vhd used by /tmp/build_html/vhdl/arm/armiu.vhd |
Enum cpu_state_type defined in /tmp/build_html/vhdl/sparc/pci_gr.vhd |
Enum astates defined in /tmp/build_html/vhdl/sparc/mmu_acache.vhd |
Enum rdatatype defined in /tmp/build_html/vhdl/sparc/mmu_icache.vhd |
Type cli_hold defined in /tmp/build_html/vhdl/core/libs/corelib.vhd |
Type aco_in defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Enum mcycletype defined in /tmp/build_html/vhdl/peripherals/mem/sdmctrl.vhd |
Type aco_CPDE_PRDR_out defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Enum txfsmtype defined in /tmp/build_html/vhdl/sparc/dcom_uart.vhd |
Type aco_CPEX_PRRR_out defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Type aco_out defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_CREG_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_CREG_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_COPC_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_COPC_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_CPNUM_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_CPNUM_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Function genmux defined in /tmp/build_html/vhdl/sparc/macro.vhd |
Function xorv defined in /tmp/build_html/vhdl/sparc/macro.vhd |
Function orv defined in /tmp/build_html/vhdl/sparc/macro.vhd |
Constant s012 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s021 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s102 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s120 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s201 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s210 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s0123 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s0132 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s0213 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s0231 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s0312 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s0321 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s1023 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s1032 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s1203 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s1230 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s1302 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s1320 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s2013 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s2031 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s2103 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s2130 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s2301 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s2310 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s3012 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s3021 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s3102 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s3120 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s3201 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant s3210 defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant lru_3set_table defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant lru3_repl_table defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant lru4_repl_table defined in /tmp/build_html/vhdl/mem/cache/libs/setrepl_lib.vhd |
Constant PROC_CACHE_MAX defined in /tmp/build_html/vhdl/sparc/leon_target.vhd |
Constant PROC_CACHETABLE defined in /tmp/build_html/vhdl/sparc/leon_config.vhd |
Constant lastaddr defined in /tmp/build_html/vhdl/mem/cache/libs/kecs_libicache.vhd |
Function is_cacheable defined in /tmp/build_html/vhdl/sparc/macro.vhd |
Function decode defined in /tmp/build_html/vhdl/sparc/macro.vhd |
Constant ACO_MCRMRC_CRN_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_CRN_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_CRM_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_CRM_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_OPCODE1_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_OPCODE1_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_OPCODE2_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_MCRMRC_OPCODE2_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_LDCSTC_CRD_U defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Constant ACO_LDCSTC_CRD_D defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Enum aco_decinsn defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
Function aco_decodev4 defined in /tmp/build_html/vhdl/arm/cp/libs/armcoproc.vhd |
If you have question mail to: Konrad Eisele<eiselekd@web.de>, created: Wed Apr 14 13:07:33 WEDT 2004
;
This is part of the Core distribution