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

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

?? cpldbus51說明.txt

?? CPLD與8051的總線接口的VHDL設計源碼,包括原理圖,VHDL語言的源程序,仿真波形,設計的詳細說明
?? TXT
字號:
                         cpld 與8051的總線接口VHDL源碼
關于cpldbus51.VHD的說明:
    很久之前我也想在網上找一份cpld與8051的總線方式接口的VHD源碼,可是沒有找到,只好自己寫咯,
若是只用cpld做51系統的地址譯碼,會用cpld的都能寫出代碼來,可是cpld與51的總線接口由于涉及到
時序就沒有那么容易了,我也是郁悶了近3天才把接口電路K掉的,它現在工作得很好。
----------------------------
cpldbus51.sch  系統連接圖
cpldbus51.awf  ACtive HDL的波形文件
cpldbus51.VHD  接口VHLD源碼
cpldbus51_TB.VHD接口的測試文件 
MOVX_WR.gif
MOVC.gif
MOVX_RD.gif 我仿真時使用的MOVX指令的時序圖
-------------------------------------------------------------------------------------------
關于我的系統的說明:
    8051工作于11.0592MHZ,RAM擴展為128KB的628128,FlashRom擴展為128KB的AT29C010A
    128KB的RAM分成4個區(Bank)       地址分配為0x0000-0x7FFF
    128KB的FlashRom分成8個區(Bank)  地址分配為0x8000-0xBFFF
    為了使8051能訪問整個128KB的RAM空間和128KB的FlashRom空間,在CPLD內建兩個寄存器
    RamBankReg和FlashRomBankReg用于存放高位地址

    RamBankReg-->A15 A16
    FlashRomBankReg-->A14 A15 A16 
    nCsFlashRam-->    FlashRom的片選
    CPLD使用EPM7128 時鐘為16MHZ有源晶振
    地址0xC000--0xC003為8255
   
    8051的P0  P2  WR RD ALE 于CPLD連接
--------------------------------------------------------------------------------------------
要點:
A. 使用同步復位.
      也許你也習慣于如下這樣異步復位的描述:
      .....
      if Clr='1' then
          FlashRomBankReg<="000";  --異步復位
      elsif Clk'event and Clk='1' then
          ........                
          ........
      end if;
      這樣的描述是很好的,但前提是你的復位信號Reset沒有毛刺干擾等,我一開始也是這樣寫我的電路
的,可是我寫入CPLD做實際測試時,發現寄存器FlashRomBankReg老是會異常復位,我一開始以為是地址鎖存
的問題,可是不是這樣的,等我郁悶了近一個上午后我想到了使用同步復位試試.
      首先使用Clk對復位信號采樣,我估算了一下,8051的復位信號要求是高電平維持2個機器周期,2個機
器周期就是2*12=24個振蕩周期,我對復位信號連續采樣10次,若是一直為高電平,就產生片內復位使能信號.
其它片內寄存器以這個復位信號做同步復位.代碼如下寫:
      .....
      if Clk'event and Clk='1' then
          if Clr_en='1' then           --Clr_en為片內復位信號
              FlashRomBankReg<="000";  --同步復位
	  elsif 
	      ........                
              ........
      	  end if;
      end if;
      這樣之后經實際測試它工作得很好.
B.一切以時鐘為基準,對其它輸入信號做采樣處理.
      對WR  RD  ALE我做了采樣,避免毛刺干擾.
C.8051對cpld寫數據是在WR的低電平的中間寫入cpld的內建寄存器.
      對WR信號采樣后,經過數次延時后產生使能信號WR_en
------------------------------------------------------------------------
    其它的就沒什么的了,自己看代碼吧。 
                          --liandao
                            lycld@163.com
                            2003.06.02
-----------------------------------------------------------------------


--cpld 與8051的總線接口VHDL源碼
--8051工作頻率為11.0592MHZ  CPLD(EPM7128SLC15)的工作頻率為16.0000MHZ(有源晶振)



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

entity cpldbus51 is
	port (										  
		Clk: in STD_LOGIC;		           --Clock    16MHZ  
		Clr: in STD_LOGIC;			   --Clear     high 
		P0: inout STD_LOGIC_VECTOR (7 downto 0);   --8052 Port 0
		P2: in STD_LOGIC_VECTOR (7 downto 0);	   --8052 Port 2
		ALE: in STD_LOGIC;                         --8052 ALE
--		PSEN: in STD_LOGIC;			   --8052'Psen
--		INT0:out  STD_LOGIC;                       --8052 INT0
		Wr: in STD_LOGIC;			   --8052'Wr
		Rd: in STD_LOGIC;			   --8052'Rd
---------------------------
		Pina:out	STD_LOGIC;                 ---output 
-----------------------
		nCS8255: out STD_LOGIC;			   --select 8255
		RamBank: out STD_LOGIC_VECTOR (1 downto 0);--Ram68128a bank switch   A15 A16
		nCsFlashRam: out STD_LOGIC;				   --select Flash Rom		 CE
		FlashRomBank: out STD_LOGIC_VECTOR (2 downto 0) --Flash Rom switch	 A14 A15 A16
	
	);
