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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 一種基于FPGA的正弦波信號發(fā)生器的設(shè)計(jì)

          一種基于FPGA的正弦波信號發(fā)生器的設(shè)計(jì)

          作者: 時(shí)間:2010-11-09 來源:網(wǎng)絡(luò) 收藏

          1.5 低通濾波電路
          低通濾波器用于濾除階梯信號中的諧波分量。本文采用2階低通濾波電路,階梯信號通過低通濾波,使得輸出信號頻譜純度較好,失真較小。

          本文引用地址:http://www.ex-cimer.com/article/191487.htm

          2 系統(tǒng)關(guān)鍵技術(shù)
          DDS(Direct Digital Synthesis)是一種應(yīng)用直接數(shù)字合成技術(shù)來產(chǎn)生信號波形的方法。DDS技術(shù)建立在采樣定理的基礎(chǔ)上,它首先對需要的信號波形進(jìn)行采樣、量化,然后存入存儲器作為待產(chǎn)生信號的數(shù)據(jù)查詢表。在輸出信號波形時(shí),從數(shù)據(jù)表依次讀出數(shù)據(jù),產(chǎn)生數(shù)字信號。
          輸入時(shí)鐘頻率和輸出波形信號的頻率關(guān)系如圖4所示。在圖4中To表示輸出波形的周期,Tc為采樣周期,2N為ROM查詢表尋址范圍,K為頻率控制字。由圖可知To=Tc*2N/K,轉(zhuǎn)換為頻率可表示為fo=fc*K/2N,fc為時(shí)鐘信號clk的頻率。

          e.JPG


          在本設(shè)計(jì)中N=8,因此信號的輸出頻率fo=fc*K/256。

          3 軟件設(shè)計(jì)
          軟件設(shè)計(jì)主要是在中通過Verilog硬件語言進(jìn)行相位累加器和ROM查詢表的編程實(shí)現(xiàn),這兩部分采用Quartus軟件和Matlab軟件并行開發(fā)。
          3.1 相位累加器的實(shí)現(xiàn)
          相位累加器主要用于產(chǎn)生ROM查詢表所需的地址信息。圖5為在Quartus軟件中編程生成的相位累加器符號,相位累加器的輸入信號包括時(shí)鐘信號clk、復(fù)位信號clr和頻率控制字K。輸出信號addr[7…0]為ROM查詢表的輸入地址信號。

          f.JPG


          相位累加器類似一個(gè)計(jì)數(shù)器。首先,軟件設(shè)置相位累加器的基數(shù)為0,并通過時(shí)鐘信號clk上升沿觸發(fā),基數(shù)與頻率控制字K相加,相加后的值反饋到相位累加器的輸入端作為下一次的基數(shù)。當(dāng)相位累加器的溢出時(shí),—個(gè)完整的階梯正弦信號就從ROM查詢表的輸出端輸出。因此,相位累加器的溢出率就是的輸出頻率。相位累加器的仿真波形如圖6所示。

          5z.jpg



          關(guān)鍵詞: FPGA 正弦波信號 發(fā)生器

          評論


          相關(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); })();