国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

CW32L012實現CORDIC模塊微秒級快速運算SIN、COS等三角函數

jf_09510355 ? 來源:jf_09510355 ? 作者:jf_09510355 ? 2025-12-29 16:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CW32L012具有CORDIC 協處理器,能夠實現微秒級快速計算三角函數功能。

一、CW32L012的CORDIC運算原理

CORDIC是一種坐標旋轉數字計算機算法。CW32L012的CORDIC提供某些數學函數的硬件加速,特別是三角函數,通常用于電機控制、計量、信號處理和許多其他應用。與軟件實現相比,它加快了這些功能的計算速度,允許較低的工作頻率,或釋放處理器周期以執行其他任務。

CW32L012的CORDIC支持余弦 cos、正弦 sin、相位角 atan2、模 hypot、反正切 atan、雙曲余弦 cosh、雙曲正弦 sinh、雙曲反正切 atanh 函數運算。迭代次數可進行配置(范圍 6~66)。

具體運算定義如下:

wKgZO2lSNx6AEkEeAAFv2ZiMPDk750.pngwKgZO2lSNy-AN7yJAAEhQx4IaZg017.png

關于 q1.15 和 q1.31:

? 用 sint16/sint32 代表 [-1,1)之間的實數

? sint16 對應的 q1.15 = sint16 / pow(2,15)

? sint32 對應的 q1.31 = sint32 / pow(2,31)

關于迭代次數:

? q1.15 建議迭代 16-20 次,q1.31 建議迭代 24-32 次。

關于啟動:

? 只有一個數據輸入(x 或 y 或 z)時,寫入該數據即啟動運算。

? 需要兩個數據輸入(x 和 y)時,寫入 y 啟動運算。

CORDIC 存在 2 個狀態標志,用來指示 CORDIC 的當前工作狀態,包括工作狀態標志 BUSY、運算完成標志忙標志(CORDIC_CSR.BUSY)

CORDIC_CSR.BUSY 標志位指示當前 CORDIC 是否處于運算結束或空閑狀態。

當CORDIC CSR.BUSY 為 0 時,表示 CORDIC 處于運算結束或空閑狀態,可以讀取結果或開始新的運算;當CSR.BUSY 為 1 時,表示 CORDIC 處于忙碌狀態,當前數據運算正在進行中,無法提供運算結果或開始新的運算。

運算完成標志位CORDIC_CSR.EOC 指示 CORDIC 運算完成。EOC 標志位被置位并不影響繼續進行新一輪運算,無論新一輪運算是什么類型。當新一輪運算被啟動時,標志位自動清零并根據新一輪運算的情況重新進行指示。

二、編程實現

初始化定義:


cordic_init_t init = {
        .func = CORDIC_FUNC_COS,  // 選擇余弦函數
        .scale = 0,              // 不使用擴展范圍
        .format = CORDIC_FORMAT_Q1_31, // 使用q1.31格式
        .iter = CORDIC_ITER_20,  // 迭代次數
        .comp = 1,               // 硬件補償伸縮因子
        .ie = 0,                 // 禁用中斷
        .dmaeoc = 0,             // 禁用DMA
        .dmaidle = 0             // 禁用DMA空閑
    };  
  CORDIC_Init(&init);  //sin cos運算初始化

角度定義


int32_t angle; 
angle = float_to_q1_31(0.167);

若計算45度的正余弦,則令angle=0.25(即1/4)。這樣運算的參數為 PI/4(45度),寫入角度參數前需要將數據轉化為Q1.31格式或Q1.15格式。

若計算30度的正余弦, 則令angle=0.167(即1/6)。這樣運算的參數為PI/6 (30度),寫入角度參數前需要將數據轉化為Q1.31格式或Q1.15格式。

將浮點數轉換為Q1.31格式,函數定義如下:


int32_t float_to_q1_31(float value) {
    return (int32_t)round(value * 2147483648.0); // 2^31
}

運算


