伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

極海G32R430實測ATAN2硬件加速有多快

Geehy極海半導體 ? 來源:21ic論壇極海半導體專區 ? 2026-04-14 09:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

《極海芯得》系列內容為用戶使用極海系列產品的經驗總結,均轉載自21ic論壇極海半導體專區,全文未作任何修改,未經原文作者授權禁止轉載。

1、咱們先聊一個靈魂問題

咱們做電機控制時,最怕什么?不是算法不會寫,而是算得不夠快。

尤其在單軸伺服、磁編碼器、旋變這些場景里,角度解算是每個控制周期的“必修課”。最經典一步就是把 (sin, cos) 或 (x, y) 算成 atan2,再喂給位置環、速度環、電流環。

問題來了,假如沒有 FPU 怎么辦?

純軟件 atan2 常常慢得讓中斷服務程序壓力山大,20kHz 甚至 40kHz 一上來,時間預算直接告急。所以這次咱們不空談,直接看 G32R430 的做法,不用通用浮點硬剛,走 CDE 協處理器 + ATAN2 硬件加速。

這篇文章我們一起來看看這三件事:

為什么 atan2 在編碼器場景里是剛需?

G32R430 的 CDE + ATAN2 具體怎么干活?

實測周期到底差多少,值不值得咱們上車?

2、測試前提:先把口徑說清楚

在實驗開始前,先把實驗臺參數擺出來,避免后面各說各話,有想要復刻測試的朋友們可以參考這里~

芯片/內核:G32R430(含 CDE,無 FPU/DSP/MVE)

SDK:G32R430 DDL SDKV1.0.2

(ATAN2例程路徑Examples/Board_G32R430_Tiny/ATAN2/ATAN2_Math/)

關鍵頭文件版本:Libraries/ATAN2/MathLib.h

示例工程版本:ATAN2_Math/Source/main.c

關鍵 API:int32_t ATAN2(int32_t nX, int32_t nY, int32_t nPrecisionLevel)

編譯配置:與官方一致,如-mcpu=cortex-m52+nomve+nofp+cdecp3

主頻/測量:示例工程系統時鐘120 MHz,使用DWT cycle counter

3、測試前提:先把口徑說清楚

旋變、磁編碼器常吐出 sinθ、cosθ 這對好兄弟,咱們要拿到角度,實際上還得看下面這個老朋友

θ = atan2(sinθ, cosθ)

在 FOC 鏈路里,這一步還是個常駐嘉賓。Clarke/Park、反變換這些環節都盯著當前電角度,atan2 基本常年在實時路徑加班。所以我們都知道,atan2 對于整體來說,并不是錦上添花,反倒是最重要的一環。它快不快、穩不穩,直接影響閉環是否絲滑。

4、G32R430 不求全能,但求對癥下藥

很多 MCU 是全家桶,但 G32R430 反而更像是個“偏科天才”:

不帶 FPU/DSP/MVE;

引入 CDE 協處理器;

重點照顧角度解算這類高頻定點任務。

這就意味著,G32R430是把晶體管預算花在咱們最常跑、最該快的路徑上。

5、CDE+ATAN2怎么用?接口不難,坑點要記住

SDK 接口如下:

/**

* [url=/u/brief]@brief[/url] Computes the angle of a point (nX, nY) on a two-dimensional plane in Q32 format.

* @param: nX X-axis coordinate

* @param: nY Y-axis coordinate

* @param: nPrecisionLevel Specifies the precision level from 1 to 8;

* higher precision increases accuracy but slows computation.

* Recommended values: 6, 7, 8

* [url=/u/return]@return[/url] The angle value in the range (-1, 1], Q31 format, corresponding to (-π, π].

*/

nX/nY:Q 格式定點輸入坐標;

nPrecisionLevel:1~8 檔,官方建議常用 6/7/8;

返回值:Q31,范圍對應 (-π, π](接口文檔中寫作 (-1, 1] 歸一化表示)。

這里我重點提醒一個巨容易踩的坑:

標準數學庫是atan2(y, x),SDK 接口是ATAN2(x, y, level)。(請注意是大寫哦)

示例代碼也是這個順序:x=cos(theta)、y=sin(theta),調用 ATAN2(x, y, level)。這個順序寫反,角度就可能“人還在家,坐標先飛了”。

6、工程落地:咱們讓關鍵代碼跑在ITCM

