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

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

?? regfile.vhd

?? arm verilog hdl ip core
?? VHD
字號:
--****************************************************************************************************
-- Register file for ARM core
-- Designed by Ruslan Lepetenok
-- Modified 23.01.2003
--****************************************************************************************************
library	IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

use WORK.ARMPackage.all;

entity RegFile is  generic(DebugMode : boolean := TRUE); -- Debug mode flag
	
	               port(
						-- Global control signals
	                    nRESET         : in std_logic;
						CLK            : in std_logic;
						CLKEN          : in std_logic;
						-- Data buses
						ABusOut        : out std_logic_vector(31 downto 0); 
						BBusOut        : out std_logic_vector(31 downto 0); 
						DataIn         : in  std_logic_vector(31 downto 0); 
						-- Address an control
						ABusRdAdr      : in std_logic_vector(3 downto 0);
						BBusRdAdr      : in std_logic_vector(3 downto 0);
						WriteAdr       : in std_logic_vector(3 downto 0);
						WrEn	       : in std_logic;
						-- Program counter
						PCIn           : in  std_logic_vector(31 downto 0);  
						PCOut          : out std_logic_vector(31 downto 0);  
						PCWrEn         : in  std_logic; --???
						PCSrcSel       : in  std_logic;  
						-- Global control
						RFMode         : in std_logic_vector(4 downto 0); 
						SaveBaseReg    : in std_logic;
						RestoreBaseReg : in std_logic
						);
end RegFile;

architecture RTL of RegFile is

-- User mode registers r0-r15
type UMRegisterFileType is array(0 to 15) of std_logic_vector(31 downto 0);
signal UMRegisterFile : UMRegisterFileType := (others => x"0000_0000");     

-- FIQ mode registers r8-r14
type FIQMRegisterFileType is array(8 to 14) of std_logic_vector(31 downto 0);
signal FIQMRegisterFile : FIQMRegisterFileType := (others => x"0000_0000"); 

-- Other modes registers r13,r14
type OMRegisterFileType is array(13 to 14) of std_logic_vector(31 downto 0);
signal SVCMRegisterFile : OMRegisterFileType := (others => x"0000_0000"); -- SVC
signal AMRegisterFile    : OMRegisterFileType := (others => x"0000_0000"); -- Abort
signal IRQMRegisterFile  : OMRegisterFileType := (others => x"0000_0000"); -- IRQ
signal UndMRegisterFile  : OMRegisterFileType := (others => x"0000_0000"); -- Undefined