while (CORDIC_GetStatus().busy);//運算前判斷BUSY狀態 
CW_CORDIC->Z =angle;   // 寫入Z寄存器啟動運算
while (!CORDIC_GetStatus().eoc);  // 等待運算完成,完成時標志硬件置1,讀取運算結果時硬件清0

讀取結果

int32_t y1,y2;
float  y11,y22; 
y1=CW_CORDIC->Y;// 正弦結果在Y寄存器 ,Q1.31格式 
y2=CW_CORDIC->X;// 余弦結果在X寄存器 Q1.31格式 
y11=q1_31_to_float(y1);   //正弦結果轉浮點數,可根據需要使用
y22=q1_31_to_float(y2);   //余弦結果轉浮點數,可根據需要使用 

其中Q1.31格式的定點數轉為浮點數函數定義如下:


float q1_31_to_float(int32_t value) {
    return (float)value / 2147483648.0; // 2^31
}

Q1.15格式的定點數轉換為浮點數函數定義如下:


float q1_15_to_float(int32_t value)
{
    return (float)value / 32768.0f;
}

參考例程

CW32L012的標準庫文件夾下有參考例程,可以直接運行。標準庫文件可在武漢芯源半導體有限公司的官方網址上直接下載(資料下載固件庫)。

例程路徑如下:

CW32L012_StandardPeripheralLib_V1.0.3ExamplesCORDICcordic_cosMDK

MDK工程打開示意圖如下:

wKgZPGlSOeqAOGNxAAFYdbU5mfI214.png

該例程可以在CW32L012的最小系統架構中運算。

