錢志柏,陳 娜
(1.中國電子科技集團公司第五十四研究所,河北石家莊050081;2.石家莊鐵道大學,河北石家莊050043)
相關干涉儀是一種優秀的測向技術,具有高靈敏度和高抗擾度等特點,已經被國際電聯列為高精度測向體制。相關干涉儀測向首先要得到天線陣元的入射波相位分布,然后將其與事先已存的各方位、各頻率來波相位分布相比較,由其相似性確定來波方向。相對于傳統干涉儀,相關干涉儀技術通過遍歷各個方向上的相關度,達到弱化波陣面畸變對測向精度影響的效果。但是,這種“弱化”的代價就是“遍歷”產生的大運算量,由此引起的處理速度問題在一定程度上限制了這種測向技術的應用范圍。
DSP芯片一直在測向接收機中扮演著非常重要的核心作用,在價格、功耗和研發實用性上有著相比于其他嵌入式處理器無法比擬的優勢?;赥MS320C6713芯片實現了相關干涉儀測向算法,使用了先進的并行流水編程技術以及同步接口的DMA技術,極大地提高了測向處理速度。
充分發揮DSP優勢的關鍵是高效的程序和快速的接口,以及兩者的并行工作。基于匯編語言的并行流水編程方法是當今主流DSP最重要的核心應用技術之一,首次將之用于實現相關干涉儀測向算法。運算能力提高后,DSP與外部大容量存儲器的接口速度成為制約整個系統效率的瓶頸。因此,應用了傳輸效率最高的同步接口DMA方式,并進行了分析,首次給出了手冊上沒有發布的接口時序圖。
并行計算是目前計算機軟件設計中的研究熱點之一。它指多個邏輯處理單元的分工合作,共同完成一個整體任務同步和異步執行。具體針對嵌入式處理器開發而言,并行處理是指多條指令的同時執行。TMS320C6000系列DSP具有先進的超長指令字結構(VLIW),在一個機器周期內可以并行存取和執行8條32 bit的指令。流水線是對中央處理單元(CPU)內部指令操作的形象描述,它指一種能夠使多條指令重疊操作的處理機實現機制。在DSP中,為提高硬件的使用率和指令的吞吐量而采用多重硬件流水線。即在一個指令周期內,CPU同時執行取指令(F)、指令解碼(D)、指令執行(X)、寫回(W)等的循環操作,形成硬件流水線,如表1所示。軟件流水線的實現要求數據相關性的去除,通常的辦法是寄存器重命名和動態指令調度。對于TMS320C6713而言,有相當一部分指令(存儲器操作指令和乘法指令)不能在單機器周期內執行完畢,而流水線技術可以大大提高程序的吞吐率和硬件資源的利用率,相當于循環體內的所有指令都能在單周期內執行完畢。

表1 CPU執行流水線處理過程
但是,并不是任意兩條指令都能夠同時執行。也就是說,并行性僅存在具體的指令搭配之中。而且欲構成軟件流水線的指令內部不能有條件跳轉指令,同時流水線內部數據不能相關。由于這些原因,C語言實現的程序,很難被開發環境配套的編譯器編譯成高效的DSP代碼,從而發揮全部DSP的潛力。因此,該設計使用匯編語言實現。一般意義上講,匯編語言實現比高級語言實現的程序效率高。主要的原因是高級語言對CPU寄存器的管理能力有限。高級語言定義的變量多存在于存儲器而不是寄存器中,而所有的運算最終都發生在寄存器中。這對矛盾會產生兩個后果:一是對存儲器的多余訪問,二是存儲器操作與寄存器運算的高度相關。這兩個后果直接導致了程序效率的降低。然而實際應用中,對存儲器的大量訪問不可避免。這種情況下,如果僅僅依靠匯編語言實現對程序效率的提高,優化的空間就很有限。此時,必須使用并行指令以保證硬件資源利用最大化,而流水編程技術則避免了數據相關引起的程序效率問題。
DMA技術是指內核需要進行大量數據傳輸時,不需要內部CPU的介入,使I/O設備與存儲器或者存儲器之間直接交換信息。內部存儲器是嵌入式處理器中最稀缺的硬件資源,通常情況下,待處理的數據量往往大于片內存儲器容量,所以必須借助DMA在片內高速緩存與片外低速存儲器之間進行數據交換,以提高系統整體性能。而且多數情況下,數據傳輸花費的時間往往超過數據處理的時間。
對于TMS320C6713的外部存儲器接口來講,尤其是同步存儲器接口,DMA方式和隨機訪問(RA)方式有著驚人的速度差別。德州儀器公司(TI)提供的數據手冊對同步動態隨機存儲器(SDRAM)接口的突發方式的時序說明很不詳細,通過chipscope軟件對SDRAM接口時序進行了抓取,其結果如圖1所示。從接口時序圖可以看出,TMS320C6713的SDRAM接口可以工作在4字突發模式下,雖然4字的突發傳輸(BURST)需要每次啟動,即列地址所存(CAS)有效,但各次啟動之間并沒有間隙(latency)。也就是說,以DMA方式工作的SDRAM接口可以在外部時鐘的速率上進行數據傳輸。