end cpldbus51;



architecture cpldbus51 of cpldbus51 is											
------------------------------------------------------------------------------
signal Addr: std_logic_vector(15 downto 0);		--16bit address
signal ALE_Sample:STD_LOGIC;
signal RamBankReg: STD_LOGIC_VECTOR (1 downto 0);--Ram bank switch reg, 4 banks, 4*32K=128k bytes
signal FlashRomBankReg: STD_LOGIC_VECTOR (2 downto 0);--Flash Rom bank switch reg, 8 banks, 8*16K=128k bytes
--Rd Sample
signal RdSample:std_logic;	--for Rd Sample
--WR Sample	
signal WrSample0:std_logic;	--Wr for Sample	
signal WrSample1:std_logic;	
signal WrSample2:std_logic;	
signal WrSample3:std_logic;
signal WrSample4:std_logic;	
signal WrSample5:std_logic;
--Wr Sample output
signal Wr_en:std_logic;	
--Clr Sample 
signal ClrSample0:std_logic;	-- for Clr Sample	
signal ClrSample1:std_logic;	
signal ClrSample2:std_logic;	
signal ClrSample3:std_logic;
signal ClrSample4:std_logic;	
signal ClrSample5:std_logic;
signal ClrSample6:std_logic;	
signal ClrSample7:std_logic;	
signal ClrSample8:std_logic;
signal ClrSample9:std_logic;	
--Clr Sample output
signal Clr_en:std_logic;
------------------------------------------------------------------------------
--output Reg
signal PinaReg:std_logic;

begin	 
--------------------------------------------
--Sample Clr signal	 
ClrSample_p:process(Clk)
begin
	if Clk'event and Clk='1' then
		ClrSample0<=Clr;
		ClrSample1<=ClrSample0;
		ClrSample2<=ClrSample1;
		ClrSample3<=ClrSample2;
		ClrSample4<=ClrSample3;
		ClrSample5<=ClrSample4;
		ClrSample6<=ClrSample5;
		ClrSample7<=ClrSample6;
		ClrSample8<=ClrSample7;
		ClrSample9<=ClrSample8;
	end if;
end process;		 		 
---------------------------------------
--Clr Enable Signal
Clr_en_p:process(Clk)
begin		  
	if Clk'event and Clk='1' then
		if      ClrSample0='1' and ClrSample1='1'
			and ClrSample2='1' and ClrSample3='1'
			and ClrSample4='1' and ClrSample5='1'
			and ClrSample6='1' and ClrSample7='1'
			and ClrSample8='1' and ClrSample9='1' then
			Clr_en<='1';
		else
			Clr_en<='0';
		end if;
	end if;
end process;	   	  
------------------------------------------------
--sample ALE signal 
ALE_p:process(Clk)
	begin
		if Clk'event and Clk='1' then
			if Clr_en='1' then
				ALE_Sample<='0';
			else
				ALE_Sample<=ALE;
			end if;
		end if;
end process;
-------------------------------------------------			   
--Address Latch 
Address_p:process(Clk)
	begin
		if Clk'event and Clk='1' then
			if Clr_en='1' then
 				Addr<="0000000000000000";
			elsif ALE_Sample='1' then
				Addr<=P2&P0;
			end if;
		end if;
	end process;									   
-------------------------------------
--Sample Wr
WrSample_p:process(Clk)
begin
	if Clk'event and Clk='1' then
		if Clr_en='1' then
			WrSample0<='1';
			WrSample1<='1';
			WrSample2<='1';
			WrSample3<='1';
			WrSample4<='1';
			WrSample5<='1';
		else
			WrSample0<=Wr;
			WrSample1<=WrSample0;
			WrSample2<=WrSample1;
			WrSample3<=WrSample2;
			WrSample4<=WrSample3;
			WrSample5<=WrSample4;
		end if;
	end if;
end process;	
---------------------------------------
--internal Wr enable signal
WrEn_p:process(WrSample0,WrSample1,WrSample2,WrSample3,WrSample4,WrSample5)
begin
	if (WrSample0='0' and  WrSample1='0'
		and WrSample2='0' and WrSample3='0'
		and WrSample4='1'and WrSample5='1')then
		Wr_en<='1';
	else
		Wr_en<='0';
	end if;
end process;							
----------------------------------------
--Rd Sample
RdSample_p:process(Clk)
begin
	if Clk'event and Clk='1' then
		if Clr_en='1' then
			RdSample<='1';
		else
			RdSample<=Rd;
		end if;
	end if;
