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

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

?? controllogic.vhd

?? the model of cpu ARM7TDMI.
?? VHD
?? 第 1 頁 / 共 5 頁
字號:
 IDR_MOV   <= IDC_MOV;
 IDR_MVN   <= IDC_MVN;

 IDR_MUL   <= IDC_MUL;
 IDR_MLA   <= IDC_MLA;
 IDR_UMULL <= IDC_UMULL;
 IDR_UMLAL <= IDC_UMLAL;
 IDR_SMULL <= IDC_SMULL;
 IDR_SMLAL <= IDC_SMLAL;

 IDR_MSR_R <= IDC_MSR_R;
 IDR_MSR_I <= IDC_MSR_I;
 IDR_MRS   <= IDC_MRS;

 IDR_B     <= IDC_B;
 IDR_BL    <= IDC_BL;
 IDR_BX    <= IDC_BX;

 IDR_LDR   <= IDC_LDR;
 IDR_LDRT  <= IDC_LDRT;
 IDR_LDRB  <= IDC_LDRB;
 IDR_LDRBT <= IDC_LDRBT;
 IDR_LDRSB <= IDC_LDRSB;
 IDR_LDRH  <= IDC_LDRH;
 IDR_LDRSH <= IDC_LDRSH;

 IDR_LDM   <= IDC_LDM;
 
 IDR_STR   <= IDC_STR;
 IDR_STRT  <= IDC_STRT;
 IDR_STRB  <= IDC_STRB;
 IDR_STRBT <= IDC_STRBT;
 IDR_STRH  <= IDC_STRH;

 IDR_STM   <= IDC_STM;

 IDR_SWP   <= IDC_SWP;
 IDR_SWPB  <= IDC_SWPB;

 IDR_SWI   <= IDC_SWI;

 IDR_MRC   <= IDC_MRC;
 IDR_MCR   <= IDC_MCR;
 IDR_LDC   <= IDC_LDC;
 IDR_CDP   <= IDC_CDP;
 IDR_STC   <= IDC_STC;	 
 
 -- Thumb branch with link support
 IDR_ThBLFP <= ThBLFP;
 IDR_ThBLSP <= ThBLSP;
 
 IDR_Undef <= IDC_Undef;
 
 -- Instruction groops
 IDR_DPIRegSh    <= IDC_DPIRegSh;
 IDR_DPIImmSh	 <= IDC_DPIImmSh; 
 IDR_DPIImmRot   <= IDC_DPIImmRot; 
 IDR_LSRegOffset <= IDC_LSRegOffset;
 IDR_LSImmOffset <= IDC_LSImmOffset;
 
 IDR_LSHWImmOffset <= IDC_LSHWImmOffset;
 IDR_LSHWRegOffset <= IDC_LSHWRegOffset;
 IDR_LHWBSRegOffset <= IDC_LHWBSRegOffset;
 IDR_LHWBSImmOffset <= IDC_LHWBSImmOffset;
 
 IDR_LdStInst <= IDC_LdStInst;
 
 IDR_SingleCycleDPI  <=  IDC_DPIImmSh or IDC_DPIImmRot;
 
 IDR_Branch <= IDC_Branch;
 IDR_Compare <= IDC_Compare;
 
 IDR_DPIArith <= IDC_DPIArith;
 
 -- Stored instruction and it's abort indicator
 InstForDecodeLatched <= InstForDecode;
 IFAbtStored <= InstFetchAbort;
 
-- External interrupt requests syncronization with instruction execution
 FIQLatched <= not nFIQ;
 IRQLatched <= not nIRQ; 
 
 end if;		
end if;	
end process;				


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Shifter control
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


ShifterCtrl:process(nRESET,CLK)
begin
if nRESET='0' then             -- Reset

ShLenImm   <= (others => '0');
ShType     <= (others => '0');
ShRotImm   <= '0';            
ShEn       <= '0';
ShCFlagEn  <= '0';

elsif CLK='1' and CLK'event then            -- Clock
 if CLKEN='1' then                          -- Clock enable

