91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

CW32L012實(shí)現(xiàn)CORDIC模塊微秒級(jí)快速運(yùn)算SIN、COS等三角函數(shù)

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

掃碼添加小助手

加入工程師交流群

CW32L012具有CORDIC 協(xié)處理器,能夠?qū)崿F(xiàn)微秒級(jí)快速計(jì)算三角函數(shù)功能。

一、CW32L012的CORDIC運(yùn)算原理

CORDIC是一種坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算機(jī)算法。CW32L012的CORDIC提供某些數(shù)學(xué)函數(shù)的硬件加速,特別是三角函數(shù),通常用于電機(jī)控制、計(jì)量、信號(hào)處理和許多其他應(yīng)用。與軟件實(shí)現(xiàn)相比,它加快了這些功能的計(jì)算速度,允許較低的工作頻率,或釋放處理器周期以執(zhí)行其他任務(wù)。

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

具體運(yùn)算定義如下:

wKgZO2lSNx6AEkEeAAFv2ZiMPDk750.pngwKgZO2lSNy-AN7yJAAEhQx4IaZg017.png

關(guān)于 q1.15 和 q1.31:

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

? sint16 對(duì)應(yīng)的 q1.15 = sint16 / pow(2,15)

? sint32 對(duì)應(yīng)的 q1.31 = sint32 / pow(2,31)

關(guān)于迭代次數(shù):

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

關(guān)于啟動(dòng):

? 只有一個(gè)數(shù)據(jù)輸入(x 或 y 或 z)時(shí),寫入該數(shù)據(jù)即啟動(dòng)運(yùn)算。

? 需要兩個(gè)數(shù)據(jù)輸入(x 和 y)時(shí),寫入 y 啟動(dòng)運(yùn)算。

CORDIC 存在 2 個(gè)狀態(tài)標(biāo)志,用來(lái)指示 CORDIC 的當(dāng)前工作狀態(tài),包括工作狀態(tài)標(biāo)志 BUSY、運(yùn)算完成標(biāo)志忙標(biāo)志(CORDIC_CSR.BUSY)

CORDIC_CSR.BUSY 標(biāo)志位指示當(dāng)前 CORDIC 是否處于運(yùn)算結(jié)束或空閑狀態(tài)。

當(dāng)CORDIC CSR.BUSY 為 0 時(shí),表示 CORDIC 處于運(yùn)算結(jié)束或空閑狀態(tài),可以讀取結(jié)果或開始新的運(yùn)算;當(dāng)CSR.BUSY 為 1 時(shí),表示 CORDIC 處于忙碌狀態(tài),當(dāng)前數(shù)據(jù)運(yùn)算正在進(jìn)行中,無(wú)法提供運(yùn)算結(jié)果或開始新的運(yùn)算。

運(yùn)算完成標(biāo)志位CORDIC_CSR.EOC 指示 CORDIC 運(yùn)算完成。EOC 標(biāo)志位被置位并不影響繼續(xù)進(jìn)行新一輪運(yùn)算,無(wú)論新一輪運(yùn)算是什么類型。當(dāng)新一輪運(yùn)算被啟動(dòng)時(shí),標(biāo)志位自動(dòng)清零并根據(jù)新一輪運(yùn)算的情況重新進(jìn)行指示。

二、編程實(shí)現(xiàn)

初始化定義:


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

角度定義


int32_t angle; 
angle = float_to_q1_31(0.167);

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

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

將浮點(diǎn)數(shù)轉(zhuǎn)換為Q1.31格式,函數(shù)定義如下:


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

運(yùn)算


while (CORDIC_GetStatus().busy);//運(yùn)算前判斷BUSY狀態(tài) 
CW_CORDIC->Z =angle;   // 寫入Z寄存器啟動(dòng)運(yùn)算
while (!CORDIC_GetStatus().eoc);  // 等待運(yùn)算完成,完成時(shí)標(biāo)志硬件置1,讀取運(yùn)算結(jié)果時(shí)硬件清0

讀取結(jié)果

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

其中Q1.31格式的定點(diǎn)數(shù)轉(zhuǎn)為浮點(diǎn)數(shù)函數(shù)定義如下:


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

Q1.15格式的定點(diǎn)數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)函數(shù)定義如下:


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

參考例程

CW32L012的標(biāo)準(zhǔn)庫(kù)文件夾下有參考例程,可以直接運(yùn)行。標(biāo)準(zhǔn)庫(kù)文件可在武漢芯源半導(dǎo)體有限公司的官方網(wǎng)址上直接下載(資料下載固件庫(kù))。

例程路徑如下:

CW32L012_StandardPeripheralLib_V1.0.3ExamplesCORDICcordic_cosMDK

MDK工程打開示意圖如下:

wKgZPGlSOeqAOGNxAAFYdbU5mfI214.png