end process;
	
-----------------------------------
--Flash Rom Chip select signal
CS_Flash_p:process(Addr)
begin
	if Addr(15 downto 14)="10" then            --Address:8000h--BFFFh
	    nCsFlashRam<='0';
	else
		nCsFlashRam<='1';
	end if;
end process;
-----------------------------------
--	8255 Chip select signal
cs8255_p:process(Addr)
begin
		if Addr(15 downto 2)="11000000000000" then  --C000h--C003h	
			nCS8255<='0';
		else
			nCS8255<='1';
		end if;
	end process;			   
-----------------------------------
-----------------------------------	
-- Ram Bank Switch Reg	
Ram_bank_p:process(Clk)
begin				   
	if Clk'event and Clk='1' then
		if Clr_en='1' then
	   		RamBankReg<="00";		
		elsif Addr="1100000000000100" and Wr_en='1' then    --Address:C004h
	        RamBankReg<=P0(1 downto 0);
		end if;
	end if;
end process;
RamBank<=RamBankReg;  		   
----------------------------------
----------------------------------
--Flash Rom Switch Reg
Flash_bank_p:process(Clk)
begin					 
	if Clk'event and Clk='1' then
		if Clr_en='1' then
			FlashRomBankReg<="000";
		elsif Addr="1100000000000101"  and Wr_en='1' then      --Address:C005h
			FlashRomBankReg<=P0(2 downto 0);
		end if;
	end if;
end process;
FlashRomBank<=FlashRomBankReg;	  
--------------------------------
--------------------------------
--Rd process
-- now just two in-builde register
Rd_p:process(RdSample,Addr,RamBankReg,FlashRomBankReg)
begin
	if    Addr="1100000000000100"  and RdSample='0' then    --C004h
	    P0<="000000"&RamBankReg;
	elsif Addr="1100000000000101"  and RdSample='0' then    --C005h
		P0<="00000"&FlashRomBankReg;
	else	
		P0<="ZZZZZZZZ";
	end if;
end process;				
-------------------------------				
Pina_p:process(Clk)
begin
	if Clk'event and Clk='1' then
		if Clr_en='1' then
			PinaReg<='0';
		elsif Addr="1100000000000110"  and Wr_en='1' then      --C006h	
			PinaReg<=P0(0);
		end if;
	end if;