case StagnatePipeline_Int is 
 -- Beginning of the new instruction 
 when '0' =>                 	 
 
  if ExceptFC='1' then  -- First cycle of exception
  
   if CPSRTFlag='0' or           -- CPU in ARM mode 
 	  DAbtExcStart ='1' then     -- Data abort
 	  -- Shifter is disabled
	  ShEn       <= '0';
      ShCFlagEn  <= '0';
    else   
      -- LSR by 1 (4>>1=2)
	  ShType     <= "010"; 
      ShRotImm   <= '0';
      ShEn       <= '1';
      ShCFlagEn  <= '0';
      ShLenImm <= "00001"; 
	end if;
	  
	else              -- No exception  

   if Branch_St1='1' then
	-- LR=LR-4(ARM)/LR=LR-2(Thumb)   
      if CPSRTFlag='1' then  -- Thumb mode	
	  ShType     <= "010"; -- LSR by immediate
      ShRotImm   <= '0';
      ShEn       <= '1';
      ShCFlagEn  <= '0';
      ShLenImm <= "00001"; -- Shift right by one 
	  else
      -- ARM mode - disable shifter
	  ShEn       <= '0';
      ShCFlagEn  <= '0';
	  end if;
		
  elsif ThBLFP='1' and CPSRTFlag='1' then        
      -- Thumb BL the first part LR<=PC+(SignExtend(offset_11)<<12)  
	  ShType     <= "000"; -- LSL by immediate
      ShRotImm   <= '0';
      ShEn       <= '1';
      ShCFlagEn  <= '0';
      ShLenImm <= "01100";  -- Shift amount=12
	  
  elsif ThBLSP='1' and CPSRTFlag='1' then        
      -- Thumb BL the second part PC<=LR+(SignExtend(offset_11)<<1)|1  
	  ShType     <= "000"; -- LSL by immediate
      ShRotImm   <= '0';
      ShEn       <= '1';
      ShCFlagEn  <= '0';
      ShLenImm <= "00001";  -- Shift amount=1
	  
  elsif IDC_B = '1' or (IDC_BL = '1' and CPSRTFlag='0') then        
      -- Branch or branch with link (destination address calculation)
	  ShType     <= "000"; -- LSL by immediate
      ShRotImm   <= '0';
      ShEn       <= '1';
      ShCFlagEn  <= '0';
      -- Shift amount depends on mode(ARM/Thumb)
     if CPSRTFlag='0' then ShLenImm <= "00010"; -- ARM mode	
      else ShLenImm <= "00001";				    -- Thumb mode 
     end if;  
   
  elsif (IDC_SWP or IDC_SWPB)='1' then  -- Swap/Swap byte
    ShEn       <= '0';  -- Disable shifter
    ShCFlagEn  <= '0';           

  else                                        
  -- All other cases: data processing instructions, address calculations
  ShLenImm   <= shift_amount;
  ShType     <= shift&InstForDecode(4); 
  ShRotImm   <= IDC_DPIImmRot or IDC_MSR_I; -- Data processing immediate or move immediate to status register
  ShEn       <= IDC_DPIImmSh or IDC_DPIImmRot or IDC_DPIRegSh or 
                IDC_LSRegOffset or IDC_MSR_I; 
  ShCFlagEn  <= IDC_MOV or IDC_MVN or IDC_TST or IDC_TEQ or IDC_ORR or IDC_EOR or
                IDC_ORR or IDC_BIC or IDC_LSRegOffset; -- Instructions which produce shifter carry out
  end if;		
 end if;
  
 -- Changes of data path control within the instruction 
 when '1' => 
   if LDR_St1='1' or LDM_St1='1' then -- The third cycle of load instruction	
     ShEn <= '0';
   end if;		
    
 when others => null;
 end case;

  end if;		
end if;	
end process;	


-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Multiplier control (combinatorial)
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

LoadRsRm <= (IDR_MUL and ExecuteInst and not MUL_St)or                      -- Start for MUL
            ((IDR_SMULL or IDR_UMULL)  and ExecuteInst and not nMULL_St0)or	-- Start for SMULL/UMULL
            MLA_St1 or MLAL_St1;											-- Start for MLA/SMLAL/UMLAL

