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