《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 采用CPLD增強(qiáng)單片機(jī)P89C669外部設(shè)備擴(kuò)展能力
采用CPLD增強(qiáng)單片機(jī)P89C669外部設(shè)備擴(kuò)展能力
摘要: 目前的單片系統(tǒng)越來(lái)越復(fù)雜,,擴(kuò)展的外部設(shè)備也更多,如果能充分利用P89C669的豐富的線性地址資源,,將能大大增強(qiáng)系統(tǒng)能力,。在一個(gè)嵌入式系統(tǒng)開(kāi)發(fā)中,,筆者采用ALTERA公司的CPLD芯片EPM7032利用這款單片機(jī)的線性地址擴(kuò)展了豐富的外部設(shè)備資源。
關(guān)鍵詞: CPLD 單片機(jī) P89C669 EPM7032 KeilC51
Abstract:
Key words :

       P89C669是PHILIPS半導(dǎo)體一款51MX(存儲(chǔ)器擴(kuò)展)內(nèi)核的微處理器,,其指令執(zhí)行速度2倍于標(biāo)準(zhǔn)的80C51器件,,線性地址經(jīng)擴(kuò)展后可支持高達(dá)8 MB的程序存儲(chǔ)器和8 MB的數(shù)據(jù)存儲(chǔ)器,這是他相對(duì)于標(biāo)準(zhǔn)51內(nèi)核的最大優(yōu)點(diǎn),。

       目前的單片系統(tǒng)越來(lái)越復(fù)雜,,擴(kuò)展的外部設(shè)備也更多,如果能充分利用P89C669的豐富的線性地址資源,,將能大大增強(qiáng)系統(tǒng)能力,。在一個(gè)嵌入式系統(tǒng)開(kāi)發(fā)中,筆者采用ALTERA公司的CPLD" target="_blank">CPLD芯片EPM7032利用這款單片機(jī)的線性地址擴(kuò)展了豐富的外部設(shè)備資源,。

1 P89C669的存儲(chǔ)器結(jié)構(gòu)

1.1 存儲(chǔ)結(jié)構(gòu)

       P89C669的存儲(chǔ)器結(jié)構(gòu)為哈佛結(jié)構(gòu),,地址分配如表1所示。

       從表1可見(jiàn),,P89C669對(duì)傳統(tǒng)的51內(nèi)核的3部分存儲(chǔ)結(jié)構(gòu)進(jìn)行了相應(yīng)的擴(kuò)展,,各個(gè)部分的片內(nèi)存儲(chǔ)空間也增加了,如內(nèi)部數(shù)據(jù)空間有1 280 B在片內(nèi),,外部數(shù)據(jù)空間有768 B在片內(nèi),,有96 kB的片內(nèi)程序存儲(chǔ)空間等。
 
       尋址指令除了傳統(tǒng)的MOV,,MOVX,,MOVC外,EMOV指令與24位的通用指針寄存器EPTR可尋址16MB的全部空間,,但是所占用的指令周期也較長(zhǎng),。

       擴(kuò)展外部數(shù)據(jù)存儲(chǔ)空問(wèn)HDATA除了768 B在片內(nèi)外,其余地址空間可以用來(lái)擴(kuò)展外部設(shè)備(其實(shí)只要把片內(nèi)的768 B通過(guò)指令將其屏蔽,,也可以用來(lái)擴(kuò)展外部設(shè)備),。

1.2 P2口的讀寫(xiě)時(shí)序分析

       尋址8 MB的數(shù)據(jù)存儲(chǔ)空間,需要有23 b的地址尋址能力,,P89C669將傳統(tǒng)51內(nèi)核的P2高位地址時(shí)分復(fù)用,從而得到23 b地址尋址能力,,時(shí)序圖如圖1所示,,即當(dāng)使用23 b地址時(shí),,ALE為高時(shí),地址位A16~A22輸出到P2.0~P2.6,;ALE為低時(shí),,地址位A8~A14輸出到P2.0~P2.6。無(wú)論ALE為何值,,位地址A15都從P2.7輸出,。

