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

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

?? regfile.vhd

?? the model of cpu ARM7TDMI.
?? 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一区二区三区免费野_久草精品视频
欧美一区二区女人| 99国产精品国产精品毛片| 日韩美女视频在线| 蜜桃久久久久久| 久久综合国产精品| 高清国产一区二区三区| 亚洲精品国久久99热| 欧美性xxxxx极品少妇| 亚洲va韩国va欧美va精品 | 一区二区三区国产| 欧美日韩久久一区二区| 看片的网站亚洲| 国产网红主播福利一区二区| 99视频热这里只有精品免费| 一区二区免费看| 日韩视频123| 春色校园综合激情亚洲| 一区二区三区色| 91精品国产综合久久精品app| 精品一区二区久久| 亚洲精品v日韩精品| 日韩欧美在线不卡| 99久久久精品| 欧美aa在线视频| 亚洲精选视频在线| 国产精品久久久久久久久快鸭| 99精品国产热久久91蜜凸| 亚洲成人自拍一区| 中文字幕免费不卡| 欧美一区二区精品| www.欧美.com| 日本欧美一区二区三区乱码| 久久久精品人体av艺术| 在线观看日韩av先锋影音电影院| 奇米影视一区二区三区| 亚洲色图19p| 精品免费一区二区三区| 欧美在线播放高清精品| 福利一区二区在线观看| 欧美a级一区二区| 亚洲精品视频一区| 久久久亚洲高清| 宅男在线国产精品| 色综合久久天天| 国产一区91精品张津瑜| 午夜欧美2019年伦理| 中文字幕久久午夜不卡| 精品成人a区在线观看| 在线观看亚洲精品| av影院午夜一区| 国产综合色视频| 日产国产高清一区二区三区| 亚洲人成精品久久久久久| 久久精品欧美日韩| 日韩一区二区三区精品视频| 在线免费观看日本欧美| 成人网页在线观看| 国产高清精品网站| 麻豆国产欧美日韩综合精品二区| 午夜久久久久久电影| 亚洲一区二区视频在线| 亚洲欧洲国产日本综合| 国产精品欧美久久久久一区二区| 精品日韩av一区二区| 8v天堂国产在线一区二区| 色综合久久中文综合久久97| 99re这里只有精品首页| 99久久综合精品| 成人ar影院免费观看视频| 国产一区二区三区在线观看免费 | 精品一区二区三区影院在线午夜| 天堂在线亚洲视频| 亚洲国产视频一区| 日日夜夜一区二区| 婷婷六月综合亚洲| 日韩精品久久久久久| 日韩精品色哟哟| 免费观看在线色综合| 免费视频最近日韩| 国产一区二区三区蝌蚪| 国产福利一区二区三区| 成人aaaa免费全部观看| 91蜜桃婷婷狠狠久久综合9色| av不卡免费电影| 91久久精品网| 制服视频三区第一页精品| 欧美一级在线免费| 欧美成人a视频| 国产日本欧洲亚洲| 国产精品女人毛片| 樱桃视频在线观看一区| 午夜精品福利一区二区蜜股av| 青青草视频一区| 韩国女主播成人在线| 99久久国产综合精品女不卡| 欧日韩精品视频| 日韩亚洲欧美高清| 久久久久久黄色| 国产精品伦理在线| 亚洲一区二区在线播放相泽 | 日韩精品一区二区在线| 亚洲一区二区三区不卡国产欧美| 午夜精品久久久久久久蜜桃app| 午夜视频一区二区三区| 韩国三级电影一区二区| kk眼镜猥琐国模调教系列一区二区| 99精品视频中文字幕| 欧美欧美欧美欧美| 久久久久久久久久久久电影| 国产精品国产三级国产aⅴ入口| 一区二区三区小说| 久久精品99久久久| 91在线看国产| 欧美一级免费观看| 国产精品久久久久影视| 天堂va蜜桃一区二区三区漫画版| 国产成人啪午夜精品网站男同| 91精品91久久久中77777| 日韩欧美综合在线| 亚洲精品免费在线| 精品一区二区三区蜜桃| 色婷婷狠狠综合| 精品国产乱码久久久久久影片| 亚洲视频你懂的| 韩国成人精品a∨在线观看| 在线中文字幕一区| 国产日韩精品久久久| 日韩精彩视频在线观看| 91同城在线观看| 国产性做久久久久久| 午夜欧美视频在线观看| 99久久久无码国产精品| 日韩精品一区在线观看| 亚洲一区二区四区蜜桃| 99视频精品在线| 久久亚洲综合色| 日韩av中文字幕一区二区| 色琪琪一区二区三区亚洲区| 2024国产精品视频| 青青草国产精品亚洲专区无| 色呦呦网站一区| 国产精品丝袜在线| 国产一区欧美二区| 日韩一区二区三区免费看| 亚洲成人先锋电影| 日本道精品一区二区三区| 国产精品视频观看| 国产精品99久久不卡二区| 欧美电影免费观看高清完整版| 五月婷婷欧美视频| 欧美亚洲动漫制服丝袜| 亚洲欧美另类在线| 99久久99久久久精品齐齐| 国产精品网站在线| 丁香一区二区三区| 国产欧美中文在线| 国产精品亚洲视频| 精品国产3级a| 国内偷窥港台综合视频在线播放| 91精品国产麻豆| 日本一道高清亚洲日美韩| 欧美久久久久久久久| 一区二区三区av电影| 91麻豆精品视频| 一区二区视频在线看| 91福利精品视频| 一区二区高清在线| 欧美天堂一区二区三区| 亚洲一区二区3| 欧美伦理视频网站| 日韩av不卡一区二区| 欧美一区二区三区的| 久久国产精品区| 久久亚洲精品国产精品紫薇| 国产在线播精品第三| 欧美激情一区三区| 99久久精品免费| 亚洲一级二级在线| 在线不卡一区二区| 久久福利视频一区二区| 久久先锋影音av| av激情综合网| 亚洲国产日韩一区二区| 在线播放91灌醉迷j高跟美女| 美腿丝袜在线亚洲一区| 久久综合九色综合97_久久久| 国产91综合一区在线观看| 亚洲三级在线看| 欧美一区三区四区| 国产在线精品视频| 中文字幕中文字幕一区二区| 欧美视频完全免费看| 裸体在线国模精品偷拍| 国产日韩欧美精品一区| 色哟哟精品一区| 蜜臀精品一区二区三区在线观看| 久久久久久97三级| 91国偷自产一区二区使用方法| 奇米一区二区三区| 亚洲人成网站色在线观看|