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

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

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

該如何把浮點(diǎn)切換到16bit的定點(diǎn)來呢?

冬至子 ? 來源:開關(guān)電源仿真與實(shí)用設(shè)計(jì) ? 作者:楊帥鍋 ? 2023-05-02 14:23 ? 次閱讀

前言:如果說要在16bit定點(diǎn)環(huán)境上使用DSP算法,如IIR構(gòu)成的2P2Z,會受到定點(diǎn)編程和量化精度的問題。如果說在float32環(huán)境上可以很容易進(jìn)行編程,那切換到定點(diǎn)環(huán)境上就不得不得考慮這些問題。

通常情況下單精度浮點(diǎn)在小數(shù)點(diǎn)后的精度為1/(2^23),理論上使用32位定點(diǎn)IQ24就可以覆蓋單精度浮點(diǎn)的精度問題,但是在16bit上,使用i1.q15的方法來算,僅有1/(2^15)的精度,如果直接使用則會遇到量化精度引起的誤差問題。那么該如何把浮點(diǎn)切換到16bit的定點(diǎn)來呢,下面將一步一步的來進(jìn)行討論。

S1 傳遞函數(shù)離散

圖片

離散化:

圖片

帶入參數(shù),并出歸一化的z域傳遞函數(shù),這里把分母的z^2提出來,然后全部除以其它的數(shù)字,即可得到:

圖片

S2 使用IQ15的方法量化:

圖片

可見,a1項(xiàng)為最大,即可把全部數(shù)字除以a1項(xiàng),讓它用滿15bit的字長,可得:

圖片

然后乘以2^15,得到:

圖片

S3 提升B系數(shù):這里可以看到分子項(xiàng)上B0/B2的數(shù)字太小,所以為了提高量化精度,可以在B系數(shù)上繼續(xù)擴(kuò)大到2^12,這樣可以更多的利用字長,最后在輸出上除去引入增益即可。

圖片

可得B系數(shù)更新為。

圖片

然后考慮一下分母量化為32786時(shí)引入的增益:1.99998,在編程上考慮先左移1位然后再考慮小數(shù)點(diǎn)(32709/32678)即可引入增益。然后開始測試定點(diǎn)化后的PR控制器

圖片

S4 測試:輸入測試信號為50hz正弦波:

圖片

run,這里使用floor函數(shù),進(jìn)行向下取整來進(jìn)行定點(diǎn)化:

圖片

S5 輸出:可見定點(diǎn)和浮點(diǎn)的輸出波形幾乎接近,存在很小的誤差,屬于可以接受的量化精度。

圖片

小結(jié):可見在充分利用上32768的精度后,PR控制器很好的運(yùn)行在16bit環(huán)境上,如果是32bit的定點(diǎn)環(huán)境,則無需這么麻煩,直接使用I6Q24即可達(dá)到單精度浮點(diǎn)的精度。

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

    關(guān)注

    553

    文章

    8005

    瀏覽量

    349065
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16376

    瀏覽量

    178229
  • 數(shù)字信號處理
    +關(guān)注

    關(guān)注

    15

    文章

    560

    瀏覽量

    45865
