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