end process;	  
Pina<=PinaReg;			 
end cpldbus51;
----------------------------------------------
--Pina是一個端口擴展,51中不是有Setb p1.0  Clr p1.0這樣的語句嗎?Pina就有類似這樣的特性
--置1   類似Setb p1.0
--Mov DPTR,#0C006H
--MovX @DPTR,#00000001B
--清0   類似Clr p1.0
--Mov DPTR,#0C006H
--MovX @DPTR,#00000000B







  

      
     
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频国内一区二区| ...av二区三区久久精品| 中文字幕免费观看一区| 亚洲成人自拍偷拍| 成人晚上爱看视频| 日韩一区二区影院| 亚洲在线视频免费观看| 国产伦精一区二区三区| 欧美精品自拍偷拍| 亚洲欧洲中文日韩久久av乱码| 视频在线观看一区二区三区| 91在线视频18| 中文字幕不卡在线观看| 麻豆91在线看| 欧美嫩在线观看| 亚洲综合激情小说| 99久久夜色精品国产网站| 精品sm在线观看| 美国av一区二区| 日韩一二三四区| 日韩成人一级大片| 欧美日韩三级一区二区| 一区二区三区免费网站| 不卡影院免费观看| 中文幕一区二区三区久久蜜桃| 精品一二三四区| 欧美刺激午夜性久久久久久久| 日韩激情一区二区| 欧美日韩在线不卡| 午夜精品爽啪视频| 欧美剧情片在线观看| 亚洲午夜久久久久久久久电影网| 91麻豆视频网站| 亚洲色图19p| 欧美影院一区二区三区| 亚洲综合图片区| 欧美日韩精品欧美日韩精品一 | 波多野结衣亚洲| 国产午夜精品美女毛片视频| 国产精品18久久久久久久久久久久 | 91精品国产高清一区二区三区| 亚洲a一区二区| 欧美一区国产二区| 精品综合免费视频观看| 国产日韩在线不卡| 成人毛片在线观看| 亚洲精品国产精华液| 91福利在线导航| 日韩福利视频网| 精品国产免费一区二区三区香蕉| 国产精品一级二级三级| 国产精品乱码一区二三区小蝌蚪| 一本大道av伊人久久综合| 亚洲图片欧美视频| 精品免费一区二区三区| 成人av资源下载| 亚洲制服欧美中文字幕中文字幕| 欧美一区午夜视频在线观看 | 在线电影院国产精品| 精品在线免费视频| 中文字幕av一区二区三区免费看 | 99久久777色| 亚洲午夜久久久久久久久电影网 | 亚洲色图在线视频| 在线91免费看| 国产成人在线免费观看| 亚洲视频一二区| 欧美一级黄色大片| av一区二区不卡| 三级在线观看一区二区| 日本一区二区成人在线| 欧美日韩美女一区二区| 国产suv精品一区二区6| 午夜免费欧美电影| 久久久精品2019中文字幕之3| 91久久线看在观草草青青| 久久精品国产亚洲5555| 亚洲欧美国产毛片在线| 精品国产一区二区三区久久久蜜月| 99精品在线观看视频| 美女视频免费一区| 一区二区不卡在线播放| 国产日韩三级在线| 91精品国产色综合久久ai换脸| 成人动漫在线一区| 九九视频精品免费| 午夜影院久久久| 国产精品久久久久久妇女6080| 欧美一区二区三区免费在线看| 99久久久无码国产精品| 国产资源在线一区| 日韩专区欧美专区| 亚洲一区二区三区视频在线| 中文乱码免费一区二区| 精品国产自在久精品国产| 欧美日韩久久久久久| 色婷婷亚洲精品| 国产+成+人+亚洲欧洲自线| 麻豆国产欧美一区二区三区| 性做久久久久久免费观看| 亚洲免费观看在线观看| 中文字幕在线免费不卡| 日本一区二区三区四区在线视频| 精品日韩av一区二区| 4438亚洲最大| 欧美日韩高清一区| 欧美色图天堂网| 日本乱码高清不卡字幕| 91免费看片在线观看| 91免费国产在线观看| 91在线云播放| 色哟哟国产精品| 欧美综合天天夜夜久久| 色综合欧美在线视频区| 色婷婷av一区二区| 91国偷自产一区二区开放时间| aaa亚洲精品| 91丨九色porny丨蝌蚪| 91女厕偷拍女厕偷拍高清| 色综合夜色一区| 色先锋aa成人| 在线观看亚洲成人| 欧美日韩亚洲综合一区| 欧美丰满少妇xxxbbb| 欧美一区二区三区播放老司机| 制服丝袜国产精品| 久久综合色8888| 欧美激情综合五月色丁香| 中文字幕人成不卡一区| 亚洲精品国产a久久久久久 | 国产精品进线69影院| 中文字幕一区二区三区乱码在线| 亚洲免费伊人电影| 三级亚洲高清视频| 国产在线看一区| 不卡的av电影| 欧日韩精品视频| 日韩一区二区三区三四区视频在线观看| 欧美一区二区三区在线看| 久久亚洲春色中文字幕久久久| 久久精品日韩一区二区三区| 亚洲欧美自拍偷拍| 午夜伊人狠狠久久| 国产不卡在线视频| 在线观看av一区二区| 日韩精品一区二| 亚洲欧洲在线观看av| 三级欧美在线一区| 国产91在线看| 欧美日韩国产精品自在自线| 26uuu久久综合| 亚洲视频一区在线| 久久精品国产**网站演员| 成人免费视频一区| 91精品啪在线观看国产60岁| 国产日产欧美一区二区三区| 亚洲最大成人网4388xx| 国产美女精品在线| 欧美三级午夜理伦三级中视频| 久久尤物电影视频在线观看| 亚洲愉拍自拍另类高清精品| 狠狠色综合日日| 欧美三级韩国三级日本三斤| 日本一区二区三区国色天香 | 国产精品久久久久久久久搜平片| 亚洲成人免费在线观看| 成人精品小蝌蚪| 日韩一区二区三区视频在线观看| 亚洲色图清纯唯美| 国产精品99久久不卡二区| 欧美亚洲国产bt| 国产精品午夜免费| 久久99久久99| 777久久久精品| 中文字幕一区不卡| 国产另类ts人妖一区二区| 在线播放欧美女士性生活| 亚洲精选免费视频| 粉嫩aⅴ一区二区三区四区五区| 欧美一区二区视频在线观看2022| 一区二区三区视频在线观看| 高清不卡一区二区| 久久伊99综合婷婷久久伊| 日韩和欧美的一区| 欧美日韩国产另类一区| 一区二区三区四区激情| 色综合久久久久综合体| 中文字幕一区二区三区乱码在线| 国产在线日韩欧美| 精品理论电影在线| 久久99精品一区二区三区三区| 欧美一区二区三区视频免费| 午夜精品爽啪视频| 欧美日韩精品高清| 亚洲一区二区三区四区的| 欧美伊人精品成人久久综合97| 一区二区三区精密机械公司| 93久久精品日日躁夜夜躁欧美| 国产精品理论片| 成人av动漫在线|