-- $(lic)
-- $(help_generic)
-- $(help_local)
library ieee;
use ieee.std_logic_1164.all;
use work.armpctrl.all;
use work.armdecode.all;
use work.armcmd.all;
use work.armcmd_comp.all;
entity armcmd_bl is
port (
rst : in std_logic;
clk : in std_logic;
i : in armcmd_bl_typ_in;
o : out armcmd_bl_typ_out
);
end armcmd_bl;
architecture rtl of armcmd_bl is
type armcmd_bl_tmp_type is record
o : armcmd_bl_typ_out;
off : std_logic_vector(23 downto 0);
end record;
type armcmd_bl_reg_type is record
dummy : std_logic;
end record;
type armcmd_bl_dbg_type is record
dummy : std_logic;
-- pragma translate_off
dbg : armcmd_bl_tmp_type;
-- pragma translate_on
end record;
signal r, c : armcmd_bl_reg_type;
signal rdbg, cdbg : armcmd_bl_dbg_type;
begin
p0: process (clk, rst, r, i )
variable v : armcmd_bl_reg_type;
variable t : armcmd_bl_tmp_type;
variable vdbg : armcmd_bl_dbg_type;
begin
-- $(init(t:armcmd_bl_tmp_type))
v := r;
t.o.ctrlo := i.ctrli.ctrlo;
t.o.ctrlo.nextinsn := '1';
t.off := i.ctrli.insn.insn(ADE_BROFF_U downto ADE_BROFF_D);
t.o.r2_src := acm_none;
t.o.data2 := (others => '0');
t.o.rsop_op2_src := apc_opsrc_none;
-- b{cond} addr
-- bl{cond} addr
case i.ctrli.cnt is
when ACM_CNT_ZERO =>
-- (branch) <-+
-- RRSTG RSSTG EXSTG DMSTG MESTG WRSTG
-- --+-----------+-----------+-----+-----+-----------+-----------+----------+
-- | pctrl.(pc)+----------op1 | | | |
-- | | | \ | | | |
-- | (regread)| | +(aluop) | (trans) | (dcache) | (write)
-- | | | / | | |
-- <off>|-----------+----------op2 | | |
-- --+-----------+-----------+-----------+-----------+-----------+----------+
-- write pc
t.o.r1_src := acm_local;
if t.off(23) = '0' then
t.o.data2 := (others => '0');
else
t.o.data2 := (others => '1');
end if;
t.o.data2(23+2 downto 0) := t.off & "00";
t.o.rd_src := acm_rdpc;
if i.ctrli.insn.insn(ADE_BRLINK_C) = '1' then
t.o.ctrlo.nextinsn := '0';
end if;
when others =>
-- RRSTG RSSTG EXSTG DMSTG MESTG WRSTG
-- --+-----------+-----------+-----------+-----------+-----------+----------+
-- | pctrl.(pc)+----------op1 | | |
-- | | | \ | | |
-- | (regread)| | +(aluop) | (trans) | (dcache) | +-><r14>(write)
-- | | | / | | | | |
-- <0> |-----------+----------op2 | | | | |
-- --+-----------+-----------+-----+-----+-----------+-----------+-+--------+
-- | |
-- pctrl.data1 (as wrdata) : +-------------------------------+
-- write link
t.o.r1_src := acm_local;
t.o.rd_src := acm_rdlink;
end case;
-- reset
if ( rst = '0' ) then
end if;
c <= v;
o <= t.o;
-- 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;
end rtl;
Constant ACM_CNT_SZ defined in /tmp/build_html/vhdl/arm/libs/armcmd.vhd |
Enum ade_insntyp defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Enum ade_decinsn defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Enum ade_DAPRAM defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Enum ade_LDSTAMxLSV4AM defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Enum icycletype defined in /tmp/build_html/vhdl/peripherals/mem/sdmctrl.vhd |
Enum ade_pos defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Enum ash_sdir defined in /tmp/build_html/vhdl/arm/libs/armshiefter.vhd |
Type ade_amode defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Type ade_insn defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Type acm_ctrlout defined in /tmp/build_html/vhdl/arm/libs/armcmd.vhd |
Type acm_ctrlin defined in /tmp/build_html/vhdl/arm/libs/armcmd.vhd |
Type armcmd_bl_typ_in defined in /tmp/build_html/vhdl/arm/armcmd_comp.vhd |
Enum acm_regsrc defined in /tmp/build_html/vhdl/arm/libs/armcmd.vhd |
Enum acm_rdsrc defined in /tmp/build_html/vhdl/arm/libs/armcmd.vhd |
Enum apc_rsop_opsrc defined in /tmp/build_html/vhdl/arm/libs/armpctrl.vhd |
Type armcmd_bl_typ_out defined in /tmp/build_html/vhdl/arm/armcmd_comp.vhd |
Type armcmd_bl_tmp_type defined in /tmp/build_html/vhdl/arm/armcmd_bl.vhd |
Type armcmd_bl_reg_type defined in /tmp/build_html/vhdl/arm/armcmd_bl.vhd |
Type armcmd_bl_dbg_type defined in /tmp/build_html/vhdl/arm/armcmd_bl.vhd |
Constant ADE_BROFF_U defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Constant ADE_BROFF_D defined in /tmp/build_html/vhdl/arm/libs/armdecode.vhd |
Constant ACM_CNT_ZERO defined in /tmp/build_html/vhdl/arm/libs/armcmd.vhd |
Enum istatetype defined in /tmp/build_html/vhdl/sparc/mmu_icache.vhd |
Enum astates defined in /tmp/build_html/vhdl/sparc/mmu_acache.vhd |
Constant ADE_BRLINK_C defined in /tmp/build_html/vhdl/arm/libs/armdecode.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