趙勇李鑫吳慧
(1中國電子科技集團公司第五十四研究所河北石家莊050081)
(2石家莊職業技術學院電氣與電子工程系河北石家莊050081)
(3石家莊信息工程職業學院河北石家莊050035)
MPC8280是Freescale公司推出的應用于通信系統的嵌入式通信處理器,具有非常靈活的一體化單元系統和外圍通信控制器。MPC8280每個MCC可支持HDLC和透明傳輸或者SS7等多種協議功能。本文就是在多通道控制器MCC工作在7號信令協議模式時,利用MPC8280處理器的MCC的中斷,并操作MCC相應的寄存器,來實現No.7信令的信號單元SU的接收和發送功能。
MPC8280是一款高性能通信微處理器,內部集成了高性能精簡指令集微處理器和許多外圍通信組件,廣泛應用于高端電信和網絡產品的設計開發[1]。MPC8280的體系結構[2]如圖1所示,主要包括3個功能模塊:嵌入式PowerPC架構的內核G2_LE、系統接口單元(SIU)模塊和通信處理模塊(CPM)。

圖1 MP C8280體系結構框圖
G2_LE內核提供了獨立的16 KB指令緩存和16 KB數據緩存,以及數據和指令存儲管理單元MMU,用于執行高層代碼,完成外設的控制管理。SIU主要完成系統啟動和初始化、CPU復位、中斷處理、時鐘配置、控制操作及外部系統總線管理等功能。CPM主要完成底層的任務和DMA控制,包括一個32位的精簡指令集處理器,2個多通道控制器MCC,3個快速通信控制器FCC,4個串行通信控制器SCC,2個串行管理控制器SMC,一個串行外圍設備接口SPI,一個I2C總線控制器等[3]。時隙分配器TSA完成路由選擇和時分復用,將MCC、FCC、SCC和SMC等連接到物理層的TDM引腳上,將數據復用到8個TDM接口。
MPC8280具有2個多通道控制器MCC1和MCC2,每個MCC可以支持128路獨立的時分復用通道。每個MCC僅與一個串行接口SI相對應,并通過相應的SI模塊連接到TDM接口。MCC的數據流可以通過SI的4個時分復用接口TDM中的任何一個進行數據傳輸,MCC1的通道(0-127)只允許連接到 SI1,MCC2的通道(128-255)只允許連接到 SI2[4],MCC的每一個通道的工作模式均可獨立設置,收發關系也可以獨立映射。通過對SI和SIRAM的合理配置可以建立TDM數據中的時隙和特定的MCC通道的映射關系(如TDMA1的第2個時隙到MCC1的第3個通道,TDMB2的第1個時隙到MCC2的第5個通道等)。
MPC8280的內核G2_LE和外部的通信是由CPM來完成。CPM根據相應的接口控制寄存器配置來執行數據發送或接收操作,操作完成后再向G2_LE內核的中斷寄存器寫入中斷值。G2_LE內核根據中斷值調用相應的中斷處理函數,由此完成數據交互過程。
當SI的某個TDM被配置成包含MCC通道的時隙且TDM被使能,CPM就將MCC通道發送緩沖區內的數據復制到各指定通信控制單元發送FIFO內,然后SI在時鐘驅動下將各指定通信控制單元的FIFO內數據發送到TDM口,或將數據從TDM接口上接收下來并存入到MCC通道的接收FIFO內,然后CPM再將接收FIFO內的數據復制到MCC通道的接收緩存區內。
CPM通過一系列與MCC相關的數據結構來實現對MCC通道FIFO的管理,其中全局參數(Global MCC Parameters)對MCC模塊的全面狀態進行管理,配置通道所用到的接收門限參數和寄存器基址。通道專用參數(Channel-Specific Parameters)用于設置MCC通道工作在HDLC、透明傳輸或者SS7協議模式時的具體參數配置,對MCC通道的FIFO進行管理。通道附加參數 (Channel Extra Parameters)主要用于設置單個通道發送緩存描述符(TxBD)表、接收緩存描述符(RxBD)表的基地址和指針,用于緩存描述符BD表的索引。
MCC多通道控制器驅動主要完成MPC8280 MCC多通道控制器的初始化,并為上層軟件訪問、調用提供與底層硬件無關的應用程序接口。具體內容包括MCC控制數據結構所需內存空間的分配及初始化、MCC操作所需的相關控制寄存器的初始化、MCC中斷處理及MCC數據接收和發送的實現等關鍵技術。
MCC的初始化流程如圖2所示。

