趙勇李鑫吳慧
(1中國電子科技集團(tuán)公司第五十四研究所河北石家莊050081)
(2石家莊職業(yè)技術(shù)學(xué)院電氣與電子工程系河北石家莊050081)
(3石家莊信息工程職業(yè)學(xué)院河北石家莊050035)
MPC8280是Freescale公司推出的應(yīng)用于通信系統(tǒng)的嵌入式通信處理器,具有非常靈活的一體化單元系統(tǒng)和外圍通信控制器。MPC8280每個(gè)MCC可支持HDLC和透明傳輸或者SS7等多種協(xié)議功能。本文就是在多通道控制器MCC工作在7號(hào)信令協(xié)議模式時(shí),利用MPC8280處理器的MCC的中斷,并操作MCC相應(yīng)的寄存器,來實(shí)現(xiàn)No.7信令的信號(hào)單元SU的接收和發(fā)送功能。
MPC8280是一款高性能通信微處理器,內(nèi)部集成了高性能精簡指令集微處理器和許多外圍通信組件,廣泛應(yīng)用于高端電信和網(wǎng)絡(luò)產(chǎn)品的設(shè)計(jì)開發(fā)[1]。MPC8280的體系結(jié)構(gòu)[2]如圖1所示,主要包括3個(gè)功能模塊:嵌入式PowerPC架構(gòu)的內(nèi)核G2_LE、系統(tǒng)接口單元(SIU)模塊和通信處理模塊(CPM)。
圖1 MP C8280體系結(jié)構(gòu)框圖
G2_LE內(nèi)核提供了獨(dú)立的16 KB指令緩存和16 KB數(shù)據(jù)緩存,以及數(shù)據(jù)和指令存儲(chǔ)管理單元MMU,用于執(zhí)行高層代碼,完成外設(shè)的控制管理。SIU主要完成系統(tǒng)啟動(dòng)和初始化、CPU復(fù)位、中斷處理、時(shí)鐘配置、控制操作及外部系統(tǒng)總線管理等功能。CPM主要完成底層的任務(wù)和DMA控制,包括一個(gè)32位的精簡指令集處理器,2個(gè)多通道控制器MCC,3個(gè)快速通信控制器FCC,4個(gè)串行通信控制器SCC,2個(gè)串行管理控制器SMC,一個(gè)串行外圍設(shè)備接口SPI,一個(gè)I2C總線控制器等[3]。時(shí)隙分配器TSA完成路由選擇和時(shí)分復(fù)用,將MCC、FCC、SCC和SMC等連接到物理層的TDM引腳上,將數(shù)據(jù)復(fù)用到8個(gè)TDM接口。
MPC8280具有2個(gè)多通道控制器MCC1和MCC2,每個(gè)MCC可以支持128路獨(dú)立的時(shí)分復(fù)用通道。每個(gè)MCC僅與一個(gè)串行接口SI相對(duì)應(yīng),并通過相應(yīng)的SI模塊連接到TDM接口。MCC的數(shù)據(jù)流可以通過SI的4個(gè)時(shí)分復(fù)用接口TDM中的任何一個(gè)進(jìn)行數(shù)據(jù)傳輸,MCC1的通道(0-127)只允許連接到 SI1,MCC2的通道(128-255)只允許連接到 SI2[4],MCC的每一個(gè)通道的工作模式均可獨(dú)立設(shè)置,收發(fā)關(guān)系也可以獨(dú)立映射。通過對(duì)SI和SIRAM的合理配置可以建立TDM數(shù)據(jù)中的時(shí)隙和特定的MCC通道的映射關(guān)系(如TDMA1的第2個(gè)時(shí)隙到MCC1的第3個(gè)通道,TDMB2的第1個(gè)時(shí)隙到MCC2的第5個(gè)通道等)。
MPC8280的內(nèi)核G2_LE和外部的通信是由CPM來完成。CPM根據(jù)相應(yīng)的接口控制寄存器配置來執(zhí)行數(shù)據(jù)發(fā)送或接收操作,操作完成后再向G2_LE內(nèi)核的中斷寄存器寫入中斷值。G2_LE內(nèi)核根據(jù)中斷值調(diào)用相應(yīng)的中斷處理函數(shù),由此完成數(shù)據(jù)交互過程。
當(dāng)SI的某個(gè)TDM被配置成包含MCC通道的時(shí)隙且TDM被使能,CPM就將MCC通道發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù)復(fù)制到各指定通信控制單元發(fā)送FIFO內(nèi),然后SI在時(shí)鐘驅(qū)動(dòng)下將各指定通信控制單元的FIFO內(nèi)數(shù)據(jù)發(fā)送到TDM口,或?qū)?shù)據(jù)從TDM接口上接收下來并存入到MCC通道的接收FIFO內(nèi),然后CPM再將接收FIFO內(nèi)的數(shù)據(jù)復(fù)制到MCC通道的接收緩存區(qū)內(nèi)。
CPM通過一系列與MCC相關(guān)的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)對(duì)MCC通道FIFO的管理,其中全局參數(shù)(Global MCC Parameters)對(duì)MCC模塊的全面狀態(tài)進(jìn)行管理,配置通道所用到的接收門限參數(shù)和寄存器基址。通道專用參數(shù)(Channel-Specific Parameters)用于設(shè)置MCC通道工作在HDLC、透明傳輸或者SS7協(xié)議模式時(shí)的具體參數(shù)配置,對(duì)MCC通道的FIFO進(jìn)行管理。通道附加參數(shù) (Channel Extra Parameters)主要用于設(shè)置單個(gè)通道發(fā)送緩存描述符(TxBD)表、接收緩存描述符(RxBD)表的基地址和指針,用于緩存描述符BD表的索引。
MCC多通道控制器驅(qū)動(dòng)主要完成MPC8280 MCC多通道控制器的初始化,并為上層軟件訪問、調(diào)用提供與底層硬件無關(guān)的應(yīng)用程序接口。具體內(nèi)容包括MCC控制數(shù)據(jù)結(jié)構(gòu)所需內(nèi)存空間的分配及初始化、MCC操作所需的相關(guān)控制寄存器的初始化、MCC中斷處理及MCC數(shù)據(jù)接收和發(fā)送的實(shí)現(xiàn)等關(guān)鍵技術(shù)。
MCC的初始化流程如圖2所示。
圖2 MCC的初始化流程
①分配并初始化MCC所需的數(shù)據(jù)緩沖區(qū)、緩沖區(qū)描述符BD及MCC中斷表所需的存儲(chǔ)空間;
②調(diào)用函數(shù)tMCCIntTable()初始化MCC循環(huán)中斷表;
③初始化緩沖區(qū)描述符BD和數(shù)據(jù)緩沖區(qū)。前一半BD用作發(fā)送BD,后一半BD用作接收BD;
④初始化SI寄存器和SIRAM,將TDM的16時(shí)隙通過SI送到MCC通道上;
⑤初始化MCC通道的全局參數(shù),全局參數(shù)位于雙端口隨機(jī)存儲(chǔ)器DPRAM中,MCC1的偏移地址為0x8700,MCC2的偏移地址為0x8800[5];
⑥初始化MCC的通道附加參數(shù),指明了各通道所用的收/發(fā)BD相對(duì)于BD基址的BD偏移數(shù);
⑦初始化MCC的通道為7號(hào)信令通道,該信令通道參數(shù)基址為DPRAM的起始地址[6],一個(gè)SS7信令通道參數(shù)要占用2個(gè)HDLC通道參數(shù)的存儲(chǔ)空間,即128個(gè)字節(jié);
⑧為MCC配置并行I/O口,對(duì)所需的接口設(shè)置時(shí)鐘和同步;
⑨配置系統(tǒng)接口單元SIU,設(shè)置MCC所需的相關(guān)中斷并將MCC中斷和中斷處理函數(shù)相關(guān)聯(lián);
⑩使能TDM。
⑴MCC的數(shù)據(jù)接收
MCC的數(shù)據(jù)接收是通過一個(gè)消息隊(duì)列和中斷處理函數(shù)相配合來完成的。MCC的數(shù)據(jù)接收處理過程如下:
①當(dāng)MCC的某個(gè)通道接收到數(shù)據(jù)后會(huì)將相應(yīng)寄存器的接收中斷比特位置位;
②中斷處理程序?qū)⑹盏降闹袛嘈畔⑦M(jìn)行封裝后發(fā)送到消息隊(duì)列;
③數(shù)據(jù)接收任務(wù)從消息隊(duì)列接收數(shù)據(jù),然后根據(jù)MCC通道號(hào)調(diào)用相應(yīng)的由用戶安裝的數(shù)據(jù)接收回調(diào)函數(shù),最后由回調(diào)函數(shù)完成數(shù)據(jù)的處理。
⑵MCC的數(shù)據(jù)發(fā)送
數(shù)據(jù)的發(fā)送過程由通信協(xié)處理器完成。MCC數(shù)據(jù)發(fā)送過程如下:
①數(shù)據(jù)發(fā)送函數(shù)將要發(fā)送的數(shù)據(jù)從內(nèi)存寫入TxBD中緩存指針?biāo)赶虻木彌_區(qū),并將寄存器TxBD的相關(guān)狀態(tài)位置位;
②設(shè)置相應(yīng)的控制寄存器,由通信協(xié)處理器完成數(shù)據(jù)從緩沖區(qū)到TDM接口的發(fā)送;
③數(shù)據(jù)發(fā)送完成后通信協(xié)處理器設(shè)置MCC事件中斷寄存器MCCE相應(yīng)的RINT比特位;
圖3 MCC中斷處理流程圖
④由中斷處理程序通知數(shù)據(jù)發(fā)送函數(shù)數(shù)據(jù)發(fā)送已完成。
MCC中斷處理模塊工作在No.7信令工作方式下,處理來自MPC8260 MCC的中斷,并將接收到的信號(hào)單元SU以消息形式上報(bào)給No.7信令MTP2軟件,MCC中斷處理單元軟件流程如圖3所示。
MCC中斷產(chǎn)生后,首先根據(jù)MCC的事件寄存器判斷是否收到數(shù)據(jù),如果收到數(shù)據(jù),從MCCPkt_T中保存的BD號(hào)開始,讀取數(shù)據(jù)并發(fā)送給No.7信令MTP2軟件,直到?jīng)]有數(shù)據(jù)可讀為止;如果出現(xiàn)異常,進(jìn)行異常處理并再次開啟中斷以保證MCC的正常接收。
設(shè)備通過E1接口與固定網(wǎng)STM交換機(jī)互連,工作在No.7信令方式下,通過呼叫模擬器Abacus5000對(duì)設(shè)備進(jìn)行10,000次話音呼叫測試,呼損率小于萬分之四,滿足話音呼叫能力測試要求。通過測試,驗(yàn)證了No.7信令工作方式下,利用MCC中斷接收和發(fā)送的信號(hào)單元的可行性,大量的呼叫測試,驗(yàn)證了MCC驅(qū)動(dòng)程序的可靠性和穩(wěn)定性。
MPC8280是一種功耗低、通信處理能力強(qiáng)的處理器,利用MPC8280內(nèi)部的多通道控制器MCC的大容量通信能力,可以比較容易地設(shè)計(jì)出信令通道、數(shù)據(jù)通道、協(xié)議轉(zhuǎn)換器等應(yīng)用。本文介紹了MPC8280內(nèi)部的多通道控制器MCC的通信原理及驅(qū)動(dòng)程序設(shè)計(jì)方法,對(duì)MCC在其他工作方式下的設(shè)計(jì)應(yīng)用有一定借鑒作用。
[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驅(qū)動(dòng)設(shè)計(jì)[J].無線電工程,2012,42(9):61-64.
[4]閆宇博,張磊,彭來獻(xiàn).基于MP C8280多通道控制器驅(qū)動(dòng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,76(23):177-179.
[5]李朋銅.嵌入式設(shè)計(jì)及通信設(shè)備開發(fā)詳解—基于MP C82XX處理器[M].北京:機(jī)械工業(yè)出版社,2009.
[6]趙宇浩.基于MP C8280的網(wǎng)絡(luò)通信平臺(tái)的實(shí)現(xiàn)[J].電子技術(shù),2010,26(6):58-59.