極海官方提供的.sct鏈接腳本把ATAN2 函數默認放到了 ITCM,目的是減少取指等待和周期抖動。程序啟動后從 Flash 拷到 ITCM,運行階段零等待取指。

0cb1a19a-3637-11f1-90a1-92fbcf53809c.png

所以即使你切“Flash 工程”或“ITCM/RAM 工程”,CDE 這段關鍵角度解算代碼依然在 ITCM 跑,花費的時間便是“穩穩的幸福~”。


7、實測數據如下,這波到底快了多少?

先補一句對照平臺說明,避免“拿不同選手硬比”,咱們這里引入的 G32R501,也是 Arm Cortex-M52 架構平臺,但定位更偏“全功能性能型”:

雙核 Cortex-M52,主頻最高 250 MHz;

內置自研紫電數學指令擴展單元;

支持 Arm Helium 技術;

支持單精度/雙精度 FPU;

支持 DSP。

一句話理解:G32R430 是專精取舍路線,G32R501 是功能更完整路線。所以這組圖和表主要用于看“工程實現路徑與周期數量級差異”。

下面開始看圖,這張是G32R430 平臺、Flash 工程、-O3 配置下的測試數據。

0d0b5c62-3637-11f1-90a1-92fbcf53809c.png

這張是G32R430 平臺、ITCM/RAM 工程、-O3 配置下的測試數據。

0de5670e-3637-11f1-90a1-92fbcf53809c.png

這張是G32R501 平臺、CBUS Flash 工程、-O3 配置(DP FPU路徑)下的測試數據。

0e4552cc-3637-11f1-90a1-92fbcf53809c.png

這張是G32R501 平臺、ITCM/RAM 工程、-O3 配置(DP FPU路徑)下的測試數據。

0eaa280a-3637-11f1-90a1-92fbcf53809c.png

來看看這次對比下的條件,基本控制在同一變量,咱們避免G32R430和G32R501是“蘋果橘子一起比”:

兩平臺均用各自官方示例工程,優化等級按工程配置為 -O3;

周期統計統一看 DWT cycle;

G32R430 數據來源為 ATAN2(..., 6) + 軟件參考 atan2 對照;

跨平臺對比用于看數量級,不代表完全同軟件棧下的絕對橫評。

測試點:angle_param = PI/65536.0 * idx * 4.0,idx=-5~0。其中 G32R430 使用 ATAN2 精度檔位 6。

0f0d9a5c-3637-11f1-90a1-92fbcf53809c.png

為了讓比較更直觀,我們把同一組數據畫成了相對倍數柱狀圖,以每個測試點的 G32R430 Flash CDE 為 1.0x 基準,其他路徑都按相對倍數計算。

0f65f17a-3637-11f1-90a1-92fbcf53809c.png

G32R430 Flash CDE 全程是 1.0x(基準線);

常規角度點(idx=-5~-1)里,G32R430 Flash ref 大約在 16x~19x,和 CDE 路徑差距非常直觀;

G32R430 ITCM CDE 基本貼近 1.0x,說明 CDE 路徑在不同工程放置下都很穩;

idx=0 時,軟件路徑倍數明顯回落(快速路徑觸發)。

7.1、咱們怎么讀這組表

常規角度點(序號 1~5)里,G32R430 CDE 大約 299~321 cyc;

同平臺軟件參考 atan2 在 5k~6k cyc,差距是數量級的;

Flash CDE 和 ITCM CDE 接近,核心原因就是 ATAN2 關鍵路徑本來就在 ITCM;

idx=0 時軟件突然變快,通常是 atan2(0,1)=0 的快速路徑觸發;

對高頻中斷服務來說,我們更看重的是穩定快,偶爾飛快反倒不是重點。

7.2、手冊寫80cycles,為什么上面的是300多的cycles?

咱們先回到上面的對比表,會發現 G32R430 Flash CDE/G32R430 ITCM CDE 大多是落在 300+ cycles。很多讀者看到這里會問:手冊寫 80 cycles,怎么實測會到 300+?

這時候我們就需要把統計的口徑拆開來看,先看手冊(TMU/ATAN 指令說明),它給的是指令級口徑:

0fc17400-3637-11f1-90a1-92fbcf53809c.png

接著,我們單獨做一次單次 ATAN2 調用測試,盡量壓縮外圍流程,看看函數級口徑。

單次測量代碼(ATAN2_Math/Source/main.c):

SECTION_DTCM_DATA uint32_t single_atan2_cycles = 0U;

SECTION_DTCM_DATA int32_t single_theta_q31 = 0;

