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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于單片機與CPLD的無線控制系統(tǒng)

          基于單片機與CPLD的無線控制系統(tǒng)

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

          3 系統(tǒng)硬件連接組成以及工作過程
          使用代替的外圍接口芯片,與AVR構成的相連如圖2所示。系統(tǒng)的主要部分僅需要2片集成電路,AVR系列AT―megal62和XC2C256。單片機與之間的接口是通過單片機的地址/數(shù)據(jù)復用總線(PORTA端口)以及讀寫控制I/O口(WR,RD,ALE)與的I/O口相連來進行數(shù)據(jù)、狀態(tài)的傳輸。
          在單片機中對擴展的I/O端口進行統(tǒng)一編址,通過C語言可以方便地訪問I/O端口,單片機要往數(shù)據(jù)端口或控制端口輸出信息,必須先把地址送到地址總線上,將確定的控制信息送到控制總線上,再把數(shù)據(jù)信息送到數(shù)據(jù)總線上。經(jīng)過CPLD的內(nèi)部邏輯進行地址、數(shù)據(jù)鎖存,并譯碼以獲得擴展的端口號,從而獲得對各個外部功能子模塊的控制信號,端口號COM1,COM2,COM3。COM4,COM5,COM6,COM7分別是模塊控制、時間統(tǒng)一控制、數(shù)據(jù)采集控制、電源管理控制、片選選擇控制、狀態(tài)選擇以及可擴展模塊控制等的控制端口,而且通過控制片選端口號(COM5端口),可以對各個功能子模塊進行SPI串行數(shù)據(jù)的傳輸,從而達到對SPI串行標準接口的擴展。

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

          通過選擇不同的I/O端口可以控制讀取、寫入各外圍處理模塊的數(shù)據(jù)。要讀取某一外圍處理模塊的數(shù)據(jù),必須先讀取狀態(tài)選擇端口COM6的狀態(tài)信息,狀態(tài)選擇RDY(數(shù)據(jù)準備好)就緒時,通過向此處理模塊控制端口COM寫入控制信息來控制子模塊的工作模式,再通過寫片選端口COM5來選擇子模塊,從而啟動SPI實現(xiàn)讀取子模塊的數(shù)據(jù)。與此對應,寫入數(shù)據(jù)也需要讀取狀態(tài)信息,再控制某一子模塊的工作模式,選擇片選信號,啟動SPI寫,就可以實現(xiàn)寫入數(shù)據(jù)的功能。


          4 CPLD軟件設計
          采用Xilinx公司的CPLD開發(fā)軟件Xilinx ISE完成系統(tǒng)的軟件設計,Xilinx ISE支持原理圖輸入、HDL語言輸入、狀態(tài)圖輸入和混合輸入等輸入方法。其中HDL語言中的VHDL硬件描述語言,與具體的工藝技術和器件無關,易于共享和復用,具有多層次描述系統(tǒng)硬件功能的能力。
          在設計中,CPLD需要實現(xiàn)的功能為地址譯碼端口以及控制不同端口的電路設計,用VHDL語言對進行編程編譯,然后采用元件例化的方法得到電路結構如圖3所示。

          CPLD中所設計的程序片斷:



          評論


          相關推薦

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