本篇文章讨论了如何在FPGA中实现双曲正切函数的近似计算,使用了Altera公司提供的系统级开发工具DSPBuilder,以及MATLAB和Simulink进行算法设计和仿真。以下是文章中涉及的关键知识点。
双曲正切函数的实现问题。由于双曲正切函数具有关于原点的中心对称性,作者提出了一种分段近似的方法,将函数定义域大于零的部分划分为区间[0, +∞),并用一个常数项和一次项的多项式来逼近这个区间上的函数值。该方法在区间[0, 8]上使用一次最佳平方逼近多项式,而在区间[8, +∞)上直接令函数值为1。将这个逼近多项式的系数存储在FPGA芯片内部,通过查表的方式来实现近似计算。
在分段逼近的实现中,需要通过MATLAB编写程序来计算出最佳平方逼近多项式的系数。这些系数可以通过解内积和线性方程组来求得。为了在FPGA中高效实现,系数的分段区间右端点和分段数目要选择2的整数次方,这样可以简化地址转换模块的设计,节省乘法器资源。
在FPGA硬件实现方面,DSPBuilder作为一个设计工具,其特点在于将Simulink中的模型文件转换成VHDL代码文件。之后,通过QuartusII软件对生成的RTL代码进行综合、生成网表、适配器件以及配置下载。这一流程避免了直接使用硬件描述语言进行复杂算法实现时的高难度和长开发周期。
此外,文章还讨论了在FPGA设计中实现乘法和加法运算时,浮点数和定点数的选用问题。浮点数虽然可以提供高精度和宽动态范围,但会消耗大量的FPGA硬件资源。定点数则是在资源和精度需求之间的一个折中选择。在文章的具体实现中,作者最终选择了定点数来表示小数,以符合FPGA资源限制和设计需求。
在FPGA设计中,通常需要通过硬件描述语言来实现复杂的算法设计,这往往需要较长的开发周期和较高的设计难度。DSPBuilder的出现提供了一种更高级别的抽象,允许设计者直接在算法层面进行设计,并通过图形化界面完成整个设计流程,最后直接在FPGA硬件上实现,大大简化了整个设计流程。
文章中还涉及到了分段区间的确定和分段数目的计算,这部分通过一个流程图展示,并给出了最大绝对误差的计算结果,进一步验证了所提出的分段逼近方法的可行性。通过分段数为1024时得到的误差散点图(图3),可以看到误差明显低于分段数为256时的结果,其最大绝对误差约为4e-6,这满足了文中所述的精度要求。
该文章提供了关于如何在FPGA上高效实现双曲正切函数近似计算的详细方法,涉及了硬件资源优化、算法实现、以及精度与资源的平衡。同时,也为FPGA设计者提供了利用DSPBuilder工具简化设计流程和实现复杂数字信号处理算法的有效途径。