圖1 SDRAM接口DMA讀時序
對于5信道相關干涉儀測向系統,計算一個方向的相關度至少需要4次減法、4次加法、14次存儲器讀、5次存儲器寫、1次比較以及跳轉等操作。而每個方向的相關度計算過程又是重復的。傳統的基于PC機或者嵌入式處理器的實現方式只能將上述重復的操作順序執行,處理效率低。通常,流水地而不是順序地處理重復操作會提高效率。而現今業界主流的DSP芯片不僅支持流水線處理,而且支持并行操作,這就使得處理效率的提高成為可能。相關干涉儀測向算法運行過程中,樣本相位差必須事先就緒。同步存儲器接口的DMA傳輸方式不僅加快了DSP訪問外部大容量存儲器的速度,而且不需要CPU的干預,可以和數值計算并行工作。
天線接收外界電波信號,經信道和中頻采樣后,由FPGA處理后得到5路信號的4組相位差,緩存后被DSP讀取。DSP得到相位差后進行干涉儀相關運算,得到來波方位角后進行輸出。其中TMS320C6713外掛的SDRAM負責存儲不同頻率和方向上的相位差樣本。硬件平臺如圖2所示。

圖2 硬件平臺框圖
該設計軟件的內核循環僅包含6個指令包(Instruction Packet,IP),執行了對一個方向相關度計算的所有27條指令。下面的代碼列出了內核循環前兩個指令包??梢钥闯?由于應用了并行處理技術,DSP在循環體的前兩個時鐘下的每個時鐘內都同時執行了6條指令。其中,第一個時鐘內啟動兩次條件跳轉、讀取4個樣本相位差以及兩次比較,第二個時鐘內完成兩次表地址獲取、啟動兩次相位差讀取以及兩次余弦值相加。由于存儲器操作需要延時,5個時鐘結果才能出現,對余弦表的讀取和對其結果的處理沒有放在一次迭代中進行。而是使用流水處理技術,將之分解在兩次迭代中重疊處理。跳轉指令同樣需要延時,6個時鐘后程序指針才能到達指令指定的地址。因此,除第一個指令包外,內核循環的剩余5個指令包都是在程序跳轉的過程中流水地執行的。綜上所述,流水線技術保證了運算單元及寄存器在指令啟動后到結果出現前沒有空閑,最大限度地利用了硬件資源,使程序效率到達了最優化。
loop:
[!is_edge]b loop;條件判斷是否繼續循環
||[is_edge]b loop_end ;條件判斷是否退出循環
||ldw*table_a ++[2],v_1_ 0_ a
||ldw*table_b ++[2],v_3_2_b ;并行讀取4個樣本相位差
||cmpeq cnst_359,cntr,is_edge ;迭代次數和總數比較
||cmpgt v_cos_sum,v_ cos_max ,is_large ;相關度比較
abs sum_1,index_1;得到第2個余弦表的地址
||abs sum_3,index_3;得到第4個余弦表的地址
||ldh*cos_a[index_0],v _ cos _0;啟動讀取第1個相位差的余弦值(下次迭代結果才到位)
||ldh*cos_b[index_ 2],v_cos_ 2;啟動讀取第3個相位差的余弦值(下次迭代結果才到位)
||add v_cos_0,v_cos_1,v_cos_1;前兩個相位差的余弦值相加(上一個方向)
||add v_cos_2,v_cos_3,v_ cos_3;后兩個相位差的余弦值相加(上一個方向)
程序得以全速運行的前提是運算所需的樣本相位差表一直存在于DSP的內存中,而TMS320C6713的內部存儲器只有256 k字節,不足以容下整個頻段的樣本相位差。同時不希望樣本相位差的導入會影響CPU的運算,因此使用乒乓緩存的方式實現SDRAM中樣本相位差和相關度運算程序的接口。在DSP內部存儲器中開兩塊緩存,每塊緩存都可以存放1個頻點的360個樣本相位差。在開始處理其中一塊緩存中數據前,以DMA方式啟動對另一塊緩存的數據導入,即導入樣本相位差數據的同時也在進行采樣相位差和樣本相位差的相關度運算。圖3表征了兩個進程的并行處理以及同步情況。該設計中,數據傳輸時間大于數據處理時間。因此,以DMA傳輸的結束作為兩個進程的同步標志。同步并行處理示意圖如圖3所示。

