将4kHz的浮点计算代码优化成了12kHz的定点计算代码,运行周期在80us以内,能够稳定运行。定点化的基本思路是将浮点数先放大一定的倍乘系数,并转换成32位整型的定点数,进行定点乘除法,再将结果还原回去,从而大大节省计算时间。倍乘系数一般取2的次方数,这样在还原的时候只需使用右移位即可代替除法操作进行倍除,从而节省一定的时间。定点化的难点在于,你不知道哪个变量该放大多少倍,太小会损失计算精度,太大会导致数据溢出,一般需要进行事先合理的评估以及实际上电试验。函数的定点化最好按先后顺序来,每转换完一步就验证一遍,确保万无一失。一般程序无法正常运行基本都是数据溢出导致的,这时需将倍乘系数调小一点。一些常量的计算不必放在循环里浪费计算资源,可以在初始化过程就先计算出来。另外,一些系数可以结合在一起,如ADC采样的电压需要乘以一个电流系数,这个电流系数就可以和PID参数合并(相乘),同样在初始化时就可以计算确定下来,省去多次乘法运算的步骤。定点化后,PID的控制量的目标输入量也需要根据你的设计进行调整,扩大相应的倍数。SVPWM的输出也可以直接设计成PWM比较值的范围,而不是占空比的形式。
2023-08-22 21:23:22 16.55MB stm32
1
基于FFT的周期图谱分析方法可以有效地从含有噪声的信号中提取有用信息;但是,由于低功耗单片机的速度和内存有限,所以无法实时地完成FFT运算。为此,我们采用汇编语言编制FFT程序。
2021-11-05 02:35:01 103KB 功率谱估计 定点计算 MSP430F1611 文章
1
包含定点数常用算数逻辑单元,包含常用加法器,乘法器,除法器,都是有符号计算的。另外包含了testbench测试程序,全verilog实现
1
利用C#编写的交会定点计算程序,可以实现计算、结果输出、图形绘制与输出等功能。
2019-12-21 20:38:18 320KB C# 前方交会 后方交会 GDI
1