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

          新聞中心

          EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA與有限狀態(tài)機的高精度測角系統(tǒng)的設計與實

          基于FPGA與有限狀態(tài)機的高精度測角系統(tǒng)的設計與實

          作者: 時間:2013-04-24 來源:網(wǎng)絡 收藏

          3 系統(tǒng)設計與實現(xiàn)

          3.1 軟硬件平臺

          根據(jù)以上分析,編碼器輸出的原始信號經過處理后,得到了四倍頻的輸出信號。本系統(tǒng)采用實現(xiàn)四倍頻控制和計數(shù)功能,與用分立器件構成的倍頻計數(shù)電路相比,具有穩(wěn)定度高,移植性靈活,可靠性好的特點。

          硬件采用Altera公司的Cyclone系列芯片EP1C12Q240,編譯環(huán)境為Quartus II 5.1集成開發(fā)環(huán)境。在Quartus II的開發(fā)環(huán)境中,可以通過兩種方法來實現(xiàn)Mealy。第一采用硬件描述語言,第二通過Quartus II中的狀態(tài)機編輯工具來完成。本設計采用硬件描述語言來實現(xiàn)狀態(tài)機設計。

          3.2 程序設計

          為了提高系統(tǒng)的實用性和穩(wěn)定性,濾掉信號上的毛刺,在A、B相信號進入狀態(tài)機前,先設計一個濾波器進行初次濾波,每個信號用4個D觸發(fā)器和1個判決器來濾波;觸發(fā)器由時鐘SCLK驅動。小于一個SCLK時鐘周期的毛刺,都被濾波器濾掉了。濾波器的原理圖如圖5所示[6-7]。

          整個程序的設計是采用圖形和語言相結合的方法來實現(xiàn)的。頂層設計采用圖形文件,頂層模塊的結構圖如圖6所示。

          內部的狀態(tài)機模塊采用VHDL語言來實現(xiàn)。頂層模塊包含兩個模塊,一個濾波器模塊,該模塊根據(jù)三選二判決的原理來濾掉毛刺;另一個模塊是狀態(tài)機模塊,最終輸出編碼器計數(shù)的結果。Input[0]和input[1]輸入引腳分別連接增量型編碼器A相和B相信號。q[31..0]為32位的計數(shù)器,輸出當前編碼器的計數(shù)值,dirout是編碼器的旋轉方向信號。

          程序設計完成后,在仿真工具modelsim下進行波形仿真。仿真結果如圖7所示。從圖中看出,計數(shù)器能夠實現(xiàn)正向與反向計數(shù),可以有效濾除脈沖上的抖動,獲得精確的計數(shù)值。

          本文提出了一種基于測量系統(tǒng),在上用有限狀態(tài)機實現(xiàn)了編碼器輸出脈沖的去抖,并通過32位計數(shù)器實現(xiàn)精確計數(shù)。最終在ARM處理器上完成角度的計算。通過大量反復試驗,試驗結果表明本文介紹的方法具有精度高、成本低、接口兼容性高、可靠性高、可移植性好等優(yōu)點,可以有效抑制噪聲干擾,獲得的角度數(shù)據(jù)。該方法已經成功應用在激光跟蹤測量系統(tǒng)中,該技術的推廣可以取得良好的經濟效益,具有重要實用意義。

          fpga相關文章:fpga是什么


          脈沖點火器相關文章:脈沖點火器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

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