作為純數位電路的fpga,實現平方根是比較麻煩的。畢竟硬體不支援這種演算法。
好在廠家的ip核中有相關的平方根ip庫,所以用起來也很方便。
上圖是在quartus下呼叫庫中的ip核,綜合適配後的資源使用情況,邏輯單元使用的1369個,佔總資源的22%,片上硬體乘法器使用了16個。可以說是在資源有限的情況下,使用資源量還是很大的。
前幾篇文章中,我們介紹了使用cordic演算法計算三角函式sin和cos的值。計算三角函式sin和cos的值是利用cordic演算法的旋轉模式來進行的。而在向量模式下,可以使用cordic演算法計算平方根。
如圖,使用cordic演算法計算平方根,fpga資源的使用情況。邏輯單元使用了10%,乘法器使用的6個,片上ram只是用的不到1%。可以說在資源有限的情況下,是非常好的選擇 。但是要注意,演算法本身可使用流水線操作,也可使用其他方式操作,計算週期要根據迭代的次數決定,迭代次數越大,計算越精確,同樣,計算的週期也越長。
上圖是迭代16次後的結果,可以清楚地看到,輸入xi,yi,輸出sqrt_out,結果非常精確。在時序不是很緊的情況下,可以使用這種方法。
具體詳細的演算法,可根據之前介紹的cordic演算法自行推理。
平方根問題
考慮定義在兩正整數上的函式ssr 平方根之和的平方 ssr a,b sqrt a sqrt b 2。牛牛對函式值為整數的情況很感興趣。現在給定整數n和m,請幫助牛牛計算有序對 a,b 的數量,滿足1 a n,1 b m而且ssr a,b 是乙個整數。這道題本質上是要求sqrt ab 是整數,也就是要...
LintCode x的平方根
x的平方根 實現 int sqrt int n 函式,計算並返回 n 的平方根。樣例 sqrt 3 1 sqrt 4 2 sqrt 5 2 sqrt 10 3 挑戰 o log x solution 如果使用蠻力法來求解的話,肯定是會超時的。因此,我們需要使用牛頓迭代法來求解這問題 牛頓迭代法 對於...
x的平方根
題目三十九 實現int sqrt int x 函式,計算並返回 x 的平方根。您在真實的面試中是否遇到過這個題?yes 樣例sqrt 3 1 sqrt 4 2 sqrt 5 2 sqrt 10 3 挑戰 o log x class solution if i ix return i if i i x...