文獻標識碼: B
文章編號: 0258-7998(2014)07-0006-03
隨著信息技術的發展,對頻譜的需求日益增強,信號工作頻段越來越高,單個信道占用的頻譜帶寬也越來越寬[1]。在實際生活中,越來越多的通信系統工作在很寬的頻帶,如LTE的頻譜帶寬已經達到20 MHz。若要監測這一類頻譜,由帶通采樣定理可知[2],對數據采樣率有更高的要求,相應地對數字信號處理器件處理能力的要求也更高。但僅僅提升數字信號處理器件的處理能力,而相應數據傳輸接口傳輸緩慢,也無法實時完成頻譜監測任務。因此,各類數字處理器件之間數據接口的傳輸速率成為了解決這類問題的核心所在。
為實現更好、更快、更寬的頻譜監測,采用TI公司的OMAP-L138雙核處理器,利用其EMAC模塊、uPP接口,結合ARM與DSP之間的雙FIFO緩存結構,實現了一種高速處理器件之間高速數據傳輸接口的設計。該設計具有良好的可行性及擴展性,可以很方便地應用到其他對數據傳輸有較高要求的應用中。
1 設計方案
本文提出的高速傳輸接口設計以OMAP-L138雙核處理器為核心,配合高速以太網PHY芯片DP83640和FPGA(現場可編程門陣列),組成了一個高速數字信號傳輸系統,系統結構如圖1所示。射頻信號通過射頻前端變頻到75 MHz中頻,通過ADC以60 MS/s的采樣率采樣后送入FPGA,在FPGA中進行相關處理后通過uPP接口將數字化信息傳至DSP。在DSP中進行相關的頻譜參數處理后,利用共享內存的方式交由ARM回傳數據到遠端觀測、記錄,實現了無線電磁信號到網絡頻譜信息的高速傳輸。本設計提高了數字頻譜監測中數據傳輸的吞吐能力,實時性更強,更易擴展。
本設計中以TI公司的OMAP-L138為核心,其集成了ARM926EJ-STM精簡指令集處理器和C674x定點/浮點超長指令字(VLIW)數字信號處理器,其時鐘頻率最高可達300 MHz,提供了較強的控制能力與數據處理能力。外設中包括一個具有管理數據輸入/輸出(MDIO)模塊的10/100 Mb/s以太網模塊(EMAC)、通用并行接口uPP(Universal Parallel Port)等[3-4],這些強大的外設保證了高速傳輸系統的可實現性。
1.1 DSP與FPGA高速通信接口設計
從圖1可知,FPGA完成信號的高速采集并進行預處理之后,需要將數據交由DSP來進行相應的信號處理。在DSP與FPGA的傳輸上采用了OMAP-L138提供的uPP接口。uPP為高速并行接口,可以利用其自身的DMA完成數據傳輸,而不占用處理器運行時間。在OMAP處理器中包含兩個通道的uPP[3],每個通道可以設置成8 bit或16 bit傳輸,通過使用START、ENABLE和WAIT接口控制。uPP引腳功能說明如表1所示。
uPP包含內部DMA控制器以實現最大的吞吐率和最小化CPU占用。此外uPP外設支持數據的交織模式,使用這種模式,所有DMA資源可以服務一個單獨的I/O。uPP最大工作頻率可以達到75 MHz,若以16 bit傳輸,可以達到1 200 Mb/s的傳輸速率,兩個通道并行傳輸則能夠達到最大2 400 Mb/s的傳輸速率,這個數據傳輸速率對于大多數的應用都已足夠。而在參考文獻[5]中提到的基于McBSP的傳輸方式能夠達到的最大數據速率只有40 Mb/s,可見uPP的使用大大提升了DSP與FPGA的接口速率。uPP與FPGA通信的時序如圖2所示。
在開始傳輸時,FPGA端只需要拉高使能信號并提供一個START信號,DSP收到信號之后便能夠啟用uPP自帶的DMA開始進行數據傳輸,其傳輸快捷,實現方便,利于擴展到其他類似數據傳輸任務中。
1.2 ARM與DSP雙核通信接口設計
DSP接收到FPGA回傳的預處理數據并完成相關處理之后便需要將數據信息回傳到客戶端進行相應的觀察、記錄。在本設計中,為了充分發揮雙核的性能,完成數據的高速傳輸,提出了一種雙FIFO共享內存的結構實現ARM與DSP之間的高效通信。
在參考文獻[6]中,介紹了OMAP3530上ARM與DSP聯合調試的方法。在本文中,基于此方法,將ARM與DSP之間的通信進行了適當的優化。ARM與DSP的通信采用DSP/BIOS Link(簡稱為DSPLink)完成。DSP Link是雙核處理器內部GPP與DSP兩側通信的基礎軟件。它提供了一個通用的API,這個API可以從應用層上實現物理層GPP與DSP交互,避免了客戶重新開發,可以快速實現GPP與DSP的交互功能[4,7]。
DSPLink軟件架構如圖3所示[7]。在GPP端,OS適應層將DSP/BIOS Link組件需要的操作系統服務封裝。這個組件提供一些通用的API而非直接系統調用,使得DSP/BIOS Link可以很方便地在不同操作系統上移植。DSP端運行DSP/BIOS實時操作系統[8],GPP端與DSP端通過兩端的Link Driver模塊完成通信。Link Driver模塊封裝一些GPP與DSP之間底層的控制操作,同時負責控制DSP端的執行以及數據傳輸。
DSPLink通過在ARM和DSP兩端觸發硬件中斷的方式來實現雙核之間的通信,實際上并不能夠達到高速的數據傳輸。但在本設計中,采用雙FIFO共享內存的方式可有效解決這一問題。
在實際傳輸中,數據并不需要直接從DSP搬移到ARM,這種搬移必定會占用較多的時間,效率低下。本設計中通過對輸入數據在兩塊FIFO間進行乒乓緩存的方式完成。當一塊FIFO存滿時,只需要利用DSPLink將該FIFO在共享內存中的地址以及數據大小傳遞給ARM,ARM直接從共享內存中取出使用,這樣可以大大提高雙核之間數據傳遞的效率。該共享內存結構如圖4所示。
然而,在這個過程中存在一個問題,由于ARM運行Linux系統,進程運行時使用的是虛擬地址,所分配的一串內存在DSP端可能并不是一片連續的物理內存,這就為共享內存的實現帶來了較大的麻煩。為了解決這個問題,采用了TI公司提供的連續內存管理CMEM(Contiguous Memory Manage)函數庫。CMEM是一個API函數庫,用于管理一塊或多塊連續物理內存。CMEM同時提供了地址轉換服務和用戶模式的緩存管理API,用于管理一個或多個連續的物理內存并提供地址轉換功能,物理連續地址內存用于主處理器與DSP的數據緩存共享。
通過CMEM可以有效地解決DSPLink不能分配大片連續內存的問題。CMEM提供了ARM核Linux程序和DSP程序的直接數據緩存共享,此外還可以提供ARM核Linux中不通過MMU存取內存調用硬件加速器的方法。
利用CMEM基于POOL的配置,能夠避免內存碎片,且能夠保證即便系統已經運行了很長一段時間,也可以分配到很大一塊連續物理內存塊[4]。
至此,ARM端只需要通過網絡便可以將監測到的信息回傳到PC客戶端,完成監測任務。
1.3 網絡接口設計
ARM通過網絡接口與PC相連,通過網絡來完成與用戶的數據交互。網絡結構的標準模型是OSI模型,該參考模型從上到下分為7層,分別為:應用層、表示層、會話層、傳輸層、數據鏈路層及物理層。在實際應用中,通常使用TCP/IP網絡模型,該模型從上到下分為4個層次:應用層、傳輸層、網絡層和網絡接口層(即物理層)[8]。其中應用層、傳輸層、網絡層均在移植Linux系統時集成,本文不做重點討論。物理層對應OSI模型中的數據鏈路層和物理層。數據鏈路層包括LLC(Logic Link Control)和MAC(媒體訪問控制器)子層,LLC負責與上層(網絡層)通信,MAC負責對物理層的控制。本系統中數據鏈路層使用OMAP-L138內部集成的EMAC模塊實現,而物理層使用NS公司的PHY芯片DP83640實現。
DP83640是一款具有IEEE 1588功能的Ethernet PHY芯片。可以在100 Mb/s的高傳輸速率下,通過以太網連接的IEEE 1588精密時間協議(PTP)實現系統之間的精確同步。
DP83640通過OMAP-L138提供的標準媒體獨立接口MII(Media Independent Interface)與其連接,其硬件連接圖如圖5所示。
MII接口以4 bit的方式雙向傳輸,時鐘為25 MHz,工作速率可以達到100 Mb/s。MDIO為MII的管理接口,用來傳送MAC層的控制信息和物理層的狀態信息。MDIO具有兩根信號線,一個時鐘信號,一個數據信號。利用MII接口可以確保在不對MAC硬件重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。
2 接口測試
2.1 ARM與DSP數據傳輸測試
測試ARM與DSP之間的通信時,通過DSP往ARM端傳遞消息。測試中,共發送1 000條消息,測試結果如圖6所示。
從圖6中可以看出,傳遞1 000條消息總共耗時359 704 μs,即ARM與DSP之間傳遞一條消息大約耗時359 μs,利用文中提到的共享內存的方式,便可以在359 μs內完成一次大量數據的傳輸,傳輸性能得到了大大的提高。在本應用中,所選用的共享內存FIFO大小僅為8 KB,但此時等效的傳輸速率已經達到178.4 Mb/s。
在實際應用中,可以根據需求來設定FIFO大小,從而可以改變ARM與DSP之間的等效傳輸速率。
2.2 網絡傳輸速率測試
測試方法:
(1)接收機作為客戶端,接收PC數據;
(2)接收機作為服務器,往PC寫數據。
測試工具選用Linux平臺上的開放網絡測試工具bwm-ng,能夠準確地測試網絡通信速率[9]。
2.2.1 PC往接收機傳送數據速率測試
此種情況下PC作為服務器往接收機發送數據,測試得到的通信速率可以達到61 Mb/s左右,最快可以達到64 Mb/s,這個速率能夠滿足大多數的應用。
2.2.2 接收機往PC回傳數據速率測試
在這種情況下,接收機作為服務器往PC客戶端傳輸數據。PC端觀測到的接收速率在14.5 Mb/s左右,對于回傳頻譜監測后的數據已經足夠。
對比以上測試結果,在這兩種情況下,獲得的結果存在一定的差異,主要原因為當接收機作為服務器往外發送數據時,由于其時鐘頻率僅有300 MHz,而使用的PC主頻接近2.4 GHz,所以發送速率較PC慢。但從兩者可以看出,本設計中的網絡接口部分可以達到上行14.5 Mb/s、下行64 Mb/s的傳輸速率,已滿足大多數的網絡傳輸應用需求。
本文采用OMAP-L138雙核處理器,結合FPGA實現了數字頻譜監測接收機中的高速傳輸接口。利用uPP接口,DSP與FPGA之間最大通信速率可以達到2 400 Mb/s,能很好地滿足頻譜監測任務的需求。雙核間采用共享內存的方式,有效地解決了雙核系統間的高速傳輸問題,此設計可以很方便地擴展到其他應用中。
參考文獻
[1] 費連.無線電監測系統的革新——網絡化小型頻譜監測系統的概念及主要技術要求[J].電子測量與儀器學報,2009(S1):180-184.
[2] 陳祝明.軟件無線電技術基礎[M].北京:高等教育出版社,2007.
[3] Texas Instrument Inc..OMAP-L138 technical reference manual[Z].2009.
[4] DSP+ARM雙核處理器OMAPL138開發入門[M].北京:清華大學出版社,2013.
[5] 徐萍,左洪成,徐婷.基于雙FIFO乒乓緩存的多速率匹配McBSP接口設計[J].電子質量,2011(9):29-31.
[6] 林上升,韓潤萍.基于OMAP3530硬件平臺的ARM和DSP協同開發方法[J].電子技術應用,2013,39(2):6-8.
[7] Texas Instrument Inc.DSP/BIOS LINK user guide[Z].2010.
[8] 邴哲松.ARM Linux嵌入式網絡控制系統[M].北京:北京航空航天出版社,2012.
[9] Volker Gropp.Bandwidth monitor NG[EB/OL](2007)[2014-03-31].http://www.gropp.org.