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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SOPC技術(shù)的多通道實(shí)時(shí)溫度采集系統(tǒng)

          基于SOPC技術(shù)的多通道實(shí)時(shí)溫度采集系統(tǒng)

          作者: 時(shí)間:2015-03-19 來(lái)源:網(wǎng)絡(luò) 收藏

            2.4 FPGA邏輯控制模塊

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

            基于FPGA的采集控制單元,采用自頂而下的模塊化設(shè)計(jì)方法,使用Verilog HDL語(yǔ)言完成各控制模塊的設(shè)計(jì)。FPGA邏輯控制模塊包括A/D采樣控制模塊、FIFO讀寫(xiě)控制模塊和SPC3控制模塊。

            2.4.1 A/D采樣控制模塊

            A/D采樣控制模塊負(fù)責(zé)控制外部ADS8402芯片多路模擬輸入量的選通,并實(shí)現(xiàn)對(duì)A/D采樣過(guò)程的合理控制。

            由于ADS8402對(duì)16通道的模擬量采取分時(shí)轉(zhuǎn)換的方式,因此在啟動(dòng)轉(zhuǎn)換的同時(shí)還要進(jìn)行通道選擇。ADS8402設(shè)置了4根通道地址線A0、A1、A2、A3,以及地址鎖存允許信號(hào)ALE.當(dāng)ALE變高時(shí),鎖存由A0、A1、A2、A3編碼所確定的通道號(hào),將該通道的模擬量接入A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。依據(jù)這樣的特性,設(shè)計(jì)一個(gè)帶復(fù)位端的十六進(jìn)制計(jì)數(shù)器,其計(jì)數(shù)輸出端Q3、Q2、Q1、Q0分別與ADS8402的4根地址線相連。計(jì)數(shù)器上電復(fù)位以確保系統(tǒng)從0號(hào)通道開(kāi)始采樣。將ADS8402的轉(zhuǎn)換結(jié)束信號(hào)EOC作為計(jì)數(shù)器的時(shí)鐘信號(hào),實(shí)現(xiàn)一路轉(zhuǎn)換結(jié)束后自動(dòng)啟動(dòng)對(duì)下一路模擬輸入的采樣控制。

            

           

            圖2 ADS8402采樣控制狀態(tài)轉(zhuǎn)換圖

            A/D采樣過(guò)程的控制采用有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn),把某一通道的采樣過(guò)程劃分為7個(gè)狀態(tài),如圖2所示。首先S0狀態(tài)對(duì)各個(gè)控制信號(hào)進(jìn)行初始化。在S1狀態(tài)產(chǎn)生ALE信號(hào)的上升沿,鎖存通道地址。啟動(dòng)信號(hào)START應(yīng)在產(chǎn)生ALE信號(hào)的同一時(shí)鐘下降沿產(chǎn)生,由于VHDL語(yǔ)言在同一進(jìn)程內(nèi)不允許時(shí)鐘的兩個(gè)沿作為敏感變量,所以將產(chǎn)生START信號(hào)單列為一個(gè)狀態(tài)S2,啟動(dòng)轉(zhuǎn)換。在啟動(dòng)轉(zhuǎn)換后,ADS8402使EOC置為低電平,設(shè)置S3狀態(tài)等待A/D轉(zhuǎn)換結(jié)束。轉(zhuǎn)換結(jié)束后,EOC信號(hào)由低電平轉(zhuǎn)換為高電平,狀態(tài)機(jī)進(jìn)入S4狀態(tài),開(kāi)啟輸出允許OE.狀態(tài)機(jī)進(jìn)入S5狀態(tài),開(kāi)啟數(shù)據(jù)鎖存信號(hào)LOCK鎖存數(shù)據(jù)。為產(chǎn)生與其他進(jìn)程通信的信號(hào),狀態(tài)機(jī)設(shè)置S6作為最后一個(gè)狀態(tài),然后跳轉(zhuǎn)回SO初始狀態(tài)。

            2.4.2 FIFO讀寫(xiě)控制模塊

            采用2片F(xiàn)IFO輪流讀寫(xiě)操作,實(shí)現(xiàn)FPGA與PC機(jī)之間的數(shù)據(jù)緩存。乒乓傳輸控制原理示意圖如圖3所示,圖中的實(shí)線箭頭與虛線箭頭分別代表不同的讀寫(xiě)數(shù)據(jù)周期。輸入數(shù)據(jù)流通過(guò)輸入數(shù)據(jù)流選擇單元,等時(shí)地將數(shù)據(jù)流分配到FIFO1、FIFO2中。在第1個(gè)緩沖周期,將輸入的數(shù)據(jù)流緩存到FIFO1.在第2個(gè)緩沖周期,通過(guò)輸入數(shù)據(jù)流選擇單元的切換,將輸入的數(shù)據(jù)流緩存到FIFO2,與此同時(shí),將FIFO1緩存的第1個(gè)周期的數(shù)據(jù)通過(guò)輸出數(shù)據(jù)流選擇單元的選擇,送到數(shù)據(jù)流運(yùn)算處理模塊被運(yùn)算處理。在第3個(gè)緩沖周期,通過(guò)輸入數(shù)據(jù)流選擇單元的再次切換,將輸入的數(shù)據(jù)流緩存到FIFO1,與此同時(shí),將FIFO2緩存的第2個(gè)周期的數(shù)據(jù)通過(guò)輸出數(shù)據(jù)流選擇單元的切換,送到數(shù)據(jù)流運(yùn)算處理模塊被運(yùn)算處理。如此循環(huán),周而復(fù)始。

            

           

            圖3 FIFO乒乓傳輸控制原理

            2.4.3 SPC3控制模塊

            由于SPC3集成了完整的DP協(xié)議,因此在進(jìn)行通信時(shí),F(xiàn)PGA不用參與處理DP狀態(tài)機(jī)。主要任務(wù)是根據(jù)SPC3產(chǎn)生的中斷,將SPC3接收到的數(shù)據(jù)轉(zhuǎn)存,組織要通過(guò)SPC3發(fā)給的數(shù)據(jù),并根據(jù)要求組織外部診斷。在SPC3正常工作之前,需要進(jìn)行初始化,以配置需要的寄存器,包括設(shè)置協(xié)議芯片的中斷允許,寫(xiě)入從站識(shí)別號(hào)和地址,設(shè)置SPC3方式寄存器,設(shè)置診斷緩沖區(qū),配置緩沖區(qū)、地址緩沖區(qū)、初始化長(zhǎng)度,并根據(jù)以上初始值得出各個(gè)緩沖區(qū)的指針和輔助緩沖區(qū)的指針。通信模塊的控制流程如圖4所示。

            

           

            圖4 通信模塊控制流程

            3系統(tǒng)的FPGA實(shí)現(xiàn)

            3.1 Nios II系統(tǒng)架構(gòu)設(shè)計(jì)

            Nios II系統(tǒng)模塊包含:Nios II處理器、Avalon總線、并行輸入/輸出口PIO、串行外圍設(shè)備接口SPI、定時(shí)器Timer、片內(nèi)存儲(chǔ)器EPCS、片外存儲(chǔ)器SDRAM、PROFIBUS-DP的客戶定制邏輯。由Nios II處理器完成程序控制,主要負(fù)責(zé)對(duì)溫度的采集與數(shù)據(jù)存儲(chǔ)操作,并控制PROFIBUS -DP的通信過(guò)程。其架構(gòu)如圖5所示。

            

           

            圖5 Nios II系統(tǒng)架構(gòu)

          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理


          溫濕度控制器相關(guān)文章:溫濕度控制器原理
          熱電偶相關(guān)文章:熱電偶原理


          關(guān)鍵詞: DSP SOPC

          評(píng)論


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