SECTION_DTCM_DATA int32_t single_x_q30 = double_to_q30(0.8660254037844386); /* cos(30deg) */

SECTION_DTCM_DATA int32_t single_y_q30 = double_to_q30(0.5); /* sin(30deg) */

/**

* @brief Standalone benchmark for one ATAN2 execution.

*

* @param None

*

* @retval None

*/

void RunSingleAtan2Benchmark(void)

{

GET_DWT_CYCLE_COUNT(single_atan2_cycles,

single_theta_q31 = ATAN2(single_x_q30, single_y_q30, 8);

);

printf("Single ATAN2 benchmark: ");

printf(" Input (Q30): x=%d, y=%d ", single_x_q30, single_y_q30);

printf(" Output (Q31 norm): %.10f ", q31_to_double(single_theta_q31));

printf(" ATAN2 cycles: %lu ", (unsigned long)single_atan2_cycles);

}

串口輸出如下:

101b4b24-3637-11f1-90a1-92fbcf53809c.png

這時就能把三個數字串起來了:

手冊口徑(指令級):80 cycles,對應 TMU ATANOP32 指令說明;

單測口徑(函數級):約 51 cycles,對應一次 ATAN2(...) 的最小調用路徑;

表格口徑(示例對齊級):約 300+ cycles,這是示例里為與軟件參考結果對齊而做的整套計算路徑,包含參數準備、測量宏開銷以及結果換算(例如 q31_to_double)等步驟。

所以看完上面這三串數字,我們可以得知 “80 / 51 / 300+ cycles” 在本質上并不沖突,反而是代表著三個不一樣的視角

手冊告訴我們硬件指令大概多快;

單測告訴我們函數本體大概多快;

表格告訴我們示例對齊比較時的整鏈路大概多快。

做本體性能判斷看函數級,做指令上限判斷看指令級;示例對齊數據用于橫向比較更合適。

8、精度檔位怎么挑:先6,再7/8

nPrecisionLevel 可調 1~8,因此咱們在實操上建議如下:

先從 6 檔起步(速度和精度通常更均衡);

誤差預算更緊時,再試 7/8;

每升一檔會有額外開銷,建議結合編碼器分辨率和環路帶寬做閉環驗證。

總結下來,就是先把實時性保住,再慢慢榨精度。

9、最后咱們最后記住三件事

這次實測我認為最關鍵的結論有三條

G32R430 用專用硬件路徑替代通用浮點大件

定點 + CDE 能把 atan2 壓到約 300 cycles 量級

在高頻控制環里,能同時拿到實時性、確定性和功耗收益

對編碼器和單軸伺服場景來說,這種思路很對路,沒有 FPU,也能把角度算得又快又穩。

10、參考

G32R430_DDL_SDK_V1.0.2/Libraries/ATAN2/MathLib.h

G32R430_DDL_SDK_V1.0.2/Examples/Board_G32R430_Tiny/ATAN2/ATAN2_Math/

注:文章作者在原帖中提供了代碼文件,有需要請至原文21ic論壇

原文地址:https://bbs.21ic.com/icview-3509559-1-1.html?_dsign=864041ab

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電機控制
    +關注

    關注

    3601

    文章

    2163

    瀏覽量

    278799
  • 編碼器
    +關注

    關注

    45

    文章

    4007

    瀏覽量

    143227
  • 極海半導體
    +關注

    關注

    0

    文章

    221

    瀏覽量

    4825

原文標題:極海芯得 EP.80 | 無FPU也能飛: G32R430實測ATAN2硬件加速有多快

