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

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

?? regfile.vhd

?? 這是一個基本的ARM7_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一区二区三区免费野_久草精品视频
亚洲欧美一区二区视频| 国产一区二区福利| 精品一区二区免费看| 豆国产96在线|亚洲| 欧美蜜桃一区二区三区| 中文字幕第一区二区| 午夜精品久久久久久久| av在线一区二区三区| 欧美一卡2卡3卡4卡| 亚洲免费伊人电影| 国产不卡视频在线观看| 日韩精品专区在线影院重磅| 亚洲伦在线观看| 高清不卡在线观看av| 欧美一区二区精品| 午夜亚洲国产au精品一区二区| 成人app在线| 日本一区二区三区在线不卡| 亚洲成人动漫在线观看| 99精品偷自拍| 国产精品传媒入口麻豆| 国产精品18久久久久久久久久久久 | 中文字幕欧美日韩一区| 另类综合日韩欧美亚洲| 欧美精品99久久久**| 一区二区三区成人| 91浏览器打开| 亚洲乱码国产乱码精品精98午夜| 成人av资源网站| 国产精品你懂的| 成人污污视频在线观看| 国产欧美一区二区三区网站| 国产在线麻豆精品观看| 精品日本一线二线三线不卡| 久久精品国产久精国产| 精品国产一区二区三区久久影院 | 欧美无乱码久久久免费午夜一区| 亚洲欧洲综合另类| 91国偷自产一区二区三区成为亚洲经典 | 中文字幕欧美激情| jizz一区二区| 亚洲一区国产视频| 欧美午夜理伦三级在线观看| 亚洲午夜一二三区视频| 欧美熟乱第一页| 日韩高清中文字幕一区| 日韩一区二区三区免费观看| 精品一区二区三区在线播放视频| 久久亚洲欧美国产精品乐播| 成人做爰69片免费看网站| 中文字幕在线一区| 在线视频你懂得一区| 视频一区在线视频| 26uuu久久天堂性欧美| 懂色一区二区三区免费观看| 亚洲色图欧美激情| 欧美日韩免费在线视频| 久久精品国产色蜜蜜麻豆| 国产亚洲欧美日韩日本| 91视频国产观看| 日本vs亚洲vs韩国一区三区二区 | 日本人妖一区二区| 国产日韩视频一区二区三区| 91亚洲午夜精品久久久久久| 日韩影院免费视频| 日本一区二区免费在线观看视频| 91麻豆精品国产91久久久久| 视频精品一区二区| 国产欧美日韩在线观看| 欧美又粗又大又爽| 国产精品中文字幕一区二区三区| 综合电影一区二区三区| 日韩午夜电影在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲欧洲成人自拍| 欧美一区二区日韩一区二区| 高清成人在线观看| 日本欧美一区二区三区乱码| 国产精品久久久久影院色老大| 欧美另类变人与禽xxxxx| 丁香婷婷综合色啪| 青青草国产精品97视觉盛宴| 亚洲丝袜美腿综合| 2020日本不卡一区二区视频| 欧美日韩国产影片| 成人av资源站| 国产在线看一区| 轻轻草成人在线| 亚洲精品视频在线| 国产女同性恋一区二区| 欧美一区二区三区四区高清| 一本大道久久a久久精二百| 极品美女销魂一区二区三区 | 中文av一区二区| 日韩女优av电影| 91麻豆精品久久久久蜜臀| 99精品黄色片免费大全| 国产成人av自拍| 国内精品免费**视频| 日本欧美韩国一区三区| 香蕉加勒比综合久久| 一区二区日韩电影| 亚洲男人电影天堂| 亚洲欧洲三级电影| 综合久久久久久| 中文字幕不卡三区| 国产欧美精品一区二区三区四区| 日韩亚洲欧美在线观看| 7777精品伊人久久久大香线蕉最新版 | 91高清视频在线| 在线观看视频欧美| 色综合天天综合在线视频| 成人av免费观看| 99re视频精品| 99热精品一区二区| 91碰在线视频| 欧美无砖砖区免费| 欧美人牲a欧美精品| 在线播放日韩导航| 久久久久青草大香线综合精品| 91精品麻豆日日躁夜夜躁| 欧美久久久久久久久中文字幕| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 99re6这里只有精品视频在线观看| 不卡av在线免费观看| 91啪在线观看| 欧美精品在线视频| 欧美白人最猛性xxxxx69交| 久久亚洲一级片| 国产精品国产三级国产aⅴ中文 | 精品国产伦一区二区三区观看体验| 91精品国产一区二区三区蜜臀 | 精油按摩中文字幕久久| 国产精品一区二区免费不卡 | 精品1区2区3区| 日韩视频中午一区| 国产亚洲欧美日韩俺去了| 中日韩免费视频中文字幕| 亚洲精品乱码久久久久久| 亚洲国产一区在线观看| 另类人妖一区二区av| 国产成人精品一区二| 色伊人久久综合中文字幕| 欧美日韩免费不卡视频一区二区三区| 91精品国产综合久久久久久 | 亚洲色图在线看| 日韩在线a电影| kk眼镜猥琐国模调教系列一区二区 | 日韩一区二区免费视频| 国产性色一区二区| 亚洲高清中文字幕| 精品一区二区综合| 91小视频免费看| 日韩一区二区三区精品视频| 国产欧美日韩麻豆91| 国产资源在线一区| 成人高清视频在线| 欧美精品久久99久久在免费线| 久久精品一级爱片| 香蕉成人伊视频在线观看| 国产成a人亚洲精| 91精品国产免费久久综合| 国产精品久久午夜夜伦鲁鲁| 日韩和欧美一区二区| 91免费在线视频观看| 精品久久久久久久久久久久包黑料 | 丰满放荡岳乱妇91ww| 91麻豆精品国产91久久久更新时间| 欧美激情一区二区| 喷水一区二区三区| 91久久香蕉国产日韩欧美9色| 久久久久久久久岛国免费| 天堂精品中文字幕在线| 91久久精品网| 国产精品久久久久久久久动漫| 久久国产精品一区二区| 欧美日免费三级在线| 亚洲色图在线播放| 国产麻豆精品一区二区| 日韩欧美一区在线| 爽好久久久欧美精品| 色婷婷久久一区二区三区麻豆| 国产欧美日产一区| 国产伦精品一区二区三区视频青涩| 69久久夜色精品国产69蝌蚪网| 一区二区三区.www| 色综合一区二区| 最新欧美精品一区二区三区| 国产美女av一区二区三区| 日韩精品资源二区在线| 免费成人在线网站| 日韩欧美国产电影| 美女视频免费一区| 日韩欧美一卡二卡| 日本美女视频一区二区| 欧美日韩国产综合久久| 亚洲电影在线免费观看| 欧美丝袜第三区| 国产一区二区三区黄视频| 日韩手机在线导航|