基于ADSP-TS201S的二維DMA數(shù)據(jù)傳輸
摘要:針對高速信號處理系統(tǒng)中數(shù)據(jù)總線傳輸?shù)钠款i問題,采用二維DMA方式進行外設高速緩存到DSP內(nèi)核的數(shù)據(jù)塊實時傳輸。對二維DMA控制和狀態(tài)寄存器組進行編程控制,結(jié)合FPGA與DSP鏈路接口設計,將存儲區(qū)的數(shù)據(jù)塊作為一個數(shù)據(jù)陣列進行傳輸,使DSP在DMA中斷中獲得數(shù)據(jù)。試驗結(jié)果證明,二維DMA傳輸方式可解決高速外設數(shù)據(jù)塊的連續(xù)傳輸和處理問題,保證整個系統(tǒng)并行信號處理流水線的順序執(zhí)行,是一種解決數(shù)據(jù)總線傳輸瓶頸問題的實用方法。目前該技術已成功應用于某水聲測量系統(tǒng)中。
關鍵詞:ADSP-TS201;二維DMA;LVDS;鏈路口
0 引言
隨著數(shù)字濾波技術在水聲信號處理中的廣泛應用,在降低系統(tǒng)硬件復雜度的同時,對數(shù)字信號處理的實時性也提出了更高要求。數(shù)字濾波器處理后的大量數(shù)據(jù)需要實時高效地傳輸給DSP內(nèi)核,以便進行相應的數(shù)字信號處理;為了提高工作效率,信號處理系統(tǒng)通常會采用流水線操作。另外為了不打斷系統(tǒng)的運行流水線,數(shù)據(jù)傳輸不僅要滿足實時高速傳輸?shù)囊?,還需具備DSP內(nèi)核并行處理的排列順序要求。
DMA(Direct Memory Access)是在處理器內(nèi)核不干預情況下的后臺高速數(shù)據(jù)傳送機制,不占用DSP內(nèi)核的處理時間,特別是二維DMA數(shù)據(jù)傳輸方式,能夠?qū)?shù)據(jù)塊按要求順序傳輸。本文以ADSP-TS201S(以下簡稱TS201)為例,針對二維DMA數(shù)據(jù)傳輸方式進行探討。
1 TS201的DMA傳輸
1.1 DMA簡介與分析
TS201內(nèi)核工作頻率高達600 MHz,是一款性能極高的靜態(tài)超標量處理器,專對復雜信號處理任務和通信結(jié)構進行了優(yōu)化,其Tiger SHA RC靜態(tài)超標量結(jié)構使DSP每周期能夠同時執(zhí)行4條指令,24個16位定點運算和6個浮點運算。支持14個DMA通道,可完成片內(nèi)存儲器、片外存儲器、存儲器映射外設、鏈路口、主機處理器和其他處理器(如FPGA)之間的低開銷高速傳輸。TS201片內(nèi)的DMA控制器允許將數(shù)據(jù)傳輸作為一個后臺任務執(zhí)行,從而將處理器核釋放出來,進行其他數(shù)字信號處理操作。在復雜信號處理系統(tǒng)中,特別是需要大量數(shù)據(jù)傳輸和搬移的操作系統(tǒng),采用DMA方式可以釋放處理器內(nèi)核,提高工作效率。
1.2 TS201的鏈路口DMA
TS210具有適合多DSP并行處理的突破性體系結(jié)構,除了多條獨立的128位寬數(shù)據(jù)總線外,具有4位寬的4個雙向LVDS(Low Voltage Differ ential Signaling)鏈路口是其組成并行系統(tǒng)的關鍵。鏈路口可以直接由處理器核控制,也可以由DMA控制器控制,每個鏈路口的接收和發(fā)送都有指定的DMA通道。通過編程控制可以將鏈路口設置成4位并行或者1位的方式進行傳輸。
TS201鏈路口通過寫TX緩沖寄存器完成數(shù)據(jù)的發(fā)送,讀取RX緩沖寄存器數(shù)據(jù)完成數(shù)據(jù)的接收。只要TX移位寄存器為空,所有寫TX緩沖區(qū)的數(shù)據(jù)都會拷貝到移位寄存器。當RX移位寄存器為空,或者RX緩沖器有多余的空間可以從RX移位寄存器接收完整的4個字的接收數(shù)據(jù)時,接收方才允許數(shù)據(jù)輸入。RX緩沖器為空,有4個字的接收已經(jīng)完成,才會從移位寄存器讀入數(shù)據(jù)。如果RX緩沖器已滿,會將數(shù)據(jù)拷貝至RX臨時接收緩沖器內(nèi),一直保持到RX緩沖器為空。片上每個鏈路口都與2個DMA通道相連,分別進行數(shù)據(jù)的發(fā)送和接收。2個DMA通道都與內(nèi)部寄存器、外部寄存器及其他鏈路口緩沖器相連接。鏈路口收發(fā)結(jié)構見圖1所示。
1.3 二維DMA
TS201可以尋址和傳輸1個二維存儲陣列,二維DMA將存儲區(qū)的數(shù)據(jù)塊作為1個數(shù)據(jù)陣列進行傳輸,這對制定矩陣操作的DSP算法十分有用。存儲器中的二維存儲塊可以通過鏈路口向外發(fā)送,由鏈路口接收的數(shù)據(jù)塊也可以按照二維存儲陣列的形式保存到存儲器中。接收端存儲器矩陣的大小可以與發(fā)送端的不同,只要兩邊所含的總字節(jié)數(shù)相等即可。二維DMA的優(yōu)點如下:
(1)允許任意一個矩陣區(qū)域的數(shù)據(jù)交叉存取,以一種比較直觀的處理順序?qū)?shù)據(jù)放入存儲區(qū)。例如,將同一個A/D經(jīng)過不同數(shù)字濾波器后的并行數(shù)據(jù),以數(shù)據(jù)塊的形式進行搬移,自動存入各自的高速緩存區(qū)或片內(nèi)存儲區(qū)。
(2)能夠?qū)崟r高效地完成數(shù)據(jù)塊存取。DMA控制器和DSP內(nèi)核同時存取向不同存儲塊的操作均可在一個時鐘周期內(nèi)完成。例如,當DSP內(nèi)核對一子存儲塊的數(shù)據(jù)進行操作時,DMA可以向另一個存儲塊存放數(shù)據(jù)。在某些條件下,甚至可以同時訪問同一個存儲塊。
(3)允許有選擇的數(shù)據(jù)傳輸,即只選擇需要的輸入數(shù)據(jù)塊而不是全部數(shù)據(jù)。例如,系統(tǒng)在處理不同通道的數(shù)據(jù)時,可以在二維DMA傳輸過程中進行數(shù)據(jù)的實時更改與選擇。
(4)鏈式二維DMA可以在DSP內(nèi)核不干預的情況下進行無限制的多次DMA傳輸,并且每次操作的屬性和I/O都可以不同。
(5)允許在一個激活的二維DMA鏈中插入高優(yōu)先級的鏈式DMA,能實時實現(xiàn)DMA鏈的更新,繼續(xù)二維DMA數(shù)據(jù)傳輸。
假設某系統(tǒng)中存在4種并行數(shù)據(jù)(如并行A/D采集數(shù)據(jù))的二維DMA傳輸,通過乒乓緩存的方式進行數(shù)據(jù)的轉(zhuǎn)存,其數(shù)據(jù)塊二維傳輸過程如圖2所示。
圖2中的Data0…Data3表示連續(xù)產(chǎn)生的4路并行數(shù)據(jù),Data00…Data0n表示Data0的n個數(shù)據(jù)塊。左側(cè)表示為原始輸入數(shù)據(jù),例如A/D數(shù)據(jù)經(jīng)過數(shù)字濾波器后的4路并行數(shù)據(jù)。中間表示為高速緩存區(qū)內(nèi)部的一維排列數(shù)據(jù),右邊表示經(jīng)過二維DMA鏈路口傳輸后的二維數(shù)據(jù)塊排列。從圖中可以看出,二維DMA傳輸將原來不適合DSP流水線操作的數(shù)據(jù),實時高效地傳輸?shù)紻SP內(nèi)部,并將數(shù)據(jù)塊按照流水線要求順序排列存儲。
TS201的二維DMA控制和狀態(tài)寄存器組,包括DMA控制寄存器、DMA狀態(tài)寄存器、清除寄存器和傳輸控制寄存器等。通過對寄存器組編程可以允許相應DMA產(chǎn)生中斷,整塊數(shù)據(jù)傳輸完畢后,DMA將產(chǎn)生中斷。中斷發(fā)生在計數(shù)寄存器減至0,而且是最后一個數(shù)據(jù)單元傳輸后。每個DMA控制塊都有自身的中斷,DMA中斷會鎖存在ILAT寄存器中,并由IMASK寄存器打開。但需要注意的是,DMA中的計數(shù)器必須是減到零,向計數(shù)器寄存器寫零并不會產(chǎn)生DMA中斷。
評論