圖2 MCC的初始化流程
①分配并初始化MCC所需的數據緩沖區、緩沖區描述符BD及MCC中斷表所需的存儲空間;
②調用函數tMCCIntTable()初始化MCC循環中斷表;
③初始化緩沖區描述符BD和數據緩沖區。前一半BD用作發送BD,后一半BD用作接收BD;
④初始化SI寄存器和SIRAM,將TDM的16時隙通過SI送到MCC通道上;
⑤初始化MCC通道的全局參數,全局參數位于雙端口隨機存儲器DPRAM中,MCC1的偏移地址為0x8700,MCC2的偏移地址為0x8800[5];
⑥初始化MCC的通道附加參數,指明了各通道所用的收/發BD相對于BD基址的BD偏移數;
⑦初始化MCC的通道為7號信令通道,該信令通道參數基址為DPRAM的起始地址[6],一個SS7信令通道參數要占用2個HDLC通道參數的存儲空間,即128個字節;
⑧為MCC配置并行I/O口,對所需的接口設置時鐘和同步;
⑨配置系統接口單元SIU,設置MCC所需的相關中斷并將MCC中斷和中斷處理函數相關聯;
⑩使能TDM。
⑴MCC的數據接收
MCC的數據接收是通過一個消息隊列和中斷處理函數相配合來完成的。MCC的數據接收處理過程如下:
①當MCC的某個通道接收到數據后會將相應寄存器的接收中斷比特位置位;
②中斷處理程序將收到的中斷信息進行封裝后發送到消息隊列;
③數據接收任務從消息隊列接收數據,然后根據MCC通道號調用相應的由用戶安裝的數據接收回調函數,最后由回調函數完成數據的處理。
⑵MCC的數據發送
數據的發送過程由通信協處理器完成。MCC數據發送過程如下:
①數據發送函數將要發送的數據從內存寫入TxBD中緩存指針所指向的緩沖區,并將寄存器TxBD的相關狀態位置位;
②設置相應的控制寄存器,由通信協處理器完成數據從緩沖區到TDM接口的發送;
③數據發送完成后通信協處理器設置MCC事件中斷寄存器MCCE相應的RINT比特位;

圖3 MCC中斷處理流程圖
④由中斷處理程序通知數據發送函數數據發送已完成。
MCC中斷處理模塊工作在No.7信令工作方式下,處理來自MPC8260 MCC的中斷,并將接收到的信號單元SU以消息形式上報給No.7信令MTP2軟件,MCC中斷處理單元軟件流程如圖3所示。
MCC中斷產生后,首先根據MCC的事件寄存器判斷是否收到數據,如果收到數據,從MCCPkt_T中保存的BD號開始,讀取數據并發送給No.7信令MTP2軟件,直到沒有數據可讀為止;如果出現異常,進行異常處理并再次開啟中斷以保證MCC的正常接收。
設備通過E1接口與固定網STM交換機互連,工作在No.7信令方式下,通過呼叫模擬器Abacus5000對設備進行10,000次話音呼叫測試,呼損率小于萬分之四,滿足話音呼叫能力測試要求。通過測試,驗證了No.7信令工作方式下,利用MCC中斷接收和發送的信號單元的可行性,大量的呼叫測試,驗證了MCC驅動程序的可靠性和穩定性。
MPC8280是一種功耗低、通信處理能力強的處理器,利用MPC8280內部的多通道控制器MCC的大容量通信能力,可以比較容易地設計出信令通道、數據通道、協議轉換器等應用。本文介紹了MPC8280內部的多通道控制器MCC的通信原理及驅動程序設計方法,對MCC在其他工作方式下的設計應用有一定借鑒作用。
[1]MP C8280 Power Q U I CC?II F a m il y Re f erence Manual[R].F reescale Inc,2005.
[2]Power Q U I CC II?F a m il y Hardware S p eci f ications[R].F reescale Inc,2006.
[3]楊小冬,王俊芳.基于MP C8280的MCC驅動設計[J].無線電工程,2012,42(9):61-64.
[4]閆宇博,張磊,彭來獻.基于MP C8280多通道控制器驅動的研究與實現[J].微計算機信息,2010,76(23):177-179.
[5]李朋銅.嵌入式設計及通信設備開發詳解—基于MP C82XX處理器[M].北京:機械工業出版社,2009.
[6]趙宇浩.基于MP C8280的網絡通信平臺的實現[J].電子技術,2010,26(6):58-59.