28use ieee.std_logic_1164.
all;
29use ieee.numeric_std.
all;
79 subtype imf_typ is integer range 3 downto 2;
80 subtype imf_ds is integer range 1 downto 0;
267 if rising_edge(CLK) then
274 end process proc_regs;
279 variable ibhold : slbit := '0';
280 variable idout : slv16 := (others=>'0');
281 variable ibrem : slbit := '0';
282 variable ibreq : slbit := '0';
283 variable ibrd : slbit := '0';
284 variable ibw0 : slbit := '0';
285 variable ibw1 : slbit := '0';
286 variable ibwrem : slbit := '0';
287 variable ilam : slbit := '0';
288 variable iei_req : slbit := '0';
290 variable imem_we0 : slbit := '0';
291 variable imem_we1 : slbit := '0';
292 variable imem_addr : slv4 := (others=>'0');
293 variable imem_din : slv16 := (others=>'0');
300 idout := (others=>'0');
306 ibwrem := IB_MREQ.we and ibrem;
312 imem_addr := "00" & IB_MREQ.addr(2 downto 1);
331 case IB_MREQ.addr(2 downto 1) is
353 if r.csde = '1' or r.cse /= e_ok then
366 if r.cscrdy = '1' then
375 if r.cscrdy = '1' then
399 n.state := s_gs_rpos;
409 n.state := s_seek_rsta;
453 n.da(15 downto 8) := IB_MREQ.din(15 downto 8);
456 n.da( 7 downto 0) := IB_MREQ.din( 7 downto 0);
472 idout := (others => '0');
562 n.state := s_seek_rpos;
575 n.state := s_seek_clip;
578 n.seekcac := r.seekcan(8 downto 0);
580 if r.seekcan(9) = '1' or
581 (r.seekdt = '0' and r.seekcan(8) = '1') then
583 if r.seekdt = '1' then
589 n.seekcac := "000000000";
593 n.state := s_seek_wpos;
607 imem_addr := r.iaddr;
608 imem_din := (others=>'0');
621 n.iaddr := slv(unsigned(r.iaddr) + 1);
622 if unsigned(r.iaddr) = unsigned(imem_sta)+3 then
631 if EI_ACK = '1' or r.csie = '0' then
643 IB_SRES.ack <= r.ibsel and ibreq;
644 IB_SRES.busy <= ibhold and ibreq;
649 end process proc_next;
slv16 := slv( to_unsigned( 8#174400#, 16) ) ibaddr_rl11
integer := 10 sta_ibf_wge
slv16 :=( others => '0') MEM_DOUT
integer range 5 downto 4 rlcs_ibf_bae
slv9 := "111111111" ca_max_rl02
integer range 3 downto 0 mprem_f_addr
slv2 := "11" mprem_mapseq
integer range 2 downto 0 sta_ibf_st
integer := 7 rlcs_ibf_crdy
slv16 := "0000000000000011" rlda_val_gs
integer := 3 rlda_ibf_gs_rst
integer := 4 rlda_ibf_seek_hs
integer := 12 sta_ibf_sto
slv9 := "011111111" ca_max_rl01
integer range 1 downto 0 imf_ds
slv16 :=( others => '0') MEM_DIN
integer := 14 sta_ibf_che
integer := 4 rlcs_ibf_ena_mploc
slv5 := "10000" mprem_init
integer range 3 downto 1 rlcs_ibf_func
slv16 := "0000000000000001" rlda_val_seek
integer := 15 rlcs_ibf_err
slv16 := "0000000000001011" rlda_msk_seek
slv4 :=( others => '0') MEM_ADDR
integer := 2 rlda_ibf_seek_dir
integer := 5 rlcs_ibf_ena_mprem
slv3 := "001" mprem_s_sta
slv16 := "0000000011110111" rlda_msk_gs
integer range 15 downto 7 pos_ibf_ca
(s_idle,s_csread,s_gs_rpos,s_gs_sta,s_seek_rsta,s_seek_rpos,s_seek_clip,s_seek_wpos,s_init) state_type
regs_type := regs_init R_REGS
integer range 10 downto 8 rlcs_ibf_mploc
integer := 15 sta_ibf_wde
integer range 3 downto 2 imf_typ
regs_type :=( '0', s_init, imem_ba, '0', '0',( others => '0'),( others => '0'), '1', '0',( others => '0'),( others => '0'), '0',( others => '0'), '0', '0',( others => '0'),( others => '0'), '0', mploc_mp, mprem_init, '1') regs_init
integer range 9 downto 8 rlcs_ibf_ds
integer range 5 downto 0 pos_ibf_sa
slv3 := "010" mprem_s_pos
integer := 0 rlcs_ibf_drdy
integer range 13 downto 10 rlcs_ibf_e
integer range 15 downto 11 rlcs_ibf_mprem
integer := 11 sta_ibf_spe
integer range 2 downto 0 mprem_f_state
integer range 15 downto 7 rlda_ibf_seek_df
integer := 14 rlcs_ibf_de
in ADDR slv( AWIDTH- 1 downto 0)
out DO slv( DWIDTH- 1 downto 0)
in DI slv( DWIDTH- 1 downto 0)
std_logic_vector( 9 downto 0) slv10
std_logic_vector( 3 downto 0) slv4
std_logic_vector( 4 downto 0) slv5
std_logic_vector( 2 downto 0) slv3
std_logic_vector( 8 downto 0) slv9
std_logic_vector( 15 downto 0) slv16
std_logic_vector( 1 downto 0) slv2