UnsignedMul <= IDR_UMULL or IDR_UMLAL;
ReadLH <= MULL_St2 or MLAL_St3;                         -- Read bits 63:32 of Partial Sum/Carry

LoadPS <= (IDR_MLA and ExecuteInst and not nMLA_St0)or 	-- Load Partial Sum (for accumulation)
	      ((IDR_SMLAL or IDR_UMLAL) and ExecuteInst and not nMLAL_St0);
	
ClearPSC <= ((MUL_St or MLA_St2)and MulResRdy)or MULL_St2 or MLAL_St3; -- Clear Partial Sum/Carry after any multiplication

-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ALU control register	(Only data processing instructions are implemented now)
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ALUCtrl:process(nRESET,CLK)
begin
if nRESET='0' then             -- Reset
 InvA <= '0';
 InvB <= '0';
 PassA_Reg <= '0';
 PassB_Reg <= '0';

 AND_Op <= '0';
 ORR_Op <= '0';
 EOR_Op <= '0';

 CFlagUse <= '0';

elsif CLK='1' and CLK'event then  -- Clock
 if  CLKEN='1' then                -- Clock enable
  
 case StagnatePipeline_Int is
  when '0' =>

 if ExceptFC='1' then  -- First cycle of exception
  
  if CPSRTFlag='0' or            -- Start of any exception when CPU is in ARM mode  
     (SWI_UndefExcStart='1' and  -- Undefined instruction or SWI 
	  CPSRTFlag='1') then	     -- CPU is in Thumb mode
 
   -- LR<=LR-4 / LR<=LR-2
   InvA <= '0';
   InvB <= '1';
   PassA_Reg <= '0';
   PassB_Reg <= '0';
   AND_Op <= '0';
   ORR_Op <= '0';
   EOR_Op <= '0';
   CFlagUse <= '0'; 

 elsif (PAbtExcStart='1' or          -- Prefetch abort 
        FIQExcStart='1' or           -- FIQ
        IRQExcStart='1')and          -- IRQ  		 
	      CPSRTFlag='1' then 	     -- CPU is in Thumb mode

  -- LR <= LR  	
   InvA <= '0';
   InvB <= '0';
   PassA_Reg <= '1';
   PassB_Reg <= '0';
   AND_Op <= '0';
   ORR_Op <= '0';
   EOR_Op <= '0';
   CFlagUse <= '0'; 
  
   elsif DAbtExcStart ='1' and        -- Data abort
  		 CPSRTFlag='1' then           -- CPU is in Thumb mode

  -- LR <= LR+2		 
   InvA <= '0';
   InvB <= '0';
   PassA_Reg <= '0';
   PassB_Reg <= '0';
   AND_Op <= '0';
   ORR_Op <= '0';
   EOR_Op <= '0';
   CFlagUse <= '0';   
   
   end if;
   
  else  -- No exception

  if Branch_St1='1' then
  -- LR=LR-4(ARM)/LR=LR-2(Thumb)   
  PassA_Reg <= '0';
  InvB <= '1';

  elsif ((IDR_B or IDR_BL or (IDR_ThBLFP and CPSRTFlag)) and ExecuteInst)='1' then
  -- LR=PC	  
   PassA_Reg <= '1';
  
  elsif IDC_BX='1' then
   -- Branch with exchange
   InvA <= '0';
   InvB <= '0';
   PassA_Reg <= '0';
   PassB_Reg <= '1'; -- Rm !!!
   AND_Op <= '0';
   ORR_Op <= '0';
   EOR_Op <= '0';
   CFlagUse <= '0'; 

   -- Load/store memory address calculation (post-indexed mode : ADDR=Rm)
   elsif (IDC_SWP or IDC_SWPB)='1' or                      -- Swap/Swap byte
   (IDC_LDRT or IDC_LDRBT or IDC_STRT or IDC_STRBT)='1' or -- Instructions which are always post-index 
   ((IDC_LDR or IDC_LDRB or IDC_LDRH or IDC_LDRSB or IDC_LDRSH or IDC_LDM or
    IDC_STR or IDC_STRB or IDC_STRH or IDC_STM)='1' and P='0') then  -- Post-indexed 

   InvA <= '0';
   InvB <= '0'; 
   PassA_Reg <= '1'; -- 
   PassB_Reg <= '0';
   AND_Op <= '0';
   ORR_Op <= '0';
   EOR_Op <= '0';
   CFlagUse <= '0'; 

   elsif 
    ((IDC_LDR or IDC_LDRB or IDC_LDRH or IDC_LDRSB or IDC_LDRSH or IDC_LDM or
      IDC_STR or IDC_STRB or IDC_STRH or IDC_STM)='1' and P='1') then  -- Pre-indexed 
   -- Load/store memory address calculation (pre-indexed mode  ADDR=Rm+/- offset)
   InvA <= '0';
   InvB <= not U; -- U=1 - add, U=0 subtract
   PassA_Reg <= '0';
   PassB_Reg <= '0';
   AND_Op <= '0';
   ORR_Op <= '0';
   EOR_Op <= '0';
   CFlagUse <= '0'; 
   
   else	
	-- Data processing instructions with /multiplications and branches/ !!! Check
     InvA <= IDC_RSB or IDC_RSC;
     InvB <= IDC_SUB or IDC_SBC or IDC_MVN or IDC_BIC or IDC_CMP;
     PassA_Reg <= '0'; -- !!!!
     PassB_Reg <= IDC_MOV or IDC_MVN or IDC_MSR_I or IDC_MSR_R;
     AND_Op <= IDC_TST or IDC_AND or IDC_BIC;
     ORR_Op <= IDC_ORR ;
     EOR_Op <= IDC_TEQ or IDC_EOR;
     CFlagUse <= IDC_ADC or IDC_SBC or IDC_RSC;
   end if;
   end if;
   
  when '1' =>
    -- Changes of data path control within the instruction  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美韩国日本一区| 欧美在线影院一区二区| 午夜国产精品一区| 亚洲自拍另类综合| 亚洲.国产.中文慕字在线| 日精品一区二区| 国产精品99久久久久久有的能看| 亚洲人成7777| 日韩欧美一区在线| 色综合咪咪久久| 欧美日韩国产在线观看| 91麻豆精品国产自产在线观看一区| 欧美体内she精高潮| 欧美一级搡bbbb搡bbbb| wwwwww.欧美系列| 亚洲同性gay激情无套| 亚洲图片欧美色图| 国产美女精品人人做人人爽| 99精品视频中文字幕| 日韩欧美综合在线| 亚洲视频1区2区| 国产一区二区不卡| 欧美日韩另类国产亚洲欧美一级| 日韩久久久精品| 一级特黄大欧美久久久| 成熟亚洲日本毛茸茸凸凹| 欧美亚洲综合一区| 国产精品网友自拍| 久久成人久久鬼色| 在线亚洲一区二区| 亚洲三级电影全部在线观看高清| 久久爱另类一区二区小说| 在线看国产一区| 中文字幕日韩av资源站| 国产成人久久精品77777最新版本| 欧美性大战xxxxx久久久| 国产精品沙发午睡系列990531| 免费观看日韩电影| 欧美精品1区2区3区| 亚洲一区在线观看网站| 色欧美日韩亚洲| 一区二区三区不卡视频在线观看| av电影在线观看完整版一区二区| 久久综合久久99| 国产成人高清视频| 国产欧美日本一区视频| 国内外成人在线视频| 久久免费视频色| av电影一区二区| 尤物视频一区二区| 欧美喷水一区二区| 极品美女销魂一区二区三区| 丁香桃色午夜亚洲一区二区三区| 国产成人av福利| 综合精品久久久| 欧美色网一区二区| 五月激情综合婷婷| 久久久国产精品麻豆| 91女神在线视频| 麻豆91精品视频| 一区在线播放视频| 欧美一区二区久久| 国产美女精品一区二区三区| 亚洲精品国产a久久久久久| 3d动漫精品啪啪一区二区竹菊| 国产一区二区三区电影在线观看| 欧美激情一区二区在线| 欧美日韩一本到| 高清久久久久久| 精品影视av免费| 丝袜亚洲另类欧美综合| 日韩美女视频一区二区| 欧美电视剧免费全集观看| 色噜噜久久综合| 成人国产精品免费观看| 天堂一区二区在线免费观看| 亚洲图片欧美激情| 成人免费小视频| 中文成人综合网| 国产精品天美传媒沈樵| 26uuu色噜噜精品一区二区| 6080午夜不卡| 欧美zozo另类异族| 欧美一区二区三区在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩国产欧美在线视频| 亚洲女同ⅹxx女同tv| 亚洲私人影院在线观看| 国产精品久久久久久久久晋中| 2020国产成人综合网| 久久综合丝袜日本网| 亚洲精品在线观看网站| www成人在线观看| 中文字幕不卡的av| 亚洲日本青草视频在线怡红院| 亚洲欧美日韩成人高清在线一区| 国产精品麻豆欧美日韩ww| 亚洲国产精品黑人久久久| 亚洲久草在线视频| 午夜不卡在线视频| 国产精品综合在线视频| 成人午夜视频免费看| 欧美亚洲丝袜传媒另类| 欧美日韩精品一区二区三区四区 | 秋霞国产午夜精品免费视频| 秋霞成人午夜伦在线观看| 粉嫩13p一区二区三区| 在线看一区二区| 国产精品久久久久一区| 亚洲国产成人va在线观看天堂| 日韩精品每日更新| eeuss鲁一区二区三区| 337p亚洲精品色噜噜噜| 亚洲色图另类专区| 精品在线一区二区三区| 欧美日本精品一区二区三区| 国产偷国产偷精品高清尤物| 日韩综合一区二区| 在线视频欧美精品| 欧美激情在线看| 国产精品 欧美精品| 日韩女优av电影| 亚洲成av人综合在线观看| 91一区二区三区在线观看| 久久久美女毛片| 国产综合色精品一区二区三区| 在线电影一区二区三区| 一区二区三区四区乱视频| 99久久精品免费看国产免费软件| 精品国产污网站| 精品亚洲成av人在线观看| 精品国产一区二区精华| 激情五月激情综合网| 欧美变态tickle挠乳网站| 另类小说欧美激情| 国产午夜精品美女毛片视频| 国产一区二区三区视频在线播放| 91精品国产免费| 国产真实乱对白精彩久久| 国产欧美综合色| 成av人片一区二区| 亚洲成国产人片在线观看| 欧美日韩精品免费观看视频| 青青草国产精品亚洲专区无| 精品少妇一区二区三区在线视频| 亚洲欧美综合另类在线卡通| 中文字幕一区二区三区不卡在线| 午夜精品123| 不卡视频一二三四| 午夜精品影院在线观看| 欧美变态tickling挠脚心| 成人一区二区三区中文字幕| 一区二区三区在线观看国产 | 欧美精品丝袜久久久中文字幕| 婷婷六月综合网| 综合色天天鬼久久鬼色| 欧美一区二区福利视频| 国产成a人亚洲| 青青草国产精品97视觉盛宴| 久久精品亚洲国产奇米99| 欧美色图免费看| www.日韩av| 国产成人综合在线| 蜜臀av一区二区在线免费观看 | 91免费在线看| 国产精品自拍网站| 美女国产一区二区三区| 亚洲一区中文在线| 亚洲欧美视频一区| 中国色在线观看另类| 国产日韩精品一区二区三区在线| 欧美一二三区精品| 911精品国产一区二区在线| 在线观看日韩av先锋影音电影院| 成人午夜激情片| av在线不卡电影| 色婷婷综合久久久久中文一区二区| 极品美女销魂一区二区三区| 麻豆91在线看| 韩国av一区二区三区四区| 国产精品自拍av| 北条麻妃一区二区三区| 成人性视频网站| 色婷婷一区二区| 337p亚洲精品色噜噜| 日韩亚洲电影在线| 久久久久久亚洲综合| 国产精品午夜春色av| 亚洲欧美日韩中文播放 | 欧美一区二区三区在线观看| 欧美伦理视频网站| 久久久久亚洲综合| 亚洲三级在线播放| 日本不卡的三区四区五区| 国内不卡的二区三区中文字幕| 成人av资源在线观看| 欧美三级一区二区| 国产欧美一二三区| 婷婷国产在线综合| 不卡一区二区三区四区|