哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

《極海芯得》系列內(nèi)容為用戶使用極海系列產(chǎn)品的經(jīng)驗總結(jié),均轉(zhuǎn)載自21ic論壇極海半導體專區(qū),全文未作任何修改,未經(jīng)原文作者授權(quán)禁止轉(zhuǎn)載。

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

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

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

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

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

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

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

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

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

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

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

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

SDK:G32R430 DDL SDKV1.0.2

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

關(guān)鍵頭文件版本:Libraries/ATAN2/MathLib.h

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

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

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

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

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

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

θ = atan2(sinθ, cosθ)

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

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

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

不帶 FPU/DSP/MVE;

引入 CDE 協(xié)處理器;

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

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

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,范圍對應(yīng) (-π, π](接口文檔中寫作 (-1, 1] 歸一化表示)。

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

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

示例代碼也是這個順序:x=cos(theta)、y=sin(theta),調(diào)用 ATAN2(x, y, level)。這個順序?qū)懛矗嵌染涂赡堋叭诉€在家,坐標先飛了”。

6、工程落地:咱們讓關(guān)鍵代碼跑在ITCM

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

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

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


7、實測數(shù)據(jù)如下,這波到底快了多少?

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

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

內(nèi)置自研紫電數(shù)學指令擴展單元;

支持 Arm Helium 技術(shù);

支持單精度/雙精度 FPU;

支持 DSP。

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

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

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

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

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

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

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

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

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

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

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

周期統(tǒng)計統(tǒng)一看 DWT cycle;

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

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

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

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

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

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

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

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

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

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

7.1、咱們怎么讀這組表

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

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

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

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

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

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

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

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

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

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

單次測量代碼(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

這時就能把三個數(shù)字串起來了:

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

單測口徑(函數(shù)級):約 51 cycles,對應(yīng)一次 ATAN2(...) 的最小調(diào)用路徑;

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

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

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

單測告訴我們函數(shù)本體大概多快;

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

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

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

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

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

誤差預(yù)算更緊時,再試 7/8;

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

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

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

這次實測我認為最關(guān)鍵的結(jié)論有三條

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

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

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

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

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

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

    關(guān)注

    3601

    文章

    2163

    瀏覽量

    278817
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    4007

    瀏覽量

    143239
  • 極海半導體
    +關(guān)注

    關(guān)注

    0

    文章

    221

    瀏覽量

    4825

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

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

    硬件加速模塊的時鐘設(shè)計

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

    MSP430 I2C硬件模塊的速度多快?

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

    關(guān)于F28335,在DSP/BIOS使用sin、cos、atan、atan2,都不能得到正確的結(jié)果,而其他任務(wù)就沒有這個問題請問這是為什么?

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

    請問使用keil開發(fā)環(huán)境如何才能使用atan2,fabs?

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

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

    ,將會彈出設(shè)置選項,然后點擊設(shè)置按鈕?!   ≡贔lash設(shè)置界面,點擊左下角第一個圖標,即顯示設(shè)置,記住圖標哦。然后在啟用硬件加速的選項前打上勾?!   ∽詈簏c擊關(guān)閉后,按F5刷新游戲頁面即可?! ?b class='flag-5'>2
    發(fā)表于 08-21 09:04

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

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

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

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

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

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

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

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

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

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

    全新ROS 2 Humble硬件加速特性

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

    如何確定一個硬件加速應(yīng)用

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

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

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

    關(guān)于G32R430編碼器專用MCU和全棧式機器人芯片及應(yīng)用解決方案介紹

    為了幫助廣大用戶快速了解全新發(fā)布的G32R430編碼器專用MCU和全棧式機器人芯片及應(yīng)用解決方案,近期我們參加了兩場行業(yè)資深媒體平臺的線上直播活動——EETC電子工程專輯“芯品星期三”、大比特Big-bit“2025智能機器
    的頭像 發(fā)表于 01-08 14:22 ?805次閱讀
    關(guān)于<b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>G32R430</b>編碼器專用MCU和全棧式機器人芯片及應(yīng)用解決方案介紹
    建阳市| 尖扎县| 林甸县| 南部县| 杂多县| 达尔| 旬邑县| 新平| 务川| 琼中| 白水县| 罗定市| 定陶县| 吉安县| 肇州县| 元朗区| 新兴县| 嵊泗县| 乌鲁木齐县| 黄山市| 通辽市| 潼关县| 平顶山市| 延吉市| 繁峙县| 攀枝花市| 海南省| 彰武县| 赤城县| 河源市| 桦南县| 刚察县| 兴义市| 图们市| 新和县| 年辖:市辖区| 临澧县| 门头沟区| 莱西市| 柞水县| 铜山县|