OpenCores
URL https://opencores.org/ocsvn/mytwoqcache/mytwoqcache/trunk

Subversion Repositories mytwoqcache

[/] [mytwoqcache/] [trunk/] [2QCache.vhd] - Diff between revs 17 and 18

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 17 Rev 18
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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.