📄 armiu_drstg.vhd
字号:
-- $(lic)
-- $(help_generic)
-- $(help_local)
library ieee;
use ieee.std_logic_1164.all;
use work.int.all;
use work.memdef.all;
use work.armdecode.all;
use work.armshiefter.all;
use work.armpmodel.all;
use work.armdebug.all;
use work.armpctrl.all;
use work.armcmd.all;
use work.armldst.all;
use work.armcmd_comp.all;
use work.arm_comp.all;
entity armiu_drstg is
port (
rst : in std_logic;
clk : in std_logic;
i : in armiu_drstg_typ_in;
o : out armiu_drstg_typ_out
);
end armiu_drstg;
architecture rtl of armiu_drstg is
type armiu_drstg_tmp_type is record
o : armiu_drstg_typ_out;
cmdali : armcmd_al_typ_in;
cmdsri : armcmd_sr_typ_in;
cmdldi : armcmd_ld_typ_in;
cmdsti : armcmd_st_typ_in;
cmdlmi : armcmd_lm_typ_in;
cmdsmi : armcmd_sm_typ_in;
cmdswi : armcmd_sw_typ_in;
cmdcri : armcmd_cr_typ_in;
cmdcli : armcmd_cl_typ_in;
cmdcsi : armcmd_cs_typ_in;
cmdbli : armcmd_bl_typ_in;
ctrli : acm_ctrlin;
ctrlo : acm_ctrlout;
pctrl, pctrl_bypass : apc_pctrl;
commit : std_logic;
insn : std_logic_vector(31 downto 0);
trap : apm_trapctrl;
nextmicro, mem : std_logic;
micro : apc_micro;
am : ade_amode;
r1_src, r2_src : acm_regsrc;
rd_src : acm_rdsrc;
rn, rm, rd, rs, rlink, rpc : std_logic_vector(APM_REG_U downto APM_REG_D);
nr : std_logic_vector(APM_REG_U downto APM_REG_D);
nr_i : integer;
nr_c : std_logic;
startoff, endoff, incval : std_logic_vector(31 downto 0);
m1, m2, md: std_logic_vector(APM_REG_U downto APM_REG_D);
m1_valid, m2_valid: std_logic;
rr1, rr2, rrd: std_logic_vector(APM_RREAL_U downto APM_RREAL_D);
rmode : std_logic_vector(4 downto 0);
end record;
type armiu_drstg_reg_type is record
cnt : std_logic_vector(ACM_CNT_SZ-1 downto 0);
reglist : std_logic_vector(APM_REGLIST_SZ-1 downto 0);
end record;
type armiu_drstg_dbg_type is record
dummy : std_logic;
-- pragma translate_off
dbg : armiu_drstg_tmp_type;
dbgpmode : adg_dbgpmode;
dbgrmode : adg_dbgpmode;
-- pragma translate_on
end record;
signal r, c : armiu_drstg_reg_type;
signal rdbg, cdbg : armiu_drstg_dbg_type;
signal cmdali : armcmd_al_typ_in;
signal cmdalo : armcmd_al_typ_out;
signal cmdsri : armcmd_sr_typ_in;
signal cmdsro : armcmd_sr_typ_out;
signal cmdldi : armcmd_ld_typ_in;
signal cmdldo : armcmd_ld_typ_out;
signal cmdsti : armcmd_st_typ_in;
signal cmdsto : armcmd_st_typ_out;
signal cmdlmi : armcmd_lm_typ_in;
signal cmdlmo : armcmd_lm_typ_out;
signal cmdsmi : armcmd_sm_typ_in;
signal cmdsmo : armcmd_sm_typ_out;
signal cmdswi : armcmd_sw_typ_in;
signal cmdswo : armcmd_sw_typ_out;
signal cmdcri : armcmd_cr_typ_in;
signal cmdcro : armcmd_cr_typ_out;
signal cmdcli : armcmd_cl_typ_in;
signal cmdcso : armcmd_cs_typ_out;
signal cmdcsi : armcmd_cs_typ_in;
signal cmdclo : armcmd_cl_typ_out;
signal cmdbli : armcmd_bl_typ_in;
signal cmdblo : armcmd_bl_typ_out;
begin
p0: process (clk, rst, r, i,
cmdalo, cmdsro, cmdldo, cmdsto, cmdlmo, cmdsmo, cmdswo,
cmdcro, cmdclo, cmdcso, cmdblo )
variable v : armiu_drstg_reg_type;
variable t : armiu_drstg_tmp_type;
variable vdbg : armiu_drstg_dbg_type;
begin
-- $(init(t:armiu_drstg_tmp_type))
-- $(init-automatically-generated-for-synthesis:(t:armiu_drstg_tmp_type))
t.o.nextinsn_v := '0';
t.o.toRR_micro_v.pctrl.insn.pc_8 := (others => '0');
t.o.toRR_micro_v.pctrl.insn.insn := (others => '0');
t.o.toRR_micro_v.pctrl.insn.insntyp := ade_typmem;
t.o.toRR_micro_v.pctrl.insn.decinsn := type_arm_invalid;
t.o.toRR_micro_v.pctrl.insn.am.DAPRAM_typ := ade_DAPRAM_simm;
t.o.toRR_micro_v.pctrl.insn.am.LDSTAM_typ := ade_LDSTAMxLSV4AM_imm;
t.o.toRR_micro_v.pctrl.insn.am.LSV4AM_typ := ade_LDSTAMxLSV4AM_imm;
t.o.toRR_micro_v.pctrl.insn.am.LDSTAMxLSV4AM_pos := ade_pre;
t.o.toRR_micro_v.pctrl.insn.am.DAPRAMxLDSTAM_sdir := ash_sdir_snone;
t.o.toRR_micro_v.pctrl.insn.am.LDSTAMxLSV4AM_uacc := '0';
t.o.toRR_micro_v.pctrl.insn.am.LDSTAMxLSV4AM_wb := '0';
t.o.toRR_micro_v.pctrl.insn.valid := '0';
t.o.toRR_micro_v.pctrl.insn.id := (others => '0');
t.o.toRR_micro_v.pctrl.valid := '0';
t.o.toRR_micro_v.pctrl.rr.dummy := '0';
t.o.toRR_micro_v.pctrl.rs.rsop_op1_src := apc_opsrc_through;
t.o.toRR_micro_v.pctrl.rs.rsop_op2_src := apc_opsrc_through;
t.o.toRR_micro_v.pctrl.rs.rsop_buf1_src := apc_bufsrc_none;
t.o.toRR_micro_v.pctrl.rs.rsop_buf2_src := apc_bufsrc_none;
t.o.toRR_micro_v.pctrl.rs.rsop_styp := ash_styp_none;
t.o.toRR_micro_v.pctrl.rs.rsop_sdir := ash_sdir_snone;
t.o.toRR_micro_v.pctrl.rs.rs_shieftcarryout := '0';
t.o.toRR_micro_v.pctrl.ex.exop_aluop := (others => '0');
t.o.toRR_micro_v.pctrl.ex.exop_data_src := apc_datasrc_aluout;
t.o.toRR_micro_v.pctrl.ex.exop_buf_src := apc_exbufsrc_none;
t.o.toRR_micro_v.pctrl.ex.exop_setcpsr := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.ex.n := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.ex.z := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.ex.c := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.ex.v := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.wr.i := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.wr.f := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.wr.t := '0';
t.o.toRR_micro_v.pctrl.ex.ex_cpsr.wr.mode := (others => '0');
t.o.toRR_micro_v.pctrl.dm.dummy := '0';
t.o.toRR_micro_v.pctrl.me.meop_enable := '0';
t.o.toRR_micro_v.pctrl.me.meop_param.size := lmd_word;
t.o.toRR_micro_v.pctrl.me.meop_param.read := '0';
t.o.toRR_micro_v.pctrl.me.meop_param.lock := '0';
t.o.toRR_micro_v.pctrl.me.meop_param.writedata := '0';
t.o.toRR_micro_v.pctrl.me.meop_param.addrin := '0';
t.o.toRR_micro_v.pctrl.me.meop_param.signed := '0';
t.o.toRR_micro_v.pctrl.me.mexc := '0';
t.o.toRR_micro_v.pctrl.wr.wrop_rd := (others => '0');
t.o.toRR_micro_v.pctrl.wr.wrop_rdvalid := '0';
t.o.toRR_micro_v.pctrl.wr.wrop_setspsr := '0';
t.o.toRR_micro_v.pctrl.wr.wrop_trap.traptype := apm_trap_reset;
t.o.toRR_micro_v.pctrl.wr.wrop_trap.trap := '0';
t.o.toRR_micro_v.pctrl.data1 := (others => '0');
t.o.toRR_micro_v.pctrl.data2 := (others => '0');
t.o.toRR_micro_v.valid := '0';
t.o.toRR_micro_v.r1 := (others => '0');
t.o.toRR_micro_v.r2 := (others => '0');
t.o.toRR_micro_v.r1_valid := '0';
t.o.toRR_micro_v.r2_valid := '0';
t.o.id := (others => '0');
t.cmdali.ctrli.cnt := (others => '0');
t.cmdali.ctrli.insn.pc_8 := (others => '0');
t.cmdali.ctrli.insn.insn := (others => '0');
t.cmdali.ctrli.insn.insntyp := ade_typmem;
t.cmdali.ctrli.insn.decinsn := type_arm_invalid;
t.cmdali.ctrli.insn.am.DAPRAM_typ := ade_DAPRAM_simm;
t.cmdali.ctrli.insn.am.LDSTAM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdali.ctrli.insn.am.LSV4AM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdali.ctrli.insn.am.LDSTAMxLSV4AM_pos := ade_pre;
t.cmdali.ctrli.insn.am.DAPRAMxLDSTAM_sdir := ash_sdir_snone;
t.cmdali.ctrli.insn.am.LDSTAMxLSV4AM_uacc := '0';
t.cmdali.ctrli.insn.am.LDSTAMxLSV4AM_wb := '0';
t.cmdali.ctrli.insn.valid := '0';
t.cmdali.ctrli.insn.id := (others => '0');
t.cmdali.ctrli.ctrlo.nextinsn := '0';
t.cmdali.ctrli.ctrlo.nextcnt := '0';
t.cmdali.ctrli.ctrlo.hold := '0';
t.cmdsri.ctrli.cnt := (others => '0');
t.cmdsri.ctrli.insn.pc_8 := (others => '0');
t.cmdsri.ctrli.insn.insn := (others => '0');
t.cmdsri.ctrli.insn.insntyp := ade_typmem;
t.cmdsri.ctrli.insn.decinsn := type_arm_invalid;
t.cmdsri.ctrli.insn.am.DAPRAM_typ := ade_DAPRAM_simm;
t.cmdsri.ctrli.insn.am.LDSTAM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdsri.ctrli.insn.am.LSV4AM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdsri.ctrli.insn.am.LDSTAMxLSV4AM_pos := ade_pre;
t.cmdsri.ctrli.insn.am.DAPRAMxLDSTAM_sdir := ash_sdir_snone;
t.cmdsri.ctrli.insn.am.LDSTAMxLSV4AM_uacc := '0';
t.cmdsri.ctrli.insn.am.LDSTAMxLSV4AM_wb := '0';
t.cmdsri.ctrli.insn.valid := '0';
t.cmdsri.ctrli.insn.id := (others => '0');
t.cmdsri.ctrli.ctrlo.nextinsn := '0';
t.cmdsri.ctrli.ctrlo.nextcnt := '0';
t.cmdsri.ctrli.ctrlo.hold := '0';
t.cmdsri.deid := (others => '0');
t.cmdsri.exid := (others => '0');
t.cmdsri.exvalid := '0';
t.cmdsri.wrid := (others => '0');
t.cmdsri.wrvalid := '0';
t.cmdldi.ctrli.cnt := (others => '0');
t.cmdldi.ctrli.insn.pc_8 := (others => '0');
t.cmdldi.ctrli.insn.insn := (others => '0');
t.cmdldi.ctrli.insn.insntyp := ade_typmem;
t.cmdldi.ctrli.insn.decinsn := type_arm_invalid;
t.cmdldi.ctrli.insn.am.DAPRAM_typ := ade_DAPRAM_simm;
t.cmdldi.ctrli.insn.am.LDSTAM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdldi.ctrli.insn.am.LSV4AM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdldi.ctrli.insn.am.LDSTAMxLSV4AM_pos := ade_pre;
t.cmdldi.ctrli.insn.am.DAPRAMxLDSTAM_sdir := ash_sdir_snone;
t.cmdldi.ctrli.insn.am.LDSTAMxLSV4AM_uacc := '0';
t.cmdldi.ctrli.insn.am.LDSTAMxLSV4AM_wb := '0';
t.cmdldi.ctrli.insn.valid := '0';
t.cmdldi.ctrli.insn.id := (others => '0');
t.cmdldi.ctrli.ctrlo.nextinsn := '0';
t.cmdldi.ctrli.ctrlo.nextcnt := '0';
t.cmdldi.ctrli.ctrlo.hold := '0';
t.cmdldi.ctrlmemo.data1 := (others => '0');
t.cmdldi.ctrlmemo.data2 := (others => '0');
t.cmdldi.ctrlmemo.r1_src := acm_none;
t.cmdldi.ctrlmemo.r2_src := acm_none;
t.cmdldi.ctrlmemo.rd_src := acm_rdnone;
t.cmdldi.ctrlmemo.rsop_op1_src := apc_opsrc_through;
t.cmdldi.ctrlmemo.rsop_op2_src := apc_opsrc_through;
t.cmdldi.ctrlmemo.rsop_buf1_src := apc_bufsrc_none;
t.cmdldi.ctrlmemo.rsop_buf2_src := apc_bufsrc_none;
t.cmdldi.ctrlmemo.exop_data_src := apc_datasrc_aluout;
t.cmdldi.ctrlmemo.exop_buf_src := apc_exbufsrc_none;
t.cmdldi.ctrlmemo.meop_param.size := lmd_word;
t.cmdldi.ctrlmemo.meop_param.read := '0';
t.cmdldi.ctrlmemo.meop_param.lock := '0';
t.cmdldi.ctrlmemo.meop_param.writedata := '0';
t.cmdldi.ctrlmemo.meop_param.addrin := '0';
t.cmdldi.ctrlmemo.meop_param.signed := '0';
t.cmdldi.ctrlmemo.meop_enable := '0';
t.cmdsti.ctrli.cnt := (others => '0');
t.cmdsti.ctrli.insn.pc_8 := (others => '0');
t.cmdsti.ctrli.insn.insn := (others => '0');
t.cmdsti.ctrli.insn.insntyp := ade_typmem;
t.cmdsti.ctrli.insn.decinsn := type_arm_invalid;
t.cmdsti.ctrli.insn.am.DAPRAM_typ := ade_DAPRAM_simm;
t.cmdsti.ctrli.insn.am.LDSTAM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdsti.ctrli.insn.am.LSV4AM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdsti.ctrli.insn.am.LDSTAMxLSV4AM_pos := ade_pre;
t.cmdsti.ctrli.insn.am.DAPRAMxLDSTAM_sdir := ash_sdir_snone;
t.cmdsti.ctrli.insn.am.LDSTAMxLSV4AM_uacc := '0';
t.cmdsti.ctrli.insn.am.LDSTAMxLSV4AM_wb := '0';
t.cmdsti.ctrli.insn.valid := '0';
t.cmdsti.ctrli.insn.id := (others => '0');
t.cmdsti.ctrli.ctrlo.nextinsn := '0';
t.cmdsti.ctrli.ctrlo.nextcnt := '0';
t.cmdsti.ctrli.ctrlo.hold := '0';
t.cmdsti.ctrlmemo.data1 := (others => '0');
t.cmdsti.ctrlmemo.data2 := (others => '0');
t.cmdsti.ctrlmemo.r1_src := acm_none;
t.cmdsti.ctrlmemo.r2_src := acm_none;
t.cmdsti.ctrlmemo.rd_src := acm_rdnone;
t.cmdsti.ctrlmemo.rsop_op1_src := apc_opsrc_through;
t.cmdsti.ctrlmemo.rsop_op2_src := apc_opsrc_through;
t.cmdsti.ctrlmemo.rsop_buf1_src := apc_bufsrc_none;
t.cmdsti.ctrlmemo.rsop_buf2_src := apc_bufsrc_none;
t.cmdsti.ctrlmemo.exop_data_src := apc_datasrc_aluout;
t.cmdsti.ctrlmemo.exop_buf_src := apc_exbufsrc_none;
t.cmdsti.ctrlmemo.meop_param.size := lmd_word;
t.cmdsti.ctrlmemo.meop_param.read := '0';
t.cmdsti.ctrlmemo.meop_param.lock := '0';
t.cmdsti.ctrlmemo.meop_param.writedata := '0';
t.cmdsti.ctrlmemo.meop_param.addrin := '0';
t.cmdsti.ctrlmemo.meop_param.signed := '0';
t.cmdsti.ctrlmemo.meop_enable := '0';
t.cmdlmi.ctrli.cnt := (others => '0');
t.cmdlmi.ctrli.insn.pc_8 := (others => '0');
t.cmdlmi.ctrli.insn.insn := (others => '0');
t.cmdlmi.ctrli.insn.insntyp := ade_typmem;
t.cmdlmi.ctrli.insn.decinsn := type_arm_invalid;
t.cmdlmi.ctrli.insn.am.DAPRAM_typ := ade_DAPRAM_simm;
t.cmdlmi.ctrli.insn.am.LDSTAM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdlmi.ctrli.insn.am.LSV4AM_typ := ade_LDSTAMxLSV4AM_imm;
t.cmdlmi.ctrli.insn.am.LDSTAMxLSV4AM_pos := ade_pre;
t.cmdlmi.ctrli.insn.am.DAPRAMxLDSTAM_sdir := ash_sdir_snone;
t.cmdlmi.ctrli.insn.am.LDSTAMxLSV4AM_uacc := '0';
t.cmdlmi.ctrli.insn.am.LDSTAMxLSV4AM_wb := '0';
t.cmdlmi.ctrli.insn.valid := '0';
t.cmdlmi.ctrli.insn.id := (others => '0');
t.cmdlmi.ctrli.ctrlo.nextinsn := '0';
t.cmdlmi.ctrli.ctrlo.nextcnt := '0';
t.cmdlmi.ctrli.ctrlo.hold := '0';
t.cmdlmi.ctrlmulti.ctrlmemo.data1 := (others => '0');
t.cmdlmi.ctrlmulti.ctrlmemo.data2 := (others => '0');
t.cmdlmi.ctrlmulti.ctrlmemo.r1_src := acm_none;
t.cmdlmi.ctrlmulti.ctrlmemo.r2_src := acm_none;
t.cmdlmi.ctrlmulti.ctrlmemo.rd_src := acm_rdnone;
t.cmdlmi.ctrlmulti.ctrlmemo.rsop_op1_src := apc_opsrc_through;
t.cmdlmi.ctrlmulti.ctrlmemo.rsop_op2_src := apc_opsrc_through;
t.cmdlmi.ctrlmulti.ctrlmemo.rsop_buf1_src := apc_bufsrc_none;
t.cmdlmi.ctrlmulti.ctrlmemo.rsop_buf2_src := apc_bufsrc_none;
t.cmdlmi.ctrlmulti.ctrlmemo.exop_data_src := apc_datasrc_aluout;
t.cmdlmi.ctrlmulti.ctrlmemo.exop_buf_src := apc_exbufsrc_none;
t.cmdlmi.ctrlmulti.ctrlmemo.meop_param.size := lmd_word;
t.cmdlmi.ctrlmulti.ctrlmemo.meop_param.read := '0';
t.cmdlmi.ctrlmulti.ctrlmemo.meop_param.lock := '0';
t.cmdlmi.ctrlmulti.ctrlmemo.meop_param.writedata := '0';
t.cmdlmi.ctrlmulti.ctrlmemo.meop_param.addrin := '0';
t.cmdlmi.ctrlmulti.ctrlmemo.meop_param.signed := '0';
t.cmdlmi.ctrlmulti.ctrlmemo.meop_enable := '0';
t.cmdlmi.ctrlmulti.ival := (others => '0');
t.cmdlmi.ctrlmulti.soff := (others => '0');
t.cmdlmi.ctrlmulti.eoff := (others => '0');
t.cmdlmi.ctrlmulti.reglist := (others => '0');
t.cmdlmi.ctrlmulti.mem := '0';
t.cmdlmi.ctrlmulti.dabort := '0';
t.cmdsmi.ctrli.cnt := (others => '0');
t.cmdsmi.ctrli.insn.pc_8 := (others => '0');
t.cmdsmi.ctrli.insn.insn := (others => '0');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -