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