2 系統(tǒng)外部設(shè)備擴(kuò)展需求

       在某產(chǎn)品的控制系統(tǒng)中,擴(kuò)展的外部設(shè)備比較豐富,,利用P89c669的23 b地址尋址能力進(jìn)行設(shè)備地址編碼,,所以需要對(duì)23 b地址的時(shí)序邏輯進(jìn)行處理,處理單元交給一塊ALTERA公司的CPLD(EPM7032),。

       EPM7032具有32個(gè)邏輯單元,,約600個(gè)門(mén)級(jí)單元,可用IO口36個(gè),,內(nèi)置IEEE std.1149.1 JTAG,,方便可編程下載。

       在滿足系統(tǒng)資源的前提下,,選用EPM7032,,將P89C669的P2口作為處理單元輸入信號(hào),經(jīng)過(guò)CPLD的內(nèi)部邏輯進(jìn)行譯碼或數(shù)據(jù)鎖存,,以獲得各個(gè)外部設(shè)備資源的選擇信號(hào)及少量的控制信號(hào),,如圖2所示。

       在本設(shè)計(jì)中,,共需要得到設(shè)備選擇信號(hào)如SRAM芯片M68AF127B的片選CS_RAM,,2個(gè)FLASH ROM芯片SST29SF040的片選CS_ROM0,CS_ROM1,,模擬多路選擇器SN74LV4052的使能信號(hào)線CS_4052,,另外還有一些控制信號(hào)線,這里就不一一介紹,。

       實(shí)際上,,P2口引入CPLD,就P89C669的23 b地址線而言,,用來(lái)地址譯碼和少量的控制信號(hào)等主要是利用最高的幾位,,在本設(shè)計(jì)中,由于SST29SF040用到地址線A0~A18,,所以CPLD的地址譯碼處理只能是利用剩下的A19~A22,,這將在下文的CPLD的譯碼單元可以看到。

       A0~A7低地址采用74HC573進(jìn)行鎖存,,A16~A18地址內(nèi)容采用74HC574進(jìn)行鎖存,,如圖3所示,。

       M68AF127B,SST29SF040,,74HCA052的功能連接圖如圖4所示,,74HC4052用于UART口的擴(kuò)展,如圖5所示,。

3 EPM7032S的邏輯設(shè)計(jì)

       CPLD的設(shè)計(jì)采用原理圖的方法進(jìn)行設(shè)計(jì),,簡(jiǎn)便快捷,如圖6所示,,采用74374模塊鎖存P2口的輸入信號(hào),,ALE反向后得到_ALE作為74374的鎖存時(shí)鐘線輸入。

       對(duì)高位的地址線A19~A22進(jìn)行地址譯碼,,獲得各芯片的片選線,,如圖7所示。

       如果不是對(duì)SST29SF040進(jìn)行讀寫(xiě),,則高位地址線A16~A18仍然可以利用,,這里將其作為74HC4052的3個(gè)輸入控制線A,B,,INH,,即圖8中的A_4052,B_4052,,CS_4052,。

4 KeilC51平臺(tái)的外部設(shè)備測(cè)試

    編寫(xiě)設(shè)備驅(qū)動(dòng)程序是在KeilC51的平臺(tái)上,由于利用了P89C669的23 b地址線,,在C51的平臺(tái)上采用指針讀寫(xiě)設(shè)備很方便,,這里給出讀寫(xiě)SRAM芯片M68AF127B的C源代碼例子,以供參考,。

       以上3句為測(cè)試SRAM的測(cè)試代碼,,START_EX-TRAM為SRAM芯片的起始地址(可根據(jù)CPLD的內(nèi)部設(shè)計(jì)進(jìn)行相應(yīng)的修改),第2,,3句分別是寫(xiě),、讀數(shù)據(jù)的宏。

5 結(jié) 語(yǔ)

       利用P89C669的23 b的線性地址并采用CPLD擴(kuò)展外部設(shè)備資源可以說(shuō)是不錯(cuò)的一個(gè)方法,,對(duì)外部設(shè)備的訪問(wèn)將顯得更加簡(jiǎn)便,,當(dāng)然,在成本方面系統(tǒng)設(shè)計(jì)工程師也要加以考慮,,并最終尋找一個(gè)性價(jià)比最高的方案,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。