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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于CycloneII系列FPGA的DDFS信號源實現(xiàn)

          基于CycloneII系列FPGA的DDFS信號源實現(xiàn)

          作者: 時間:2009-12-11 來源:網(wǎng)絡 收藏

          3 實現(xiàn)
          根據(jù)的原理,其設計原理如圖2所示。其中控制單元由有限狀態(tài)機構(gòu)成。雖然整個系統(tǒng)的控制不一定需要使用有限狀態(tài)機,但由于使用的芯片不支持異步的ROM,即從地址鎖存進入ROM單元,到數(shù)據(jù)從ROM中讀出有至少一個時鐘周期以上的延時。因此采用狀態(tài)機來進行控制,可以達到較好的輸出與時鐘同步??刂屏鞒虨椋簳r鐘信號進入控制單元,由它產(chǎn)生地址發(fā)生單元的輸入時鐘adrclk,地址發(fā)生單元在時鐘adrclk的驅(qū)動下,結(jié)合輸入的步進信號Step,產(chǎn)生地址及此地址所對應的象限Phase,此地址產(chǎn)生后立即輸入到ROM單元中,過兩個時鐘周期后,控制單元從ROM存儲單元中讀出輸入地址對應的數(shù)據(jù),并在時鐘的控制下,將前面所產(chǎn)生的象限值Phase與ROM數(shù)據(jù)一起送到補碼轉(zhuǎn)換單元,補碼轉(zhuǎn)換單元根據(jù)Phase的值來決定是否需要進行補碼轉(zhuǎn)換,若需要,則進行補碼運算并將數(shù)據(jù)輸出,若不需要,則直接將數(shù)據(jù)輸出。下面給出各模塊的具體設計細節(jié)。

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

          (1)控制單元:控制單元是整個系統(tǒng)的核心部件。由一個簡單的有限狀態(tài)機構(gòu)成。其狀態(tài)轉(zhuǎn)換圖如圖3所示。

          (2)地址發(fā)生單元:設計思路為根據(jù)輸入的Step值,計算出總共四個象限所需取值的點數(shù),也就可以計算出一個象限所要取值的點數(shù)m,然后在時鐘作用下進行計數(shù),當計數(shù)值達m個時,說明一個象限內(nèi)已經(jīng)取完點,此時phase自加1,計數(shù)變量重新置零。由于在(0,π/2)sin的函數(shù)值為從0→1變化;(π/2,π)函數(shù)值從1→0變化;(π,3π/2)函數(shù)值從0→-1變化;(3π/2,2π)函數(shù)值從-1→0變化。故在(0,π/2)和(π,3π/2)地址值從0→32767,每隔一個步進Step讀一個數(shù)據(jù),當然后者的數(shù)據(jù)要經(jīng)過補碼單元的處理;而在(π/2,π)和(3π/2,2π)象限,地址值則從32767→0,每隔一個步進Step讀一個數(shù)據(jù)即可,同樣的,后者的數(shù)據(jù)也要經(jīng)過補碼單元的處理。
          (3)ROM存儲單元:ROM存儲單元的數(shù)據(jù)可以通過Matlab進行計算獲得,并將其存儲為*.mif的文件格式。在進行ROM設計時,調(diào)用此mif文件作為ROM的初始數(shù)據(jù)文件即可。
          (4)補碼轉(zhuǎn)換單元:根據(jù)目前地址所處象限來決定是否需要進行補碼轉(zhuǎn)換。如產(chǎn)生正弦信號時,(0,π)象限sin函數(shù)值為正,而(π,2π)象限上sin函數(shù)值為負,因此在(π,2π)象限時,需要對輸出數(shù)據(jù)進行補碼轉(zhuǎn)換。補碼轉(zhuǎn)換單元較簡單,根據(jù)二進制數(shù)取補的原理進行設計即可。



          評論


          相關推薦

          技術專區(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); })();