由于FPGA在逻辑处理方面有很高的速度,并且具有高效、节省内部资源等特点。在数字信号处理中,尤其在逻辑控制方面起到了很大的作用。如今FPGA另一个主要的应用方向就是复杂数学计算的实现,例如浮点运算、三角函数、开方等。
在电力电子与电力拖动技术中,电机控制器的设计、矢量PWM的产生等都需要复杂的浮点运算以及三角等数学函数。但是鉴于HDL语言不支持浮点等这些运算,在实现这些算法的时候工作量就相当的大了。比如实现一个16bit有符号的减法,需要先判断符号位,然后比较数值为的大小,最好将大数减去或加上小数,然后判断加上符号位,对于复杂的有符号浮点运算以及三角函数的计算工作量将会更大,甚至无法完成。本人曾写过一段两电平矢量PWM控制的程序,涉及开方以及有符号除法运算,简单的几个公式,写了1000多行,虽然最后成功做出来了,但复杂程度真是难以想象,需要将这些运算逐个转换成FPGA善于的乘法、加法及移位操作。虽然FPGA提供了相应的IP核,但是调用一个IP除法核后,我综合了两个小时都没有综合完,实在是太慢了。 现在利用Xilinx公司或Altera公司提供的系统级涉及方法,可以只关注系统的结构,而不必关心具体的算法实现,大大简化了涉及的流程,使涉及速度大大提高。但是系统级设计方法带来的问题是,占用资源比较大,这也是需要更加完善的地方,如果我们采用系统级设计方法涉及整个任务中的一部分,而其他部分采用HDL语言编写,最后在顶层文件中调用,就可以比较好的完成一项任务了。
用户957104 2011-3-13 20:05