<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種新型DSP(TS101)中的鏈路DMA

          一種新型DSP(TS101)中的鏈路DMA

          作者: 時間:2005-06-13 來源:網(wǎng)絡(luò) 收藏
          摘要:是在處理器內(nèi)核不干預(yù)的情況下,后臺利用口高速傳送數(shù)據(jù)的一種機(jī)制。是高性能浮點(diǎn)數(shù)字信號處理器,它有8個DMA通道,可以在內(nèi)部/外部存儲器和鏈路口之間、鏈路口與鏈路口之間進(jìn)行多種類型的傳輸。文章介紹了鏈路及其在雷達(dá)信號處理系統(tǒng)中的實際應(yīng)用。

          關(guān)鍵詞:;鏈路DMA;TCB;轉(zhuǎn)發(fā)

          1 引言

          雷達(dá)處理過程中大量復(fù)雜信號的處理算法要求信號處理機(jī)具有每秒超過百億次的浮點(diǎn)運(yùn)算能力,如此高的速度在目前的技術(shù)條件下無法用單片DSP實現(xiàn),需要采用多片并行處理技術(shù)才能滿足處理速度的需求。TS101處理器是Analog Devices公司推出的一種高速實時數(shù)字信號處理芯片(DSP),其峰值運(yùn)算能力可達(dá)18億次/秒。TS101采用改進(jìn)的靜態(tài)超標(biāo)量流水結(jié)構(gòu),適用于構(gòu)成各種不同的并行多處理器系統(tǒng),可以較好的滿足雷達(dá)信號處理的要求。在多片DSP組成的并行系統(tǒng)中,鏈路口應(yīng)用得到了越來越多的重視,各DSP間可通過鏈路口互連解決多處理器之間共同占用總線所產(chǎn)生的數(shù)據(jù)通信瓶頸問題,增強(qiáng)處理器之間的通信能力。鏈路DMA(Direct Memory Access)是在處理器內(nèi)核不干預(yù)情況下的后臺高速數(shù)據(jù)傳送機(jī)制,其傳輸方式靈活,不占用內(nèi)核的處理時間,因而在雷達(dá)信號的并行實時處理系統(tǒng)中尤為重要。本文對TS101中鏈路口的DMA傳輸方式進(jìn)行了探討。

          2 TS101的鏈路口及鏈路DMA傳輸

          2.1 鏈路口

          TS101是高性能128bit浮點(diǎn)數(shù)字信號處理器(Digital Signal Processor?DSP)?有四個鏈路口。每個鏈路口由發(fā)送器和接收器兩部分組成,每部分都有一個128bit的移位寄存器和一個128bit的緩沖寄存器,其結(jié)構(gòu)如圖1所示。每個鏈路口均有8bit數(shù)據(jù)線和LxCLKIN、LxCLKOUT和LxDIR(x為鏈路口序號0~3)三個控制引腳,可支持多片TS101處理器間點(diǎn)對點(diǎn)的雙向數(shù)據(jù)傳送。其中LxDIR 用來指示鏈路口的數(shù)據(jù)流向。LxCLKIN和LxCLKOUT為鏈路口的時鐘/確認(rèn)握手信號。數(shù)據(jù)發(fā)送時,LxCLKOUT為時鐘信號,LxCLKIN為確認(rèn)信號;數(shù)據(jù)接收時,LxCLKIN為時鐘信號,LxCLKOUT為確認(rèn)信號。發(fā)送數(shù)據(jù)時,首先傳輸四字?jǐn)?shù)據(jù)到鏈路發(fā)送緩沖寄存器LBUFTx,再將其復(fù)制到移位寄存器(若移位寄存器為空,此時LBUFTx可被寫入新的數(shù)據(jù)),然后以字節(jié)的形式發(fā)送出去(先發(fā)送低字節(jié)),每個字節(jié)在鏈路時鐘的上升沿和下降沿被驅(qū)動和鎖存(SHARC系列DSP只在一個時鐘沿驅(qū)動數(shù)據(jù))。接收器的移位寄存器為空時,系統(tǒng)將開始接收發(fā)送方傳輸?shù)臄?shù)據(jù)并將其送入移位寄存器,同時驅(qū)動LxCLKOUT為低。當(dāng)整個四字到齊后,如果接收緩沖寄存器LBUFRx為空,系統(tǒng)會將四字?jǐn)?shù)據(jù)從移位寄存器復(fù)制到LBUFRx,并在數(shù)據(jù)被取走后驅(qū)動其LxCLKOUT為高,以告訴發(fā)送方接收緩沖寄存器為空,可以準(zhǔn)備接收新數(shù)據(jù)。發(fā)送方檢測到LxCLKIN為高后立即進(jìn)行下一次傳輸。所有的鏈路口都可用于TS101處理器的引導(dǎo)(SHARC系列只固定某個鏈路口引導(dǎo))。然而應(yīng)當(dāng)注意:TS101處理器的鏈路口與SHARC系列的DSP是不兼容的。

          2.2 鏈路DMA

          鏈路DMA是在處理器內(nèi)核不干預(yù)的情況下,后臺通過鏈路口高速傳送數(shù)據(jù)的一種機(jī)制。TS101有4個鏈路口,每個鏈路口有兩個DMA通道(一個接收DMA通道和一個發(fā)送DMA通道),圖2所示是TS101中DMA控制器的示意圖。利用TS101的片上DMA控制器能通過8個專用的鏈路DMA通道進(jìn)行各處理器間多種類型的DMA傳輸。

          要利用鏈路DMA在各TS101處理器之間進(jìn)行通信,必須對鏈路口及其DMA寄存器進(jìn)行正確的設(shè)置。其一般過程為:設(shè)置鏈路控制寄存器LCTLx(SHARC系列DSP一旦設(shè)置該寄存器就啟動DMA)使能鏈路口x接收或發(fā)送,寫鏈路DMA的發(fā)送或接收TCB(傳輸控制塊)寄存器DCy(其中y=4~11,當(dāng)y=4~7時,DCy分別為鏈路口0~3的發(fā)送DMA通道TCB寄存器,當(dāng)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傳輸時,可將其設(shè)置為零;DP用于控制DMA傳輸方式。鏈路DMA傳輸可由TCB DP寄存器的TY域定義。DMA數(shù)據(jù)傳輸結(jié)束會產(chǎn)生相應(yīng)的鏈路DMA中斷。如果該中斷沒有被屏蔽,也可以進(jìn)入中斷服務(wù)程序(其入口地址存放在中斷向量寄存器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的程序配置將在本文稍后進(jìn)行說明。

          (2)從一個鏈路口向另一鏈路口傳輸數(shù)據(jù)

          通常,SHARC系列的DSP用鏈路口傳輸數(shù)據(jù)時,發(fā)送和接收鏈路口分別在兩個DSP上。其中作為發(fā)送方的鏈路口編程發(fā)送TCB,作為接收方的鏈路口編程接收TCB。但對TS101而言,發(fā)送和接收鏈路口可以設(shè)在同一片DSP上,從一個鏈路口向另一個鏈路口傳送數(shù)據(jù)時,如鏈路口a把接收的數(shù)據(jù)送向鏈路口b。應(yīng)把a的接收TCB寄存器的DI設(shè)置成b的鏈路發(fā)送緩沖寄存器的存儲器映射地址,再把DX設(shè)置成0。a收到數(shù)據(jù)后,由DMA請求內(nèi)部總線開始傳輸,將數(shù)據(jù)從請求DMA服務(wù)的鏈路口a傳送到鏈路口b。這種鏈路口間的數(shù)據(jù)傳送方式大大減輕了片內(nèi)存儲器的負(fù)擔(dān),因為它不占用中間節(jié)點(diǎn)處理器的片內(nèi)存儲資源就把數(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)部存儲器之間進(jìn)行DMA傳輸?shù)膮?shù)設(shè)置及傳輸過程。該程序段先讓數(shù)據(jù)從鏈路口0傳送到內(nèi)部存儲器,等傳完后,再把數(shù)據(jù)從內(nèi)部存儲器傳送到鏈路口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;; // 步長

          xr4 =link_data_rx;; //目的地址

          xr5 = r9 or r10;; // 00000000001000000000000000000100

          xr6 = 0x00000000;; //非二維DMA,設(shè)為零

          xr7 = 0x47000000;; // 設(shè)為內(nèi)部存儲器與鏈路口之間的傳輸

          xr0 = 0x000004DA??

          LCTL0 = xr0;; // 設(shè)置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的應(yīng)用

          以下以某雷達(dá)信號處理系統(tǒng)為例,具體講述鏈路口轉(zhuǎn)發(fā)功能的應(yīng)用,其系統(tǒng)框圖如圖4所示。

          3.1 硬件設(shè)計

          雷達(dá)信號的實時性和連續(xù)性要求處理系統(tǒng)應(yīng)具有較高的數(shù)據(jù)處理能力。所以設(shè)計時采用多片DSP來構(gòu)成并行處理系統(tǒng)以提高系統(tǒng)的數(shù)據(jù)處理能力。同時為了保證系統(tǒng)的數(shù)據(jù)吞吐能力,采用了數(shù)據(jù)入口和出口分開的方法,并選用TigerSHARC系列DSP TS101作為處理系統(tǒng)的核心單元,系統(tǒng)中的各DSP分別用于接收處理位于不同時間段的雷達(dá)回波信號。為了使各DSP協(xié)調(diào)工作,DSP之間的通信是必不可少的,本系統(tǒng)采用共享總線的分布式結(jié)構(gòu)使各DSP之間可采用多種途徑進(jìn)行通信。其系統(tǒng)框圖如圖4所示,這里只對“母板模塊”鏈路的應(yīng)用進(jìn)行詳述。

          為了信號處理板的通用性和靈活性,設(shè)計時用四片DSP組成共享總線結(jié)構(gòu)子板。各DSP間用鏈路口點(diǎn)對點(diǎn)環(huán)形相連,并將各信號線通過PMC插槽引出與母板通信,圖5是其硬件框圖。母板上放置兩塊子板,兩塊子板用子板各DSP剩下的鏈路(TS101有四個鏈路口)互連,留出一個鏈路口以備它用?與定時接口板和AD板通信?。母板用CPLD進(jìn)行邏輯控制,并用FIFO進(jìn)行數(shù)據(jù)緩沖。A子板以中斷觸發(fā)方式輪流接收AD采樣數(shù)據(jù),4片DSP以輪轉(zhuǎn)方式對每個發(fā)射脈沖的回波信號進(jìn)行脈壓處理。由于前端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)絡(luò)狀多DSP系統(tǒng)中不間斷地傳輸,而不占用中間DSP節(jié)點(diǎn)的存儲器資源,從而減輕了鏈路壓力,同時也為數(shù)據(jù)傳輸?shù)姆€(wěn)定性和實時性提供了保障。

          3.2 軟件設(shè)計

          以A1經(jīng)B2轉(zhuǎn)發(fā)到B1為例,假設(shè)A1的鏈路口1與B2的鏈路口2相連,B2的鏈路口3與B1的鏈路口0相連(此處鏈路連接方法只為說明鏈路轉(zhuǎn)發(fā)程序的設(shè)置,實際系統(tǒng)中此種方法的編程十分復(fù)雜)。在軟件設(shè)計時,由A1設(shè)置發(fā)送TCB寄存器,啟動內(nèi)部存儲器到鏈路口的DMA,然后通過DMA通道5發(fā)送數(shù)據(jù);由B1設(shè)置接收TCB寄存器,并啟動鏈路口到內(nèi)部存儲器的DMA,并通過DMA通道8接收數(shù)據(jù);B2只需設(shè)置接收TCB寄存器,同時啟動鏈路口到鏈路口之間的DMA,通過DMA通道10接收A1傳出的數(shù)據(jù)。此時要注意的是,B2的TCB寄存器的DI域必須指向B2鏈路口3的鏈路發(fā)送緩沖寄存器在存儲器中的映射地址(0x1804B8),并將DX域設(shè)置為零,將DP的TY域設(shè)為001。

          圖5

          另外,在DMA的傳送過程中,接收DSP DMA通道不能比發(fā)送DSP DMA通道晚打開一定的時鐘周期,否則會出現(xiàn)丟數(shù)或錯數(shù)。為避免出現(xiàn)此種現(xiàn)象,可利用B2的鏈路口2中斷啟動B2的DMA。具體方法如下?先由A1啟動DMA,當(dāng)B2的鏈路口2的接收緩沖寄存器收到前端發(fā)來的四字?jǐn)?shù)據(jù)后產(chǎn)生鏈路口中斷并進(jìn)入中斷服務(wù)程序,再在中斷服務(wù)程序中寫通道10的TCB寄存器,同時啟動接收DMA,當(dāng)DMA通道10激活后,鏈路口2中斷消失,接著再應(yīng)用DMA中斷服務(wù)程序清空鏈路緩沖,以便下一處理周期能夠應(yīng)用該中斷,從而正確接收數(shù)據(jù)。

          4 結(jié)束語

          本文介紹了TS101的鏈路口及鏈路DMA傳輸,闡述了鏈路DMA的設(shè)置,同時結(jié)合實例說明了其特有的鏈路轉(zhuǎn)發(fā)功能和應(yīng)用方法。工程實踐表明:在并行多TS101系統(tǒng)中,充分利用鏈路口特性可保證數(shù)據(jù)傳輸可靠性,同時又可以解決多處理器之間共用總線所產(chǎn)生的I/O瓶頸問題,因此,增強(qiáng)了各處理器間的通信能力,提高了系統(tǒng)的整體運(yùn)行效率。



          關(guān)鍵詞: DMA 鏈路 TS101 DSP 新型

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();