收藏 人收藏

    評論

    相關(guān)推薦

    PCM1794A I2S 16bit數(shù)據(jù)不出聲音的原因?

    PCM1794A支持I2S協(xié)議的16bit數(shù)據(jù)嗎?測試時(shí)不出聲音,切換到24bit數(shù)據(jù)就能夠正常出聲了,手冊里I2S協(xié)議給了參考波形是24bit數(shù)據(jù)的,PCM1794A是否支持向下兼
    發(fā)表于 09-30 08:06

    #28335 浮點(diǎn)/定點(diǎn) 運(yùn)用

    大家好, #28335以浮點(diǎn)支持而著稱,但同時(shí)可以支持定點(diǎn);不知道大家在實(shí)際使用過程中,更多地是使用定點(diǎn),還是浮點(diǎn)?各有哪些優(yōu)劣
    發(fā)表于 03-23 11:12

    求助arm編譯器16bit的內(nèi)存數(shù)據(jù)的訪存改成了2次8bit的訪存

    最近在學(xué)習(xí)網(wǎng)卡驅(qū)動的編寫,調(diào)試的時(shí)候發(fā)現(xiàn)接收數(shù)據(jù)的時(shí)候隔了16bit(本身的讀寫寬度是16bit),查看反匯編文件發(fā)現(xiàn)編譯器在編譯的時(shí)候讀取16bit數(shù)據(jù)的一次操作分成了2次8
    發(fā)表于 04-18 09:50

    McASP采集這樣的時(shí)序,是按照16bit采集,還是32bit采集?從Linux用戶空間看,采集進(jìn)來的數(shù)據(jù)是16bit還是32bit?

    McASP;2. FrameSync是高電平時(shí)長32個bit,低電平時(shí)長32個bit;3. 有效數(shù)據(jù)是左對齊,時(shí)長16bit;問題是這樣的:1. McASP采集這樣的時(shí)序,是按照
    發(fā)表于 05-28 10:22

    dm8127 YCbCr 16bit 輸入?

    dm8127 的Camera Interface (I/F)支持YCbCr 16bit的嗎? 9.12 Imaging Subsystem (ISS) Parallel Camera (CAM
    發(fā)表于 05-28 06:14

    6618虛擬定點(diǎn)數(shù)學(xué)庫IQmath

    慢一倍,不知道什么原因?另外C64+系列的定點(diǎn)虛擬庫中,有定義16bit數(shù)據(jù)的類型,但沒有想過不同Q值得運(yùn)算函數(shù)。懷疑是不是數(shù)據(jù)長度依舊采用32bit所以速度沒有顯著提升。求大神解答! 1、C6618
    發(fā)表于 06-21 11:23

    請教關(guān)于在程序執(zhí)行中定點(diǎn)運(yùn)算和浮點(diǎn)運(yùn)算的切換問題

    編譯選項(xiàng)選擇6700+。定點(diǎn)浮點(diǎn)結(jié)合可以在-mv編譯選項(xiàng)選擇6748?,F(xiàn)在我想寫一段程序,這段程序先用浮點(diǎn)運(yùn)算計(jì)算一個公式,算完之后再用定點(diǎn)運(yùn)算計(jì)算這個公式,請問我
    發(fā)表于 08-02 08:54

    32bit MCU與16bit MCU的區(qū)別是什么

    bit 為一組。結(jié)論:不管是16-bit 還是 32-bit 的MCU,地址對應(yīng)的最小單元都是1個byte,它們的區(qū)別在于一次訪問的最大內(nèi)存是 32bit 還是
    發(fā)表于 11-01 07:12

    spi通信中8bit的新芯片接收16bit

    1、用EFM8L芯片作為spi從設(shè)備,接收16bit的數(shù)據(jù),數(shù)據(jù)速率達(dá)到8M。數(shù)據(jù)手冊上芯片spi支持高達(dá)12M速率。現(xiàn)在通過兩次中斷數(shù)據(jù)放在數(shù)組中,湊成
    發(fā)表于 12-21 11:17

    定點(diǎn)dsp浮點(diǎn)運(yùn)算教程

    定點(diǎn)dsp浮點(diǎn)運(yùn)算的多媒體視頻教程:
    發(fā)表于 01-24 09:14 ?50次下載
    <b class='flag-5'>定點(diǎn)</b>dsp<b class='flag-5'>浮點(diǎn)</b>運(yùn)算教程

    16Bit Group Ripple Adder

    16Bit Group Ripple Adder。
    發(fā)表于 03-21 15:07 ?0次下載

    定點(diǎn)程序會是什么樣?為什么要進(jìn)行定點(diǎn)仿真?

    浮點(diǎn)程序已經(jīng)給出了,那么定點(diǎn)程序會是什么樣子?為什么要進(jìn)行定點(diǎn)仿真?這是產(chǎn)品的要求!很多產(chǎn)品中用于實(shí)現(xiàn)算法的器件都會是FPGA或者DSP
    的頭像 發(fā)表于 06-29 14:19 ?3320次閱讀

    32bit MCU 與 16bit MCU 的 區(qū)別

    bit 為一組。結(jié)論:不管是16-bit 還是 32-bit 的MCU,地址對應(yīng)的最小單元都是1個byte,它們的區(qū)別在于一次訪問的最大內(nèi)存是 32bit 還是
    發(fā)表于 10-25 16:36 ?11次下載
    32<b class='flag-5'>bit</b> MCU 與 <b class='flag-5'>16bit</b> MCU 的 區(qū)別

    16定點(diǎn)數(shù)字信號處理編程是怎么思考的

    通常情況下單精度浮點(diǎn)在小數(shù)點(diǎn)后的精度為1/(2^23),理論上使用32位定點(diǎn)IQ24就可以覆蓋單精度浮點(diǎn)的精度問題,但是在16bit上,使用i1.q15的方法來算,僅有1/(2^15)
    的頭像 發(fā)表于 02-08 15:11 ?1134次閱讀
    <b class='flag-5'>16</b>位<b class='flag-5'>定點(diǎn)</b>數(shù)字信號處理編程是怎么思考的

    AD9088: 阿波羅MxFE Octal, 16Bit, 16PSS RF DAC和Octal, 12Bit, 8 PSS RF ADC初步數(shù)據(jù)表 ADI

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)AD9088: 阿波羅MxFE Octal, 16Bit, 16PSS RF DAC和Octal, 12Bit, 8 PSS RF ADC初步數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)
    發(fā)表于 10-09 18:45
    AD9088: 阿波羅MxFE Octal, <b class='flag-5'>16Bit</b>, <b class='flag-5'>16</b>PSS RF DAC和Octal, 12<b class='flag-5'>Bit</b>, 8 PSS RF ADC初步數(shù)據(jù)表 ADI