• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

最近在看單片機....

2021/06/02
263
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

最近在看單片機,需要用一個1塊錢不到的51單片機,做一個簡化版FFT程序。而且,這個單片機也不支持小數(shù),也不支持乘法。

腦袋里真的有兩個小人,在那吵:

一個說,別看了,和你專業(yè)又沒關(guān)系,和領(lǐng)導(dǎo)說,就說你干不了

另一個說,再堅持堅持,萬事開頭難,撐過去了,又是一遍天。

對于單片機熟手來說,單片機太簡單了;

對于算法熟手來說,F(xiàn)FT太簡單了;

對于C語言高手來說,C語言太簡單了;

可是對于我一個純硬件人員,這三個真的是太難了。

啃了一個禮拜,終于用matlab把FFT算法給整出來了。雖然計算結(jié)果和matlab內(nèi)置FFT算法一致,但是耗時比它長不少。

看matlab的help文件,順藤摸瓜,發(fā)現(xiàn)一個網(wǎng)站,上面竟然整理了三十多年各個作者的FFT算法程序,還針對這些算法,分析了不同系統(tǒng)下,運行精度和速度。

找了上面運行速度最快的看了一下,發(fā)現(xiàn)自己實在是看不懂。就對自己說,算了算了,自己啥也不會,還是老老實實先從最基本的教科書開始吧。等運算速度確實達不到要求的時候,再研究這些。

所以就按照書上的基-2蝶形運算,在matlab上一級一級地算,做了個128點的FFT運算。

在matlab上驗證完,想搬到單片機上時,傻眼了。

在matlab上用的是定點小數(shù)的運算,可是單片機不支持小數(shù),只支持整數(shù)。

也就是說,我得存在單片機上一個數(shù)。這個數(shù)呢,我心里知道是個小數(shù),但是單片機看著是個整數(shù)。就這點,就把我繞的夠嗆,到今天為止,還沒繞明白。

先說說,我對這些有多不敏感吧。

我家老二老三,因為看上去很小只,所以我經(jīng)常會抱著她們稱體重。以前,在北京的時候,朋友送了個嬰兒稱,直接放上就行,不用我計算。

現(xiàn)在,因為搬家,需要精簡東西,就把那個稱留在北京了?,F(xiàn)在稱,需要大人先上去稱一下凈重,然后大人抱小孩上去稱個總重,兩者相減一下。

對我來說,純靠腦袋記這兩個數(shù)字都有困難,需要借助紙或者其他人。然后心算這倆數(shù)字的減法,我挑戰(zhàn)過一次,就放棄了,改用手機上的計算器。

所以,單片機看是個整數(shù),但是我得把它看成小數(shù),還要在這種情況下,用移位相加方法來實現(xiàn)小數(shù)乘法,真的是挑戰(zhàn)我的記憶力和邏輯能力啊。

如果你問我為啥我要這么虐自己呢,直接和領(lǐng)導(dǎo)說,不干自己專業(yè)外的事情就行了唄。

那是因為我有一顆上進的心哪?。。?/p>

還有,作為一名干了十年的硬件人員,真的是很羨慕做軟件的人啊!動動鍵盤,就能改變世界!

參考文獻:http://www.fftw.org/benchfft

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