Line 61... |
Line 61... |
constant ldram: integer := blocksizeld + ldways - 1;
|
constant ldram: integer := blocksizeld + ldways - 1;
|
constant ldqueuelength: integer := ldram;
|
constant ldqueuelength: integer := ldram;
|
|
|
type IOType is ( Start, busy);
|
type IOType is ( Start, busy);
|
type tType is ( inittag, startt, startt1, tagtest, tagwait, stateget, stateget1, finish, finished);
|
type tType is ( inittag, startt, startt1, tagtest, tagwait, stateget, stateget1, finish, finished);
|
type rType is ( raminit, ramstart, ramstart1, ramread, ramread1, ramupdate,
|
type rType is ( raminit, ramstart, ramread, ramread1, ramupdate,
|
ramupdate1, ramupdate2, ramupdate3, ramflush, ramflush1, ramwait, ramwait1, ramclean, ramclean1);
|
ramupdate1, ramupdate2, ramupdate3, ramflush, ramflush1, ramwait, ramwait1, ramclean, ramclean1);
|
type fType is ( queuestart, queuewait, queuewaitAm1, queuewaitAm2, queuewaitA11, queuewaitA12, queueelim);
|
type fType is ( queuestart, queuewait, queuewaitAm1, queuewaitAm2, queuewaitA11, queuewaitA12, queueelim);
|
subtype myint is natural range 15 downto 0;
|
subtype myint is natural range 15 downto 0;
|
type TagRAMType is record
|
type TagRAMType is record
|
cacheAddr: std_ulogic_vector( ldram - 1 downto 0);
|
cacheAddr: std_ulogic_vector( ldram - 1 downto 0);
|
Line 384... |
Line 384... |
putf <= '1';
|
putf <= '1';
|
end if;
|
end if;
|
when ramstart =>
|
when ramstart =>
|
if enableram = '1' then -- UPDATE
|
if enableram = '1' then -- UPDATE
|
tagBuff <= tagRAMOut;
|
tagBuff <= tagRAMOut;
|
stateram <= ramstart1;
|
|
end if;
|
|
when ramstart1 =>
|
|
if enableram = '1' then
|
|
if found /= 15 then
|
if found /= 15 then
|
cindex <= tagBuff( found).cacheAddr;
|
cindex <= tagRAMOut( found).cacheAddr;
|
stateram <= ramupdate;
|
stateram <= ramupdate;
|
elsif free /= 15 then
|
elsif free /= 15 then
|
en := '1';
|
en := '1';
|
stateram <= ramwait;
|
stateram <= ramwait;
|
else
|
else
|
cindex <= tagBuff( elim).cacheAddr;
|
cindex <= tagRAMOut( elim).cacheAddr;
|
stateram <= ramupdate;
|
stateram <= ramupdate;
|
end if;
|
end if;
|
end if;
|
end if;
|
when ramupdate =>
|
when ramupdate =>
|
stateram <= ramupdate1;
|
stateram <= ramupdate1;
|