江 漢,程云鵬,沈 良
(解放軍理工大學(xué)通信工程學(xué)院國家短波通信技術(shù)工程中心,江蘇南京210007)
隨著新的數(shù)字信號處理理論和算法的不斷涌現(xiàn)以及現(xiàn)代微電子技術(shù)的長足進步,使得實時數(shù)字信號處理成為可能。實時處理一般是指在規(guī)定的時間間隔內(nèi)必須完成相應(yīng)的處理運算,如果超出規(guī)定的處理周期,系統(tǒng)將不能正常工作[1]。
基于數(shù)據(jù)存儲方式的算法性能分析和離線仿真一般很少考慮系統(tǒng)的實時性,但在基于實際信號采樣的硬件系統(tǒng)中實時性就顯得非常重要,是設(shè)計中必須考慮的指標。提高系統(tǒng)實時性的途徑除了優(yōu)化算法本身,減少運算量之外;另外一條有效措施是合理設(shè)計數(shù)據(jù)流搬移與處理的機制,其中涉及到的關(guān)鍵技術(shù)之一是采用直接內(nèi)存訪問DMA(Direct Memory Access)機制的數(shù)據(jù)存取方式,它可以在沒有處理器參與的情況下自動完成不同存儲空間的數(shù)據(jù)搬移[2]。深刻理解DMA機制對系統(tǒng)實時性的影響對于設(shè)計合理的實時數(shù)據(jù)流處理結(jié)構(gòu)和優(yōu)化系統(tǒng)實時性非常重要。但依據(jù)以往教學(xué)經(jīng)驗,學(xué)生掌握這部分知識需要扎實的理論基礎(chǔ)和較強的系統(tǒng)分析能力;純粹的理論教學(xué)很難把DMA流程闡述清楚。
本文針對研究生課程“實時數(shù)字信號處理”教學(xué)中存在的難題,著重討論了增強型直接內(nèi)存訪問EDMA(Enhanced Direct Memory Access)機制對于系統(tǒng)實時性的影響,提出了一種基于乒乓雙緩存的數(shù)據(jù)流結(jié)構(gòu);在基于DSK6416硬件實驗板上給出了一種系統(tǒng)實時性定量測量方法,通過測量結(jié)果給出了滿足實時性的最佳參數(shù)組合。
基于實時采樣數(shù)據(jù)流處理要求所支持的算法在時間上是實時的,如果按照單個樣點的處理方式,即在兩采樣點之間必須完成運算過程,此時處理器完成一些復(fù)雜算法將變得異常困難,特別是一些高采樣率的應(yīng)用,將幾乎不可能。
圖1給出了基于單個采樣點(Sample by Sample)處理和基于塊(Block by Block)處理方式的區(qū)別,其中tp是算法的處理時間,ts是采樣周期(樣點間隔時間)。在圖1(a)中基于采樣點處理系統(tǒng)要滿足實時性,必須在接收到下一采樣點前完成處理過程并輸出當前樣點的處理結(jié)果,即滿足tp<ts,因為留給處理器信號處理時間只有ts這么長,當采樣率高而信號處理算法復(fù)雜時,基于單個采樣點處理機制很難滿足實時性要求?;趩蝹€采樣點處理機制還有一個明顯的缺點:在給定的時間段內(nèi),只有一個采樣點需要處理,高采樣率將頻繁中斷處理器DSP的流水線操作,產(chǎn)生額外的指令開銷,損失了處理時間,降低了處理器效率。
圖1 兩種數(shù)據(jù)處理方式示意圖
增加信號處理時間tp的有效措施之一就是采用乒乓雙緩存(Ping-Pong Buffer)結(jié)構(gòu),如圖1(b)所示。系統(tǒng)輸入采樣點首先被緩存在Ping緩沖區(qū),Ping緩沖區(qū)存滿后,輸入樣點被緩存到Pong緩沖區(qū),同時DSP開始處理Ping緩沖區(qū)的數(shù)據(jù),處理完畢后輸出樣本點被緩存在相應(yīng)的發(fā)送緩沖區(qū)。當Pong緩沖區(qū)存滿后,輸入樣點被切換緩存到Ping緩沖區(qū),DSP開始處理Pong緩沖區(qū)的數(shù)據(jù),如此循環(huán)切換連續(xù)工作。
此時留給DSP的處理時間變?yōu)閠B=NB*ts,其中NB為緩沖器的大小,選擇合適的緩存大小NB可以有效地提高系統(tǒng)實時性。以上就是基于塊處理方式的基本思想,基于塊處理的方式在實時性方面要優(yōu)于基于采樣點處理的方式,而且有些數(shù)字信號處理算法本身就是基于塊處理結(jié)構(gòu)的,如FFT算法。而對于大多數(shù)其他算法利用DSP的單指令周期和無循環(huán)開銷特性也可優(yōu)化成基于塊處理的方式。
EDMA是DSP的一種重要數(shù)據(jù)訪問方式。它可以在沒有DSP參與的情況下,由EDMA控制器完成DSP存儲空間的數(shù)據(jù)搬移,滿足實時處理中高速數(shù)據(jù)傳輸?shù)囊?。?shù)據(jù)搬移的源地址和目的地址可以是片內(nèi)存儲器、片內(nèi)外設(shè)或外部器件[3]。
多通道緩沖串口McBSP(Multi-Channel Buffer Serial Port)可以實現(xiàn)與外部信號采樣器件的無縫連接,支持多種傳輸接口,可編程度高,是DSP與外部器件傳輸數(shù)據(jù)最常用的片上資源[4]。因此,基于上述EDMA乒乓緩存數(shù)據(jù)傳輸方式,本文設(shè)計了DMA和McBSP相結(jié)合的實時數(shù)據(jù)傳輸解決方案,框架如圖2所示。
圖2 EDMA和McBSP相結(jié)合的實時數(shù)據(jù)傳輸結(jié)構(gòu)
接收數(shù)據(jù)時,ADC采樣器件的采樣數(shù)據(jù)通過第0號McBSP傳到DSP的DRR寄存器中,產(chǎn)生McBSP接收同步事件,觸發(fā)一次EDMA傳輸,該事件(REVT0)對應(yīng)EDMA的通道13,EDMA傳輸將數(shù)據(jù)搬入DSP乒乓緩存中。
發(fā)送數(shù)據(jù)時,EDMA從DSP內(nèi)存中的乒乓緩存中將數(shù)據(jù)搬入DSP的DXR寄存器,同時利用McBSP發(fā)送同步事件,觸發(fā)一次EDMA傳輸,該事件(XEVT0)對應(yīng)EDMA的通道12,將數(shù)據(jù)通過McBSP傳輸給DAC器件。
EDMA完成傳輸時產(chǎn)生EDMA中斷,DSP響應(yīng)該中斷,在中斷服務(wù)程序里重新裝載EDMA配置參數(shù)PaRAM,觸發(fā)下一次EDMA傳輸。
數(shù)據(jù)傳輸過程中,為避免數(shù)據(jù)阻塞和先前采樣數(shù)據(jù)被新來樣點覆蓋,設(shè)計中采用了乒乓緩存技術(shù)[5,6]。以接收緩沖區(qū)為例,DSP 完成初始化后在其片內(nèi)存儲器(L2 SRAM)中分配 Ping-RCV和Pong-RCV兩個接收緩沖區(qū),McBSP接收同步事件觸發(fā)EDMA傳輸?shù)哪康牡刂肥紫仍O(shè)為Ping-RCV緩沖區(qū)的首地址,傳輸完成后在中斷服務(wù)函數(shù)中重載EDMA的參數(shù),使得下次觸發(fā)EDMA傳輸時,采樣數(shù)據(jù)搬移的目的地址設(shè)為Pong-RCV的首地址;同樣在Pong-RCV緩沖區(qū)傳輸完成后,在中斷服務(wù)函數(shù)中重載通道參數(shù),目的地址設(shè)為Ping-RCV;利用EDMA的通道參數(shù)鏈接功能,如此反復(fù)交替進行。
C64x的EDMA控制器基于RAM的結(jié)構(gòu),每個通道有各自的參數(shù)PaRAM(共6個字,24字節(jié)),另外有21個重載/鏈接參數(shù)組供鏈接傳輸用,共同組成85個可重配的參數(shù)RAM組。PaRAM參數(shù)的結(jié)構(gòu)如圖3所示。
圖3 PaRAM參數(shù)結(jié)構(gòu)
當參數(shù)表中LINK=1時,可以將不同的傳輸參數(shù)組鏈接起來,形成鏈接EDMA通道(Chaining EDMA Channel),鏈接起來的參數(shù)組為同一個通道服務(wù),當EDMA一次數(shù)據(jù)傳輸完成時,自動根據(jù)鏈接地址重載下一次傳輸時的配置參數(shù),這種機制通常用于乒乓緩沖、循環(huán)緩沖等復(fù)雜的數(shù)據(jù)傳輸[7]。
本文設(shè)計中采用一維單幀傳輸模式,通道12完成發(fā)送緩沖區(qū)(XMT Buffer)到McBSP0的DXR0寄存器之間的數(shù)據(jù)搬移,其EDMA參數(shù)配置與重載鏈接如圖4所示。通道12的EDMA初始配置PaRAM參數(shù)(參數(shù)組地址0x01A00120h)中的SRC域的值為Ping-XMT緩存的首地址,并按照一個單元長度遞增,使能鏈接功能,目的地址保持為DXR0不變,鏈接地址(LINK)指向0x01A00600h(用戶可以在21個可用重新加載參數(shù)組中任意選取處于閑置狀態(tài)的),該重載參數(shù)組(XMT_Reload_Pong)的參數(shù)配置與通道12的初始參數(shù)配置相似,唯一區(qū)別是其SRC域的值改為Pong-XMT緩存的首地址了,其鏈接地址(LINK)指向通道參數(shù)配置組x01A00618(XMT_Reload_Ping),其SRC域的值為Ping-XMT緩存的首地址,鏈接地址(LINK)指向參數(shù)組0x01A00600h(XMT_Reload_Pong)。經(jīng)過如此配置,當一次EDMA傳輸完成后,在中斷服務(wù)函數(shù)中實現(xiàn)通道參數(shù)的自動重載配置,可交替搬移乒乓緩沖區(qū)的數(shù)據(jù)。
通道13完成McBSP0的DRR0寄存器到接收緩沖器(RCV Buffer)的數(shù)據(jù)搬移,其參數(shù)配置與上述過程基本類似,不再贅述。
圖4 PaRAM重載鏈接配置圖
測試硬件平臺是基于DSK6416硬件實驗板,實驗板上有音頻Codec芯片AIC23B,可實現(xiàn)音頻信號的采集和回放[8]。測試儀器包括音頻信號分析儀U8903A和MSO-X403示波器,其中音頻信號分析儀U8903A主要用來測試信號的失真度(THD+N),示波器主要用來測試EDMA機制的傳輸時延,測試平臺如圖5所示。
圖5 EDMA數(shù)據(jù)傳輸機制實時性測試平臺
實時性測試的目的是考察EDMA數(shù)據(jù)傳輸機制對系統(tǒng)的實時性影響,對于信號處理模塊而言,衡量實時性的定量化指標即為留給算法的運算時間。為了測量的方便,在EDMA的中斷服務(wù)函數(shù)中增加負載(Load)函數(shù),通過負載函數(shù)運算消耗DSP的時間來比較系統(tǒng)的實時性。負載函數(shù)被設(shè)計成帶參數(shù)的空循環(huán)運算,函數(shù)的參數(shù)值代表消耗DSP的運算時間,以微秒為單位。如果系統(tǒng)保持輸出信號不失真的條件下能忍耐的Load值越大,說明系統(tǒng)的實時性越好。
另外一個需要測量的指標是EDMA的傳輸時延Tl,它反映了引入塊處理機制后帶來的系統(tǒng)時延。在程序啟動EDMA傳輸?shù)钠鹗紩r刻,把測試管腳(GPIO)置為高電平,在EDMA傳輸完成后的中斷服務(wù)函數(shù)中把測試管腳置為低電平,使用示波器監(jiān)測管腳跳變電平的持續(xù)時間即為EDMA的傳輸時間。單次傳輸測量結(jié)果會存在誤差,可取多次傳輸測量的平均值作為測量結(jié)果。
使用音頻信號分析儀U8903A產(chǎn)生1kHz的正弦波作為測試信號源,經(jīng) DSK6416實驗板上的AIC23B采集后,采用設(shè)計的EDMA乒乓緩沖機制將采集的音頻數(shù)據(jù)搬移到DSP的信號處理模塊。C6416的主頻配置成720MHz,乒乓緩存區(qū)指定在片內(nèi)存儲器(L2 SRAM)上。為簡化起見,不對采集的信號做任何運算處理,僅僅拷貝到發(fā)送緩沖區(qū)(直通操作),通過McBSP的發(fā)送通道經(jīng)過DA變換后輸出到音頻信號分析儀U8903A的信號分析接口,進行波形失真度測試。
波形失真一般表現(xiàn)為多種形式:諧波失真、互調(diào)失真和相位失真等。通常所說的波形失真度為總諧波失真THD(Total Harmonic Distortion)。在實際的測量中還應(yīng)考慮實際系統(tǒng)引入的噪聲N(Noise),所以一般用失真+噪聲(THD+N)表示波形失真度,THD+N自然是越小越好。
本文重點考慮影響波形失真度的兩個重要因素:模擬處理算法運算量大小的負載函數(shù)(Load)值和乒乓緩沖區(qū)的大小。隨著Load值的增加,DSP承受的運算量增加,當Load值超過一定門限后,實際系統(tǒng)輸出的信號將會產(chǎn)生失真,可通過測量輸出信號的波形失真度來反映Load值對系統(tǒng)實時性的影響。而當Load值一定時,增大乒乓緩沖區(qū)的大小即等效于留給DSP的運算時間增長,系統(tǒng)輸出信號失真的可能性降低。因此,負載函數(shù)(Load)值和緩沖區(qū)的大小將共同影響系統(tǒng)的實時性,對于特定的硬件系統(tǒng),必然存在兩種因素最佳的組合值。本文將通過對每一維參數(shù)進行多次測量,繪制輸出波形失真度隨負載函數(shù)Load值和緩沖區(qū)大小變化的二維曲面圖,從而找出最佳組合值。
按照上述的測試流程,負載函數(shù)的負載值(Load)取值范圍為[0:32],步進為4,乒乓緩沖區(qū)的大小取值范圍為[512,4096],步進為 512個字(32bit)。分別對每一維參數(shù)條件下的輸出波形進行失真度測量,依據(jù)測量結(jié)果繪制二維曲面如圖6所示。
圖6 波形失真度變化曲線圖
從圖6可看出:波形失真度(THD+N)與負載值(Load)和緩沖區(qū)大小兩個參數(shù)的關(guān)系為一個二維曲面,并且存在谷底,與谷底最低值相對應(yīng)的Load值和緩沖區(qū)大小的值即為兩者的最佳參數(shù)組合值。表1是EDMA的傳輸時延隨乒乓緩沖大小的變化情況,可以看出基本呈線性增長,因此在時延比較敏感的系統(tǒng)設(shè)計中,傳輸時延也是必須考慮的一個重要因素。
表1 傳輸時延VS乒乓緩沖區(qū)大小
實時數(shù)字信號處理已經(jīng)成為一門發(fā)展迅速的交叉學(xué)科,并且成為現(xiàn)代電子技術(shù)的核心技術(shù)之一。然而,在實際硬件平臺上實現(xiàn)這些算法并不是一件容易的事情。本文所提出的基于DSK6416硬件實驗板的系統(tǒng)實時性定量測量方法,操作方便,過程清晰,實際教學(xué)效果良好。
[1]曹洪龍,胡劍凌,邵雷等.DSP技術(shù)課程教學(xué)探索與實踐[J].南京:電氣電子教學(xué)學(xué)報,2013,35(4):46-51.
[2]郭強,張斌.基于DMA的DSP-Cache優(yōu)化[J].南京:電氣電子教學(xué)學(xué)報,2009,31(2):50-54.
[3]Texas Instruments Incorporated.TMS320C6000 DSP Enhanced Direct Memory Access(EDMA)Controller Reference Guide[EB/OL].[2004-03].http://focus.ti.com/lit/ug/spru234a/spru234a.pdf.
[4]Texas Instruments Incorporated.TMS320C6000 DSP Multi-channel Buffered Serial Port(McBSP)Reference Guide[EB/OL].[2006-12].http://focus.ti.com/lit/ug/spru580g/spru580g.pdf.
[5]張煒,胡云龍,吳鎮(zhèn)揚.DM642的性能極其在視頻處理實驗中的應(yīng)用[J].南京:電氣電子教學(xué)學(xué)報,2005,27(5):82-87.
[6]李國鎖,楊博,林嘉宇.McBSP和EDMA在實時數(shù)據(jù)流傳輸中的配置[J],北京:單片機與嵌入式系統(tǒng)應(yīng)用2006,4:31-33.
[7]張金昌,李博,詹建華.基于EDMA和MCBSP的實時數(shù)據(jù)通信設(shè)計與應(yīng)用[J],蘭州:化工自動化及儀表,2012,39(3):343-346
[8]Spectrum Digital Incorporated.DSK6416T Technical Reference Rev.A[EB/OL].[2006-12].http://c6000.spectrumdigital.com/dsk6416/