利用矢量旋轉求解平方根的算法及其FPGA實(shí)現*
實(shí)驗結果
本文引用地址:http://dyxdggzs.com/article/96987.htm在Quartus Ⅱ6.0環(huán)境下使用VHDL語(yǔ)言完成了上述算法,并在Stratix系列EP2S60開(kāi)發(fā)板上實(shí)現。時(shí)鐘頻率為100MHz,綜合和布局布線(xiàn)后,需要不到1%的ALUT和56個(gè)寄存器,因此實(shí)現該算法只需要占用很少的資源。仿真波形如圖3所示。
波形圖中的被開(kāi)方數范圍在[0,1]之間,由于以16位二進(jìn)制數表示,需要對其進(jìn)行歸一化。如圖中輸入數值65000,歸一化后為0.9918,實(shí)驗中輸出開(kāi)平方值65345,歸一化后為0.9971,通過(guò)計算,0.9918的理論開(kāi)平方值約為0.9959,實(shí)驗值和理論值之間的誤差約為0.1195%。
由于迭代計算中沒(méi)有復雜的乘法運算,每次迭代都只需要一次加法運算和一次移位操作。因此本文提出的算法只需要一個(gè)時(shí)鐘周期就可以計算出結果,在理論上沒(méi)有時(shí)延。圖3所示的仿真圖中有時(shí)延是因為為了仿真時(shí)間考慮,將循環(huán)過(guò)程以犧牲時(shí)間來(lái)實(shí)現的,因此該算法具有處理速度快的特點(diǎn)。
試驗分析
在輸入數據為16位寬,的條件下進(jìn)行仿真,得到實(shí)驗數據。
圖4是實(shí)驗值與理論值的比較,由此可見(jiàn),筆者提出的算法可以很好地逼近理論值,計算誤差非常小。
在相同器件和相同精度的條件下,對不同的開(kāi)平方算法的性能進(jìn)行比較。在輸入均為16位的被開(kāi)方數時(shí),對本算法、參考文獻[8]采用的牛頓迭代算法和文獻[9]采用的不恢復余數的開(kāi)平方算法進(jìn)行比較,結果見(jiàn)表1。
矢量控制相關(guān)文章:矢量控制原理
評論