www.gusucode.com > visionhdl工具箱matlab源码程序 > visionhdl/visionhdlutilities/@visionhdlsupport/@MedianFilter/cgireml/memWriteFSM.m

    function  [wenb,wRst,endLine,spaceCntEnb,yinLine,yreachvEnd,vsRst] = memWriteFSM(hStart,hEnd,vStart,vEnd,dataValid,readDone,reachMaxLineSize)   

       
persistent inFrame inLine reachvEnd

wenb = false;
wRst = false;
endLine = false;
spaceCntEnb = false;
vsRst = false;


if isempty(inFrame)
inFrame = false;
inLine = false;
reachvEnd = false;
end


yinLine = inLine;
yreachvEnd = reachvEnd;  

if readDone 
    reachvEnd = false;
end

 if inFrame && ~yinLine
     spaceCntEnb = true;
 end

 hEnd_final = hEnd || reachMaxLineSize; 
 
       if dataValid
           if inFrame && inLine
               wenb = true;
           end
           
           if vStart
              vsRst = true; %Frame start clean up 
              inLine = false;
              wenb = false;
             % wRst = true;
              reachvEnd = false;
              
              inFrame = true;
               if hStart
                   inLine = true;
                   wenb = true;
                   wRst = true;
               end
               
                            
           elseif inFrame && vEnd
               
               inFrame = false;
               wRst = true; 
               reachvEnd = true;
        
               if hEnd
                inLine = false;
               end
           elseif inFrame && inLine && hEnd_final
            
               inLine = false;
               wRst = true; 
               endLine = true;

              
               
           elseif inFrame && hStart
                       
              wenb = true; 
              inLine = true;
              wRst = true; % for multiple hStart
           end
           

       end