<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          FFT的前世今生

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

          請(qǐng)看下面的實(shí)例:

          圖1中正弦波測(cè)試使用的時(shí)基是5ns/div,波形時(shí)間長(zhǎng)度是50ns,計(jì)算之后的頻譜分辨率是20MHz(1/50ns),

          2.jpg

          圖1 捕獲50ns的信號(hào),頻率分辨率是20MHz

          如果改變時(shí)基設(shè)置,頻譜分辨率會(huì)有變化。如圖2所示:將時(shí)基設(shè)置為10ns/div,波形長(zhǎng)度是100ns,頻譜分辨率可以提高到10MHz。

          對(duì)于通過(guò)補(bǔ)零的方法增加頻譜的視在分辨率,力科的示波器也有相應(yīng)的解決方案。力科示波器使用了兩種非常常用的算法供用戶選擇:Cooley-Tukey算法和LeastPrime算法。Cooley-Tukey算法也稱為Power2算法,它提供了計(jì)算機(jī)一種非??焖俚腇FT計(jì)算方式,計(jì)算的FFT點(diǎn)數(shù)規(guī)模是2的整數(shù)方次,因此它會(huì)在示波器時(shí)域采集的信號(hào)中截取2的N次方的整數(shù)來(lái)作為FFT計(jì)算的時(shí)域樣本,該截取的整數(shù)是最接近于采樣點(diǎn)的整數(shù)。如下圖2所示:

          3.jpg

          圖2 捕獲100ns的信號(hào),頻率分辨率是10MHz

          圖中的正弦波頻率為500MHz,時(shí)基設(shè)置為10ns/div,采樣率為20GS/s,時(shí)域采樣點(diǎn)數(shù)為2000points,使用Power2算法截取2000點(diǎn)中的1024點(diǎn)(210),如圖中的藍(lán)框所示(注意是從信號(hào)的中間部分截取),因此截取的時(shí)間窗口為1024×20ps=51.2ns,是500MHz信號(hào)的25.6個(gè)周期,由于截取的周期非整數(shù)倍,不可避免會(huì)產(chǎn)生頻譜泄露,如圖中FFT的旁瓣所示,此時(shí)的頻率分辨率可以達(dá)到19.35125MHz。

          如果采用另外一種FFT算法LeastPrime,可以將整個(gè)示波器時(shí)域采集的采樣點(diǎn)進(jìn)行FFT運(yùn)算,LeastPrime算法計(jì)算的FFT點(diǎn)數(shù)規(guī)模是2N+5K,因此2000點(diǎn)=24+53,不需要截取原始數(shù)據(jù)就可以運(yùn)算,但是代價(jià)是計(jì)算的速度可能會(huì)慢一些(盡管我們可能覺(jué)察不到),頻率分辨率可以提高到10MHz。

          使用Power2算法也可以不采用截取原始波形的方式,此時(shí)我們可以選擇Zero Fill(補(bǔ)零)的方式,增加采樣點(diǎn)數(shù)。比如,在2000點(diǎn)中補(bǔ)48個(gè)點(diǎn),2048=211,如圖3所示:

          4.jpg

          圖3 補(bǔ)零的放出提高頻率分辨率



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();