📄 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 + -