本發(fā)明屬于數字信號硬件處理領域,特別涉及各類超越函數的實時硬件實現在雷達信號處理器領域的應用。
背景技術:
CORDIC算法是一種迭代算法,最初由J.E.Volder提出,后由J.S.Walther利用統(tǒng)一的運算模式對原算法進行擴展以實現多種超越函數。CORDIC算法的基本原理是:用一組固定基數預設基本角度的線性組合實現對平面矢量所要求旋轉角度的逼近,即將要求的大角度旋轉分解為多次小的基本角度旋轉。選取特定的基本角度可以使每次矢量以基本角度值旋轉后,可以通過簡單的移位和加法操作來完成新矢量坐標值的計算,這使得超越函數的實現只需進行簡單的移位和加減運算,而不必使用昂貴的乘法器。因此可極大的節(jié)約硬件資源,提高運算速度。
資源消耗的減少和運算速度的提高一直以來都是硬件設計人員的追求,然而事實本身的規(guī)律性卻指出,以設計出具有最少資源消耗和最高運算速度的算法結構為目標的系統(tǒng)設計是不可實現的。所以在實際的系統(tǒng)設計中要綜合考慮到算法實現的速度和硬件資源消耗的限制以及精度要求,在設計成本和性能之間尋找平衡點,以選擇適合現實需求的算法實現結構,完成現實可實現范圍內最優(yōu)的系統(tǒng)設計。現有技術在進行硬件系統(tǒng)設計時,通常通過基本運算單元的復用,犧牲部分運算速度的優(yōu)勢以節(jié)約部分資源消耗,反之通過各基本單元的并行運算實現運算速度的提高,當然這一結構也會消耗更多的硬件資源。
當前,多用途雷達信號模擬器廣泛采用以標準正弦信號為基礎,通過對其進行各類調制(調幅、調頻、移相、編碼等)生成特定復雜信號(線性調頻信號、相位編碼信號和脈沖調制信號中的一種或者兩種以上信號),用做后續(xù)新型雷達研制中各類測試信號。同時,測試信號的另一重要成分噪聲/雜波信號(統(tǒng)計特性一般呈瑞利分布)也可通過對標準正弦信號的變換而得到,且該方法在長期的實踐過程中展示了其良好的有效性和可靠性。由此可以看出,高效可靠地在硬件平臺上生成正弦信號在基礎雷達設備測試與研究中具有重要地位。CORDIC算法的出現與應用使研究者不再局限于資源占用多且精度有限的查找表法,而可以把更多精力投入到更高性能信號生成的研究中去。
技術實現要素:
針對上述存在無法兼顧同時優(yōu)化運算速度與資源消耗的問題,本發(fā)明提出了如下所述的技術方案:
一種CORDIC算法,該算法選擇CORDIC算法處于圓周系統(tǒng)的旋轉模式,其特征在于,包括如下步驟:
步驟1,設定初始輸入參數(x0,y0)=(1/K,0),旋轉角度按照(式1)、(式2)、(式3)和(式4)進行迭代運算,若k≥[(N-1)/2]時,迭代運算結束,輸出向量(x[(N-1)/2],y[(N-1)/2]):
zi+1=zi-δiθi (式1)
δi=sign(zi) (式2)
其中,θi=tan-1(2-i),k為迭代因子,k=0,1,2...[(i-1)/2]...[(N-1)/2],[(N-1)/2]和[(i-1)/2]為取整運算,Bk為函數因變量值;i=0,1,…,N;N為迭代次數,zi為第i次迭代時的旋轉角度,θi為第i次迭代時的旋轉基,δi為第i次迭代時的旋轉方向;
初始輸入向量為(x0,y0),N次迭代后輸出向量為(x[(N-1)/2],y[(N-1)/2]);
假設決定正弦信號的初始相位,n為一個信號周期的樣本點總數;
步驟2,若所述循環(huán)因子j≤n時,j=j+1,轉步驟1;若j>n時循環(huán)結束,轉步驟3;
步驟3,將每次迭代結果(x[(N-1)/2],y[(N-1)/2]),其中,j=0,1,2...n,進行數模轉化后輸出,得到標準正弦模擬信號和標準余弦模擬信號。
本發(fā)明還提供了一種雷達模擬信號的獲取方法,包括如下步驟:
步驟1,用權利要求1所述的方法,獲取標準正弦模擬信號和標準余弦模擬信號;
步驟2,將標準正弦模擬信號或者標準余弦模擬信號調制為線性調頻信號、相位編碼信號和脈沖調制信號中的一種或者兩種以上信號。
與現有技術相比,本發(fā)明具有以下技術效果:
1.本發(fā)明從算法迭代方程本身的特點入手,對其進行組合,進而從中得到一種具有兼顧運算速度硬件資源消耗的優(yōu)化算法結構,實現速度與硬件資源消耗兩大要素的均衡;
2.本發(fā)明對迭代單元進行組合以減少算法實現的迭代次數,從而達到兼顧運算速度與硬件資源消耗的算法實現結構優(yōu)化目的。
附圖說明
圖1為經典CORDIC算法運算過程示意圖;
圖2(a)為經典CORDIC算法的迭代結構圖;圖2(b)為經典CORDIC算法的流水線結構圖;
圖3為本發(fā)明算法實現過程示意圖;
圖4(a)為經典CORDIC算法生成單周期正弦信號仿真圖;圖4(b)為改進CORDIC算法生成單周期正弦信號仿真圖。
具體實施方式
以下通過附圖和實施例對本發(fā)明作進一步的說明。
一種CORDIC算法,該算法通過選擇CORDIC算法處于圓周系統(tǒng)的旋轉模式,設定初始輸入參數(x0,y0)=(1/K,0),旋轉角度迭代N次后輸出向量,包括如下步驟:
步驟1,按照(式1)、(式2)、(式3)和(式4)進行迭代運算,得到迭代N次后輸出向量:
zi+1=zi-δiθi (式1)
δi=sign(zi) (式2)
其中,k為迭代因子,[(N-1)/2]為取整運算,Bk為函數因變量值;
其中,i=0,1,…,N;N為迭代次數,zi為第i次迭代時的旋轉角度,θi為第i次迭代時的旋轉基,δi為第i次迭代時的旋轉方向;
其中,θi=tan-1(2-i);
其中,初始輸入向量為(x0,y0),N次迭代后輸出向量為(x[(N-1)/2],y[(N-1)/2]);
假設
其中,其中和n為自取參數,決定正弦信號的初始相位,n為一個信號周期的樣本點,j為循環(huán)因子,初始值為0;
若k≥[(N-1)/2]時,迭代運算結束,輸出本次迭代運算結果(x[(N-1)/2],y[(N-1)/2])并存儲;
步驟2,若所述循環(huán)因子j≤n時,j=j+1,轉步驟1;若j≥n時循環(huán)結束,轉步驟3;
步驟3,將每次迭代結果(x[(N-1)/2],y[(N-1)/2]),其中,j=0,1,2...n,進行數模轉化后輸出,得到標準正弦模擬信號和標準余弦模擬信號。
一種雷達模擬信號的獲取方法,包括如下步驟:
步驟1,用權利要求1所述的方法,獲取標準正弦模擬信號和標準余弦模擬信號;
步驟2,將標準正弦模擬信號或者標準余弦模擬信號調制為線性調頻信號、相位編碼信號和脈沖調制信號中的一種或者兩種以上信號。
對比實驗:
經典算法具體實施步驟:
取m=1,初始向量參數(x0,y0)=(1/K,0),θi=tan-1(2-i),δi=sign(zi),一個函數周期內離散點總數為100,迭代次數N=32,對于第n個自變量點,初始旋轉角度:將參數帶入到以下迭代運算:
xi+1=xi-mδiyi2-i
yi+1=y(tǒng)i+mδixi2-i
zi+1=zi-δiθi
可以得到正余弦函數的第n個因變量點:將上述過程重復實施,可以得到一個周期的正余弦函數,Matlab仿真效果如附圖4(a)所示。
改進算法具體實施步驟:
以基-2結構為例。取m=1,初始向量參數(x0,y0)=(1/K,0),θi=tan-1(2-i),δi=sign(zi),一個函數周期內離散點總數為100,迭代次數N1=32,對于第n個自變量點,初始旋轉角度:將參數帶入到以下迭代運算:
zi+1=zi-δiθi
得到一系列δi值,將其代入以下迭代運算,基-2結構的迭代次數為基-1結構的迭代次數一半,即N2=N1/2=16
可以得到正余弦函數的第n個因變量點:將上述過程重復實施,可以得到一個周期的正余弦函數,Matlab仿真效果如附圖4(b)所示。
對比分析:
1、精度對比
理論分析表明,CORDIC算法最終的運算精度表面上受到數據的運算位長和迭代次數的共同影響,本質上決定于最后一次旋轉角度θN=tan-1(2-N)的精度水平。顯然本改進算法的實施過程中完全不會影響旋轉角度θN的精度,即不會降低算法的運算精度。同時,Matlab仿真數據也證實了這一點。
2、與基-1迭代結構的運算速度比較
CORDIC算法迭代結構的運算速度T取決于硬件的時鐘周期Tclk和迭代次數N,三者滿足以下關系
T=Tclk*N
顯然在相同的硬件時鐘周期約束下,改進的CORDIC算法迭代次數僅為原算法的一半,即通過對算法的改進可使其運算速度提高一倍,且迭代次數越多,算法改進的效果體現的更為明顯。
3、與基-1流水線結構的資源消耗比較
從理論分析的角度來看,改進的CORDIC算法通過對若干單級流水結構的重新整合得到新的迭代結構,所以在比較兩者運算量差異時,只需比較整合前后的運算量變化即可。對于第k次基-2結構的迭代運算而言,其運算過程包括:移位運算2k+1次,加法運算4次,乘法運算8次,與之相對應的改進前的基-1流水線結構的運算過程包括:移位運算2k+1次,加法運算4次,乘法運算8次。就此看來,兩者的運算量是相同的,而由于改進的算法將原來的兩級流水結構組合為一級,這一做法可以節(jié)省一部分存儲資源,因此,整體上來說改進的CORDIC算法與原結構相比節(jié)省了硬件資源。以EP1C6Q240C8系列FPGA芯片為目標板卡的仿真對比,硬件資源消耗實驗數據為:經典CORDIC算法62%,改進CORDIC算法53%。由此所得結論與理論分析一致。
本發(fā)明嘗試對經典CORDIC算法進行改進,即通過對現有算法實現結構的改進,提供一種在不犧牲算法精度和不更多消耗硬件資源的基礎上,加速算法實現過程,更好地提高運算實時性的硬件實現結構。