CORDIC也许是最值得研究的硬件实现技术了,但是却又很难被实现:它的优势就是同样的硬件可以被实现为多种函数,但是性能却非常不好。High-order polynomial approximation可以给予很低的误差实现,但是这普遍不适合硬件实现。一种很有成效的方法是table-driven方法,但是如果表很大将会带来很大的开销。
给出一种现在使用最广泛的方法,很明显对于FPGA来说这是一种当前最好的实现方式即low-order polynomials(主要是线性的)和小的查找表的结合。对于这种技术主要的挑战是如何选择内插点以及如何确保查找表较小。Low-order interpolation主要有三大优势。第一,同一硬件结构可以被用于多种函数实现,由于仅需要修改low-order polynomials系数。第二,它很适合FPGA当前结构,由于内建的mulipliers、adders和memory核对于大多数函数,通过均匀分隔来进行插值不够理想的。在sigmoid函数这个例子中,显然更多的间隔应该被使用。然而硬件实现需要更快的将参数映射到合适的间隔上。本着这种选择和线性插值法,最关键的就在于函数值和每个间隔如何联系起来。最普遍的方法就是武断的选择间隔的重点,也就是如果x∈[L,U],f(x)=f(L/2 + U/2),或者去选择一个值来减小这种绝对误差。这并不是一种好的方法。对于一个定点间隔