利用矢量旋转求解平方根的算法及其FPGA实现*
——
先考察在[0,1]之间的任意实数。假设待开方数为s,且s∈[0,1]。有:
本文引用地址:https://www.eepw.com.cn/article/96987.htm
参数讨论
为了将该算法在FPGA上实现,需要选择合适的参数以降低实现的复杂度。在FPGA上实现加减法比较简单,而要实现乘法会比较复杂,在公式(3)中就涉及到乘法运算,要是能通过移位实现乘法将大大提高运算速度。因此Dq要尽量小,以获得更高的近似度,而且这样公式(3)中的cos(Dq)≈1,由此可简化计算;另外yi-1tan(Dq),xi-1tan(Dq)要能通过数据移位实现。因此选择合适的Dq,使得,这样公式(3)中的迭代运算就可用右移k位实现,公式(3)可以简化为:
但如果Dq太小,会使迭代次数增多,因此选取合适的Dq是必要的。
任意数的开平方算法
直接利用VR算法只能计算[0,1]内的平方根值,有一定的局限性。因此,设待开方数T为任意正数,当T>1时,可通过对其预处理后映射到[0,1]区间内再进行开平方运算。步骤如下:
评论