審核編輯 黃宇

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

    關注

    0

    文章

    41

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【乾芯QXS320F開發板試用】乾芯QXS320F開發板IQMath數學庫功能試用報告

    摘要 本報告重點評估乾芯QXS320F開發板所提供的IQMath定點數學庫的性能與易用性。通過具體的數學運算示例,驗證了該庫在定點數表示、三角函數計算等方面的準確性和高效性,展現了其在需要高性能實時
    發表于 01-08 09:02

    FOC控制中如何利用芯片內部的運放設計電流采樣電路?

    最近開發電機控制的項目,我開始使用最新的CW32L012做主控,CW32L012作為混合信號MCU,相比于傳統MCU控制,集成度較高,性能當然也更好,加之又是48Pin的芯片,因此我開始做的關于CW32L012主控的電機驅動項目
    的頭像 發表于 01-05 16:50 ?2727次閱讀
    FOC控制中如何利用芯片內部的運放設計電流采樣電路?

    CW32L012與STM32G431的CORDIC三角函數運算性能對比

    CORDIC協處理器的三角運算性能對比。對比結果出乎意料。 一、硬件架構 二、運算100W次SIN30度與
    的頭像 發表于 12-29 15:55 ?2492次閱讀
    <b class='flag-5'>CW32L012</b>與STM32G431的<b class='flag-5'>CORDIC</b><b class='flag-5'>三角函數</b><b class='flag-5'>運算</b>性能對比

    CW32L012與STM32F103的三角運算性能對比

    沒有硬件浮點運算單元。 但在運算三角函數時,CW32L012支持CORDIC算法。 二、 三角
    的頭像 發表于 12-29 15:32 ?2324次閱讀
    <b class='flag-5'>CW32L012</b>與STM32F103的<b class='flag-5'>三角</b><b class='flag-5'>運算</b>性能對比

    CORDIC模塊——提高計算能力的性價比神器

    單片機進行復雜的數學函數計算特別是控制系統中常用的三角函數計算,在有精度要求的情況下,我們經驗上往往會選用帶有DSP模塊的MCU或者專用的DSP芯片去實現。但由于帶有DSP
    的頭像 發表于 12-22 12:39 ?2947次閱讀
    <b class='flag-5'>CORDIC</b><b class='flag-5'>模塊</b>——提高計算能力的性價比神器

    CW32L012小型機器人控制評估板活動 四足機器人+智能小車 開箱評測

    。 這次CW32L012的評測活動,CW32生態社區將開發板、以及各類套件與相關資料(技術資料、例程代碼、視頻教程)準備得非常豐富,對初學者非常地有好,可以說是手把手帶你入門,新手小白可以趁機入手
    發表于 11-24 23:44

    **CW32L012****開發評估板的第一個程序**

    CW32L012****開發評估板的第一個程序 最近以15.99在CW32生態社區入手了這塊CW32L012開發評估板,我迫不及待的燒錄進電燈程序,看看這塊板子是否是正常的,能否滿足我后面的學習
    發表于 11-22 00:09

    CW32L012小機器人的電機控制

    線的大功率調速,電機的控制性能直接決定了系統的響應速度、運行精度、能耗效率與穩定性。這里分享CW32L012小機器人的正反轉、調速的電機控制 電機的正反轉 從配套的開發板資料介紹中可以知道,這是電機的驅動芯片RZ7899 從立創商城下載該芯片的數據
    的頭像 發表于 11-21 13:18 ?2392次閱讀
    <b class='flag-5'>CW32L012</b>小機器人的電機控制

    使用芯源CW32的CW32L012開發評估板做了spi屏幕驅動

    CW32生態社區以極高的性價比入手了這塊CW32L012開發評估板,開發板以底板、核心板、1.77寸TFT顯示屏構成,所有的IO口都引出了排針,這點好評,使用杜邦線可以非常方便的連接其他模塊。引腳
    的頭像 發表于 11-21 11:34 ?613次閱讀
    使用芯源<b class='flag-5'>CW</b>32的<b class='flag-5'>CW32L012</b>開發評估板做了spi屏幕驅動

    三角函數的查表法

    在單片機運算中,以整數形式或說定點數形式進行運算會比以浮點數形式運算快。電機控制中,經常需要用到三角函數,正弦,余弦,或者正切,求解這一類函數
    發表于 11-19 08:06

    堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻CW32L012新品發布!

    CW32L012基于ARM? Cortex-M0+內核,主頻高達96MHz,同時集成了CORDIC硬件單元、擴展算術運算單元(EAU),可以提供部分數學函數、算術
    的頭像 發表于 07-16 16:34 ?1341次閱讀
    堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻<b class='flag-5'>CW32L012</b>新品發布!

    堅持繼續布局32位MCU,進一步完善產品陣容,96Mhz主頻CW32L012新品發布!

    (EAU),可以提供部分數學函數、算術運算的硬件加速,特別適用于電機控制、電源、計量、信號處理應用。 同時,CW32L012 是基于 eFlash 的單芯片低功耗微控制器,集成了雙1
    發表于 07-16 16:32

    vivado IP核cordicsincos的計算

    Architectural Configuration選擇為并行模式,具有單周期數據吞吐量和較大的硅面積。具有并行結構配置的CORDIC核使用移位相加子級數組并行實現這些移位相加操作。該并形電路的實現規模與(內部精度 * 迭代次
    的頭像 發表于 05-03 18:16 ?1620次閱讀
    vivado IP核<b class='flag-5'>cordic</b>中<b class='flag-5'>sin</b>和<b class='flag-5'>cos</b>的計算

    馬達控制上必要的知識 三角函數

    為了理解馬達控制技術,必須理解如下基礎學問。 (1) 數學:三角函數,指數函數,復數函數,微分,積分,矩陣,坐標(直交,極) (2) 電氣電路:交流理論(3 相交流, 歪交流),過渡現象 (3
    發表于 03-18 12:23

    F302R8電機驅動三角函數為什么用定點查表方式?

    各位大佬好,我最近在研究ST的電機庫,我發現同樣是Workbench生成的代碼,F302是用的查表法計算sincos,而G4是通過FPU計算的,但是看手冊F302和G4都是有FPU的,請問這樣區別的原因是什么
    發表于 03-13 06:40