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

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 基于SOPC的任意波形發(fā)生器設計

          基于SOPC的任意波形發(fā)生器設計

          作者: 時間:2017-02-06 來源:網(wǎng)絡 收藏


          如果波形可以數(shù)學描述,就可以采用公式波這種方法。在GUI界面中,設置了公式波的公式輸入文本編輯框,只需要在文本編輯框中輸入公式,根據(jù)它已有的條件就可以產(chǎn)生信號波形。在本設計中,由于輸入的公式是用戶自定義的,用戶可以使用多種算法或者運用MATLAB自帶的函數(shù)庫。在MATLAB的界面設計中,文本編輯框里輸入文本后,MATLAB會把輸入的文本默認成字符串,當想對這些輸入在文本編輯框里的公式進行計算時,MATLAB無法識別,在這里使用eval函數(shù)對字符串進行處理。eval函數(shù)將符號表達式轉(zhuǎn)化為數(shù)值表達式,這樣就能使MATLAB執(zhí)行該公式,公式法產(chǎn)生的波形更精確。

          使用繪圖法編輯波形,只需點擊“任意波形”按鈕,然后按照提示在坐標軸內(nèi)點擊鼠標右鍵取點畫出所要波形的大概形狀,再點擊鼠標左鍵就可以產(chǎn)生用戶想要的波形;當使用公式法編輯波形,只需按提示在編輯框中寫入所要產(chǎn)生的波形公式,點擊“公式波”按鈕,系統(tǒng)就會立刻對輸入公式進行計算,并向硬件傳送改變波形類型的字符,然后再把數(shù)據(jù)發(fā)送到硬件上。

          4 實驗結(jié)果

          該系統(tǒng)所有實驗結(jié)果均由RIGOL 公司DS5022M 數(shù)字存儲示波器采樣所得。

          圖4所示為采用公式法輸入的GUI 界面和產(chǎn)生的相應1kHz 任意波形,輸入公式為Sin(2*pi*x)+sin(4*pi*x),其中變量x的范圍為0到1。



          圖4 公式法輸入的GUI 界面和產(chǎn)生的任意波形

          圖5所示為采用繪圖法輸入的GUI界面和產(chǎn)生的相應50kHz任意波形。



          圖5 繪圖法輸入的GUI界面和產(chǎn)生的任意波形

          從上面的實驗結(jié)果可以看到,該系統(tǒng)不僅可以產(chǎn)生方波、正弦波、三角波、鋸齒波等常見波形,還可以實現(xiàn)真正意義上的任意波形。系統(tǒng)頻率誤差小于1%,且具有很高的頻率調(diào)制精度,實驗結(jié)果符合各項設計指標。

          5 總 結(jié)

          該系統(tǒng)采用DDS 技術,通過基于NIOS Ⅱ的SOPC 系統(tǒng)實現(xiàn)了任意波形發(fā)生器。DDS技術在相對帶寬、頻率轉(zhuǎn)換時間、相位連續(xù)性、正交輸出、高分辨率及集成化等一系列性能指標方面遠遠超過了傳統(tǒng)頻率合成技術所能達到的水平,為系統(tǒng)提供了優(yōu)于模擬信號源的性能;而基于NIOS Ⅱ的SOPC 系統(tǒng)可以根據(jù)用戶需要自由定制CPU 及其外設,其靈活性和通用性使其成為未來系統(tǒng)設計的一大趨勢。

          該設計完成了任意波形發(fā)生器的軟硬件設計和調(diào)試,實驗結(jié)果表明,該波形發(fā)生器基本達到了設計要求。

          上一頁 1 2 下一頁

          關鍵詞: SoPC波形發(fā)生

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();