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

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

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

3天內不再提示

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

CW32生態社區 ? 來源:CW32生態社區 ? 2026-01-05 16:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

一、CW32L012的CORDIC運算原理

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

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

具體運算定義如下:

圖片

wKgZO2lU852AIdU6AAA1AKOGvSI167.jpg

關于 q1.15q1.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工程打開示意圖如下:

圖片

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

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

    關注

    3600

    文章

    2131

    瀏覽量

    277695
  • 數學函數
    +關注

    關注

    0

    文章

    10

    瀏覽量

    6475
  • 三角函數
    +關注

    關注

    0

    文章

    17

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RX系列三角函數單元(TFU)的使用介紹

    硬件加速器三角函數單元(Trigonometric Function Unit)能夠高速處理三角函數sin、cos、arctan和sqrt(x2+y2)
    的頭像 發表于 12-04 12:25 ?4367次閱讀
    RX系列<b class='flag-5'>三角函數</b>單元(TFU)的使用介紹

    怎么在Hightec編譯環境中調用三角函數,是需要包含某些庫嗎?

    怎么在Hightec編譯環境中調用三角函數sin(),cos(),tan(),求教,是需要包含某些庫嗎?
    發表于 02-18 08:44

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

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

    三角函數的查表法

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

    MATLAB三角函數命令

    MATLAB三角函數命令Sin 正弦 Sinh 雙曲正弦 Asin 反正弦 Asinh 反雙曲正弦 Cos 余弦 Cosh 雙曲余弦 Acos 反余弦 Acosh 反雙曲余弦 Tan 正切&
    發表于 09-22 16:04

    請教高手求解方程組含有三角函數

    請教高手求解方程組含有三角函數方程如下 :cos(θ2+θ3)cosθ1Px+cos(θ2+θ3)sinθ1Py+
    發表于 03-17 14:35

    ARM7如何實現三角函數

    ARM7中如何編程實現三角函數sincos,軟件用的是TKStudio,求大神
    發表于 11-12 16:31

    請問一下,28035的cla支持三角函數運算

    請問一下,28035的cla支持三角函數運算嗎,為什么使用sin函數時,編譯有錯,那該怎么使用三角函數
    發表于 05-14 00:58

    labview中的三角函數問題

    我想使用三角函數中的余弦函數(輸入是角度的那種)我試了一下,發現cos90°算出來不是0,為什么呀,算別的角度是對的,就是算值等于0的度數會有問題。用了弧度角度換算、公式節點、直接輸入π/2,這種方法出來都不是0
    發表于 04-09 14:18

    基于DSP的三角函數快速計算

    基于DSP的三角函數快速計算
    發表于 04-07 14:33 ?53次下載
    基于DSP的<b class='flag-5'>三角函數</b><b class='flag-5'>快速</b>計算

    三角函數arcranx運算電路

    三角函數arcranx運算電路
    發表于 04-09 10:16 ?3073次閱讀
    反<b class='flag-5'>三角函數</b>arcranx<b class='flag-5'>運算</b>電路

    利用Cordic算法來計算三角函數的值

    運算,就能計算常用三角函數值,如Sin,Cos,Sinh,Cosh函數。 J. Walthe
    發表于 11-17 16:37 ?7675次閱讀
    利用<b class='flag-5'>Cordic</b>算法來計算<b class='flag-5'>三角函數</b>的值

    如何使用Cordic算法C語言實現三角函數的計算

    三角函數的計算是個復雜的主題,有計算機之前,人們通常通過查找三角函數表來計算任意角度的三角函數的值。這種表格在人們剛剛產生三角函數的概念的時候就已經有了,它們通常是通過從已知值(比如
    發表于 04-25 18:27 ?9次下載
    如何使用<b class='flag-5'>Cordic</b>算法C語言<b class='flag-5'>實現</b><b class='flag-5'>三角函數</b>的計算

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

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

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

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