基于FPGA的自然對數變換器的設計與實現
摘要:本文利用CORD IC算法在FPGA上實現了自然對數運算器。實驗結果表明該對數運算器的輸出誤差為10-4數量級,最高頻率可達到80MHz。該運算器適用于高速大數據量的數據處理。
本文引用地址:http://www.j9360.com/article/86941.htm *國家自然科學基金項目(No.60174032,60674111)
2008年4月28日收到本文。李剛:教授,從事信號檢測與處理、智能儀器儀表的研究。
引言
在需要硬件實現對數運算的場合[1],其精度和速度是必須考慮的問題。目前硬件實現對數變換的方法主要有查表法、泰勒公式展開法和線性近似法。查表法[2]所需要的存儲單元隨著精度的增加或輸入值范圍的增大而成指數增加;泰勒公式展開法[3]需要乘法器,面積大不易實現;線性近似法[4]的精度有限,且需要誤差校正電路,實現較難。
本文利用CORD IC算法在FPGA上實現了高速自然對數變換器。CORD IC算法即坐標旋轉數字計算方法最初由J.D.Volder[5]于1959年提出,其基本思想是用一系列與運算基數相關的角度的不斷偏擺從而逼近所需旋轉的角度。1971年J.S.Walter[6]提出統一的CORD IC算法,把圓周旋轉、直線旋轉和雙曲旋轉統一到同一個CORD IC迭代方程里,為同一硬件實現多功能運算提供了前提。由于它將許多復雜的算術運算化成簡單的加法和移位操作,在不影響運算速度和精度的情況下,極大的降低了硬件設計的復雜性,節約了硬件資源。利用CORD IC算法可以直接實現乘法、除法、正余弦函數,反正切函數、雙曲函數等,對輸入進行適當的初始化可以實現正切、雙曲正切、對數和指數等函數。
在數字信號處理領域用的較多的是DSP和FPGA。DSP的優勢源于多數信號處理算法的乘-累加運算(MAC)都是非常密集的。FPGA通過多極流水線架構也能夠用來實現MAC單元,并且FPGA技術可以通過一個芯片上的多級MAC單元來提供更多的帶寬,速度可以比數字信號處理芯片快,并且功耗較低。CORD IC算法完全由移位和加法操作完成,因此利用FPGA可以實現更高的運算速度。本文采用流水線結構在FPGA上實現基于CORD IC的對數變換,可以達到80MHz的處理速度。
CORD IC算法實現自然對數運算
CORD IC算法最初是用于計算三角函數的,后來由于其算法的簡單、硬件易于實現等多種優勢,而被廣泛的用于多種初等函數的運算中(包括三角函數、乘除法運算、指數運算、對數運算等)。本文主要利用CORD IC算法的雙曲旋轉法實現自然對數運算。
在雙曲坐標系下,CORD IC算法的迭代方程為:
由于 ,所以迭代序列必須從n=1開始,為保證迭代序列收斂,因此迭代序列n的取值從第4項開始每隔3n+1項必須重復一次,即n=1,2,3,4,4,5,…,40,40,…。
在向量模式下,經n次迭代后的輸出方程為:
因為
所以令x=t+1,y=t-1
則
所以對于t,如果我們要求lnt,只要做如下初始化:
X=t+1,y=t-1,z=0
則輸出z=0.5ln(t),只需要在CORD IC之后做一次左移即可。
如(2)式所示,為保證迭代序列的收斂,|tanh-1(y0/x0)|≤1.1182,因此|y/x|max≈0.8069,n→∞,反雙曲正切的定義域為(-1,1),可見函數的輸入范圍受到了限制。解決的方法是增加n為負數的迭代,改進的算法公式為:
當n≤0時
當n>0時
收斂的范圍變成
|tanh-1(y/x)|≤θmax
其中
當M=5時,θmax=12.4264,函數tanh-1的范圍是[-12.4264,12.4264]。也就是說此時y/x可以接近于[-1,1],幾乎覆蓋tanh-1的整個定義域。因此硬件實現過程中可以從-5開始迭代。
對數運算的FPGA實現
CORD IC算法完全由移位和相加完成,很容易在硬件上實現。由于FPGA具有并行處理能力,利用FPGA實現對數變換,速度可以比數字信號處理芯片快,以滿足某些高速處理的要求。本文采用的FPGA芯片是Altera公司的cyclone系列芯片EP1C6Q240C8。該芯片內部共有邏輯單元5980個,支持近12萬門的設計,內部嵌有約12Kbyte的RAM,包含2個生成時鐘的鎖相環,最大用戶I/O數185個,滿足設計要求。
鎖相環相關文章:鎖相環原理
評論