文章出處:【微信號:geehysemi,微信公眾號:Geehy極海半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    PSoC 6 MCUBoot和mbedTLS是否支持加密硬件加速

    v3.0,它的上限是 MCUBoot v1.8.1。 當前版本基于 MCUBoot v1.9.1,似乎支持加密硬件加速什么最簡單的方法可以更新我的舊版引導加載器,以便運行 MCUBoot v1.9.1? 順便說一下,我的 PSoC 是 CY8C624ABZI-S
    發表于 05-29 08:17

    硬件加速模塊的時鐘設計

    硬件加速模塊需要四個時鐘,分別為clk_l , clk_r , clk_c , clk_n 。 clk_l : 整個硬件加速模塊為了最大化的節約時間成本而采用了類似處理器的流水線設計,具體上將每一層
    發表于 10-23 07:28

    MSP430 I2C硬件模塊的速度多快

    MSP430 I2C硬件模塊的速度多快
    發表于 12-30 18:41

    關于F28335,在DSP/BIOS使用sin、cos、atanatan2,都不能得到正確的結果,而其他任務就沒有這個問題請問這是為什么?

    atan2,都不能得到正確的結果,而其他任務就沒有這個問題。單步執行發現程序正確進入atan的匯編程序及返回。這個任務里面有執行FFT的算法,不知道跟這個沒有關系。 比較納悶。。。
    發表于 06-11 09:21

    請問使用keil開發環境如何才能使用atan2,fabs?

    使用keil開發環境,如何才能使用atan2,fabs?math.h是否有人能上傳一下?
    發表于 03-21 06:35

    找不到3d硬件加速器怎么辦

    ,將會彈出設置選項,然后點擊設置按鈕。    在Flash設置界面,點擊左下角第一個圖標,即顯示設置,記住圖標哦。然后在啟用硬件加速的選項前打上勾。    最后點擊關閉后,按F5刷新游戲頁面即可。  2
    發表于 08-21 09:04

    為什么要進入最佳硬件加速板?

    我想進入硬件加速。什么板對此好處,為什么?
    發表于 10-10 07:00

    如何使用RSA硬件加速多快生成2048bit的密鑰?

    面,可能會導致誤判。嘗試改正后,生成的密鑰是正常的,但速度比OpenSSL純軟件慢。正常使用RSA硬件加速多快生成2048bit的密鑰?這個補丁優化版嗎?
    發表于 05-06 08:05

    Nodemcu無法編譯sin/cos/atan2函數怎么解決?

    我想在 nodemcu 上移植 plotclock 套件,它需要 atan2/sin/cos 功能。 它們通常在 libmath.c 中被禁用,但是當我取消引用這些函數時,我得到如下編譯
    發表于 06-09 07:57

    Mentor Graphics硬件加速仿真服務使用Veloce 硬件加速仿真平臺加速驗證

      俄勒岡州威爾遜維爾,2016 年 4 月 20 日 — Mentor Graphics公司(納斯達克代碼:MENT)今日宣布,Mentor? 硬件加速仿真服務采用具有專業服務和 IP 的 Veloce? 硬件加速仿真平臺 ,借此加速
    發表于 04-20 11:22 ?2991次閱讀

    基于Xilinx FPGA的Memcached硬件加速器的介紹

    本教程討論基于Xilinx FPGA的Memcached硬件加速器的技術細節,該硬件加速器可為10G以太網端口提供線速Memcached服務。
    的頭像 發表于 11-27 06:41 ?4518次閱讀

    全新ROS 2 Humble硬件加速特性

    自 2021 年 10 月起,NVIDIA 和 Open Robotics 開始合作并推出了兩項重要的改動,現已發布在Humble ROS 2版本中,以提高提供硬件加速器的計算平臺的性能。
    的頭像 發表于 07-07 09:45 ?4658次閱讀

    如何確定一個硬件加速應用

    在開發一個加速程序的之前,一個很重要的步驟:正確設計程序架構。開發人員需要明確軟件應用程序中哪一部分是需要硬件加速的,并且它多少的并行量,以保證硬件加速器件(FPGA)能完美發揮其作
    發表于 08-02 10:33 ?1176次閱讀
    如何確定一個<b class='flag-5'>硬件加速</b>應用

    全新發布首款G32R430編碼器專用MCU,為高精度運動控制與位置反饋場景設計

    編碼器對極致性能的追求,基于這一行業需求,全新發布首款G32R430高精度編碼器專用MCU,旨在從系統架構到外設規格,全方位助力磁/光/感編碼器實現精度、功耗、實時性等多維度的跨越式突破。 高能效&低延遲處理性能
    的頭像 發表于 12-08 14:25 ?813次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b>全新發布首款<b class='flag-5'>G32R430</b>編碼器專用MCU,為高精度運動控制與位置反饋場景設計

    關于G32R430編碼器專用MCU和全棧式機器人芯片及應用解決方案介紹

    為了幫助廣大用戶快速了解全新發布的G32R430編碼器專用MCU和全棧式機器人芯片及應用解決方案,近期我們參加了兩場行業資深媒體平臺的線上直播活動——EETC電子工程專輯“芯品星期三”、大比特Big-bit“2025智能機器
    的頭像 發表于 01-08 14:22 ?805次閱讀
    關于<b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>G32R430</b>編碼器專用MCU和全棧式機器人芯片及應用解決方案介紹