PowerPC和Dallas的時鐘芯片接口設(shè)計
摘要:分析摩托羅位的PowerPC系列處理器和Dallas的實時時鐘芯片的時序,并詳細給出一種較為實用的接口設(shè)計方法。
關(guān)鍵詞:實時時鐘 CPLD PowerPC 地址/數(shù)據(jù)復(fù)用
在通信領(lǐng)域,摩托羅位的PowerPC(如MPC850、MPC860、MPC8260等)的應(yīng)用越來越廣泛。由于這些嵌入式CPU上集成著豐富的通信資源(如快速以太網(wǎng)接口、多個串口等),而且有較高的運行速度和較低的價位,故在一些遠程測控領(lǐng)域的應(yīng)用也越來越多。同時在許多系統(tǒng)中都需要實時時鐘,而應(yīng)用最廣泛的當數(shù)Dallas的時鐘芯片。摩托羅拉的PowerPC系列地址線和數(shù)據(jù)線是獨立的,而Dallas的時鐘芯片的地址線和數(shù)據(jù)線是復(fù)用的。本文以MPC860和DS1687為例,給出接口的設(shè)計方法和電路。因為用CPLD來實現(xiàn),進步增加了通用性。
1 DS1687的功能和時序特點
在我們開發(fā)的寬帶接入服務(wù)器(BNAS)中用到了MPC860,作為客戶端與RADIUS服務(wù)器配合實現(xiàn)對用戶信息的認證、鑒權(quán)、計費等功能。在處理計費信息時需要有實時時鐘基準,我們選擇了Dallas的DS1687實時時鐘芯片。DS1687的引腳分布如圖1所示。
DS1687具有以下主要功能:
*集成晶振和鋰電池,芯片中RAM的數(shù)據(jù)在掉電后不會丟失;
*解決千年蟲問題;
*集成242字節(jié)的NVRAM;
*可編程方波輸出;
*輸出32.768kHz信號,以支持電源管理功能;
*在不加電時數(shù)據(jù)至少保存10年。
DS1687的CPU接口為地址線數(shù)據(jù)線復(fù)用,讀寫時序分別如圖2和圖3所示。
2 MPC860的時序特點
MPC860有異步和同步兩種總線接口,分別稱為CPU和GPCM。UPM連接同步操作芯片,如SDRAM、SSRAM,具有較高的總線速度;GPCM連接異步操作的芯片,如異步時序內(nèi)存、異步時序的專用芯片。MPC860的GPCM接口是地址和數(shù)據(jù)非復(fù)用的,基本操作時序如圖4所示。為了簡單起見,將讀寫時序在同一幀圖上描述。其中片選讀信號OE和寫信號WE的上升或下降沿的位置可通過設(shè)置寄存器進行調(diào)整。
3 接口的設(shè)計原理和具體實現(xiàn)
從DS1687的時序看出,在一次讀或?qū)懙牟僮髦?,地?數(shù)據(jù)線先出現(xiàn)地址后出現(xiàn)數(shù)據(jù);而GPCM接口在一次操作中,數(shù)據(jù)線輸出數(shù)據(jù),地址線輸出地址。從這個特點出發(fā),設(shè)想用MPC860的兩次操作產(chǎn)生的時序來完成DS1687的一次操作。具體思路如下:把MPC860的數(shù)據(jù)線(D0…D7)與DS1687的地址/數(shù)據(jù)線(AD0…AD7)相連,通過MPC860的GPCM口直接輸出的地址A11(也可根據(jù)內(nèi)存空間劃,隨著選擇一根地址線)、片選CS5(MPC860共有8個片選輸出)、讀信號OE和寫信號WE的邏輯運算產(chǎn)生DS1687的ALE信號、讀信號DS_RD、寫信號DS_WE和片選信號DS_CS。邏輯運行如下:
ALE=!(CS5)+A11+WE)
DS_RD=OE+!A11
DS_WE=WE+!A11
DS_CS=CS5+/A11
上述邏輯用或門、非門很容易實現(xiàn),但在本系統(tǒng)中,還要實現(xiàn)MPC860上電配置字設(shè)置、長監(jiān)控時間的看門狗、MPC860與其它專用芯片的接口等其它功能,故選擇可編程邏輯器件PLD來完成這些功能。隨著PLD器件密度的提高和價格的下降,在系統(tǒng)中的應(yīng)用會越來越廣泛。在本設(shè)計中選擇了Xilinx公司的CPLD器件XC95144。它屬XC9500系列,由多個功能塊(FB)和I/O塊(IOB)組成,由開關(guān)矩陣FastCONNECTII完全互連。IOB提供器件的輸入和輸出緩沖,每個FB提供具有54個輸入和18個輸出的可編程邏輯的容量。該系列54個輸入和18個輸出的可編程邏輯的容量,該系列都是在系統(tǒng)可編程的,編程/擦除次數(shù)最少為1萬次。CPLD的延時可以預(yù)測,適合作小規(guī)模的、對時序要求嚴格的邏輯。設(shè)計采用圖形輸入方式,邏輯原理如圖5所示。
下面分析該電路的工作過程。當MPC860對DS1687進行讀操作時(假設(shè)讀取地址0x55的數(shù)據(jù)),首先執(zhí)行一條地址為0x07060000,數(shù)據(jù)為0x55的寫指令:
REG8(0x07060000)=0x55
地址可根據(jù)系統(tǒng)定,但要保證A11=0,此時DS_RD、DS_WE、DS_CS均無效。DS1687的ALE信號在下降沿將AD0~AD7上的數(shù)據(jù)鎖存作為地址,從ALE的表達式看到,ALE的下降沿正是WE的上升沿,而此時AD0~AD7上的數(shù)據(jù)也正是是指令寫入的數(shù)0x55,也就是DS1687在ALE下降沿把0x55鎖存作為地址。緊接著執(zhí)行一條讀取指令:
value=REG8(0x07160000)
應(yīng)保證讀操作地址的A11=1。由操作時序和邏輯表達式可知,此時
ALE=0
DS_CS=CS5
DS_RD=OE
在DS_RD(OE)的上升沿,將0x55單元處的數(shù)據(jù)鎖存進MPC860的value單元。
當MPC860對DS1687進行寫操作時(假設(shè)地址為0x55,寫入的數(shù)據(jù)為0xaa),需要兩條寫指針,第一條與讀DS1687操作時相同,目的是把地址寫入DS1687:
REG8(0x07060000)=0x55
第二條同樣是一條寫指令:
REG8(0x07160000)=0xaa
但目標地址要保證A11=1,此時接口輸出的信號值為:
ALE=0
DS_CS=CS5
DS_WE=WE
在DS_WE(即WE)的上升沿,將數(shù)據(jù)鎖存進DS1687。
4 小結(jié)
在實際使用過程中,可以將讀寫DS1687分別編成一個函數(shù),簡化編程。該方法不僅適合于MPC860和DS1687的接口,也適合其它的數(shù)據(jù)地址非復(fù)用的CPU和數(shù)據(jù)地址復(fù)用的外圍芯片的接口。該接口設(shè)計在BNAS系統(tǒng)中成功使用之后,已陸續(xù)在公司其他部門得到了應(yīng)用。
評論