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

          新聞中心

          EEPW首頁 > 光電顯示 > 設計應用 > 基于FPGA技術的交通燈控制系統(tǒng)設計

          基于FPGA技術的交通燈控制系統(tǒng)設計

          作者: 時間:2009-05-06 來源:網絡 收藏
          計數模塊的如圖3所示,從圖中可以看出,在時鐘的驅動下,計數值不斷自加,當計數值countnum等于鍵盤輸入值32(key=32)時,計數返回到0,開始下一輪計數。當Hold檢測到特殊情況時置‘1’,使計數器暫停計數。
          3.2 控制器模塊的
          在控制器模塊中,紅、綠、黃三盞燈工作的總時間由鍵盤輸入,各燈時間分配規(guī)則如下:紅燈時間占總時間的1/2,綠燈時間占3/8,黃燈時間占1/8,本中鍵盤輸入值為32(key=32),正常情況下紅燈亮16 s,綠燈亮12 s,黃燈亮4 s。
          控制器情況如圖4所示,當hold為低電平,計數值countnum12時,greenA輸出高電平,A東西方向綠燈亮起車輛通行,此時與之相對應的redB輸出高電平,B方向紅燈亮起車輛禁行。A方向顯示燈閃爍持續(xù)時間的數碼管numA從12開始遞減,同時B方向顯示燈閃爍持續(xù)時間的數碼管numB從16開始遞減。當12countnum16時,yellowA輸出高電平,A方向黃燈亮起,numA從數值4開始倒計時,此時greenB仍處于低電平,numB繼續(xù)倒計時,B方向紅燈閃亮車輛仍處于禁行狀態(tài)。當countnum>16,redA輸出高電平,A方向紅燈亮起車輛禁行,numA從數值16開始倒計時,此時greenB輸出高電平,B方向綠燈亮起車輛通行,numB從數值12開始遞減。當16countnum28時,redA繼續(xù)處于高電平狀態(tài),numA繼續(xù)倒計時,A方向車輛禁行,而此時yellowB輸出高電平,B方向黃燈亮起,numB從數值4開始遞減。當hold為‘1’時,表示進入緊急狀態(tài),FLASH置‘1’,各方向的紅燈均亮起,所有機動車禁行。
          3.3 分位模塊
          分位模塊的設計主要是將燈亮時間分為十位和個位,通過兩個相應的數碼管分別顯示出來。本設計中燈亮時間最長不超過40 s(numin40),numA,numB分別表示十位、個位上的數字,分位模塊程序設計的流程圖如圖5所示。
          分位模塊的仿真如圖6所示,numin的數值大小可以通過numA,numB的組合以十進制數值顯示,從而實現了分位功能。
          4 系統(tǒng)的硬件設計及調試
          本系統(tǒng)的主要邏輯設計由一片EPlK30TC144-3芯片完成,編寫的VHDL源程序在Altera公司的邏輯綜合Max+PlusⅡ下經過編譯和功能仿真測試后,針對下載芯片進行管腳配置,下載到EPlK30TC144-3芯片中,進行相應的硬件調試,調試結果與仿真的結果相吻合,驗證了設計完成了預定功能。
          5 結 語
          本文利用硬件描述語言VHDL編程,借助Altera公司的Max+PlusⅡ環(huán)境下進行了編譯及仿真測試,通過芯片實現了一個實用的交通信號燈,設計由于采用了EDA,不但大大縮短了開發(fā)研制周期,提高了設計效率,而且使系統(tǒng)具有設計靈活,實現簡單,性能穩(wěn)定的特點。

          上一頁 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); })();