專利名稱:一種基于泰勒展開式的高精度正弦/余弦函數計算方法
技術領域:
本發明涉及數字信號發生領域,尤其涉及一種高精度正弦/余弦函數值的計算方法。
背景技術:
正弦/余弦函數數值的計算在直接數字頻率合成中具有重要的作用,其計算精度直接影響信號源的精度,進而影響到相應測控系統的系統精度。目前,在數字信號發生領域,正弦/余弦函數數值的計算方法主要有查表法、插值法和CORDIC算法。在對相位和頻率分辨率以及輸出精度要求很高的場合,查表法會消耗大量的存儲單元,這不僅增大了能耗,而且增加了芯片面積。CORDIC算法運用坐標旋轉求取相應的正余弦值,它解決了資源的消耗問題,且非常適合在FPGA上實現,但CORDIC算法在固定迭代次數的情況下,計算的精度隨待計算角度的變化而變化。因此,CORDIC算法在頻率變化比較大的場合滿足不了高精度的要求。為了滿足高精度正弦/余弦信號發生的要求,設計一種計算精度與輸入角度無關的正弦/余弦計算方法尤為重要。
發明內容
本發明的目的在于提出一種基于泰勒展開式的高精度正弦/余弦函數的計算方法,實現計算精度與輸入角度無關的正弦/余弦計算方法。所述方法運用歐拉公式將精細積分的求解對象從指數函數變換為正弦/余弦函數,從而求得在
間任意相位高精度的正弦/余弦值。 本發明的技術方案是所述方法通過細分待求相位,求得小角度下的正弦/余弦值,并迭代相應次數N,N為正整數,進而求得所述待求相位下的正弦/余弦值;所述方法包括以下步驟步驟一,相位細分;將待求相位η細分為2Ν份,N為正整數。待求相位η的取值范圍是
,則細分后的相位τ 0為T0 = n/2N (6)步驟二,初值計算;針對細分后的相位τ C1進行正弦/余弦函數值的計算,所述正弦/余弦值的計算采用了泰勒展開式,理論上可以展開成無窮多項,但為了硬件上容易實現,考慮到高次冪對所述正弦/余弦值的貢獻很小,故取前三項參與運算,式(2)中Stl表示正弦函數的初值,式(3)中1+Q表示余弦函數初值;
權利要求
1.一種基于泰勒展開式的高精度正弦/余弦函數的計算方法,其特征在于,該方法包括步驟步驟一,相位細分;將待求相位η細分為2N份,所述待求相位η的取值范圍是[O, 2 31 ],細分后的相位τ。為τ ο = n/2N(I)步驟二,初值計算;針對所述細分后的相位τ進行正弦/余弦函數值的計算,所述正弦/余弦函數的計算采用了泰勒展開式,理論上可以展開成無窮多項,但在實現時,考慮到高次冪對正弦/余弦值的貢獻很小,故取前三項參與運算,式⑵中Stl表示正弦函數的初值,式⑶中1+Q表示余弦函數初值;
2.根據權利要求書I所述的一種高精度正弦/余弦的計算方法,其特征在于,迭代子模塊的迭代次數越多,所得的正弦/余弦值的精度越高,但較少的迭代次數已經達到較高精度。
全文摘要
本發明涉及一種基于泰勒展開式的高精度正弦/余弦函數計算方法,具體包括三個子模塊,以產生高精度的正弦/余弦函數值;三個子模塊分別是,相位細分模塊,初值計算模塊和迭代求解模塊;其中,相位細分模塊將需要求取三角函數相位值分為N份,N為正整數;初值計算模塊計算得出細分后相位的三角函數值,并作為迭代初值;迭代求解模塊根據計算方程式將初值迭代相應的步數,迭代結果即對應于三角函數的正弦和余弦值。本發明采用較少的迭代次數即可獲得高精度的正弦及余弦數值。
文檔編號G06F17/15GK103049427SQ20121052799
公開日2013年4月17日 申請日期2012年12月10日 優先權日2012年12月10日
發明者曹章, 徐立軍, 彭智聰, 宋偉 申請人:北京航空航天大學