1 概述
時分復(fù)用是當(dāng)前同步通信系統(tǒng)中用以提高數(shù)據(jù)傳輸效率的常用方法。例如第2代移動通信GSM系統(tǒng),,光同步傳輸網(wǎng)SDH等都是使用時分復(fù)用的例子,。在現(xiàn)代通信設(shè)備的研發(fā)中,常常會遇到高速背板通信,、多協(xié)議接口,、網(wǎng)絡(luò)管理信令通道等需要同時處理多個同步通信接口數(shù)據(jù)的情況。本文介紹了一種采用MPC8280處理器芯片內(nèi)部的多通道通信控制單元,,來處理多個同步通信接口數(shù)據(jù)的方法,。
MPC8280是飛思卡爾公司PowerQUICC II產(chǎn)品線的較新成員。它采用0.13 μm工藝制造,。內(nèi)核,、I/O的供電電壓分別為1.5 V、3.3 V,。MPC8280相比該公司的MPC8260,,制造工藝和工作頻率均有所提升,但因為核心電壓下降,,功耗反而下降,。而且,MPC8280片內(nèi)的DPRAM(雙口靜態(tài)存儲器)容量增加了一倍,此外還增加了PCI和USB,。
MPC8280芯片由主內(nèi)核,、SIU、CPM等3個主要功能模塊組成,,如圖1所示,。MPC8280的處理器主內(nèi)核稱為G2_LE,它是一種PowerPC架構(gòu)的多級流水線超標(biāo)量處理器,。MPC8280內(nèi)核運行頻率為166~450 MHz,。SIU模塊主要負(fù)責(zé)60x總線控制、PCI橋及時鐘產(chǎn)生,。CPM模塊負(fù)責(zé)處理通信事務(wù),,即處理SCC、SMC,、FCC,、MCC、USB,、SPI,、I2C等通信控制單元收發(fā)數(shù)據(jù)。本文所述的多通道HDLC控制器即采用CPM下的MCC(多通道控制器)通信控制單元來實現(xiàn),。
MPC8280片內(nèi)集成的靜態(tài)存儲器包括DPRAM,、全局配置寄存器、SI RAM(串行接口路由表配置空間),。其中,,第1塊32 KB的數(shù)據(jù)DPRAM空間被等分成16個bank(存儲空間塊)。CPM中的通信控制單元除了使用全局配置寄存器進(jìn)行最基本的參數(shù)配置外,,還須使用參數(shù)配置存儲區(qū)塊進(jìn)一步配置,。一般CPM中每個通信控制單元都有2個參數(shù)配置存儲區(qū)塊,參數(shù)配置存儲區(qū)塊均定位在DPRAM中的指定地址,。SI RAM主要用于配置TSA(時隙分配器)的路由表,。
2 SI(TSA)的設(shè)計
MCC總是和SI(串行接口)配合使用(因為MCC只是數(shù)據(jù)處理單元,不負(fù)責(zé)通信數(shù)據(jù)與MPC8280引腳的交互),,因此,,只有SI配置好,MCC單元才能正常工作,。每個MCC僅與1個SI相關(guān)聯(lián),,而且,MCC1只允許連接到SI1,,MCC2只允許連接到SI2,。
MPC8280片內(nèi)含2個SI,,每個SI最多可控制4個TDM(時分復(fù)用)口。每個TDM口均擁有各自獨立的收發(fā)幀同步脈沖,、收發(fā)時鐘引腳,。時鐘的同步邊沿、時鐘倍頻(1×或2×時鐘模式),、幀同步信號的超前時鐘位數(shù)可編程控制。SI與MCC的關(guān)系如圖2所示,。
TSA的主要工作是數(shù)據(jù)選路,,即將CPM內(nèi)各個通信控制單元的I/O數(shù)據(jù)以比特或字節(jié)為單位輸送到TDM口上。換句話說,,TSA相當(dāng)于MPC8280的CPM模塊中各通信控制單元(MCC,、SCC、SMC,、FCC等)進(jìn)行TDMA(時分復(fù)用)的功能模塊,,對TSA的編程與后端的通信控制單元無關(guān)。TSA根據(jù)由SI RAM構(gòu)造的路由表執(zhí)行選路,。
SI自身沒有緩存,,它直接與后端各通信控制單元的FIFO相連;SI在時鐘的驅(qū)動下,,按照路由表的配置,,將接收到的幀比特流分別送到各指定通信控制單元的FIFO中,以及將各指定通信控制單元的FIFO中的數(shù)據(jù)輸出到TDM口的引腳上,,并與各通信控制單元的BD(緩沖區(qū)描述符)表和中斷交互,,完成通信任務(wù)。
程序員通過對SI RAM塊編程來完成路由表的構(gòu)建,。每個SI包含2個SI RAM塊,,分別用于設(shè)計發(fā)送和接收的路由表,這樣MPC8280內(nèi)部的2個SI模塊總共包含4個SI RAM塊,。每塊由SI RAM構(gòu)造的路由表包括256條表項,,每條表項長度是2字節(jié),每條表項最多可控制8個字節(jié)串行流數(shù)據(jù)的分配,,所以1個SI模塊支持的最長一幀的長度可達(dá)256×8×8=16 384比特,。路由表表項的內(nèi)容就是指定將TDM口上通過1~8個比特或字節(jié)的同步數(shù)據(jù)流分配給MCC、SCC,、SMC,、FCC等通信控制單元。最后一條表項必須激活路由表的結(jié)束標(biāo)記,,告訴TSA已處理完一幀,,請等待下一個幀同步信號的到來,。
如圖3所示,每塊SI RAM(內(nèi)含256條表項)等分為4個bank,,即每個TDM口均各有1個bank一一對應(yīng),;每個bank可以被程序員指派為對應(yīng)不同的TDM口(但不允許將兩個TDM口對應(yīng)到同一個bank上)。這樣,,TDM口的串行數(shù)據(jù)流在指定bank的SI RAM表項的控制下被分別送往指定的通信控制單元進(jìn)行處理,。一個bank的長度可由設(shè)計人員自由設(shè)定(路由表有首尾標(biāo)志),這是因為不同的應(yīng)用,,每一幀的比特數(shù)目并不一定相同,;路由表即精確地確定了每一個TDM口幀流的比特數(shù)目。顯然,,一個幀流必須由多少條表項來處理也可以計算出來,,即幀流總比特數(shù)/每表項處理的比特數(shù)。注意,,路由表的表項數(shù)目必須是偶數(shù),,因此在編程時,如果的確是只有一條表項,,那么就還必須再補(bǔ)上一條內(nèi)容為空的表項,。
此外,因為TDM口的接收,、發(fā)送分別由2個SI RAM塊實施控制,,所以TDM口發(fā)送和接收的比特流的分配可以任意設(shè)計,甚至允許將不連續(xù)的比特流都分配到一個通信控制單元,,也允許一個通信控制單元從某一個TDM接收,,而從另一個TDM發(fā)送。
3 MCC的標(biāo)準(zhǔn)通道設(shè)計
一個MCC的數(shù)據(jù)是在特定SI控制的4個TDM口上傳輸,;每個MCC可以支持128條時分復(fù)用通道(見圖4),,用來傳輸HDLC、透明通道,,或7號信令通道數(shù)據(jù),。本文的設(shè)計是用MCC實現(xiàn)多通道HDLC通信協(xié)議。MCC的數(shù)據(jù)流可通過TSA的橋接直接送入MCC相應(yīng)通道的FIFO處理,。每個MCC可分解成4個子模塊,,每個子模塊(包含32條通道)對應(yīng)到1個TDM口上,即處理不同的物理TDM口的數(shù)據(jù),。MCC中的每個通道的工作模式均可獨立設(shè)置,,收發(fā)關(guān)系也可以獨立映射;支持全局環(huán)回和基于單個通道的獨立環(huán)回,。
每個MCC中包含128個功能完全相同的通道,,每個通道都有一套配置寄存器,,這些寄存器功能相同,并依靠通道號進(jìn)行索引尋址,,進(jìn)而初始化,。
MCC的初始化遵循先全局、后通道的順序,。MCC的全局參數(shù)寄存器定位在DPRAM(bank 9)中,,占用128字節(jié),該寄存器組相對DPRAM基地址的偏移量為0x8800,。在全局參數(shù)設(shè)置里比較重要的,、將影響各通道配置寄存器空間尋址的地址索引寄存器如表1所列。
每個通道都有64字節(jié)的專用參數(shù)寄存器,。采用“DPRAM基址+64×通道號”的方式計算出指定通道的專用參數(shù)寄存器組的基址。
每個通道還有8字節(jié)的額外參數(shù)寄存器,,采用“DPRAM基址+8×通道號”的方式計算出指定通道的額外參數(shù)寄存器組的基址,。該區(qū)塊的主要內(nèi)容包括:TBASE(16位,發(fā)送BD表首地址計算元素),;RBASE(16位,,接收BD表首地址計算元素)。
BD表通常放在片外內(nèi)存中,。1個MCC包含128條通道,,每條通道都有自己的BD表,所有128條通道的BD表集中連續(xù)地存放在一個512 KB的段中,。在這個空間內(nèi)尋址某個通道對應(yīng)的BD表的基地址的計算方法是:MCCBASE+8×RBASE(接收),,MCCBASE+8×TBASE(發(fā)送)。接收和發(fā)送BD表都是一個環(huán)形隊形,,接收BD表至少須含2條表項,,發(fā)送BD表至少須含1條表項。編程時,,構(gòu)造結(jié)構(gòu)數(shù)組,,可以把TBASE、RBASE設(shè)計成和通道號對應(yīng)的數(shù)組索引,。
每條BD表項有8個字節(jié),,如表2所列。
環(huán)形隊列結(jié)構(gòu)的中斷表也是放在片外內(nèi)存中,。發(fā)送中斷對應(yīng)一張表,,基地址為TINTBASE;接收中斷對應(yīng)1~4張表,,基地址分別為RINT-BASE0~RINTBASE3,。中斷表的長度完全由用戶確定,,但最少至少包括2條表項。每條中斷表項長度為4字節(jié),,記錄了中斷表項是否有效,、中斷標(biāo)志以及觸發(fā)中斷的通道號。
4 MCC的超通道模式設(shè)計
工作于超通道模式下的MCC要求SI必須以字節(jié)為選路單位,。通過“超通道”這個技術(shù)將原來分屬于幾個通道的FIFO聚合成1個更大的FIF-O,,傳輸大容量的同步數(shù)據(jù)流。聚合的方法是在SI RAM中指定某幾個MCCchannel的通道號屬于一個超通道,,也就是說,,為使MCC工作在超通道模式下,必須完成SI RAM和超通道表的初始化,。
超通道表用于表示哪幾個通道的FIFO共享指定通道的控制參數(shù),。例如:160、161,、162等3個標(biāo)準(zhǔn)通道組成1個超通道,,且由160號通道的控制寄存器來控制該超通道的行為,那么就在超通道表表項中填入“160”,。
超通道表僅用于發(fā)送控制,,而接收不需要構(gòu)造超通道表。接收的編程比較簡單,,既不需要設(shè)超通道,,也比較直接,需要由某個通道處理的數(shù)據(jù),,直接在SI RAM里打開相應(yīng)的通道接收即可,。
5 中斷模型
MCC的中斷響應(yīng)采用兩級中斷模型:第一級為全局中斷狀態(tài)標(biāo)志寄存器MCCE,第二級為中斷環(huán)表,。MPC8280中共有5個中斷環(huán)表為MCC通道中斷提供中斷標(biāo)志服務(wù):1個用于發(fā)送,,4個用于接收。中斷環(huán)表是所有通道共用的,。每個通道初始化時必須指定它使用哪個接收中斷表來上報接收中斷,,利用這個特性可以設(shè)計出帶優(yōu)先級的中斷響應(yīng)機(jī)制。
注意:因為是環(huán)表,,所以環(huán)表內(nèi)最后一條表項的Wrap位必須置1,,環(huán)表內(nèi)的其他表項必須全部置成O。
每當(dāng)有MCC通道觸發(fā)中斷,,MPC8280的CPM模塊將會向中斷環(huán)表中當(dāng)前空表項位置寫入一條表項,,并將該表項的“V”有效標(biāo)志位置1,表示已經(jīng)收到一次中斷,,等待用戶響應(yīng)和處理,。并且給表項指針加1以指向下一條空表項(當(dāng)指針到達(dá)環(huán)表的最后一條時,,則CPM模塊自動將中斷環(huán)表的基地址的值重新裝入表項指針寄存器,使CPM下一次寫入的位置重新定位到中斷環(huán)表的頂部),。
注意:如果中斷屏蔽寄存器INTMSK中設(shè)置了一些屏蔽事件,,則當(dāng)這些事件發(fā)生時,CPM不會向中斷環(huán)表寫入表項,,自然也不會觸發(fā)全局中斷狀態(tài)標(biāo)志寄存器MCCE,。
用戶ISR代碼響應(yīng)MCC中斷,訪問中斷環(huán)表表項時,,應(yīng)首先清除“V”標(biāo)志,,然后再處理具體中斷請求,并在退出中斷服務(wù)程序前清除MCCE寄存器的中斷標(biāo)志,。程序員應(yīng)該根據(jù)系統(tǒng)的實際情況決定是在進(jìn)入MCC中斷服務(wù)程序后將所有中斷環(huán)表中的中斷事件處理完才退出,,還是僅處理中斷環(huán)表一項中斷請求后即退出中斷服務(wù)程序,這需要程序員基于中斷響應(yīng)時間以及不影響其他程序代碼運行作綜合考慮,。
6 實際調(diào)試
環(huán)回測試是測試通信硬件本身是否正常的重要手段,。MPC8280各通信處理單元自身都有環(huán)回控制位,例如,,SCCHDLC的環(huán)回控制在GSMR_L寄存器中設(shè)置,;MCC的單個通道的環(huán)回控制在SI RAM里設(shè)置,。單個TDM口也可以自環(huán),,在SIxMR寄存器里設(shè)置。因此,,可以通過對MCC的單個通道的自環(huán),,以及單個TDM口的自環(huán)來測試驅(qū)動程序?qū)懙檬欠裾_。在這個測試中,,MPC8280的TDM口由片外時鐘和幀同步脈沖驅(qū)動,。注意:測試前必須先用示波器確認(rèn)TDM口引腳上的時鐘的頻率、波形符合硬件設(shè)計要求,。另外應(yīng)當(dāng)仔細(xì)選擇MPC8280和外部交換芯片的時鐘邊緣關(guān)系,,以免時鐘同步異常導(dǎo)致數(shù)據(jù)判決出錯。
初始化代碼完成以后,,應(yīng)利用shell工具或其他觀察手段檢查初始化代碼對相關(guān)寄存器的寫入符合設(shè)計目標(biāo),。不要因為粗心大意寫錯了寄存器值而無法獲得正確結(jié)果。因為MCC的工作必須在SI模塊的配合下完成,,可以將SI模塊和MCC分開調(diào)試,。假如有已經(jīng)調(diào)試完成的SCC(SMC也可以)通信單元的驅(qū)動程序,就可以將SCC的數(shù)據(jù)流從I/O腳定向到SI模塊上,,如圖5所示,。測試SCC經(jīng)過SI模塊進(jìn)行環(huán)回是否正常,,可以測試SI模塊的驅(qū)動程序是否正確。測試好SI模塊的驅(qū)動程序后,,再將SCC的驅(qū)動程序替換成MCC的驅(qū)動程序,,即可比較容易地采用相同的模型對MCC驅(qū)動程序進(jìn)行測試了。注意MCC工作在標(biāo)準(zhǔn)模式和超通道模式下時對SI RAM的路由表初始化稍有不同,。
7 小結(jié)
MPC8280是一種功耗低,、通信處理能力強(qiáng)的處理器,利用MPC8280內(nèi)部的多通道控制器的大通信容量通信能力,,可以比較容易地設(shè)計出信令通道,、數(shù)據(jù)通道、協(xié)議轉(zhuǎn)換器等應(yīng)用,。本文介紹了MPC8280內(nèi)部的多通道控制器的通信原理及調(diào)試方法,,希望對有相關(guān)應(yīng)用需求的科研人員有所幫助。