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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的測角脈沖細(xì)分電路的設(shè)計

          基于FPGA的測角脈沖細(xì)分電路的設(shè)計

          作者: 時間:2011-03-09 來源:網(wǎng)絡(luò) 收藏

          2 基于細(xì)分的設(shè)計
          2.1 總體設(shè)計
          大部分的角度傳感器輸出信號都是由兩路相位差90°的信號組成,設(shè)計時首先可以對兩路信號進(jìn)行鑒相解調(diào)與倍頻,一方面完成轉(zhuǎn)向的判斷,另一方面將兩路信號四倍頻;接著設(shè)計整數(shù)計數(shù)器、小數(shù)脈沖計數(shù)器,對相應(yīng)脈沖數(shù)進(jìn)行計數(shù);最后將計數(shù)值通過串口通信單元順序發(fā)送至計算機(jī),方便后期的數(shù)據(jù)處理。這里最為關(guān)鍵的問題是利用脈沖細(xì)分技術(shù)計出被測脈沖的小數(shù)部分,另外指示脈沖對計數(shù)器的控制精度關(guān)系到計數(shù)值的準(zhǔn)確與否,因此要利用性能良好的硬件并巧妙地設(shè)計程序。這里硬件選擇了,程序則是利用HDL語言進(jìn)行編寫,脈沖細(xì)分總體設(shè)計如圖2所示。

          c.JPG
          2.2 整數(shù)脈沖計數(shù)器
          為了更準(zhǔn)確地對倍頻后的脈沖進(jìn)行計數(shù),在設(shè)計時,電路采用了2個計數(shù)器輪流計數(shù),指示脈沖控制2個計數(shù)器交替工作。具體方法是將兩個計數(shù)器的使能信號分別設(shè)置為1和0,由指示脈沖控制使能信號,在每一個指示脈沖到來時使能信號取反。另外,由于計數(shù)值很大,為了保證數(shù)值不會溢出,使用32位計數(shù)器。
          2.3 小數(shù)脈沖計數(shù)單元
          由脈沖細(xì)分技術(shù)可知,小數(shù)脈沖計數(shù)單元是要對指示脈沖上升沿與在其之后的第一個測角脈沖上升沿之間的高頻計數(shù)時鐘脈沖計數(shù)。測角脈沖信號是周期性的,而設(shè)計時要用到的只是指示脈沖之后的第一個陀螺信號的上升沿,這給小數(shù)脈沖計數(shù)的設(shè)計帶來了困難,在設(shè)計時使用了有限狀態(tài)機(jī)。這里主要利用整數(shù)脈沖計數(shù)單元中設(shè)計的整數(shù)計數(shù)器使能信號CLR與測角脈沖信號CH的狀態(tài)組合來設(shè)計狀態(tài)機(jī),利用狀態(tài)機(jī)輸出小數(shù)脈沖計數(shù)器的工作使能信號ENA,這里狀態(tài)都是在時鐘CLK上升沿轉(zhuǎn)換。圖3與圖4分別為小數(shù)計數(shù)器工作時序圖與使能信號狀態(tài)機(jī)。

          d.JPG

          DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




          關(guān)鍵詞: FPGA 脈沖 電路

          評論


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