影片教程彙總帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519
本期專題影片給大家分享一個qfplib浮點庫,這個庫早期週報給大家分享過,後來部分網友測試非常給力,所以我們DSP影片教程也給大家分享一期
【影片】
https://www.bilibili.com/video/BV1Te2DY1Edx/
【簡介】
程式碼採用彙編實現,qflib的效能媲美TI的IQmath和硬體FPU,強於C庫的math和ARM DSP庫。並且易於使用,不需要使用者手動做浮點轉定點,定點轉浮點之類的操作。
1、ARM DSP庫的三角函式浮點是直接呼叫的C庫實現,所以效能一般,並沒有加速作用。
2、M3的qfplib和MDK的C庫,IAR的C庫以及GoFast庫的比較,可以看到速度優勢比較明顯。單位時鐘週期數
3、M0的qflib庫和TI IQmath的浮點運算比較
如果是單純的qflib浮點和IQmath定點比較,IQmath有優勢,如果是直接操作浮點數值,IQmath就沒有優勢了(甚至強於IQmath,後面專門實測下),因為要做浮點轉定點,定點轉浮點處理函式,時間就比較長了。
而且從應用的角度來說,使用浮點庫qflib操作更加便捷,不需要額外呼叫API做定點轉浮點和浮點轉定點,使用者全程浮點資料操作即可
X = _IQ24(1.0f); Y = _IQ24(1.0f); Z = _IQ24atan2(Y, X); W = _IQ24toF(Z);
4、從時鐘週期上來看,媲美硬體FPU浮點計算
5、同時還提供了一個M0 tiny版的庫,適合Flash容量比較小的M0核心晶片使用
【移植】
1、這個庫只有一個.h標頭檔案和一個.s彙編檔案。所以移植比較簡單,新增工程工程即可。
2、有問題的地方是彙編庫的相容問題,這個彙編庫在GCC上使用直接新增就可以正常編譯,如果是MDK上使用,請使用AC6,並在彙編Option的ASM彙編選項裡面設定選擇ARMCLANG AUTO
【參考資料】
1、參考案例下載
注:這裡提供的例子是採用我們H7板子關閉硬體FPU使用,這種情況可以使用M3的庫測試,否則運算不正確
V7-Qfplib template.7z (1.31MB)
2、原始碼庫下載
M0 tiny版 qfplib-m0-tiny-20200617.7z (18.04KB)
M0 全功能版 qfplib-m0-full-20240105.7z (27.49KB)
M3版 qfplib-m3-20160408.7z (23.49KB)
3、官方地址
https://www.quinapalus.com/qfplib.html
4、DSP影片教程第12期:TI開源分享IQmath DSP原始碼,適用於所有Cortex-M核心,本期教程做個手把手移植
https://www.armbbs.cn/forum.php?mod=viewthread&tid=119296
5、DSP影片教程第8期:DSP庫三角函式,C庫三角函式和硬體三角函式的效能比較,以及與Matlab的精度比較
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112675