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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mulctrlandregs.vhd

?? the model of cpu ARM7TDMI.
?? VHD
字號(hào):
--****************************************************************************************************
-- Multiplier control and Partial Sum/Carry registers for ARM core
-- Designed by Ruslan Lepetenok
-- Modified 12.02.2003
--****************************************************************************************************

library	IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

use WORK.ARMPackage.all;

entity MulCtrlAndRegs is generic(EarlyTermination : boolean);
	                     port(
						   -- Global signals
	                       nRESET          : in  std_logic;
						   CLK             : in  std_logic;
						   CLKEN		   : in  std_logic;
	                       -- Interface for the 32x8 combinatorial multiplier 
	                       Rs9Out          : out std_logic_vector(8 downto 0);
	                       PartialSumOut   : out std_logic_vector(63 downto 0); 
						   PartialCarryOut : out std_logic_vector(63 downto 0); 
						   PartialSumIn    : in  std_logic_vector(63 downto 0); 
						   PartialCarryIn  : in  std_logic_vector(63 downto 0); 
						   PP4P            : out std_logic;
		                   PP4M            : out std_logic;
		                   -- Data inputs
	                       ADataIn         : in  std_logic_vector(31 downto 0); -- RdHi(Rn)/Rs data path 
						   BDataIn         : in  std_logic_vector(31 downto 0); -- RdLo(Rd)/Rm data path
						   -- Control inputs
						   LoadRsRm        : in  std_logic;  -- Load Rs and Rm and start
						   LoadPS          : in  std_logic;  -- Load partial sum register with RHi:RLo   
						   ClearPSC        : in  std_logic;  -- Clear prtial sum and carry register
						   UnsignedMul     : in  std_logic;  -- Unsigned multiplication
						   ReadLH	       : in  std_logic;	 -- 0 - Read PS/PC low,1 - Read PS/PC high
						   -- Control outputs
						   MulResRdy       : out std_logic; -- Multiplication result is ready
						   -- Result
						   ResPartSum      : out std_logic_vector(31 downto 0);
						   ResPartCarry    : out std_logic_vector(31 downto 0)
						      );
end MulCtrlAndRegs;

architecture RTL of MulCtrlAndRegs is