圖3 同步并行處理示意圖
針對測向精度要求為1度的應用,得到一個頻點的來波方向需要處理360次相關度計算,而完成一個方向的相關度計算需要27條指令,總計9 720條指令。從2.2可以得出,DSP僅花費6個時鐘就可以完成一個方向的相關度計算。如果在360個方向進行遍歷,再考慮程序進入循環前的準備,得到最終來波方向時間開銷小于1200個時鐘。TMS320C6713的核時鐘工作在200 MHz,因此對一個頻點相關度的遍歷運算僅需要6 μ s。
該設計應用于頻率跨度為175 MHz的寬帶測向系統,而頻率分辨率為12.5 kHz,則全頻段頻點個數為14 000。每個頻點需要預存360個樣本相位差,每個樣本為4個16 bit,那么最終消耗的存儲器為40 M字節。該設計采用的SDRAM,存儲深度為64M字節,可以滿足樣本相位差存儲的要求。SDRAM的工作時鐘是90 MHz,總線寬度為32位,導入360個方向4個16 bit寬的樣本相位差需要8 μ s。相關度計算所需時間小于對樣本相位差導入的時間,而兩者同時啟動,同步運行,最終處理時間決定于較慢步驟。因此需要8 μ s完成一個頻點的來波方向測定。
傳統的基于PC機或者嵌入式處理器的實現方式大約需要1 ms才能完成一個頻點的測向,該設計將處理時間縮減了兩個數量級。用每秒10 000跳的跳頻信號源對該設計進行驗證,結果如表2所示??梢钥闯?對駐留期為100 μ s的信號進行了10次測向,說明一次測向時間花費小于10 μ s。

表2 測向速度驗證結果
該設計應用了先進的同步存儲器接口的DMA技術和并行流水編程技術,最大限度的發揮了DSP芯片在密集型數值計算方面的優勢,大大提升了處理效率。其中涉及的關鍵技術具有相當的通用性,尤其適合應用在一些算法具有一定復雜度,對實時性要求較嚴格的系統中。
該設計已經在某寬帶測向系統中成功應用,相比傳統實現方案,大大提高了系統的測向反應時間??梢灶A計,對實時性要求較高的跳頻測向系統,這種靈活而快速的實現方案也將有用武之地。
[1]張海燕.五通道相位干涉儀測向的研究和實現[D].成都:成都理工大學,2004.
[2]李 淳,廖桂生,李艷斌.改進的相關干涉儀測向處理方法[J].西安電子科技大學學報,2006,33(3):400-403.
[3]賈立哲,魏利輝.相關干涉儀測向算法的FPGA設計實現[J].無線電工程,2006,36(12):40-42.