一種新型DSP(TS101)中的鏈路DMA
關(guān)鍵詞:TS101;鏈路DMA;TCB;轉發(fā)
1 引言
雷達處理過(guò)程中大量復雜信號的處理算法要求信號處理機具有每秒超過(guò)百億次的浮點(diǎn)運算能力,如此高的速度在目前的技術(shù)條件下無(wú)法用單片DSP實(shí)現,需要采用多片并行處理技術(shù)才能滿(mǎn)足處理速度的需求。TS101處理器是Analog Devices公司推出的一種新型高速實(shí)時(shí)數字信號處理芯片(DSP),其峰值運算能力可達18億次/秒。TS101采用改進(jìn)的靜態(tài)超標量流水結構,適用于構成各種不同的并行多處理器系統,可以較好的滿(mǎn)足雷達信號處理的要求。在多片DSP組成的并行系統中,鏈路口應用得到了越來(lái)越多的重視,各DSP間可通過(guò)鏈路口互連解決多處理器之間共同占用總線(xiàn)所產(chǎn)生的數據通信瓶頸問(wèn)題,增強處理器之間的通信能力。鏈路DMA(Direct Memory Access)是在處理器內核不干預情況下的后臺高速數據傳送機制,其傳輸方式靈活,不占用內核的處理時(shí)間,因而在雷達信號的并行實(shí)時(shí)處理系統中尤為重要。本文對TS101中鏈路口的DMA傳輸方式進(jìn)行了探討。
2 TS101的鏈路口及鏈路DMA傳輸
2.1 鏈路口
TS101是高性能128bit浮點(diǎn)數字信號處理器(Digital Signal Processor?DSP)?有四個(gè)鏈路口。每個(gè)鏈路口由發(fā)送器和接收器兩部分組成,每部分都有一個(gè)128bit的移位寄存器和一個(gè)128bit的緩沖寄存器,其結構如圖1所示。每個(gè)鏈路口均有8bit數據線(xiàn)和LxCLKIN、LxCLKOUT和LxDIR(x為鏈路口序號0~3)三個(gè)控制引腳,可支持多片TS101處理器間點(diǎn)對點(diǎn)的雙向數據傳送。其中LxDIR 用來(lái)指示鏈路口的數據流向。LxCLKIN和LxCLKOUT為鏈路口的時(shí)鐘/確認握手信號。數據發(fā)送時(shí),LxCLKOUT為時(shí)鐘信號,LxCLKIN為確認信號;數據接收時(shí),LxCLKIN為時(shí)鐘信號,LxCLKOUT為確認信號。發(fā)送數據時(shí),首先傳輸四字數據到鏈路發(fā)送緩沖寄存器LBUFTx,再將其復制到移位寄存器(若移位寄存器為空,此時(shí)LBUFTx可被寫(xiě)入新的數據),然后以字節的形式發(fā)送出去(先發(fā)送低字節),每個(gè)字節在鏈路時(shí)鐘的上升沿和下降沿被驅動(dòng)和鎖存(SHARC系列DSP只在一個(gè)時(shí)鐘沿驅動(dòng)數據)。接收器的移位寄存器為空時(shí),系統將開(kāi)始接收發(fā)送方傳輸的數據并將其送入移位寄存器,同時(shí)驅動(dòng)LxCLKOUT為低。當整個(gè)四字到齊后,如果接收緩沖寄存器LBUFRx為空,系統會(huì )將四字數據從移位寄存器復制到LBUFRx,并在數據被取走后驅動(dòng)其LxCLKOUT為高,以告訴發(fā)送方接收緩沖寄存器為空,可以準備接收新數據。發(fā)送方檢測到LxCLKIN為高后立即進(jìn)行下一次傳輸。所有的鏈路口都可用于TS101處理器的引導(SHARC系列只固定某個(gè)鏈路口引導)。然而應當注意:TS101處理器的鏈路口與SHARC系列的DSP是不兼容的。
2.2 鏈路DMA
鏈路DMA是在處理器內核不干預的情況下,后臺通過(guò)鏈路口高速傳送數據的一種機制。TS101有4個(gè)鏈路口,每個(gè)鏈路口有兩個(gè)DMA通道(一個(gè)接收DMA通道和一個(gè)發(fā)送DMA通道),圖2所示是TS101中DMA控制器的示意圖。利用TS101的片上DMA控制器能通過(guò)8個(gè)專(zhuān)用的鏈路DMA通道進(jìn)行各處理器間多種類(lèi)型的DMA傳輸。
要利用鏈路DMA在各TS101處理器之間進(jìn)行通信,必須對鏈路口及其DMA寄存器進(jìn)行正確的設置。其一般過(guò)程為:設置鏈路控制寄存器LCTLx(SHARC系列DSP一旦設置該寄存器就啟動(dòng)DMA)使能鏈路口x接收或發(fā)送,寫(xiě)鏈路DMA的發(fā)送或接收TCB(傳輸控制塊)寄存器DCy(其中y=4~11,當y=4~7時(shí),DCy分別為鏈路口0~3的發(fā)送DMA通道TCB寄存器,當y=8~11時(shí),DCy分別為鏈路口0~3的接收DMA通道TCB寄存器),同時(shí)啟動(dòng)DMA。TCB寄存器是一個(gè)128位的寄存器,它包括四個(gè)32位寄存器,分別為DI、DX、DY和DP,DI是傳輸數據的起始地址;DX包括兩個(gè)16位寄存器:地址修正寄存器和傳輸數據個(gè)數寄存器;DY與DX寄存器相同,可用于二維DMA,在一維DMA傳輸時(shí),可將其設置為零;DP用于控制DMA傳輸方式。鏈路DMA傳輸可由TCB DP寄存器的TY域定義。DMA數據傳輸結束會(huì )產(chǎn)生相應的鏈路DMA中斷。如果該中斷沒(méi)有被屏蔽,也可以進(jìn)入中斷服務(wù)程序(其入口地址存放在中斷向量寄存器IVDMAy中)以完成其它功能。
鏈路DMA傳輸主要有以下兩種形式:
(1) 鏈路口與內/外部存儲器之間的數據傳輸
從鏈路口向內/外部存儲器傳送數據,實(shí)際上是在鏈路口接收數據,再把接收到的數據存儲到內部或外部存儲器中。因此必須編程接收TCB塊。一旦DSP的鏈路口接收到數據,它將請求內部總線(xiàn)啟動(dòng)一個(gè)DMA傳輸。
從內/外部存儲器向鏈路口傳送數據,實(shí)際上是鏈路口從內部或外部存儲器讀取數據,再把數據由鏈路口發(fā)送出去。因此必須編程發(fā)送TCB塊。DMA啟動(dòng)后,一旦鏈路緩沖器不滿(mǎn),它將向內部或外部存儲器請求數據。這時(shí),如果DMA可以占用內部或外部數據總線(xiàn),那么,系統便可將數據從存儲器傳送到鏈路口并發(fā)送出去。
接收(發(fā)送)TCB的程序配置將在本文稍后進(jìn)行說(shuō)明。
(2)從一個(gè)鏈路口向另一鏈路口傳輸數據
通常,SHARC系列的DSP用鏈路口傳輸數據時(shí),發(fā)送和接收鏈路口分別在兩個(gè)DSP上。其中作為發(fā)送方的鏈路口編程發(fā)送TCB,作為接收方的鏈路口編程接收TCB。但對TS101而言,發(fā)送和接收鏈路口可以設在同一片DSP上,從一個(gè)鏈路口向另一個(gè)鏈路口傳送數據時(shí),如鏈路口a把接收的數據送向鏈路口b。應把a的接收TCB寄存器的DI設置成b的鏈路發(fā)送緩沖寄存器的存儲器映射地址,再把DX設置成0。a收到數據后,由DMA請求內部總線(xiàn)開(kāi)始傳輸,將數據從請求DMA服務(wù)的鏈路口a傳送到鏈路口b。這種鏈路口間的數據傳送方式大大減輕了片內存儲器的負擔,因為它不占用中間節點(diǎn)處理器的片內存儲資源就把數據傳送出去了,這種TS101特有的鏈路傳輸方式比SHARC系列DSP應用更靈活。如果鏈路傳輸的數據在內存中不是一段數據,而是多段數據,也可以用鏈式DMA或二維DMA進(jìn)行傳輸,限于篇幅,本文不作詳述。
2.3 鏈路DMA程序舉例
下面給出鏈路口與內部存儲器之間進(jìn)行DMA傳輸的參數設置及傳輸過(guò)程。該程序段先讓數據從鏈路口0傳送到內部存儲器,等傳完后,再把數據從內部存儲器傳送到鏈路口0的DMA。其系統連接方式如圖3所示。
.section program;
……………… // 設置IMASK寄存器,打開(kāi)或關(guān)閉相應中斷
j0 = j31+_dma_int;; // dma int為中斷服務(wù)程序入口
IVDMA4 = j0;; // 如需要應用DMA完成中斷,則設置DMA中斷矢量寄存器,存放
IVDMA8 = j0;; // 中斷服務(wù)程序入口地址,IMASK中也應打開(kāi)相應DMA中斷
xr8 = N;; // 傳輸數據值
xr9 = lshift r8 by 16;;
xr10 = 4;; // 步長(cháng)
xr4 =link_data_rx;; //目的地址
xr5 = r9 or r10;; // 00000000001000000000000000000100
xr6 = 0x00000000;; //非二維DMA,設為零
xr7 = 0x47000000;; // 設為內部存儲器與鏈路口之間的傳輸
xr0 = 0x000004DA??
LCTL0 = xr0;; // 設置link0控制位,始能鏈路的接收和發(fā)送,同時(shí)清空鏈路緩沖
DC8 = xr7:4;; // 啟動(dòng) Link0接收DMA通道8
idle;; // 等候中斷
xr4 = link_data_rx;; // xr4:內部存儲器中的源指針
DC4 = xr7:4;; // 啟動(dòng)Link0發(fā)送DMA通道4
idle;; // 等中斷
…………
3 鏈路口DMA的應用
以下以某雷達信號處理系統為例,具體講述鏈路口轉發(fā)功能的應用,其系統框圖如圖4所示。
雷達信號的實(shí)時(shí)性和連續性要求處理系統應具有較高的數據處理能力。所以設計時(shí)采用多片DSP來(lái)構成并行處理系統以提高系統的數據處理能力。同時(shí)為了保證系統的數據吞吐能力,采用了數據入口和出口分開(kāi)的方法,并選用TigerSHARC系列DSP TS101作為處理系統的核心單元,系統中的各DSP分別用于接收處理位于不同時(shí)間段的雷達回波信號。為了使各DSP協(xié)調工作,DSP之間的通信是必不可少的,本系統采用共享總線(xiàn)的分布式結構使各DSP之間可采用多種途徑進(jìn)行通信。其系統框圖如圖4所示,這里只對“母板模塊”鏈路的應用進(jìn)行詳述。
為了信號處理板的通用性和靈活性,設計時(shí)用四片DSP組成共享總線(xiàn)結構子板。各DSP間用鏈路口點(diǎn)對點(diǎn)環(huán)形相連,并將各信號線(xiàn)通過(guò)PMC插槽引出與母板通信,圖5是其硬件框圖。母板上放置兩塊子板,兩塊子板用子板各DSP剩下的鏈路(TS101有四個(gè)鏈路口)互連,留出一個(gè)鏈路口以備它用?與定時(shí)接口板和AD板通信?。母板用CPLD進(jìn)行邏輯控制,并用FIFO進(jìn)行數據緩沖。A子板以中斷觸發(fā)方式輪流接收AD采樣數據,4片DSP以輪轉方式對每個(gè)發(fā)射脈沖的回波信號進(jìn)行脈壓處理。由于前端AD送來(lái)的數據頻繁占用總線(xiàn),因此鏈路口間的DMA傳送為各DSP間的通信提供了極大的方便。由于系統處理時(shí)間限制,A子板上各DSP需將每個(gè)脈沖脈壓后的結果按時(shí)間分成四段,并通過(guò)鏈路口送往B子板中的各個(gè)DSP,B子板各DSP集齊所需處理的脈沖數后會(huì )同時(shí)完成各距離門(mén)的MTD處理。由于本系統處理的數據量比較大,在兩塊子板間傳輸數據時(shí),不希望增大每個(gè)鏈路傳輸的壓力(以A1為例,不希望A1將數據全部傳送到B1,再由B1分發(fā)給B2、B3和B4),轉而借助不同的DSP將數據轉發(fā)到B子板各DSP(仍以A1為例,它處理的各脈沖的前兩段一部分經(jīng)B2轉發(fā)給B1,一部分留給B1;第三段經(jīng)A4轉發(fā)給B3,第四段經(jīng)A2轉發(fā)給B4)。此時(shí),利用鏈路口的轉發(fā)功能,數據包就可在該網(wǎng)絡(luò )狀多DSP系統中不間斷地傳輸,而不占用中間DSP節點(diǎn)的存儲器資源,從而減輕了鏈路壓力,同時(shí)也為數據傳輸的穩定性和實(shí)時(shí)性提供了保障。
3.2 軟件設計
以A1經(jīng)B2轉發(fā)到B1為例,假設A1的鏈路口1與B2的鏈路口2相連,B2的鏈路口3與B1的鏈路口0相連(此處鏈路連接方法只為說(shuō)明鏈路轉發(fā)程序的設置,實(shí)際系統中此種方法的編程十分復雜)。在軟件設計時(shí),由A1設置發(fā)送TCB寄存器,啟動(dòng)內部存儲器到鏈路口的DMA,然后通過(guò)DMA通道5發(fā)送數據;由B1設置接收TCB寄存器,并啟動(dòng)鏈路口到內部存儲器的DMA,并通過(guò)DMA通道8接收數據;B2只需設置接收TCB寄存器,同時(shí)啟動(dòng)鏈路口到鏈路口之間的DMA,通過(guò)DMA通道10接收A1傳出的數據。此時(shí)要注意的是,B2的TCB寄存器的DI域必須指向B2鏈路口3的鏈路發(fā)送緩沖寄存器在存儲器中的映射地址(0x1804B8),并將DX域設置為零,將DP的TY域設為001。
圖5
4 結束語(yǔ)
本文介紹了TS101的鏈路口及鏈路DMA傳輸,闡述了鏈路DMA的設置,同時(shí)結合實(shí)例說(shuō)明了其特有的鏈路轉發(fā)功能和應用方法。工程實(shí)踐表明:在并行多TS101系統中,充分利用鏈路口特性可保證數據傳輸可靠性,同時(shí)又可以解決多處理器之間共用總線(xiàn)所產(chǎn)生的I/O瓶頸問(wèn)題,因此,增強了各處理器間的通信能力,提高了系統的整體運行效率。
評論