-- Partial sum and partial carry registers signals
signal PartialSumReg     : std_logic_vector(63 downto 0) := (others => '0');
signal PartialSumRegIn   : std_logic_vector(PartialSumReg'range) := (others => '0');
signal PartialCarryReg   : std_logic_vector(63 downto 0) := (others => '0');
signal PartialCarryRegIn : std_logic_vector(PartialCarryReg'range) := (others => '0');

signal PartialSumMasked  : std_logic_vector(PartialSumReg'range) := (others => '0');
signal PartialCarryMasked  : std_logic_vector(PartialCarryReg'range) := (others => '0');

signal PartialSumRealing   : std_logic_vector(PartialSumReg'range) := (others => '0');
signal PartialCarryRealing : std_logic_vector(PartialCarryReg'range) := (others => '0');

-- Control state machine
signal nMulSt0       : std_logic := '0';
signal MulSt1        : std_logic := '0';
signal MulSt2        : std_logic := '0';
signal MulSt3        : std_logic := '0';
signal MulSt4        : std_logic := '0';

-- Early termination signals
signal EarlyTerm1C   : std_logic := '0'; -- Early termination after the first cycle
signal EarlyTerm2C   : std_logic := '0'; -- Early termination after the second cycle
signal EarlyTerm3C   : std_logic := '0'; -- Early termination after the third cycle

signal MulResRdyInt  : std_logic := '0';

-- Realignment circuit
signal	RealignCnt   : std_logic_vector(1 downto 0) := (others => '0');
signal	RealignCntIn : std_logic_vector(RealignCnt'range) := (others => '0');

signal UMulLastCycle : std_logic := '0';

begin
	
Rs9Out <= ADataIn(7 downto 0)&'0' when LoadRsRm='1' else -- First cycle of the multiplication 
		  ADataIn(15 downto 7) when MulSt1='1' else 	 -- Second cycle of the multiplication 
		  ADataIn(23 downto 15) when MulSt2='1' else 	 -- Third cycle of the multiplication 
		  ADataIn(31 downto 23) when MulSt3='1' else 	 -- Forth cycle of the multiplication 
		  (others => CDnCr);
			  
MainControlSm:process(nRESET,CLK)
begin
if nRESET='0' then               -- Reset
 nMulSt0 <= '0';
  MulSt1 <= '0';
  MulSt2 <= '0';
  MulSt3 <= '0';
  MulSt4 <= '0';
  MulResRdyInt <= '0';
  UMulLastCycle <= '0';
 
elsif CLK='1' and CLK'event then -- Clock
  if CLKEN='1' then              -- Clock enable
  nMulSt0 <= (not nMulSt0 and LoadRsRm and not EarlyTerm1C) or (nMulSt0 and not(
  		     (MulSt1 and EarlyTerm2C)or
             (MulSt2 and EarlyTerm3C)or
			  MulSt3));
  
  MulSt1 <= not MulSt1 and not nMulSt0 and LoadRsRm and not EarlyTerm1C;
  MulSt2 <= not MulSt2 and MulSt1 and not EarlyTerm2C;
  MulSt3 <= not MulSt3 and MulSt2 and not EarlyTerm3C;
  MulResRdyInt <= (not MulResRdyInt and 
  				 ((LoadRsRm and EarlyTerm1C)or
                  (MulSt1 and EarlyTerm2C)or
  		          (MulSt2 and EarlyTerm3C)or
				   MulSt3))or 
				  (MulResRdyInt and not ClearPSC);   -- Clear ready flag after multiplication

UMulLastCycle <= not MulSt3 and MulSt2 and not EarlyTerm3C and 
                  UnsignedMul and ADataIn(ADataIn'high); -- The last cycle of unsigned multiplication and Rs[31]='1' -> +X

  end if;
end if;	 
end process;

MulResRdy <= MulResRdyInt;

-- +X
PP4P <= '1' when (nMulSt0='0' and EarlyTerm1C='1' and ADataIn(8 downto 7)="01")or
                 (MulSt1='1' and EarlyTerm2C='1' and ADataIn(16 downto 15)="01")or 
                 (MulSt2='1' and EarlyTerm3C='1' and ADataIn(24 downto 23)="01")or 
                  UMulLastCycle='1' else '0';

-- -X					  
PP4M <= '1' when (nMulSt0='0' and EarlyTerm1C='1' and ADataIn(8 downto 7)="10")or
                 (MulSt1='1' and EarlyTerm2C='1' and ADataIn(16 downto 15)="10")or 
                 (MulSt2='1' and EarlyTerm3C='1' and ADataIn(24 downto 23)="10")
                  else '0';

-- Early termination conditions
-- Cycle                              1               2                3         
-- Signed multiplication        [31:8]='0'/'1'	[31:16]='0'/'1'	 [31:24]='0'/'1'
-- Unsigned multiplication      [31:8]='0'	    [31:16]='0' 	 [31:24]='0'

-- Early termination logic
EarlyTerm1C <= '1' when((UnsignedMul='1' and ADataIn(31 downto 8)="0000000000000000000000000")or 
                        (UnsignedMul='0' and(ADataIn(31 downto 8)="0000000000000000000000000" or 
						ADataIn(31 downto 8)="1111111111111111111111111")))and 
                        EarlyTermination else '0';

EarlyTerm2C <= '1' when((UnsignedMul='1' and ADataIn(31 downto 16)="00000000000000000")or 
                        (UnsignedMul='0' and(ADataIn(31 downto 16)="00000000000000000" or 
						ADataIn(31 downto 16)="11111111111111111")))and 
					    EarlyTermination else '0';

EarlyTerm3C <= '1' when((UnsignedMul='1' and ADataIn(31 downto 24)="000000000")or 
                        (UnsignedMul='0' and(ADataIn(31 downto 24)="000000000" or 
						ADataIn(31 downto 24)="111111111")))and 
						EarlyTermination else '0';

			   
RealignmentCounter:process(nRESET,CLK)
begin
if nRESET='0' then                                -- Reset
 RealignCnt  <= (others => '0');
elsif CLK='1' and CLK'event then                  -- Clock
 if (LoadRsRm or nMulSt0)='1' and CLKEN='1' then  -- Clock enable
 RealignCnt  <= RealignCntIn;
 end if;	 
end if;	 
end process;			   

RealignCntIn <= (others => '0') when  LoadRsRm='1' else
				 RealignCnt + 1; 
				 
-- Partial sum and partial carry registers
PartialSum_Load_Rotate:process(nRESET,CLK)
begin
if nRESET='0' then                                        -- Reset
 PartialSumReg  <= (others => '0');
elsif CLK='1' and CLK'event then                          -- Clock
 if (LoadPS or LoadRsRm or nMulSt0 or ClearPSC)='1' and CLKEN='1' then -- Clock enable
 PartialSumReg  <= PartialSumRegIn;
 end if;	 
end if;	 
end process;

PartialCarry_Clear_Rotate:process(nRESET,CLK)
begin
if nRESET='0' then                                -- Reset
  PartialCarryReg <= (others => '0');	
elsif CLK='1' and CLK'event then                  -- Clock
 if (LoadRsRm or nMulSt0 or ClearPSC)='1' and CLKEN='1' then  -- Clock enable
  PartialCarryReg <= PartialCarryRegIn;	
 end if;	 
end if;	 
end process;

PartialSumRegIn <= (others => '0') when ClearPSC='1' else  -- Clear (after multiplication)
				   ADataIn&BDataIn  when LoadPS='1' else  -- Load (for accumulation)
                   PartialSumMasked;                      -- Rotate 

PartialSumMasked<= PartialSumIn(7 downto 0)&PartialSumIn(63 downto 8) when LoadRsRm='1' else
                   PartialSumIn(7 downto 0)&PartialSumReg(63 downto 56)&PartialSumIn(55 downto 8) when MulSt1='1' else
				   PartialSumIn(7 downto 0)&PartialSumReg(63 downto 48)&PartialSumIn(47 downto 8) when MulSt2='1' else
				   PartialSumIn(7 downto 0)&PartialSumReg(63 downto 40)&PartialSumIn(39 downto 8) when MulSt3='1' else
				   (others => CDnCr);
					   
PartialCarryRegIn  <= (others => '0') when ClearPSC='1' else  -- Clear (after multiplication)
                      PartialCarryMasked;                    -- Rotate 

PartialCarryMasked <= PartialCarryIn(7 downto 0)&PartialCarryIn(63 downto 8) when LoadRsRm='1' else
                      PartialCarryIn(7 downto 0)&PartialCarryReg(63 downto 56)&PartialCarryIn(55 downto 8) when MulSt1='1' else
				      PartialCarryIn(7 downto 0)&PartialCarryReg(63 downto 48)&PartialCarryIn(47 downto 8) when MulSt2='1' else
				      PartialCarryIn(7 downto 0)&PartialCarryReg(63 downto 40)&PartialCarryIn(39 downto 8) when MulSt3='1' else
				      (others => CDnCr);

PartialSumOut <= PartialSumReg;
PartialCarryOut	<= PartialCarryReg;

-- Result : partial sum and partial carry (64 bits)
PartialSumRealing <= PartialSumReg(55 downto 0)&PartialSumReg(63 downto 56) when RealignCnt="00" else -- Terminated after the second cycle ??
					 PartialSumReg(47 downto 0)&PartialSumReg(63 downto 48) when RealignCnt="01" else -- Terminated after the second cycle ??
                     PartialSumReg(39 downto 0)&PartialSumReg(63 downto 40) when RealignCnt="10" else -- Terminated after the third cycle ??
                     PartialSumReg(31 downto 0)&PartialSumReg(63 downto 32) when RealignCnt="11" else 
			         (others => CDnCr);	   

PartialCarryRealing <= PartialCarryReg(55 downto 0)&PartialCarryReg(63 downto 56) when RealignCnt="00" else -- Terminated after the second cycle ??
					   PartialCarryReg(47 downto 0)&PartialCarryReg(63 downto 48) when RealignCnt="01" else -- Terminated after the second cycle ??
                       PartialCarryReg(39 downto 0)&PartialCarryReg(63 downto 40) when RealignCnt="10" else -- Terminated after the third cycle	??
                       PartialCarryReg(31 downto 0)&PartialCarryReg(63 downto 32) when RealignCnt="11" else 
			           (others => CDnCr);	    

ResPartSum   <= PartialSumRealing(63 downto 32) when ReadLH='1' else
	            PartialSumRealing(31 downto 0);

-- Shift left partial carry by 1 
ResPartCarry <= PartialCarryRealing(62 downto 31) when ReadLH='1' else
	            PartialCarryRealing(30 downto 0)&'0';

end RTL;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合成人在线| 国产一区久久久| 亚洲第一av色| 日本成人中文字幕在线视频| 国产成人精品午夜视频免费| 99久久久国产精品免费蜜臀| 日本韩国欧美国产| 欧美一级二级三级蜜桃| 国产欧美在线观看一区| 亚洲人亚洲人成电影网站色| 日日摸夜夜添夜夜添亚洲女人| 欧美aaa在线| 99久久精品国产一区| 欧美高清视频不卡网| 国产欧美精品一区二区三区四区 | 国产精品一二三四五| 91视视频在线观看入口直接观看www| 欧美在线观看视频一区二区三区| 欧美高清视频一二三区 | 精品噜噜噜噜久久久久久久久试看| 久久亚洲欧美国产精品乐播| 一区二区成人在线视频| 国产成人在线电影| 日韩亚洲欧美成人一区| 国产三级欧美三级日产三级99| 亚洲自拍偷拍麻豆| 成人18视频在线播放| 日韩欧美激情在线| 亚洲欧美另类久久久精品 | 欧美日韩一区二区欧美激情| 久久久www成人免费毛片麻豆| 老司机精品视频在线| 91精品久久久久久久91蜜桃| 五月开心婷婷久久| 欧美视频日韩视频| 三级欧美在线一区| 8v天堂国产在线一区二区| 日韩在线观看一区二区| 欧美人狂配大交3d怪物一区| 亚洲国产精品影院| 日韩一卡二卡三卡| 激情小说亚洲一区| 国产亚洲精品精华液| a美女胸又www黄视频久久| 亚洲欧洲中文日韩久久av乱码| 色婷婷综合久久久久中文| 亚洲日韩欧美一区二区在线| 色激情天天射综合网| 丝袜美腿亚洲色图| 久久嫩草精品久久久精品一| 91看片淫黄大片一级在线观看| 亚洲国产中文字幕在线视频综合| 91精品国产欧美日韩| 国产一区二区三区视频在线播放| 国产女主播一区| 欧美亚洲综合一区| 国产成人精品一区二| 一区二区三区日韩精品视频| 精品久久久久久久久久久久包黑料| 成人综合在线网站| 日韩精品一级二级 | 色婷婷综合在线| 久久99国产精品免费| 亚洲精品国产a久久久久久| 日韩一区二区三区在线| 日本精品裸体写真集在线观看 | 久久综合九色综合97婷婷| 91偷拍与自偷拍精品| 九九国产精品视频| 免费成人在线网站| 天天射综合影视| 亚洲免费在线观看| 中文字幕亚洲区| 亚洲国产精品高清| 久久久精品免费免费| 日韩欧美黄色影院| 欧美一区二区观看视频| 欧美少妇bbb| 91精品久久久久久久久99蜜臂| 日本高清不卡aⅴ免费网站| 国产不卡在线一区| 成人综合在线视频| 91亚洲精品久久久蜜桃网站| 国产suv精品一区二区三区| 国产成人鲁色资源国产91色综| 韩国毛片一区二区三区| 精品综合久久久久久8888| 精品在线亚洲视频| 精品制服美女丁香| 成人自拍视频在线| 欧洲激情一区二区| 欧美老肥妇做.爰bbww| 精品久久久久久久久久久院品网 | 久久久亚洲午夜电影| 国产精品午夜久久| 亚洲成a人v欧美综合天堂| 琪琪久久久久日韩精品| 国产一区二区三区免费| jlzzjlzz欧美大全| 欧美一区日本一区韩国一区| 久久久蜜臀国产一区二区| 亚洲欧洲一区二区三区| 午夜精品久久久久久久蜜桃app| 蜜桃免费网站一区二区三区| av午夜精品一区二区三区| 久久亚洲精品国产精品紫薇| 91精品国产欧美一区二区成人| 欧美在线观看视频在线| 欧美一区二区三区四区久久| 欧美韩日一区二区三区| 亚洲成人在线网站| 91小视频在线免费看| 欧美成人官网二区| 一区二区三区国产精品| 国产精品一色哟哟哟| 欧美一区二区美女| 久久久99精品免费观看| 午夜免费欧美电影| 欧洲一区二区三区在线| 国产精品欧美极品| 国产在线观看免费一区| 精品福利二区三区| 美女脱光内衣内裤视频久久网站| 午夜精品久久久久久久久久久| 蜜臀av一区二区在线免费观看 | 欧美福利视频导航| 丝袜a∨在线一区二区三区不卡| 高清不卡在线观看av| 中文字幕一区二区三区在线播放 | 欧美aaa在线| 久久久久久久久久电影| 国产在线看一区| 国产欧美日韩久久| 99久久精品99国产精品| 亚洲妇熟xx妇色黄| 日本高清不卡aⅴ免费网站| 久久精品日产第一区二区三区高清版 | 亚洲国产精品国自产拍av| caoporn国产一区二区| 亚洲一区影音先锋| 欧美大片一区二区三区| 白白色亚洲国产精品| 亚洲一区免费观看| 久久久久国产成人精品亚洲午夜| jiyouzz国产精品久久| 五月婷婷综合激情| 国产女同互慰高潮91漫画| 99v久久综合狠狠综合久久| 天天综合日日夜夜精品| 中文字幕一区二区三区四区| 欧美视频三区在线播放| 成人深夜福利app| 午夜亚洲国产au精品一区二区| 精品国产乱码久久久久久蜜臀| 99精品视频在线免费观看| 久久精品国产澳门| 亚洲综合丝袜美腿| 国产欧美一区二区三区在线看蜜臀 | 久久久777精品电影网影网| 欧美色视频在线观看| 不卡av在线免费观看| 国产乱对白刺激视频不卡| 日韩电影在线观看一区| 成人免费小视频| 国产精品网站在线| 久久精品在这里| 国产拍揄自揄精品视频麻豆| 久久久久亚洲蜜桃| 日韩视频一区二区三区在线播放| 色88888久久久久久影院野外| 高清国产午夜精品久久久久久| 国产黄色精品视频| 国产成人在线免费观看| 成人综合在线观看| 成人av动漫在线| 97久久超碰国产精品| av在线播放不卡| 在线一区二区视频| 欧美乱熟臀69xxxxxx| 日韩欧美成人一区| 中国色在线观看另类| 亚洲欧美另类在线| 男人操女人的视频在线观看欧美| 日韩va欧美va亚洲va久久| 精品亚洲porn| 不卡的看片网站| 555www色欧美视频| 久久精品一区二区三区四区| 国产精品动漫网站| 日本不卡123| 亚洲观看高清完整版在线观看| 亚洲男帅同性gay1069| 日日骚欧美日韩| 色综合天天综合色综合av | 日韩精品乱码av一区二区| 风间由美一区二区三区在线观看 | 午夜精品久久久| 国产伦理精品不卡| 高清av一区二区| 成人午夜免费av|