引言
溫度測量在現代工業生產過程中發揮著重要的作用, 無論對于大型企業還是眾多的小 型工廠, 往往需要監測多個設備的幾十個溫度值[1]。在分布式溫度采集系統中,通常采用單 片機作為系統的控制器,系統工作時依次采集每一個探測器的溫度值并存儲。如果監測到某 個探測點的溫度有異常,系統就會根據用戶的需要做出相應的反映。然而,當監測點數量很 多時,單片機輪流地采集完每一個監測點的溫度值會花費相對較長的時間,如果這個過程中 有某個測量點溫度異常將不能實時地反映到系統中,使得溫度采集系統的實時性降低。
現場可編程門陣列(FPGA)是美國Xilinx 公司在20 世紀80 年代中期率先推出的一種 高密度可編程邏輯器件,它既具有PLD 可編程的靈活性,又有掩膜門陣列(GA)高集成度 和通用性,單片FPGA 的集成規模已達到幾百萬門,其工作頻率已超過300MHz[2]。本文以 FPGA 作為分布式溫度采集系統的控制器,與以往利用單片機作為控制器的系統相比,提高 了系統整體的實時性和穩定性。
本系統中溫度傳感器采用的MAXIM 公司的1-Wire 器件DS18B20,DS18B20 溫度傳感 器由于其結構簡單、安裝方便、功耗低、測溫范圍寬而被廣泛的應用于化工、糧食、環境監 測等需要實現多點測溫的地方[3];1-Wire 技術采用一根信號線進行雙向數據傳輸,一個控制 器可以控制一個或多個從機設備,與其他標準串行數據通信方式如SPI、I2C 相比,單總線 具有節省系統I/O 口線資源、結構簡單、成本低廉、便于總線擴展和維護等諸多優點[4]。
由于 1-Wire 總線只有一根信號線,所以要完成通信就要在一根信號線上實現數據的雙 向傳輸。1-Wire 通信協議對時序的要求非常嚴格,協議中一共規定了五種類型的通信時序, 分別為初始化(復位)時序、寫“1”時序、寫“0”時序、讀“1”時序和讀“0”時序,如 圖1 所示。所有通信都由這五種典型時序組合完成,就是說要控制好這五種時序,才能實現 對1-Wire 器件的控制。
2 實時分布式溫度采集系統設計
大多數基于DS18B20 的溫度采集系統采用單片機作為控制器,可以監測多個溫度點的 溫度。雖然監測點的數目可以很多,但是卻無法做到同時對每一個監測點進行監測。原因在 于單片機在一個時間周期只能執行一條指令,無法實現并行的動作了。然而采用FPGA 作 為控制器將大大提升溫度監測系統的實時性,FPGA 的動作是由時鐘來驅動的,因此可以在 同一時鐘可完成多個動作。FPGA 可以并行地處理數據,這是單片機無法做到的。本文設計 的溫度監測系統就是利用了FPGA 的這個優勢,實現了對多個監測點實時進行監測。
2.1 系統硬件設計
FPGA 選用Altera 公司主流Cyclone 系列高性價比的EP1C6Q240C8N。測溫系統的原理 圖如圖2 所示,由FPGA、顯示部分、按鍵部分和采集部分組成。雖然單總線允許在總線上 掛載多個1-Wire 器件并實現多點控制,但這樣卻無法同時對每一個1-Wire 器件實現控制。 所以本系統的采集部分使每個DS18B20 都單獨享有一條總線,每條總線都與FPGA 的一個 I/O 口相連。系統選用的FPGA 一共有240 個管腳,不算電源和配置管腳,可用的I/O 管腳 達到了179 個,除去顯示和按鍵部分所用去的I/O 管腳,理論上還可以掛載上百個DS18B20。
按鍵部分的設計提供人機交互,可以設定最低溫度警告數值和最高溫度警告數值,通過 按鍵可以瀏覽每一個溫度點的測量值。顯示部分負責顯示每一個測量點的標號和對應的溫度 值。FPGA 負責控制溫度的采集,并將每一個測量點的溫度與設定好的最低溫度和最高溫度 進行實時比較,一旦某監測點的溫度超標將立刻發出警報提示。
2.2 軟件編程設計
本系統是連續實時采集溫度的,所以需要有一個核心控制部分來實現對DS18B20 發送 復位、溫度轉換和溫度讀取指令的功能。控制部分采用有限狀態機來實現,狀態與狀態之間 的轉換需要一定的轉移條件,這個轉移條件可以是一個定義的信號量,當信號量的數值改變 時,狀態機就通過信號量的數值來決定轉換到哪一個狀態。
根據有限狀態機與溫度采集控制器的對應關系,可以參照控制器的操作控制步來確定有 限狀態機的狀態。設發送復位指令的狀態值為“000”,發送跳過ROM 指令的狀態值為“001”, 發送轉換溫度指令的狀態值為“011”,發送讀取暫存指令的狀態值為“101”,讀取溫度數據 的狀態值為“100”。狀態機的狀態都確定以后,便做出有限狀態機狀態轉移圖,如圖3 所示。
根據以上的分析,接下來用 VHDL 語言編寫描述有限狀態機功能的程序。程序使用兩 個進程來描述有限狀態機的功能:state_transfer 進程用來描述有限狀態機中的次態邏輯和狀 態寄存器,通過CASE 語句,根據次態邏輯值實現狀態值的改變;output_logic 進程用來描 述有限狀態機中的輸出邏輯,通過IF 語句判斷狀態值,然后轉入相應的指令程序。
3 基于FPGA 與基于單片機控制DS18B20 的比較與討論
3.1 保證時序精確
單片機作為基于DS18B20 的溫度監測系統的控制器,用匯編語言編寫程序,很容易控 制時間,因為我們知道每條語句的執行時間,每段宏的執行時間,每段子程序加調用語句所 消耗的時間[5]。但是當系統進入中斷,時序的控制就無法保證精確。
如果用 FPGA 作為基于DS18B20 的溫度監測系統的控制器,在保證1-Wire 通信協議時 序上就有足夠的把握。因為控制時序程序、顯示部分程序和人機交互程序等都在相互獨立的 進程上同時運行,保證了系統的實時性和可靠性。
3.2 查找序列號
單片機的管腳有限,所以要用單片機監測多個溫度點時,就需要將多個DS18B20 掛在 一條總線上。很顯然,序列號匹配工作需要額外的時間,而且在讀取一個測溫點溫度值的過 程中,其它的測溫點也都完成了測溫并等待讀取,這無疑降低了測溫的效率。
用 FPGA 代替單片機,以上問題就不存在了。首先FPGA 具有豐富的管腳資源,可以 讓每個傳感器都單獨使用一根數據線。這樣不但可以實現同時讀取每一個傳感器的溫度值, 而且可以不用進行序列號的匹配。大大提高了整個系統測溫的效率,維護更加方便快捷。
3.3 成本考慮
單片機技術如今已經非常成熟,應用領域也非常廣泛,價錢也非常便宜,普通的型號價 格在1 美元左右,最高端的型號也只有10 美元。因此用單片機作為控制器,整體系統的成 本相對較低。雖然FPGA 如今也已經得到了廣泛的普及,但是價格還是相對較高,因此用 FPGA 作為系統的控制器,成本就相對高一些。
4 結論
使用FPGA 作為DS18B20 的控制器,可以保證時序上精確符合單總線通信協議,系統 運行時控制部分、顯示部分、人機交互部分可以并行地運行互不干擾,提高了整體系統的實 時性與穩定性;與用單片機作為控制器的系統做出比較,分析了兩者作為控制器的優缺點。
基于 FPGA 和DS18B20 的分布式溫度采集系統,可實現同時監測多個溫度點,并無需 知道每一個傳感器的序列號,大大提高了溫度采集系統的實時性和可靠性。雖然基于FPGA 的系統成本相對較高,但為分布式溫度采集實時性要求較高的應用場合提出了解決辦法。
-
FPGA
+關注
關注
1630文章
21766瀏覽量
604604 -
芯片
+關注
關注
456文章
51004瀏覽量
425254 -
控制器
+關注
關注
112文章
16412瀏覽量
178721 -
溫度采集
+關注
關注
0文章
99瀏覽量
23435
發布評論請先 登錄
相關推薦
評論