該例程可以在CW32L012的最小系統(tǒng)架構(gòu)中運(yùn)算。

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    41

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【乾芯QXS320F開發(fā)板試用】乾芯QXS320F開發(fā)板IQMath數(shù)學(xué)庫(kù)功能試用報(bào)告

    摘要 本報(bào)告重點(diǎn)評(píng)估乾芯QXS320F開發(fā)板所提供的IQMath定點(diǎn)數(shù)學(xué)庫(kù)的性能與易用性。通過具體的數(shù)學(xué)運(yùn)算示例,驗(yàn)證了該庫(kù)在定點(diǎn)數(shù)表示、三角函數(shù)計(jì)算等方面的準(zhǔn)確性和高效性,展現(xiàn)了其在需要高性能實(shí)時(shí)
    發(fā)表于 01-08 09:02

    FOC控制中如何利用芯片內(nèi)部的運(yùn)放設(shè)計(jì)電流采樣電路?

    最近開發(fā)電機(jī)控制的項(xiàng)目,我開始使用最新的CW32L012做主控,CW32L012作為混合信號(hào)MCU,相比于傳統(tǒng)MCU控制,集成度較高,性能當(dāng)然也更好,加之又是48Pin的芯片,因此我開始做的關(guān)于CW32L012主控的電機(jī)驅(qū)動(dòng)項(xiàng)目
    的頭像 發(fā)表于 01-05 16:50 ?2744次閱讀
    FOC控制中如何利用芯片內(nèi)部的運(yùn)放設(shè)計(jì)電流采樣電路?

    CW32L012與STM32G431的CORDIC三角函數(shù)運(yùn)算性能對(duì)比

    CORDIC協(xié)處理器的三角運(yùn)算性能對(duì)比。對(duì)比結(jié)果出乎意料。 一、硬件架構(gòu) 二、運(yùn)算100W次SIN30度與
    的頭像 發(fā)表于 12-29 15:55 ?2514次閱讀
    <b class='flag-5'>CW32L012</b>與STM32G431的<b class='flag-5'>CORDIC</b><b class='flag-5'>三角函數(shù)</b><b class='flag-5'>運(yùn)算</b>性能對(duì)比

    CW32L012與STM32F103的三角運(yùn)算性能對(duì)比

    沒有硬件浮點(diǎn)運(yùn)算單元。 但在運(yùn)算三角函數(shù)時(shí),CW32L012支持CORDIC算法。 二、 三角
    的頭像 發(fā)表于 12-29 15:32 ?2331次閱讀
    <b class='flag-5'>CW32L012</b>與STM32F103的<b class='flag-5'>三角</b><b class='flag-5'>運(yùn)算</b>性能對(duì)比

    CORDIC模塊——提高計(jì)算能力的性價(jià)比神器

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

    CW32L012小型機(jī)器人控制評(píng)估板活動(dòng) 四足機(jī)器人+智能小車 開箱評(píng)測(cè)

    。 這次CW32L012的評(píng)測(cè)活動(dòng),CW32生態(tài)社區(qū)將開發(fā)板、以及各類套件與相關(guān)資料(技術(shù)資料、例程代碼、視頻教程)準(zhǔn)備得非常豐富,對(duì)初學(xué)者非常地有好,可以說(shuō)是手把手帶你入門,新手小白可以趁機(jī)入手
    發(fā)表于 11-24 23:44

    **CW32L012****開發(fā)評(píng)估板的第一個(gè)程序**

    CW32L012****開發(fā)評(píng)估板的第一個(gè)程序 最近以15.99在CW32生態(tài)社區(qū)入手了這塊CW32L012開發(fā)評(píng)估板,我迫不及待的燒錄進(jìn)電燈程序,看看這塊板子是否是正常的,能否滿足我后面的學(xué)習(xí)
    發(fā)表于 11-22 00:09

    CW32L012小機(jī)器人的電機(jī)控制

    線的大功率調(diào)速,電機(jī)的控制性能直接決定了系統(tǒng)的響應(yīng)速度、運(yùn)行精度、能耗效率與穩(wěn)定性。這里分享CW32L012小機(jī)器人的正反轉(zhuǎn)、調(diào)速的電機(jī)控制 電機(jī)的正反轉(zhuǎn) 從配套的開發(fā)板資料介紹中可以知道,這是電機(jī)的驅(qū)動(dòng)芯片RZ7899 從立創(chuàng)商城下載該芯片的數(shù)據(jù)
    的頭像 發(fā)表于 11-21 13:18 ?2405次閱讀
    <b class='flag-5'>CW32L012</b>小機(jī)器人的電機(jī)控制

    使用芯源CW32的CW32L012開發(fā)評(píng)估板做了spi屏幕驅(qū)動(dòng)

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

    三角函數(shù)的查表法

    在單片機(jī)運(yùn)算中,以整數(shù)形式或說(shuō)定點(diǎn)數(shù)形式進(jìn)行運(yùn)算會(huì)比以浮點(diǎn)數(shù)形式運(yùn)算快。電機(jī)控制中,經(jīng)常需要用到三角函數(shù),正弦,余弦,或者正切,求解這一類函數(shù)
    發(fā)表于 11-19 08:06

    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    CW32L012基于ARM? Cortex-M0+內(nèi)核,主頻高達(dá)96MHz,同時(shí)集成了CORDIC硬件單元、擴(kuò)展算術(shù)運(yùn)算單元(EAU),可以提供部分?jǐn)?shù)學(xué)函數(shù)、算術(shù)
    的頭像 發(fā)表于 07-16 16:34 ?1364次閱讀
    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻<b class='flag-5'>CW32L012</b>新品發(fā)布!

    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    (EAU),可以提供部分?jǐn)?shù)學(xué)函數(shù)、算術(shù)運(yùn)算的硬件加速,特別適用于電機(jī)控制、電源、計(jì)量、信號(hào)處理應(yīng)用。 同時(shí),CW32L012 是基于 eFlash 的單芯片低功耗微控制器,集成了雙1
    發(fā)表于 07-16 16:32

    vivado IP核cordicsincos的計(jì)算

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

    馬達(dá)控制上必要的知識(shí) 三角函數(shù)

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

    F302R8電機(jī)驅(qū)動(dòng)三角函數(shù)為什么用定點(diǎn)查表方式?

    各位大佬好,我最近在研究ST的電機(jī)庫(kù),我發(fā)現(xiàn)同樣是Workbench生成的代碼,F(xiàn)302是用的查表法計(jì)算sin、cos,而G4是通過FPU計(jì)算的,但是看手冊(cè)F302和G4都是有FPU的,請(qǐng)問這樣區(qū)別的原因是什么
    發(fā)表于 03-13 06:40