alias PC : std_logic_vector(31 downto 0) is UMRegisterFile(15);
signal PCSrc : std_logic_vector(PC'range) := (others => '0');

signal ABusOutMUX : UMRegisterFileType := (others => x"0000_0000");
signal BBusOutMUX : UMRegisterFileType := (others => x"0000_0000");

--signal RegFileOut : UMRegisterFileType := (others => x"0000_0000");

signal RegFileAOut : UMRegisterFileType := (others => x"0000_0000");
signal RegFileBOut : UMRegisterFileType := (others => x"0000_0000");

-- Modes 
signal UserMode  : std_logic := '0'; 
signal FIQMode   : std_logic := '0'; 
signal IRQMode   : std_logic := '0'; 
signal SVCMode   : std_logic := '0'; 
signal AbortMode : std_logic := '0'; 
signal UndefMode : std_logic := '0'; 

signal SavedBaseReg : std_logic_vector(31 downto 0);
signal RegsIn       : std_logic_vector(31 downto 0);

-- Individual write enable signals
--signal IndWrEn : std_logic_vector(15 downto 0) := (others => '0');

begin

--IndWriteEnLogic:for i in IndWrEn'range generate
-- IndWrEn(i)	<= '1' when i=WriteAdr else '0';
--end generate;	
	
-- Mode decode logic
UserMode <= '1' when RFMode=CUserMode or RFMode=CSystemMode else '0'; 
FIQMode  <= '1' when RFMode=CFIQMode else '0';  
IRQMode  <= '1' when RFMode=CIRQMode else '0';  
SVCMode  <= '1' when RFMode=CSVCMode else '0';  
AbortMode <= '1' when RFMode=CAbortMode else '0'; 
UndefMode <= '1' when RFMode=CUndefMode else '0'; 
	

RegsIn <= SavedBaseReg when RestoreBaseReg='1' else	DataIn;
	

BaseRegister:process(nRESET,CLK)
begin
if nRESET='0' then                                -- Reset
 SavedBaseReg <= (others => '0');  
elsif CLK='1' and CLK'event then                  -- Clock
 if SaveBaseReg='1' and CLKEN='1' then           -- Clock enable     
  SavedBaseReg <= ABusOutMUX(ABusOutMUX'high);
 end if;
end if;
end process;	


LowAndUMHighRegs:process(nRESET,CLK)
begin
if nRESET='0' then                                -- Reset
 if DebugMode then 
  for i in UMRegisterFile'low to UMRegisterFile'high-1 loop -- was '-1'
	UMRegisterFile(i) <= (others => '0');  
  end loop;	 
    PC <=CPCInitVal;
 end if;
elsif CLK='1' and CLK'event then                  -- Clock
 -- User Mode registers r0-r7
  for i in UMRegisterFile'low to 7 loop 
   if WrEn='1' and i=WriteAdr and CLKEN='1' then  -- Clock enable     
	  UMRegisterFile(i) <= RegsIn;  
   end if;
  end loop;

  -- User Mode registers r8-r12(banked)
  for i in 8 to 12 loop
   if WrEn='1' and i=WriteAdr and FIQMode='0' and CLKEN='1' then -- Clock enable     
	  UMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	

   -- User Mode registers r13-r14(banked)
  for i in 8 to UMRegisterFile'high-1 loop
   if WrEn='1' and i=WriteAdr and UserMode='1' and CLKEN='1' then -- Clock enable     
	  UMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	
   
 -- Program counter (r15)
 if ((WrEn='1' and WriteAdr="1111")or PCWrEn='1')and CLKEN='1' then -- Clock enable     
      PC <= PCSrc;  
 end if;   

end if;
end process;	

-- Program counter logic
PCSrc <= PCIn when PCSrcSel='0' else DataIn; 
PCOut <= PC;

-- r8-r14 FIQ Mode
FIQModeHighRegs:process(nRESET,CLK)
begin
if nRESET='0' then                                                      -- Reset
 if DebugMode then 
  for i in FIQMRegisterFile'range loop
	FIQMRegisterFile(i) <= (others => '0');  
  end loop;	 
 end if;
elsif CLK='1' and CLK'event then                                         -- Clock
  for i in FIQMRegisterFile'range loop
   if WrEn='1' and i=WriteAdr and FIQMode='1' and CLKEN='1' then         -- Clock enable     
	  FIQMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	
end if;
end process;			

-- r13-r14 SVC Mode
SVCModeHighRegs:process(nRESET,CLK)
begin
if nRESET='0' then                                                       -- Reset
 if DebugMode then 
  for i in SVCMRegisterFile'range loop
	SVCMRegisterFile(i) <= (others => '0');  
  end loop;	 
 end if;
elsif CLK='1' and CLK'event then                                         -- Clock
  for i in 13 to SVCMRegisterFile'high loop
   if WrEn='1' and i=WriteAdr and SVCMode='1' and CLKEN='1' then         -- Clock enable     
	  SVCMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	
end if;
end process;		
	

-- r13-r14 Abort Mode
AbortModeHighRegs:process(nRESET,CLK)
begin
if nRESET='0' then                                                 -- Reset
 if DebugMode then 
  for i in AMRegisterFile'range loop
	AMRegisterFile(i) <= (others => '0');  
  end loop;	 
 end if;
elsif CLK='1' and CLK'event then                                   -- Clock
  for i in AMRegisterFile'range loop
   if WrEn='1' and i=WriteAdr and AbortMode='1' and CLKEN='1' then -- Clock enable     
	  AMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	
end if;
end process;		

-- r13-r14 IRQ Mode
IRQModeHighRegs:process(nRESET,CLK)
begin
if nRESET='0' then                                                -- Reset
 if DebugMode then 
  for i in IRQMRegisterFile'range loop
	IRQMRegisterFile(i) <= (others => '0');  
  end loop;	 
 end if;
elsif CLK='1' and CLK'event then                                  -- Clock
  for i in IRQMRegisterFile'range loop
   if WrEn='1' and i=WriteAdr and IRQMode='1' and CLKEN='1' then  -- Clock enable     
	  IRQMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	
end if;
end process;		

-- r13-r14 Undefined Mode
UndefModeHighRegs:process(nRESET,CLK)
begin
if nRESET='0' then                                                 -- Reset
 if DebugMode then 
  for i in UndMRegisterFile'range loop
	UndMRegisterFile(i) <= (others => '0');  
  end loop;	 
 end if;
elsif CLK='1' and CLK'event then                                   -- Clock
  for i in UndMRegisterFile'range loop
   if WrEn='1' and i=WriteAdr and UndefMode='1' and CLKEN='1' then -- Clock enable     
	  UndMRegisterFile(i) <= RegsIn;  
   end if;
   end loop;	 	
end if;
end process;		

-- Output multiplexers

-- Non banked registers (R0-R7)
RegistersOutputsLow:for i in UMRegisterFile'low to 7 generate
 RegFileAOut(i)	<= 	UMRegisterFile(i);
 RegFileBOut(i)	<= 	UMRegisterFile(i);
end generate;

-- R8-R12
RegistersOutputs:for i in 8 to 12 generate
 RegFileAOut(i)	<= UMRegisterFile(i) when FIQMode='0' else
                   FIQMRegisterFile(i);
 
 RegFileBOut(i)	<= UMRegisterFile(i) when FIQMode='0' else 
                   FIQMRegisterFile(i);
end generate;

-- R13-R14
RegistersOutputsHigh:for i in 13 to 14 generate
RegFileAOut(i)	<= UMRegisterFile(i)   when UserMode='1'  else
                   FIQMRegisterFile(i) when	FIQMode='1'   else
				   SVCMRegisterFile(i) when SVCMode='1'	  else
 				   AMRegisterFile(i)   when AbortMode='1' else
				   IRQMRegisterFile(i) when IRQMode='1'	  else
                   UndMRegisterFile(i) when UndefMode='1' else
				   (others => CDnCr);	   

RegFileBOut(i)	<= UMRegisterFile(i)   when UserMode='1'  else
                   FIQMRegisterFile(i) when	FIQMode='1'   else
				   SVCMRegisterFile(i) when SVCMode='1'	  else
 				   AMRegisterFile(i)   when AbortMode='1' else
				   IRQMRegisterFile(i) when IRQMode='1'	  else
                   UndMRegisterFile(i) when UndefMode='1' else
				   (others => CDnCr);	   
end generate;

--R15
RegFileAOut(RegFileAOut'high) <= PC;
RegFileBOut(RegFileBOut'high) <= PC;

ABusOutMUX(ABusOutMUX'low) <= RegFileAOut(RegFileAOut'low);
BBusOutMUX(BBusOutMUX'low) <= RegFileBOut(RegFileBOut'low);
OutputDataMUX:for i in 1 to RegFileAOut'high generate
 ABusOutMUX(i) <= RegFileAOut(i) when i=ABusRdAdr else ABusOutMUX(i-1);
  BBusOutMUX(i) <= RegFileBOut(i) when i=BBusRdAdr else BBusOutMUX(i-1);
end generate;

ABusOut <= ABusOutMUX(ABusOutMUX'high);
BBusOut <= BBusOutMUX(BBusOutMUX'high);


end RTL;


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃在线免费视频| 国产日韩欧美一区二区三区综合| 日韩欧美一区二区在线视频| 五月开心婷婷久久| 日韩一区二区三区电影在线观看| 日韩国产精品91| 欧美不卡一区二区三区| 国产激情91久久精品导航| 午夜av一区二区三区| 欧美久久高跟鞋激| 九九**精品视频免费播放| 久久久久久久久久美女| 成人精品免费网站| 亚洲一区成人在线| 欧美成人aa大片| 成人高清视频免费观看| 亚洲精品v日韩精品| 欧美猛男男办公室激情| 激情六月婷婷综合| 国产精品卡一卡二| 宅男在线国产精品| 激情综合色综合久久| 国产精品你懂的在线欣赏| 欧美午夜精品电影| 国产精品一区2区| 亚洲伦理在线免费看| 777精品伊人久久久久大香线蕉| 黄网站免费久久| 亚洲免费在线视频一区 二区| 日韩一区二区三区三四区视频在线观看| 精品一区二区三区免费毛片爱 | 一区二区三区在线影院| 欧美精选在线播放| 成人av电影免费观看| 天天操天天色综合| 中文字幕精品一区二区精品绿巨人 | 国产精品亲子乱子伦xxxx裸| 在线视频亚洲一区| 国产一区三区三区| 一区二区免费在线| 欧美mv和日韩mv国产网站| 97久久久精品综合88久久| 老司机午夜精品| 亚洲综合色在线| 亚洲国产高清aⅴ视频| 在线不卡一区二区| 色婷婷香蕉在线一区二区| 国产一区免费电影| 日韩av中文字幕一区二区三区 | 日韩女优毛片在线| 欧美午夜视频网站| 成人av中文字幕| 久久精品国产免费| 五月婷婷综合激情| 亚洲欧美日韩一区二区三区在线观看 | 亚洲婷婷在线视频| 久久影院电视剧免费观看| 欧美日韩国产电影| 在线观看日韩高清av| 波多野结衣在线aⅴ中文字幕不卡| 美脚の诱脚舐め脚责91| 亚洲1区2区3区4区| 亚洲资源在线观看| 亚洲精品国产成人久久av盗摄| 欧美国产禁国产网站cc| 欧美精品一区二区在线观看| 日韩情涩欧美日韩视频| 欧美精品丝袜中出| 欧美日韩国产一区| 欧美图区在线视频| 欧美在线观看视频一区二区三区| 97se亚洲国产综合自在线不卡| 高清日韩电视剧大全免费| 国产一区不卡视频| 国产在线播放一区| 国产麻豆精品theporn| 精品在线播放午夜| 激情五月播播久久久精品| 麻豆成人91精品二区三区| 免费视频一区二区| 久久成人免费网| 国产一区二区视频在线| 国产精品99久久久久久似苏梦涵| 国产一区二区看久久| 国产精品66部| 国产1区2区3区精品美女| 成人一级片在线观看| 北岛玲一区二区三区四区| av激情成人网| 91激情五月电影| 欧美性受极品xxxx喷水| 欧美日韩国产高清一区二区三区| 在线不卡中文字幕| 精品sm捆绑视频| 国产欧美综合在线| 一区二区三区四区视频精品免费 | 免费观看30秒视频久久| 九色|91porny| 成人性视频免费网站| 色综合久久久久综合| 欧美久久久一区| 精品国产乱码久久久久久浪潮| 日本一区免费视频| 亚洲日本在线看| 日本欧美韩国一区三区| 国产福利91精品| 日本高清不卡aⅴ免费网站| 欧美日韩免费观看一区二区三区| 欧美一区三区二区| 久久先锋影音av鲁色资源| 国产精品久久久久aaaa樱花 | 欧美日本韩国一区| 欧美一区二区三区在线观看| 久久精品一区蜜桃臀影院| 亚洲女女做受ⅹxx高潮| 奇米影视7777精品一区二区| 懂色av中文一区二区三区| 欧美怡红院视频| 久久这里只有精品6| 一区二区欧美在线观看| 精品一区二区三区视频在线观看| 99精品在线免费| 日韩女优电影在线观看| 亚洲精品午夜久久久| 韩国一区二区视频| 欧洲av一区二区嗯嗯嗯啊| 2022国产精品视频| 亚洲gay无套男同| 国产成人在线免费| 91精品国产入口| 亚洲色图欧美偷拍| 精品无人区卡一卡二卡三乱码免费卡| av福利精品导航| 精品嫩草影院久久| 性做久久久久久| k8久久久一区二区三区| 欧美大片在线观看| 亚洲国产一区二区a毛片| 成人美女视频在线看| 精品成a人在线观看| 日韩av不卡在线观看| 色婷婷综合久久久| 国产精品欧美一区喷水| 久久精品99久久久| 欧美少妇一区二区| 亚洲人成伊人成综合网小说| 国产精品一区二区果冻传媒| 91麻豆精品国产自产在线| 一区二区三区在线影院| 99久久精品99国产精品| 久久久久久久久久久电影| 日韩成人免费在线| 欧美精品自拍偷拍| 亚洲线精品一区二区三区八戒| 91天堂素人约啪| 欧美激情在线免费观看| 国产福利视频一区二区三区| 精品久久久久久久久久久久久久久久久 | 日韩精品一区二区三区视频播放 | 色欧美片视频在线观看在线视频| 欧美国产综合色视频| 国产乱码精品一区二区三区av| 日韩一级精品视频在线观看| 午夜精品福利一区二区三区av| 在线精品视频免费播放| 亚洲欧美日韩国产一区二区三区| 99re这里只有精品视频首页| 亚洲视频在线一区观看| 97久久超碰精品国产| 亚洲视频资源在线| 在线视频综合导航| 亚洲电影在线播放| 欧美日本韩国一区二区三区视频| 亚洲sss视频在线视频| 91麻豆精品国产91久久久资源速度 | 欧美久久久久久久久中文字幕| 一区二区三区四区亚洲| 欧美性色欧美a在线播放| 亚洲最新视频在线观看| 欧美三级日韩在线| 日韩av在线发布| 久久亚区不卡日本| 国产成人综合亚洲网站| 欧美国产激情一区二区三区蜜月| 成人app在线| 亚洲乱码日产精品bd| 欧美日韩一区二区三区免费看 | 亚洲精品你懂的| 欧美色图在线观看| 偷偷要91色婷婷| 精品国产免费一区二区三区四区| 国产伦精品一区二区三区视频青涩| 欧美国产一区二区| 欧美又粗又大又爽| 奇米888四色在线精品| 国产偷v国产偷v亚洲高清 | 91久久国产最好的精华液| 亚洲成人一二三| 久久久久久97三级| 91蜜桃网址入口|