MPC755是Freescale公司開(kāi)發(fā)的PowerPC系列微處理器中具有卓越性能的G3代產(chǎn)品。本文介紹了以MPC755為核心的嵌入式計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)框架、主要芯片、地址空間分配、實(shí)現(xiàn)難點(diǎn),以及系統(tǒng)的調(diào)試方法和啟動(dòng)過(guò)程。該嵌入式系統(tǒng)處理能力優(yōu)越,內(nèi)核最高處理能力可達(dá)733MIPS,可用于語(yǔ)音處理、路由器、無(wú)線接入、VoIP、軟交換等。
伴隨著信息化時(shí)代的來(lái)臨,嵌入式系統(tǒng)在通信中的應(yīng)用越來(lái)越廣泛,人們對(duì)帶寬的需求越來(lái)越高,而新業(yè)務(wù)要求嵌入式系統(tǒng)具備更強(qiáng)的處理能力。本文以MPC755為核心,構(gòu)建了一個(gè)功能強(qiáng)大、高度模塊化、實(shí)時(shí)性強(qiáng)、具備高度可擴(kuò)展性的嵌入式計(jì)算機(jī)系統(tǒng),可用于語(yǔ)音處理、路由器、無(wú)線接入、VoIP、軟交換等眾多場(chǎng)合。因?yàn)镸PC755具有并行執(zhí)行數(shù)條指令、簡(jiǎn)單指令的快速執(zhí)行、流水線操作等優(yōu)點(diǎn),所以該系統(tǒng)處理能力優(yōu)越,內(nèi)核最高處理能力可達(dá)733MIPS。通過(guò)主/PCI橋MPC107擴(kuò)展了多種通訊協(xié)議處理接口,符合多種RTOS(實(shí)時(shí)操作系統(tǒng),如VxWorks、嵌入式Linux等)對(duì)其運(yùn)行平臺(tái)的要求。
圖1:MPC755結(jié)構(gòu)框圖
MPC755處理器
MPC755是一種32位超標(biāo)量微處理器,遵循了PowerPC處理器架構(gòu),有著與PowerPC完全相同的指令集。芯片集成了6個(gè)獨(dú)立的執(zhí)行單元(2個(gè)整數(shù)單元、1個(gè)加載/存儲(chǔ)單元、1個(gè)雙精度浮點(diǎn)單元、1個(gè)系統(tǒng)寄存器單元和1個(gè)跳轉(zhuǎn)處理單元),在一個(gè)時(shí)鐘周期內(nèi)最多可以同時(shí)執(zhí)行6條指令。
MPC755內(nèi)嵌了獨(dú)立的32K字節(jié)指令和數(shù)據(jù)高速緩存,以及指令和數(shù)據(jù)內(nèi)存管理單元(MMU)。L2 Cache(二級(jí)高速緩存)控制單元最大可外接1M字節(jié)SRAM,用作二級(jí)高速緩存。總線接口單元向外引出60X總線,可以外接具有60X總線的設(shè)備。當(dāng)內(nèi)核工作在400MHz時(shí),性能高達(dá)733MIPS。MPC755還包含了一個(gè)性能監(jiān)視器、一個(gè)遵循IEEE1149.1標(biāo)準(zhǔn)的JTAG調(diào)試接口、以及溫度管理單元等(MPC755功能結(jié)構(gòu)見(jiàn)圖1)。
MPC755在引腳定義和軟件代碼上都向下兼容,核心電壓為2.0V,I/O電壓3.3V/1.8V可選。MPC755內(nèi)核的最高頻率是400MHz。系統(tǒng)時(shí)鐘通過(guò)SYSCLK0引腳輸入,經(jīng)過(guò)PLL電路倍頻,產(chǎn)生內(nèi)核時(shí)鐘,即主頻。引腳PLL_CFG[0:3]在系統(tǒng)上電時(shí)的配置值(本設(shè)計(jì)中是0b‘1010) 決定了倍頻系數(shù)。
系統(tǒng)總體設(shè)計(jì)
圖2是基于MPC755的嵌入式計(jì)算機(jī)的系統(tǒng)框圖。由圖可見(jiàn),MPC755的接口擴(kuò)展主要依賴于主/PCI橋——MPC107。MPC755本身只外接了二級(jí)緩存,以提高系統(tǒng)性能。而其它接口都從MPC107引出,包括一個(gè)串口,一個(gè)10M/100M自適應(yīng)網(wǎng)口,I2C口等。串口和網(wǎng)口符合多種RTOS對(duì)運(yùn)行平臺(tái)的要求,且在硬件上滿足了嵌入式系統(tǒng)的兩種主要調(diào)試手段(串口調(diào)試和以太網(wǎng)調(diào)試),應(yīng)用開(kāi)發(fā)相當(dāng)容易。PMC槽使系統(tǒng)具備較強(qiáng)的現(xiàn)場(chǎng)可擴(kuò)展性,可滿足不同的應(yīng)用需求。
圖2:基于MPC755的系統(tǒng)框圖
1. MPC107
MPC107是Freescale公司開(kāi)發(fā)的一種高性能、高帶寬的PCI橋接芯片。圖3顯示了MPC107的基本結(jié)構(gòu)。MPC107一側(cè)是60X總線接口,總線寬度32位/64位可選,最高頻率100MHz,另一側(cè)是PCI總線接口。芯片內(nèi)部集成了存儲(chǔ)器控制器、DMA控制器、可編程中斷控制器、4個(gè)定時(shí)器、I2C控制器、消息單元(I2O)、PCI仲裁器、看門狗電路、動(dòng)態(tài)電源管理單元,PCI總線性能監(jiān)視單元、JTAG接口等。
存儲(chǔ)器控制器共有12個(gè)片選空間,其中8個(gè)RAM片選空間,CS[0:7]。每個(gè)片選空間的時(shí)序可編程,可支持FPM DRAM、EDO DRAM或SDRAM,最大可外接1GB RAM。另4個(gè)是ROM片選空間,RCS[0:3],支持8位、32位、64位接口寬度,最大可外接144MB ROM。
2. 存儲(chǔ)器
本系統(tǒng)在CS0空間中擴(kuò)展128MB的SDRAM,用5片256M位(16M(16位)SDRAM拼成,其中一片用作ECC,其余4片用作系統(tǒng)內(nèi)存。
Flash選用了Intel公司的28F016S3,2M字節(jié)。因?yàn)橄到y(tǒng)啟動(dòng)時(shí),必須從RCS0上的設(shè)備讀取啟動(dòng)代碼,因此,F(xiàn)lash的片選連接到RCS0上。
At24C04是512字節(jié)的EEPROM,通過(guò)I2C總線連接到MPC107,用于存儲(chǔ)系統(tǒng)信息,例如,產(chǎn)品名稱、版本號(hào)、網(wǎng)口的物理地址等。
圖3:MPC107結(jié)構(gòu)框圖
二級(jí)高速緩存選用了IDT公司的IDT71V35761,每片128K(36位,共2片,組合成128K×72位,其中64位是數(shù)據(jù)線,另外8位是校驗(yàn)信號(hào)。芯片的最高頻率為200MHz。二級(jí)高速緩存的使用極大地提高了系統(tǒng)性能,使MPC755如虎添翼。
3. 串口
TL16C550是RS-232串口控制芯片,接在RCS1空間,MAX3221是電平轉(zhuǎn)換芯片。串口的工作模式由軟件決定,既可工作于中斷模式,也可工作于輪詢模式。在調(diào)試的時(shí)候,串口用于輸出調(diào)試信息和接收外部命令。在實(shí)際應(yīng)用中,串口可以作為系統(tǒng)和用戶的交流窗口,用戶通過(guò)串口來(lái)掌握或改變系統(tǒng)的運(yùn)行情況。
4. PCI設(shè)備
本系統(tǒng)中,PCI采用MPC107內(nèi)部仲裁器,總線工作于33MHz。系統(tǒng)的網(wǎng)口芯片選用了Intel82559,這是一款具有PCI接口的,將物理層和鏈路層集成在一起的10M/100M自適應(yīng)網(wǎng)口芯片,可減少電路板空間和走線數(shù)量。變壓器選用了Pulse公司的H1012。網(wǎng)口可工作于全雙工或者半雙工模式。
另外,PCI1410A是連接PCI總線和CF卡的一種接口芯片。CF卡具有攜帶方便、易于升級(jí)、存儲(chǔ)量大、抗震性好等優(yōu)點(diǎn)。在本設(shè)計(jì)中,CF卡主要用于保存應(yīng)用軟件、用戶數(shù)據(jù)備份等。而且,在今后的系統(tǒng)維護(hù)和軟件升級(jí)中,技術(shù)人員只需要更換CF卡或者升級(jí)CF卡中的軟件,十分方便。設(shè)計(jì)選用了SanDisk公司的型號(hào)為SDCFB-64-101的CF卡,64M字節(jié)容量,幾何尺寸為36.4mm×42.8mm×3mm。
表1:地址空間分配。
PMC插槽用于擴(kuò)展PCI插卡,增加系統(tǒng)功能。例如,如果系統(tǒng)需要增加一個(gè)網(wǎng)口,只要在PMC槽上插入一塊具有PMC接口的網(wǎng)卡就可以了。
5. 時(shí)鐘
M41T81是ST公司生產(chǎn)的一款時(shí)鐘芯片。在本設(shè)計(jì)中,為系統(tǒng)提供時(shí)鐘,因?yàn)樵陔娦?、網(wǎng)絡(luò)等許多應(yīng)用場(chǎng)合,系統(tǒng)必須提供時(shí)間信息。M41T81具有I2C接口,兩種供電模式:在系統(tǒng)上電時(shí),由電路板上的3.3V電源供電;系統(tǒng)斷電時(shí),自動(dòng)切換到外接電池供電。電池供電時(shí)的電流很小,僅為1(A。
地址空間分配
在PCI主設(shè)備模式下,MPC107支持兩種地址空間分配方案:Map A和Map B。在PCI從設(shè)備模式下,MPC107只支持Map B。選擇哪種地址分配方案是由上電啟動(dòng)時(shí),引腳SDBA0的高低來(lái)決定的,如果為高,則選用Map B,否則,選用Map A。在本系統(tǒng)中,MPC107工作于PCI主設(shè)備模式,選用了Map B地址空間分配方案。
在Map B地址空間分配方案中,整個(gè)32位(4G)地址空間被分為4大塊:本地存儲(chǔ)空間、PCI存儲(chǔ)空間、PCI I/O空間、系統(tǒng)ROM空間。如表1所示。
在本系統(tǒng)中,128MB SDRAM的基地址是0000_0000,2MB Flash的基地址是FFE0_0000,串口控制芯片TL16C550的基地址是:7C00_0000,64M CF卡的訪問(wèn)地址是8000_0000。
設(shè)計(jì)關(guān)鍵
1. 時(shí)鐘
時(shí)鐘信號(hào)是本設(shè)計(jì)的一大關(guān)鍵。整個(gè)系統(tǒng)只有一個(gè)時(shí)鐘輸入:OSC_IN,33MHz,輸入到MPC107,經(jīng)過(guò)MPC107的FO緩存產(chǎn)生5個(gè)同步的PCI時(shí)鐘信號(hào),其中3個(gè)PCI時(shí)鐘輸送給PCI設(shè)備,1個(gè)保留,另一個(gè)PCI時(shí)鐘作為系統(tǒng)時(shí)鐘(PCISYNC_OUT),輸送到PLL和DLL(延時(shí)鎖相環(huán))模塊,經(jīng)過(guò)鎖相和倍頻,分別產(chǎn)生CPU時(shí)鐘(CPU_CLK0)、4個(gè)SDRAM(SDRAM_CLKx)時(shí)鐘、和一個(gè)回饋時(shí)鐘(SDRAM_SYNC)。CPU_CLK0輸送給MPC755。
表2:重要走線示意
MPC107的DLL模塊類似于PLL,但是它能夠把一個(gè)時(shí)鐘周期分為128個(gè)離散的間隔。在PCB布線時(shí),SDRAM時(shí)鐘的走線是等長(zhǎng)的。DLL檢測(cè)SDRAM_SYNC時(shí)鐘從輸出到輸入的時(shí)延,這個(gè)時(shí)延就相當(dāng)于SDRAM_CLK的時(shí)延。通過(guò)調(diào)整SDRAM_SYNC時(shí)鐘的時(shí)延,可以方便地增加或者減少SDRAM_CLK時(shí)鐘的延遲。一般情況下,走線16.5cm相當(dāng)于時(shí)延1000ps。
本設(shè)計(jì)中,CPU_CLK0走線長(zhǎng)度、SDRAM_SYNC的走線長(zhǎng)度和SDRAM_CLK時(shí)鐘的走線長(zhǎng)度三者相等。PCISYNC_OUT到PCISYNC_IN的走線長(zhǎng)度和PCICLK的走線長(zhǎng)度相等。
MPC755通過(guò)對(duì)CPU_CLK0時(shí)鐘倍頻,獲得內(nèi)核主頻。二級(jí)高速緩存的時(shí)鐘是由MPC755對(duì)內(nèi)核主頻分配所得,分頻系數(shù)由L2CR寄存器的L2CLK位決定,可以是1、1.5、2、2.5、3(本系統(tǒng)選擇了2.5)。一般的,分配系數(shù)的選擇要根據(jù)外部Cache的性能、MPC755的內(nèi)核工作頻率和DLL的調(diào)整能力決定。L2 Cache最小的工作頻率是80MHz。分頻后的時(shí)鐘經(jīng)過(guò)片內(nèi)的DLL電路調(diào)整,輸送到二級(jí)緩存。但是,L2SYNC_OUT作為反饋時(shí)鐘又輸入到L2SYNC_IN,返回路徑長(zhǎng)度必須是L2CLK_OUTA走線長(zhǎng)度的二分之一,這樣CPU就能夠保證輸入到L2 Cache的時(shí)鐘信號(hào)上升沿是和L2接口的時(shí)鐘信號(hào)上升沿對(duì)齊的。
2. 高速布線
MPC107的PLL外部電路必須盡可能地靠近MPC107。網(wǎng)口芯片82559和變壓器H1012之間的走線應(yīng)該盡可能短,網(wǎng)口的一對(duì)輸入信號(hào)和一對(duì)輸出信號(hào)采用差分走線。連接MPC755和二級(jí)高速緩存的數(shù)據(jù)線、地址線的長(zhǎng)度盡可能相等,因?yàn)橐B接二片SRAM芯片,所以采用“Y”形走線方式。SDRAM、L2 Cache的地址線、數(shù)據(jù)線和控制線也都需要特別注意。如表2所示,所有高速走線,包括PCI走線,都進(jìn)行了阻抗匹配控制。
系統(tǒng)啟動(dòng)過(guò)程和調(diào)試
表3:?jiǎn)?dòng)配置引腳及意義
當(dāng)信號(hào)#HRESET為低電平時(shí),MPC107就讀取配置引腳,以決定工作狀態(tài)。這些配置引腳是復(fù)用的,但是,在上電時(shí),它們只扮作配置引腳。關(guān)鍵的幾個(gè)配置引腳的意義如表3。
系統(tǒng)的硬件調(diào)試借助了Windriver公司的EST7xx系列仿真器。仿真器一端連接PC機(jī),另一端連接MPC755的JTAG接口,即使SDRAM等模塊工作不正常,仿真器也可以訪問(wèn)MPC755和MPC107的內(nèi)部寄存器,幫助判斷SDRAM和其它器件的故障所在。
首先調(diào)試PowerPC內(nèi)核和外部SDRAM,一旦它們工作正常,就可以通過(guò)仿真器下載RTOS,來(lái)輔助硬件調(diào)試。為此,筆者選用了Windriver公司的嵌入式實(shí)時(shí)操作系統(tǒng),VxWorks及其集成開(kāi)發(fā)工具Tornado。然后,調(diào)試串口,因?yàn)榇谙鄬?duì)簡(jiǎn)單。如果串口工作正常,就可以脫離仿真器,利用Tornado提供的工具軟件,例如WDB,通過(guò)串口線建立電路板和PC機(jī)的通信機(jī)制,繼續(xù)調(diào)試其它模塊。調(diào)試的主要工作量是在MPC107,而不是MPC755。
調(diào)試結(jié)束后,將正確的啟動(dòng)代碼燒制到Flash中,VxWorks和應(yīng)用軟件燒制到CF卡。因?yàn)閱?dòng)時(shí)中斷入口的基地址為0xFFF00000,而PowerPC處理器啟動(dòng)的中斷向量偏移地址是0x100,所以啟動(dòng)代碼必須燒制在Flash的0xFFF00100地址。系統(tǒng)上電或者硬復(fù)位后,MPC755自動(dòng)從該地址讀取指令并執(zhí)行,步驟如下:
PowerPC內(nèi)核初始化;
關(guān)閉所有中斷;
初始化SDRAM;
初始化MPC755內(nèi)部的高速緩存;
初始化二級(jí)高速緩存
初始化PCI接口;
初始化CF卡;
從CF卡讀取VxWorks及應(yīng)用軟件到SDRAM中;
運(yùn)行VxWorks;
初始化串口;
初始化I2C,從AT24C04讀取MAC地址;
初始化網(wǎng)口;
打開(kāi)中斷;
運(yùn)行應(yīng)用軟件。
Bootrom中最初一段程序采用PowerPC的匯編語(yǔ)言編寫,這部分程序完成了對(duì)系統(tǒng)的最基本的初始化,其中最重要的是PowerPC內(nèi)核和SDRAM,以便可以盡快使用SDRAM,從而在其后可以使用C語(yǔ)言編寫的程序進(jìn)行后繼初始化工作。