27use ieee.std_logic_1164.
all;
28use ieee.numeric_std.
all;
173 if rising_edge(CLK) then
176 end process proc_regs;
181 variable ibhold : slbit := '0';
182 variable idout : slv16 := (others=>'0');
183 variable ibrem : slbit := '0';
184 variable ibreq : slbit := '0';
185 variable ibrd : slbit := '0';
186 variable ibw0 : slbit := '0';
187 variable ibw1 : slbit := '0';
188 variable ibwrem : slbit := '0';
189 variable ilam : slbit := '0';
197 idout := (others=>'0');
203 ibwrem := IB_MREQ.we and ibrem;
218 case IB_MREQ.addr(3 downto 1) is
228 if r.crunit2 = '0' then
229 idout(sr_ibf_eof) := r.sreof(to_integer(unsigned(r.crunit)));
230 idout(sr_ibf_eot) := r.sreot(to_integer(unsigned(r.crunit)));
231 idout(sr_ibf_onl) := r.sronl(to_integer(unsigned(r.crunit)));
232 idout(sr_ibf_bot) := r.srbot(to_integer(unsigned(r.crunit)));
233 idout(sr_ibf_wrl) := r.srwrl(to_integer(unsigned(r.crunit)));
234 idout(sr_ibf_rew) := r.srrew(to_integer(unsigned(r.crunit)));
239 r.sreof(to_integer(unsigned(r.crunit))) or
241 r.sreot(to_integer(unsigned(r.crunit))) or
256 if r.crrdy = '1' then
280 n.sreof := (others=>'0');
281 n.sreot := (others=>'0');
282 n.srbot := (others=>'0');
283 n.srrew := (others=>'0');
287 if r.crie='0' and n.crie='1' then
326 n.bc(15 downto 8) := IB_MREQ.din(15 downto 8);
329 n.bc( 7 downto 0) := IB_MREQ.din( 7 downto 0);
335 n.ba(15 downto 8) := IB_MREQ.din(15 downto 8);
338 n.ba( 7 downto 1) := IB_MREQ.din( 7 downto 1);
348 idout(rl_ibf_reof) := r.sreof(to_integer(unsigned(r.runit)));
349 idout(rl_ibf_reot) := r.sreot(to_integer(unsigned(r.runit)));
350 idout(rl_ibf_ronl) := r.sronl(to_integer(unsigned(r.runit)));
351 idout(rl_ibf_rbot) := r.srbot(to_integer(unsigned(r.runit)));
352 idout(rl_ibf_rwrl) := r.srwrl(to_integer(unsigned(r.runit)));
353 idout(rl_ibf_rrew) := r.srrew(to_integer(unsigned(r.runit)));
377 if r.resreq = '1' then
383 n.sreof := (others=>'0');
384 n.sreot := (others=>'0');
385 n.crden := (others=>'0');
388 n.crunit := (others=>'0');
391 n.crea := (others=>'0');
392 n.crfunc := (others=>'0');
393 n.bc := (others=>'0');
394 n.ba := (others=>'0');
399 if EI_ACK = '1' or n.crie = '0' then
406 IB_SRES.ack <= r.ibsel and ibreq;
407 IB_SRES.busy <= ibhold and ibreq;
412 end process proc_next;
integer range 7 downto 0 db_ibf_db
integer := 6 cr_ibf_reaena
integer range 14 downto 13 cr_ibf_den
integer range 15 downto 1 ba_ibf_ba
regs_type := regs_init N_REGS
slv3 := "000" func_unload
slv3 := "111" func_rewind
integer := 15 cr_ibf_ricmd
integer := 11 cr_ibf_pevn
integer := 12 cr_ibf_rpae
integer := 10 rl_ibf_reof
integer := 10 cr_ibf_unit2
regs_type := regs_init R_REGS
integer range 3 downto 1 cr_ibf_func
slv16 := slv( to_unsigned( 8#172520#, 16) ) ibaddr_tm11
integer range 2 downto 1 rl_ibf_runit
slv3 := "001" rfunc_wunit
integer range 9 downto 8 cr_ibf_unit
integer range 5 downto 4 cr_ibf_runit
integer range 5 downto 4 cr_ibf_ea
regs_type :=( '0', '0', '0', '0', '0', '0',( others => '0'),( others => '0'),( others => '0'),( others => '0'),( others => '0'),( others => '0'),( others => '0'), '0', '0',( others => '0'), '1', '0',( others => '0'),( others => '0'),( others => '0'),( others => '0'),( others => '0'), '0', '0') regs_init
integer range 5 downto 4 cr_ibf_rea
integer := 15 sr_ibf_icmd
std_logic_vector( 3 downto 0) slv4
std_logic_vector( 2 downto 0) slv3
std_logic_vector( 15 downto 1) slv16_1
std_logic_vector( 15 downto 0) slv16
std_logic_vector( 1 downto 0) slv2