色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > FFT在低功率微程序控制器中的應(yīng)用

          FFT在低功率微程序控制器中的應(yīng)用

          作者: 時(shí)間:2010-08-17 來(lái)源:網(wǎng)絡(luò) 收藏

          2 執(zhí)行要點(diǎn)
          寫代碼實(shí)現(xiàn)DFT不是一件容易的事,因?yàn)橛玫?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/功率">功率的微處理器實(shí)現(xiàn)DFT算法的實(shí)際情況是相當(dāng)復(fù)雜的。例如,這些微處理器通常:
          (1)有限的內(nèi)存。選擇的微處理器只有2 KB的RAM。從上面敘述可知實(shí)現(xiàn)至少需要2N×16 B變量。微處理器不能執(zhí)行樣本點(diǎn)數(shù)N大于512的。這是不現(xiàn)實(shí)的,因?yàn)閯e的固件同樣需要一些字節(jié)的RAM。因此在實(shí)際執(zhí)行的過(guò)程中,通常將樣本點(diǎn)數(shù)局限在256點(diǎn)。使用16 B的變量表示每一個(gè)值的實(shí)部與虛部,這種情況下對(duì)于的數(shù)據(jù)需要1024B的RAM。
          (2)有限的速度。盡管低的微處理器具有高達(dá)每秒百萬(wàn)條指令的速度,仍然需要一些優(yōu)化方法來(lái)減少在執(zhí)行FFT過(guò)程中所用到的指令。所幸的是在過(guò)程中。C編譯器包括很多優(yōu)化的級(jí)別設(shè)置。小心使用芯片的硬件乘法同樣可以使得代碼優(yōu)化到一個(gè)可以接受的水平。
          (3)沒(méi)有浮點(diǎn)數(shù)功能。所選擇的微處理器特別是那些低的微處理器沒(méi)有浮點(diǎn)數(shù)功能。因此所有的計(jì)算都需要定點(diǎn)算法。為了表示分?jǐn)?shù),固件將使用有符號(hào)的Q8.7標(biāo)記。因此固件將假設(shè):O~6 B表示每一數(shù)字的分?jǐn)?shù)部分;7~14 B表示每一數(shù)字的整數(shù)部分;第15字節(jié)是這個(gè)數(shù)字的符號(hào)位。
          這種形式對(duì)于加法和減法是沒(méi)有影響的,但是對(duì)于乘法則必須注意,使所有數(shù)據(jù)排成Q8.7的形式。例如對(duì)于Q8.7的乘法如下:

          為了獲得比較精確的FFT結(jié)果,Q8.7排列形式的一致性同樣適用于具有比較大樣本點(diǎn)數(shù)的FFT。例如,模/數(shù)轉(zhuǎn)換器以實(shí)部和虛部互補(bǔ)的形式提供8位的符號(hào)數(shù)。如果輸入的是直流電壓(+127為有符號(hào)的8位樣本數(shù)),從X(0)中將會(huì)完全獲得其頻譜,以Q8.7標(biāo)記等于32512。這個(gè)值很適合于用16位的符號(hào)數(shù)表示。

          3 固件
          下面介紹計(jì)算基為2的FFT所需的固件。當(dāng)從模/數(shù)轉(zhuǎn)換器中讀取樣本數(shù)后,存儲(chǔ)在數(shù)組x_n_re中。這個(gè)數(shù)組表示x(n)的實(shí)部。在執(zhí)行FFT前,虛部的值初始化為零,存儲(chǔ)在數(shù)組x_n_im中。當(dāng)執(zhí)行完FFT時(shí),頻域的幅值將代替原來(lái)的樣本值,且存儲(chǔ)在x_n_re和x_n_im中。
          3.1 采集樣本
          FFT算法假設(shè)以固定采樣率來(lái)采集樣本的。盡管這是在本文考慮范圍之外,但是如果認(rèn)真對(duì)待采集樣本的代碼同樣會(huì)產(chǎn)生問(wèn)題。例如,不穩(wěn)定的采樣率將會(huì)產(chǎn)生錯(cuò)誤的FFT結(jié)果,所以應(yīng)該盡量使該情況最小化。對(duì)模/數(shù)轉(zhuǎn)換器采樣的原碼每一次循環(huán)以及輸出結(jié)果命令都有可能對(duì)采樣率產(chǎn)生不穩(wěn)定性。例如,系統(tǒng)從摸/數(shù)轉(zhuǎn)換器中讀取8位的有符號(hào)數(shù),然后存儲(chǔ)在16位的數(shù)組變量中。
          下面列出了關(guān)于從模/數(shù)轉(zhuǎn)換器中讀取及存儲(chǔ)數(shù)據(jù)的2個(gè)偽碼算法。第1個(gè)記為算法l,將會(huì)引起采樣率的不穩(wěn)定。因?yàn)樨?fù)數(shù)樣本比正的樣本需要更多的時(shí)間來(lái)讀取及存儲(chǔ)。中斷同樣不能保證采樣代碼的健全。
          模/數(shù)轉(zhuǎn)換器采樣(ADC)的偽碼:
          算法1:不一致的采樣率。

          3.2 三角法來(lái)查尋表格
          FFT利用查尋表的方法(LUTs)來(lái)代替直接計(jì)算正弦與余弦的值。下面敘述中給出了對(duì)正弦與余弦的LUTs的聲明。固件中的聲明包括在中自動(dòng)產(chǎn)生這些表格的原始代碼。LUTs中的正弦與余弦都具有N/2樣本,因?yàn)樾D(zhuǎn)因子的下標(biāo)從0~(N/2)-1變化。
          正弦與余弦函數(shù)的LUTs:

          包括這些LUTs的聲明為常量,強(qiáng)迫編譯器將這些數(shù)據(jù)存儲(chǔ)在碼區(qū)而不是數(shù)據(jù)區(qū)。由于微處理器中的RAM的有限性這樣做是很重要的。由于LUTs的值必須以Q8.7方式排列,因此與正弦和余弦對(duì)應(yīng)的值應(yīng)該乘以27。
          3.3 位倒置
          位倒置(N是已知的)可以在運(yùn)行中計(jì)算,利用1個(gè)查尋表格標(biāo)記或者直接用一個(gè)打開的環(huán)來(lái)寫。每1種方法有其各自的大小與執(zhí)行速度的平衡。本文利用開環(huán)直接寫的方法來(lái)執(zhí)行位倒置。實(shí)際的固件由原碼來(lái)自動(dòng)產(chǎn)生這個(gè)開環(huán)。


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