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

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

?? cpld 與8051的總線接口vhdl源碼.txt

?? cpld 與8051的總線接口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一区二区三区免费野_久草精品视频
亚洲综合在线免费观看| 日韩中文字幕不卡| 亚欧色一区w666天堂| 国产综合久久久久久久久久久久| 国产黑丝在线一区二区三区| 欧美性大战久久久久久久| 久久精品人人做人人综合| 午夜精品久久久久久久99樱桃| 国产一区二区导航在线播放| 成人自拍视频在线| 亚洲二区视频在线| 亚洲色图.com| 在线成人av网站| 黄页网站大全一区二区| 久久久夜色精品亚洲| 成人精品国产一区二区4080| 国产免费观看久久| 欧美最新大片在线看| 国内精品在线播放| 国产无人区一区二区三区| 国产丝袜美腿一区二区三区| 美女一区二区久久| 欧美日韩国产综合久久| 亚洲蜜臀av乱码久久精品 | 天天色综合天天| www.日韩精品| 国产精品国模大尺度视频| 国产精品77777| 精品国产成人在线影院| 亚洲h动漫在线| 欧美中文字幕一区二区三区| 亚洲欧洲在线观看av| 不卡的电影网站| 日本一区二区三级电影在线观看 | 91免费观看国产| 国产精品免费视频观看| 国产高清久久久| 久久久一区二区三区捆绑**| 国产精品1区二区.| 中文无字幕一区二区三区| 国产91在线看| 国产精品剧情在线亚洲| 91香蕉国产在线观看软件| 国产精品麻豆视频| 91小视频免费观看| 夜夜嗨av一区二区三区网页| 欧洲中文字幕精品| 亚洲h在线观看| 日韩欧美一区二区免费| 狠狠色丁香久久婷婷综| 国产婷婷一区二区| 99久久精品情趣| 亚洲影视在线播放| 欧美情侣在线播放| 久久成人久久爱| 亚洲免费三区一区二区| 久久精品一区二区三区av| 午夜日韩在线电影| 美女性感视频久久| 不卡av免费在线观看| 日本道免费精品一区二区三区| av亚洲产国偷v产偷v自拍| 色综合天天综合网天天狠天天| 91捆绑美女网站| 日韩精品综合一本久道在线视频| 中文字幕 久热精品 视频在线| 成人激情免费网站| 在线观看欧美精品| 麻豆精品新av中文字幕| 国产精品私人影院| 91国偷自产一区二区三区观看| 图片区小说区区亚洲影院| 91精品一区二区三区久久久久久| 久久不见久久见中文字幕免费| 欧美高清在线精品一区| 欧美日韩你懂得| 国产高清在线精品| 一区二区免费视频| 久久久亚洲精品一区二区三区| 成人av影视在线观看| 亚洲福利视频一区二区| 国产欧美一区二区三区沐欲| 色噜噜狠狠成人网p站| 日韩激情av在线| 国产午夜久久久久| 欧美三区在线观看| 国产成人午夜精品影院观看视频| 欧美一区二区播放| 欧美日韩久久久| 亚洲一区在线视频| 青青草91视频| 国产亲近乱来精品视频 | 久久99日本精品| 国产精品成人免费在线| 欧美高清视频www夜色资源网| 大桥未久av一区二区三区中文| 天天色天天操综合| 亚洲欧洲www| 精品福利av导航| 欧美性生交片4| 成人午夜av电影| 日韩主播视频在线| 亚洲一区国产视频| 亚洲欧美中日韩| 久久久久国产精品人| 欧美一区二区三区小说| 欧美亚一区二区| 91亚洲精华国产精华精华液| 久久国产乱子精品免费女| 亚洲福利视频一区| 一区二区三区四区亚洲| 亚洲国产精华液网站w| 精品嫩草影院久久| 777午夜精品视频在线播放| 在线视频一区二区三区| 91论坛在线播放| 色av成人天堂桃色av| 91论坛在线播放| 在线观看网站黄不卡| 一本色道a无线码一区v| 99久久国产综合精品色伊| av在线不卡电影| 99视频国产精品| 欧亚洲嫩模精品一区三区| 欧美在线免费播放| 欧美精品vⅰdeose4hd| 6080yy午夜一二三区久久| 欧美系列一区二区| 欧美久久一二三四区| 欧美一区二区三区爱爱| 欧美tickling挠脚心丨vk| 久久久亚洲午夜电影| 中文字幕一区免费在线观看| **网站欧美大片在线观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲成在人线在线播放| 免费在线观看视频一区| 国产乱国产乱300精品| jlzzjlzz欧美大全| 91国偷自产一区二区开放时间 | 成a人片亚洲日本久久| 91视频观看视频| 欧美高清一级片在线| 欧美成人在线直播| 国产精品女同一区二区三区| 亚洲精品中文在线观看| 日韩av成人高清| 国产伦理精品不卡| 色综合天天综合在线视频| 欧美精品日日鲁夜夜添| 久久青草欧美一区二区三区| 亚洲欧美在线观看| 日韩1区2区3区| 国产**成人网毛片九色| 欧美视频在线观看一区二区| 精品电影一区二区| 亚洲女子a中天字幕| 日本三级韩国三级欧美三级| 国产91丝袜在线播放0| 欧美人与z0zoxxxx视频| 国产网站一区二区三区| 天天色 色综合| 日韩av电影天堂| 4438x亚洲最大成人网| 日韩精品在线看片z| 亚洲动漫第一页| 成人精品一区二区三区四区| 717成人午夜免费福利电影| 国产欧美精品日韩区二区麻豆天美| 一区二区久久久| av中文字幕亚洲| 日本一区二区三区四区| 亚洲国产精品久久久久秋霞影院| 国产v综合v亚洲欧| 欧美成人女星排名| 另类调教123区| 99久久精品免费| 欧美精品第一页| 一区二区三区国产| 99久久久精品| 欧美激情资源网| 国产毛片精品国产一区二区三区| 欧美精品 日韩| 亚洲午夜久久久久久久久电影网| 成人午夜在线播放| 日本一区二区三级电影在线观看| 久久99精品久久久久久久久久久久| 色婷婷综合久久久中文一区二区 | 亚洲欧美日韩国产综合在线| 国产精品系列在线播放| 日韩精品一区二区三区蜜臀| 日韩avvvv在线播放| 欧美伦理影视网| 亚洲第四色夜色| 欧美四级电影在线观看| 一区二区在线免费| 在线日韩av片| 亚洲黄色小说网站| 色94色欧美sute亚洲线路一久| 亚洲欧美区自拍先锋|