亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? memorylib.vhd

?? nand flash NAND01GR3B (st)的仿真模型 (VHDL) 的
?? VHD
?? 第 1 頁 / 共 3 頁
字號:
           if (ins_pnt.endAddr - prev_pnt.endAddr = 1) then 
           
              insdel_num:= 1;
              exit;
              
           else 
              mypointer:= ins_pnt;
              ins_pnt:= null;
              mydata:= FF;
              myadd:= myadd - 1;
              insdel_num:= 2;
           end if;
        end if;   

      end loop;

   end;


   ---------------------------------------------------------------------
   --------  Insert a cell in the tail of the memory list  -------------
   ---------------------------------------------------------------------

   procedure AddCellToTail(variable tail: inout cell_pointer; variable data: in DataMem_type; variable insdel_num: inout integer) is
   variable pnt: cell_pointer;
   begin

        pnt:= new memory_cell;
        pnt.endAddr:= Last_Addr;
        pnt.value:= data;
        pnt.prev:= tail;
        tail.nexto:= pnt;

        tail:= pnt;
        insdel_num:= 1;

   end;

   ---------------------------------------------------------------
   ------------  Error Message during Add operation  -------------
   ---------------------------------------------------------------

   procedure AddressError is
   begin

      assert (false) report "The specified address is out of the memory range" severity note;

   end;


   ---------------------------------------------------------------
   -----------  Error Message in writing operation  --------------
   ---------------------------------------------------------------

   procedure WriteError is
   begin

     assert (false) report "The specified location is not empty. It is not possible writing on it." 
     severity note;

   end;

   ----------------------------------------------------------------
   -----------  Add a cell to the head of the memory list  --------
   ----------------------------------------------------------------

   procedure AddCellToHead(variable head: inout cell_pointer; variable add: in AddrMem_type; variable data: in DataMem_type; variable insdel_num: inout integer) is
   variable pnt_one, pnt_two: cell_pointer;
   begin
   
     pnt_one:= new memory_cell;
     pnt_one.endAddr:= add;
     pnt_one.value:= data;

     head.prev:= pnt_one;

     if add /= 0 then 
     
        pnt_two:= new memory_cell;
     
        pnt_one.prev:= pnt_two;
        pnt_two.prev:= null;

        pnt_two.nexto:= pnt_one;
        pnt_one.nexto:= head;

        head:= pnt_two;
        
        head.value:= FF;
        head.endAddr:= add - 1;

        insdel_num:= 2;

     else                        -- Write at the address 000000 

        pnt_one.prev:= null;
        pnt_one.nexto:= head;
        head:= pnt_one;

        insdel_num:= 1;

     end if;

   end;

   ---------------------------------------------------------------
   ---------  Read the data in a memory cell  --------------------
   ---------------------------------------------------------------

   procedure getMemory(variable memory: in memory_rec; variable add: in AddrMem_type; variable data: out DataMem_type) is
   variable pnt, pnt2, next_pnt: cell_pointer;
   variable read_mode: modality;
   variable writeError: boolean;
   begin

     pnt := memory.head;
     pnt2:= memory.tail;
     writeError:= false;

     if add < 0 or add > Last_addr then AddressError;
     
     elsif 
          add = pnt.endAddr then data:= pnt.value;

     elsif 
          add < pnt.endAddr then data:= FF;

     elsif 
          add = pnt2.endAddr then data:= pnt2.value;

     else    -- 0 < add < Last_Addr 

         read_mode:= reading;
         SearchForRightPosition(memory.middle, pnt, next_pnt, add, read_mode, writeError);
         if pnt /= null then data:= pnt.value;
         else data:= FF;
         end if;

     end if;    

   end;


   ---------------------------------------------------------------
   ---------  Read a vector of data in the memory ----------------
   ---------------------------------------------------------------

   procedure getMemoryBuffer(variable memory: in memory_rec; variable firstAdd: in AddrMem_type; variable numData: in natural; variable dataVector: out MemBuffer_type) is
   variable pnt, pnt2, firstData_pnt, nextData_pnt, current_pnt: cell_pointer;
   variable read_mode: modality;
   variable writeError: boolean;
   variable add : AddrMem_type;
   variable index : natural;
   begin

     pnt := memory.head;
     pnt2:= memory.tail;
     writeError:= false;
     nextData_pnt := null;

     if firstAdd < 0 or firstAdd > Last_addr then AddressError;

     --elsif firstAdd + numData > Memory_Dim - 1 then AddressError;

     elsif firstAdd = pnt.endAddr  then 
        
        firstData_pnt := pnt;
        nextData_pnt  := firstData_pnt.nexto;

     elsif firstAdd = pnt2.endAddr then 
        
        firstData_pnt := pnt2;
        nextData_pnt:= null;   -- pnt2 point to the tail

     elsif firstAdd < pnt.endAddr  then 
     
        firstData_pnt := null;
        nextData_pnt  := pnt;   -- head


     else    -- 0 < add < Last_Addr 

             read_mode:= reading;
             SearchForRightPosition(memory.middle, firstData_pnt, nextData_pnt, firstAdd, read_mode, writeError);

     end if;
        
     add := firstAdd;
     current_pnt:= firstData_pnt;
     
     for index in 1 to numData loop
        
        if current_pnt = null then 
        
                dataVector(index) := FF;
                        
        else    -- current_pnt /= null

                dataVector(index) := current_pnt.value;
        end if;
         
        if add + 1 > Memory_dim - 1 then 
                
                AddressError;
                exit;
        
        else 
                add := add + 1;
        
                if nextData_pnt = null then exit;
        
                elsif add < nextData_pnt.endAddr then current_pnt := null;
        
                elsif add = nextData_pnt.endAddr then 
        
                        current_pnt := nextData_pnt;
                        nextData_pnt := nextData_pnt.nexto;
              
                else exit;    -- add > nextData_pnt.endAddr => abbiamo finito !!!

                end if;
        end if;

     end loop;
    
   end;

  
   ---------------------------------------------------------------
   ------  Add or remove a cell to the memory list  --------------
   ---------------------------------------------------------------

   procedure putMemory(variable memory: inout memory_rec; variable add: in AddrMem_type; variable data: in DataMem_type) is
   variable pointer: cell_pointer;
   variable pnt, pnt2, nxpnt: cell_pointer;
   variable mode: modality;
   variable insdel_num: integer;
   variable writeError: boolean;             -- goes true if address is already in the list
   begin

     insdel_num:= 0;
     pnt := memory.head;
     pnt2:= memory.tail;
     writeError:= false;

     if (add > Last_Addr) or (add < 0) then AddressError;

     else            -- 0 <= add <= Last_Addr

        if data = FF then 
        
           mode:= erasing;

           -- if add < head.endAddr the cell is already to FF

           if  add = pnt.endAddr then 
           
                 if pnt.value /= FF then EraseHead(memory.head, insdel_num);
                 end if;
         
            elsif add = Last_Addr then EraseTail(memory.tail, insdel_num);
            
            elsif add > pnt.endAddr then       -- head.endAddr < add < Last_Addr 

               SearchForRightPosition(memory.middle, pointer, nxpnt, add, mode, writeError);
               if pointer /= null then EraseCell(memory, pointer, insdel_num);
               end if;

            end if;
        
        else                  -- data /= FF  =>   mode = writing 
        
             mode:= writing;
             --AddressInList(memory, add, addError);

             if  add = pnt.endAddr then 
                 if pnt.value /= FF then  pnt.value:= data;     --WriteError;         
                 else 
                     if add = 0 then pnt.value:= data; 
                     else    
                         pnt.endAddr:= pnt.endAddr - 1;
                         InsertCell(pnt.nexto, add, data, insdel_num);
                     end if;    
                 end if;
         
             elsif add < pnt.endAddr then AddCellToHead(memory.head, add, data, insdel_num); 

             elsif add = Last_addr then 

                if pnt2.value /= FF then  pnt2.value:= data;     --WriteError;         
                
                else 
                   pnt2.endAddr:= pnt2.endAddr - 1;
                   AddCellToTail(memory.tail, data, insdel_num);
                end if;   

             else         -- head.endAddr < add < Last_Addr 

               SearchForRightPosition(memory.middle, pointer, nxpnt, add, mode, writeError);
               if writeError then pointer.value:= data;   -- address is already written in the memory
               else
                   if pointer /= null then InsertCell(pointer, add, data, insdel_num);
                   end if;
               end if;    

             end if;

        end if;

        UpdateMiddle(memory, add, mode, insdel_num);         -- Update the pointer to the middle of the list

      end if;

   end;


   ---------------------------------------------------------------------
   ----------------  Erase a cell in the memory list  ------------------
   ---------------------------------------------------------------------

   procedure EraseCell(variable memory: inout memory_rec; variable pointer: inout cell_pointer; variable insdel_num: inout integer) is
   variable i: integer;
   variable prev_pnt, next_pnt, other_pnt, double_prev: cell_pointer;
   begin

     -- erase the pointed cell and the previous cell only if its data is FF

     prev_pnt:= pointer.prev;
     next_pnt:= pointer.nexto;
     double_prev := prev_pnt.prev;

     if (prev_pnt.value = FF) and (next_pnt.value = FF) then   -- remove prev and pointer 
       
        if (prev_pnt = memory.head) then

           next_pnt.prev:= null;
           pointer.nexto:= null;
           pointer.prev:= null;
           prev_pnt.nexto:= null;

           memory.head:= next_pnt;    -- change head

           if (pointer = memory.middle) or (prev_pnt = memory.middle) then 
           
                memory.middle:= next_pnt;
                if memory.bal_value = left then memory.bal_value := centre;
                elsif memory.bal_value = centre then memory.bal_value := right;
                end if;

           end if;

        else        -- prev_pnt != head

           other_pnt:= prev_pnt.prev;
           other_pnt.nexto:= next_pnt;
           next_pnt.prev:= other_pnt;
           prev_pnt.prev:= null;
           prev_pnt.nexto:= null;
           pointer.nexto:= null;
           pointer.prev:= null;
        
           if (pointer = memory.middle) or (prev_pnt = memory.middle) then 
           
                memory.middle:= next_pnt;
                if memory.bal_value = left then memory.bal_value := centre;
                elsif memory.bal_value = centre then memory.bal_value := right;
                end if;
           

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美视频一区| 久久久久亚洲蜜桃| 成人免费视频视频| 国产不卡在线视频| 国产精品69久久久久水密桃| 国产在线精品一区在线观看麻豆| 毛片一区二区三区| 激情小说欧美图片| 国产美女视频一区| 成人18精品视频| 99re热视频这里只精品| 色又黄又爽网站www久久| 日本高清成人免费播放| 日本韩国精品在线| 7777精品伊人久久久大香线蕉 | 精品99999| 国产日韩成人精品| 最好看的中文字幕久久| 亚洲国产中文字幕| 国产主播一区二区| 丁香啪啪综合成人亚洲小说 | 精品一区二区三区在线观看| 美国av一区二区| 粉嫩久久99精品久久久久久夜| 成人福利电影精品一区二区在线观看| 不卡区在线中文字幕| 欧美在线一区二区三区| 91精品国产综合久久久蜜臀图片| 欧美α欧美αv大片| 久久精品亚洲精品国产欧美kt∨ | 亚洲成a人在线观看| 美女网站色91| 99在线精品观看| 欧美日韩成人高清| 久久久久九九视频| 亚洲综合激情网| 国产成人亚洲精品青草天美| 一本到高清视频免费精品| 日韩免费看的电影| 亚洲另类春色国产| 国产精品影视网| 欧美午夜片在线看| 亚洲国产精品传媒在线观看| 天天操天天综合网| 9i在线看片成人免费| 欧美一区二区三区婷婷月色| 国产精品美女久久久久久久久久久 | 精品国产亚洲一区二区三区在线观看 | 久久99精品国产麻豆婷婷| 99v久久综合狠狠综合久久| 91麻豆精品国产91久久久久久久久| 久久久精品免费观看| 日韩在线一区二区三区| 91免费观看在线| 国产大陆a不卡| 欧美日韩亚州综合| 亚洲制服丝袜av| 亚洲精品久久久久久国产精华液| 日日夜夜精品免费视频| 日韩三级免费观看| 高清不卡一二三区| 亚洲一区影音先锋| 久久综合久久99| 91捆绑美女网站| 欧美a级理论片| 日本一区二区成人| 欧美日韩中字一区| 懂色av中文一区二区三区| 亚洲成人自拍一区| 久久夜色精品国产噜噜av | 精品日韩成人av| 99久久99久久精品免费看蜜桃| 亚洲国产日韩综合久久精品| 欧美大片在线观看一区| 91在线观看高清| 加勒比av一区二区| 亚洲精品久久久久久国产精华液| 日韩一卡二卡三卡四卡| 91网站在线播放| 国产九色精品成人porny | 欧美亚洲国产一区二区三区va| 蜜臀精品久久久久久蜜臀| 亚洲人成精品久久久久| 精品福利一区二区三区免费视频| 91老师片黄在线观看| 国产久卡久卡久卡久卡视频精品| 夜夜爽夜夜爽精品视频| 亚洲国产精品av| 精品欧美一区二区久久 | 亚洲一区在线电影| 国产精品久久毛片a| 欧美一区二区三区免费视频| 99这里都是精品| 国产精品资源在线观看| 美女视频第一区二区三区免费观看网站 | 91麻豆国产在线观看| 国产精品一品视频| 日韩专区在线视频| 香蕉久久一区二区不卡无毒影院| 国产精品乱码久久久久久| xf在线a精品一区二区视频网站| 欧美三级在线播放| 欧洲亚洲精品在线| 色综合久久久久久久久| 成人av网站在线| 国产美女精品一区二区三区| 久久机这里只有精品| 青青草97国产精品免费观看| 亚洲午夜久久久久久久久久久| 亚洲免费av在线| 一区二区三区美女视频| 亚洲免费电影在线| 亚洲自拍偷拍麻豆| 亚洲一级二级三级在线免费观看| 中文字幕一区二区三区四区不卡 | 欧美电影免费观看高清完整版在线 | 欧美一级爆毛片| 日韩午夜激情av| 精品理论电影在线观看| 精品免费日韩av| 久久婷婷国产综合精品青草| www久久久久| 日本一区二区成人| 亚洲欧洲精品一区二区三区不卡 | 国产亚洲一区二区三区在线观看| 精品成人在线观看| 欧美国产日本韩| 中文字幕综合网| 亚洲国产精品综合小说图片区| 亚洲高清三级视频| 久久精品免费观看| 国产电影精品久久禁18| 成人动漫在线一区| 91福利小视频| 日韩一二三区视频| 欧美不卡在线视频| 国产精品久久久久7777按摩 | 国产精品中文欧美| av资源网一区| 欧美日韩一区二区在线观看视频| 欧美老人xxxx18| 欧美精品一区二区三区高清aⅴ| 国产色一区二区| 亚洲主播在线播放| 久久国产剧场电影| 91在线视频在线| 91精品国产综合久久久久久| 精品国产成人系列| 亚洲老司机在线| 蜜臀va亚洲va欧美va天堂| 懂色av一区二区三区免费看| 日本精品视频一区二区| 日韩欧美中文字幕精品| 中文字幕一区二区三区四区| 亚洲宅男天堂在线观看无病毒| 久久99最新地址| 欧美中文字幕一区| 久久九九全国免费| 婷婷国产在线综合| 不卡的av在线播放| 欧美一级在线免费| 亚洲情趣在线观看| 国产成人在线免费观看| 欧美乱熟臀69xxxxxx| 欧美国产亚洲另类动漫| 亚洲小说欧美激情另类| 高清国产午夜精品久久久久久| 欧美视频在线一区二区三区| 久久亚区不卡日本| 日韩国产高清影视| 色哦色哦哦色天天综合| 欧美极品xxx| 韩国精品久久久| 91麻豆精品国产91久久久久久 | 欧美美女一区二区在线观看| 国产精品每日更新在线播放网址| 免费亚洲电影在线| 91久久精品一区二区| 国产香蕉久久精品综合网| 午夜精品在线视频一区| 91啪亚洲精品| 国产精品美女一区二区三区| 韩国精品一区二区| 欧美一级夜夜爽| 亚洲第一久久影院| 欧美最猛性xxxxx直播| 亚洲色图欧美激情| 不卡视频免费播放| 国产精品另类一区| 成人天堂资源www在线| 久久精品人人做人人爽97| 国产自产v一区二区三区c| 欧美一区二区成人6969| 天堂av在线一区| 9191成人精品久久| 日本va欧美va精品| 日韩女优av电影在线观看| 天堂精品中文字幕在线| 欧美精品v国产精品v日韩精品| 亚洲一二三四区|