116use ieee.std_logic_1164.
all;
117use ieee.numeric_std.
all;
169 end record parpdr_type;
220 end record dpath_cntl_type;
223 "000","000","00",'0','0','0','0',
225 '0','0','0','0',"00",'0',
226 "00",'0',"000000000","00",'0',
227 "00","00","00",'0',"000",'0',
229 "00",'0','0','0','0','0','0','0','0',
230 '0',"000","000","00",'0'
263 end record dpath_stat_type;
303 end record decode_stat_type;
306 '0','0','0','0','0','0','0','0','0','0',
307 '0','0',"000",'0','0',
308 "00","00","00",'0',"000",
310 "0000","00","00","00","0000","000",
403 end record cpustat_type;
425 end record cpuerr_type;
439 end record vm_cntl_type;
459 end record vm_stat_type;
470 end record em_mreq_type;
474 (others=>'0'),(others=>'0')
481 end record em_sres_type;
495 end record mmu_cntl_type;
508 end record mmu_stat_type;
521 end record mmu_moni_type;
541 end record mmu_mmr0_type;
544 inst_compl=>'0', page_mode=>"00", page_num=>"000",
553 end record mmu_mmr1_type;
566 end record mmu_mmr3_type;
576 end record cp_cntl_type;
608 end record cp_stat_type;
623 end record cp_addr_type;
643 end record dm_stat_se_type;
676 end record dm_stat_dp_type;
687 (others=>'0'),(others=>'0'),
697 ibmreq : ib_mreq_type;
698 ibsres : ib_sres_type;
701 end record dm_stat_vm_type;
721 end record dm_stat_co_type;
737 end record dm_stat_ca_type;
750 end record dm_stat_exp_type;
976 MONI :
in mmu_moni_type;
988 CNTL :
in mmu_cntl_type;
990 MONI :
in mmu_moni_type;
991 STAT :
out mmu_stat_type;
1024 CNTL :
in dpath_cntl_type;
1025 STAT :
out dpath_stat_type;
1042 STAT :
out decode_stat_type
1052 ID_STAT :
in decode_stat_type;
1062 DP_CNTL :
out dpath_cntl_type;
1188 ENAPIN :
integer := sbcntl_sbf_tmu);
1199component pdp11_du_drv
is
1201 CDWIDTH :
positive :=
3);
1210 SWOPT_RDY :
out slbit;
1211 DU_SCLK :
out slbit;
1212 DU_SS_N :
out slbit;
1213 DU_MOSI :
out slbit;
1220 AWIDTH :
positive :=
14);
1232 NBLOCK :
positive :=
11);
1369 SNUM :
boolean := false);
1385 NUNIT :
natural :=
2);
1402 INDEX :
natural :=
0);
out DM_STAT_CA dm_stat_ca_type
RB_ADDR_CORE slv16 := rbaddr_cpu0_core
RB_ADDR_IBUS slv16 := rbaddr_cpu0_ibus
in IB_SRES_M ib_sres_type
out DM_STAT_DP dm_stat_dp_type
out DM_STAT_CO dm_stat_co_type
out IB_MREQ_M ib_mreq_type
out DM_STAT_VM dm_stat_vm_type
out DM_STAT_SE dm_stat_se_type
out STAT decode_stat_type
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
RB_ADDR slv16 := rbaddr_dmcmon_off
in DM_STAT_SE dm_stat_se_type
in DM_STAT_VM dm_stat_vm_type
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
RB_ADDR slv16 := rbaddr_dmhbpt_off
in DM_STAT_VM dm_stat_vm_type
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
RB_ADDR slv16 := rbaddr_dmhbpt_off
in DM_STAT_VM dm_stat_vm_type
CENA slv32 :=( others => '1')
VERS slv8 := slv( to_unsigned( 1, 8) )
RB_ADDR slv16 := rbaddr_dmpcnt_off
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
RB_ADDR slv16 := rbaddr_dmscnt_off
out DM_STAT_DP dm_stat_dp_type
out DSP_DAT slv( 4*( 2** DCWIDTH)- 1 downto 0)
in DM_STAT_EXP dm_stat_exp_type
out DSP_DAT slv( 4*( 2** DCWIDTH)- 1 downto 0)
out LED slv( LWIDTH- 1 downto 0)
in DM_STAT_EXP dm_stat_exp_type
out LED slv( LWIDTH- 1 downto 0)
in DM_STAT_EXP dm_stat_exp_type
in ID_STAT decode_stat_type
out DP_CNTL dpath_cntl_type
out MMU_MONI mmu_moni_type
out DM_STAT_SE dm_stat_se_type
in DP_STAT dpath_stat_type
in DM_STAT_EXP dm_stat_exp_type
out DM_STAT_EXP dm_stat_exp_type
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
in DM_STAT_VM dm_stat_vm_type
in DM_STAT_CA dm_stat_ca_type
ENAPIN integer := sbcntl_sbf_tmu
in DM_STAT_DP dm_stat_dp_type
in DM_STAT_CO dm_stat_co_type
in DM_STAT_SE dm_stat_se_type
in DM_STAT_VM dm_stat_vm_type
in DM_STAT_CA dm_stat_ca_type
in MMU_MONI mmu_moni_type
in IB_SRES_EXT ib_sres_type
out IB_MREQ_M ib_mreq_type
out DM_STAT_VM dm_stat_vm_type
in IB_SRES_CPU ib_sres_type
slv3 := "110" c_aunit_ccmode_sbc
slv2 := "00" c_fork_dstr_def
slv3 := "101" c_dpath_res_fpdout
slv4 := "0111" c_cpurust_runs
slv2 := "00" c_aunit_mod_pass
slv4 := "0010" c_cpurust_reset
slv4 := "0110" c_lunit_func_bit
slv2 := "00" c_fork_dsta_def
slv2 := "11" c_munit_func_ashc
slv16 := x"0000" rbaddr_cpu0_core
slv4 := "0001" c_fork_op_wait
slv4 := "0000" c_lunit_func_asr
slv4 := "0011" c_cpurust_stop
slv4 := "1000" c_fork_op_br
slbit := '1' c_dpath_dsrc_res
slv4 := "0110" c_fork_op_spl
parpdr_type :=(( others => '0'), "0000000", '0', "000") parpdr_init
slv5 := "00010" c_rbaddr_stat
slv5 := "00100" c_cpfunc_creset
mmu_stat_type :=( others => '0') mmu_stat_init
slv2 := "10" c_munit_func_ash
cpustat_type :=( '0', '0', '0', '0', '0', '0', '0', '0', c_cpurust_init, '0', '0', "00000", "000", '0', '0', '0', '0', '0', '0',( others => '0'), "111", '0', '0', '0', '0', '0', '0', '0', '0') cpustat_init
slv4 := "0100" c_fork_opg_wind
slv2 := "10" c_ounit_asel_pc
slv2 := "01" c_ounit_asel_dsrc
integer := 8#240# conf_vect_pirq
slv3 := "011" c_fork_opa_mfp_reg
cp_addr_type :=(( others => '0'), '0', "00", '0', '0') cp_addr_init
slv5 := "00000" c_rbaddr_conf
slv2 := "11" c_aunit_mod_one
slv4 := "0100" c_fork_op_reset
slv4 := "0110" c_cpurust_hbpt
slv2 := "10" c_dpath_vmaddr_pc
slv4 := "1001" c_lunit_func_swap
slv4 := "0101" c_fork_opg_mul
psw_type :=( "00", "00", '0', "000", '0', "0000") psw_init
slv3 := "011" c_dpath_res_munit
slv5 := "00101" c_cpfunc_breset
em_sres_type :=( '0', '0',( others => '0')) em_sres_init
slv16 := x"0048" rbaddr_dmcmon_off
em_mreq_type :=( '0', '0', "00", '0',( others => '0'),( others => '0')) em_mreq_init
slv4 := "0001" c_fork_opg_wdef
slv5 := "00101" c_rbaddr_ah
slv4 := "0010" c_fork_opg_winc
integer := 1 c_stat_rbf_cmdmerr
slv4 := "1100" c_cpurust_sfail
slv3 := "100" c_psr_func_wall
slv4 := "0110" c_fork_opg_div
slv5 := "00110" c_rbaddr_mem
integer := 3 c_snum_f_err
integer := 0 c_stat_rbf_cmderr
mmu_mmr3_type :=( others => '0') mmu_mmr3_init
slv4 := "0001" c_lunit_func_asl
slv2 := "01" c_dpath_vmaddr_ddst
integer range 5 downto 0 c_ah_rbf_addr
integer range 7 downto 4 c_stat_rbf_cpurust
slv5 := "00001" c_rbaddr_cntl
slv2 := "11" c_ounit_bsel_ireg8
slv3 := "001" c_fork_opa_jmp
slv3 := "001" c_psr_func_wcc
integer range 3 downto 0 psw_ibf_cc
slv5 := "10000" c_rbaddr_membe
decode_stat_type :=( '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', "000", '0', '0', "00", "00", "00", '0', "000", "0000", "00", "000", "0000", "00", "00", "00", "0000", "000", '0', '0', '0', '0', '0', '0') decode_stat_init
vm_stat_type :=( others => '0') vm_stat_init
slv2 := "11" c_dpath_dtmp_drese
slv16 := x"4000" rbaddr_cpu0_ibus
slv3 := "011" c_aunit_ccmode_dec
integer := 3 conf_pri_pirq_3
integer := 7 conf_pri_pirq_7
slv3 := "000" c_aunit_ccmode_clr
integer := 9 c_stat_rbf_suspext
slv3 := "100" c_dpath_res_vmdout
mmu_cntl_type :=( '0', '0', '0', '0', '0', "00") mmu_cntl_init
dpath_stat_type :=( others => '0') dpath_stat_init
slbit := '0' c_dpath_dsrc_src
integer := 7 c_snum_f_vmw
slv5 := "00110" c_cpfunc_suspend
slv5 := "10100" c_cpfunc_rmem
mmu_moni_type :=( '0', '0', '0', '0', "000", "0000", '0', '0') mmu_moni_init
slv4 := "1000" c_fork_opg_ashc
dm_stat_ca_type :=( '0', '0', '0', '0', '0', '0', '0', '0') dm_stat_ca_init
slv5 := "00111" c_cpfunc_resume
slv4 := "0011" c_fork_op_trap
slv4 := "0000" c_fork_op_halt
slv3 := "000" c_psr_func_wspl
integer := 4 psw_ibf_tflag
slbit := '0' c_dpath_ddst_dst
slv3 := "111" c_dpath_res_cpdin
slv3 := "101" c_aunit_ccmode_adc
vm_cntl_type :=( '0', '0', '0', '0', '0', '0', '0', '0', "00") vm_cntl_init
slv3 := "001" c_dpath_res_aunit
slv3 := "010" c_dpath_res_lunit
slv4 := "0101" c_lunit_func_bic
integer := 7 c_ah_rbf_ena_ubmap
cp_stat_type :=( '0', '0', '0', '0', '0', '0', '0', '0',( others => '0'), '0', '0') cp_stat_init
slv5 := "01100" c_rbaddr_r4
slv2 := "11" c_dpath_vmaddr_dtmp
slv2 := "10" c_dpath_dtmp_dres
integer range 15 downto 1 c_al_rbf_addr
slv2 := "10" c_fork_dsta_dec
slv5 := "01101" c_rbaddr_r5
slv2 := "00" c_fork_srcr_def
slv16 := x"0040" rbaddr_dmscnt_off
slv3 := "010" c_fork_opa_mtp
mmu_mmr1_type :=( "00000", "000", "00000", "000") mmu_mmr1_init
slv4 := "0010" c_lunit_func_ror
cp_cntl_type :=( '0', c_cpfunc_noop, "000") cp_cntl_init
slv2 := "11" c_fork_dsta_ind
slv4 := "0000" c_fork_opg_gen
slv2 := "01" c_fork_dsta_inc
slv2 := "10" c_aunit_mod_zero
slv2 := "11" c_fork_dstr_ind
slv5 := "01000" c_rbaddr_r0
slv4 := "1010" c_lunit_func_xor
slv2 := "01" c_fork_dstr_inc
slv5 := "00011" c_rbaddr_psw
slv4 := "1010" c_fork_op_sob
integer := 2 c_snum_f_vec
slv5 := "10010" c_cpfunc_rpsw
slv5 := "01010" c_rbaddr_r2
slv2 := "00" c_ounit_asel_ddst
slv5 := "00010" c_cpfunc_stop
integer := 0 c_init_rbf_greset
slv4 := "0111" c_fork_opg_ash
slv3 := "001" c_aunit_ccmode_com
dpath_cntl_type :=( "000", "000", "00", '0', '0', '0', '0', '0', '0', "000", '0', '0', '0', '0', "00", '0', "00", '0', "000000000", "00", '0', "00", "00", "00", '0', "000", '0', "0000", '0', "00", '0', '0', '0', '0', '0', '0', '0', '0', '0', "000", "000", "00", '0') dpath_cntl_init
integer := 12 sbcntl_sbf_tmu
slv5 := "10101" c_cpfunc_wmem
integer := 8 c_stat_rbf_suspint
slv5 := "01011" c_rbaddr_r3
slv4 := "0011" c_lunit_func_rol
slv5 := "01001" c_rbaddr_r1
slv2 := "10" c_fork_dstr_dec
slv2 := "00" c_dpath_dtmp_dsrc
slv2 := "01" c_aunit_mod_inv
slv5 := "01110" c_rbaddr_sp
slv5 := "00011" c_cpfunc_step
dm_stat_exp_type :=(( others => '0'), psw_init,( others => '0'), '0', '0') dm_stat_exp_init
integer range 13 downto 12 psw_ibf_pmode
slv5 := "10000" c_cpfunc_rreg
slv3 := "010" c_aunit_ccmode_inc
slv4 := "1101" c_cpurust_vfail
slv4 := "1011" c_fork_op_mtp
slv2 := "11" c_ounit_asel_dtmp
integer := 6 conf_pri_pirq_6
integer := 3 c_stat_rbf_cpususp
dm_stat_vm_type :=( vm_cntl_init,( others => '0'),( others => '0'), vm_stat_init,( others => '0'), ib_mreq_init, ib_sres_init, em_mreq_init, em_sres_init) dm_stat_vm_init
integer := 4 conf_pri_pirq_4
slv5 := "00000" c_cpfunc_noop
integer range 15 downto 14 psw_ibf_cmode
integer := 2 c_membe_rbf_stick
slv4 := "0101" c_cpurust_susp
slv5 := "00111" c_rbaddr_memi
slv4 := "1000" c_lunit_func_sxt
integer := 1 c_snum_f_ins
slv4 := "0111" c_lunit_func_mov
slv16 := x"0060" rbaddr_dmpcnt_off
slv4 := "0100" c_lunit_func_bis
slv4 := "0011" c_fork_opg_wdec
slv3 := "111" c_aunit_ccmode_tst
slv4 := "0101" c_fork_op_rts
slv3 := "010" c_psr_func_wint
mmu_mmr0_type :=( inst_compl=> '0', page_mode=> "00", page_num=> "000", others => '0') mmu_mmr0_init
slv4 := "1000" c_cpurust_vecfet
slv3 := "110" c_dpath_res_ireg
integer range 1 downto 0 c_membe_rbf_be
slv3 := "000" c_dpath_res_ounit
integer := 2 c_stat_rbf_cpugo
slv2 := "01" c_fork_srcr_inc
slv4 := "0000" c_cpurust_init
dm_stat_co_type :=( '0', '0', '0', '0', '0') dm_stat_co_init
dm_stat_se_type :=( '0', '0', '0', '0', '0', '0', '0', '0',( others => '0')) dm_stat_se_init
integer := 11 psw_ibf_rset
slv2 := "01" c_dpath_dtmp_psw
integer := 5 conf_pri_pirq_5
slv2 := "01" c_munit_func_div
slv5 := "10001" c_cpfunc_wreg
integer := 2 conf_pri_pirq_2
slv5 := "10011" c_cpfunc_wpsw
slv16 := x"0050" rbaddr_dmhbpt_off
dm_stat_dp_type :=(( others => '0'), psw_init, '0',( others => '0'), '0',( others => '0'), '0',( others => '0'), '0',( others => '0'), '0',( others => '0'), '0',( others => '0'),( others => '0'), '0', '0') dm_stat_dp_init
slv4 := "0010" c_fork_op_rtti
cpuerr_type :=( others => '0') cpuerr_init
integer := 6 c_ah_rbf_ena_22bit
slbit := '1' c_dpath_ddst_res
slv5 := "01111" c_rbaddr_pc
slv2 := "00" c_ounit_bsel_const
integer := 0 c_snum_f_con
integer range 7 downto 5 psw_ibf_pri
slv4 := "0111" c_fork_op_mcc
slv3 := "000" c_fork_opa_jsr
slv3 := "100" c_aunit_ccmode_neg
slv5 := "00100" c_rbaddr_al
integer := 1 conf_pri_pirq_1
slv4 := "0100" c_cpurust_step
slv2 := "01" c_ounit_bsel_vmdout
slv3 := "100" c_fork_opa_mfp_mem
slv2 := "00" c_munit_func_mul
slv4 := "1001" c_cpurust_recser
slv3 := "011" c_psr_func_wrti
slv2 := "10" c_ounit_bsel_ireg6
slv2 := "10" c_fork_srcr_dec
slv4 := "1001" c_fork_op_mark
slv2 := "00" c_dpath_vmaddr_dsrc
slv5 := "00001" c_cpfunc_start
slv2 := "11" c_fork_srcr_ind
slv4 := "0001" c_cpurust_halt
std_logic_vector( 19 downto 0) slv20
std_logic_vector( 21 downto 1) slv22_1
std_logic_vector( 3 downto 0) slv4
std_logic_vector( 4 downto 0) slv5
std_logic_vector( 6 downto 0) slv7
std_logic_vector( 2 downto 0) slv3
std_logic_vector( 8 downto 2) slv9_2
std_logic_vector( 8 downto 0) slv9
std_logic_vector( 31 downto 0) slv32
std_logic_vector( 15 downto 0) slv16
std_logic_vector( 17 downto 1) slv18_1
std_logic_vector( 7 downto 0) slv8
std_logic_vector( 1 downto 0) slv2