王延年,邢雷,張帥
(西安工程大學電子信息學院,西安710048)
溫度是表征物體冷熱程度的物理量,是工業生產中常見和最基本的參數之一,在生產過程中常常需要對溫度進行監控。傳統的溫度采集系統,通常采用單片機或數字信號處理器DSP作為微控制器,控制模數轉換器ADC及其他外圍設備的工作;但是,基于單片機或DSP的高速多路溫度采集系統都有一定的不足。由于單片機運行的時鐘頻率較低,并且單片機是基于順序語言的,各種功能都要靠軟件的運行來實現,因此隨著程序量的增加,如果程序的健壯性不好,會出現“程序跑飛”和“復位”現象。DSP的運算速度快,處理復雜的乘加運算有一定的優勢,但是很難完成外圍設備的復雜硬件邏輯控制。[1]因而單片機或DSP很難滿足在復雜的工業現場進行多路溫度采集時對實時性和同步性的要求。鑒于此,本文介紹一種基于SOPC技術的多通道實時溫度采集系統。該系統開發周期短、資源配置靈活、穩定性良好,滿足了對溫度采集實時性和同步性有較高要求的工業生產領域中的應用。
溫度采集系統的硬件主要由溫度采集模塊、數據存儲模塊、FPGA邏輯控制模塊以及通信模塊組成,其總體架構如圖1所示。

圖1 系統總體架構
系統上電后,先由靜態存儲器EPCS16自動將配置數據載入到FPGA(CycloneII系列的EP2C8Q208C)的SDRAM(HY57V641620)之中,即將固化在其中的數字邏輯電路映射到FPGA器件中。溫度傳感器單元AD590首先采集溫度信號,然后經過信號調理電路的處理,使信號的輸出幅度滿足A/D采樣的量程要求。此時FPGA控制模擬選擇開關ADG706進行通道選擇,同時控制多片16位A/D轉換器ADS8402進行A/D轉換,并將采集到的實時數據分時存儲到兩片類型為FIFO、容量為16K×9位的存儲器IDT72V06中。然后,將其中處于讀狀態的IDT72V06中的數據讀取出來,并經過FPGA控制SPC3通信模塊,通過PROFIBUS總線傳送至上位機。
溫度采集模塊由多片溫度傳感器單元、多路信號調理電路、多路模擬開關電路以及多路A/D轉換器四大部分組成。
溫度傳感器單元采用熱電偶。它具有以下優點:測溫范圍寬,性能穩定;測量精度高,熱電偶與被測對象直接接觸,不受中間介質的影響;熱響應時間快,熱電偶對溫度變化反應靈活;測量范圍大,-40~+1600℃均可連續測溫;性能牢靠,機械強度好;壽命長,按裝方便,特別適合于在復雜的工業生產過程中對溫度的實時檢測。
多路模擬開關電路選用16路模擬選擇開關ADG706。其4位地址位A0、A1、A2、A3的輸入直接由FPGA的I/O端口CH0、CH1、CH2、CH3控制,決定16路輸入信號中要輸出的通道,每條通道選擇指令將同時啟動多片ADG706相應的溫度采集通道。然后啟動相應的溫度采集通道進行A/D轉換。本設計采用高速逐次逼近寄存器(SAR)類比數位轉換器ADS8402,多片ADS8402A/D轉換器的啟動轉換引腳共用FPGA的一個I/O端口A/D Start。ADS8402A/D轉換結果的高、低字節控制引腳BYTE及ADS8402的數據輸出控制,分別由FPGA單獨的I/O控制。FPGA每給A/D Start端口一個100ns的負脈沖,即可啟動多片ADS8402進行相應通道上的數據采集。轉換結束后,可通過控制BYTE端口讀取A/D轉換結果,并暫存到相應的數據單元。
多通道采集信號的路數多、處理的數據量大,需要外擴數據存儲模塊來緩存FPGA處理結果。[2]與此同時,由于上位機的多任務性,它不可能專一對并行口讀取數據,為了保證FPGA控制核心與上位機通信一次性讀取大量數據,本系統用到了2片異步FIFO芯片IDT72V06,其存儲容量16K×9位,存取時間15ns,其中一片用來對采集過來的數據進行存儲,另一片用來讀取存儲在FIFO中的采集數據,以便與上位機進行并行口通信。系統運行過程中,兩片FIFO位擴展進行雙緩存乒乓控制,輪流進行讀寫操作,可大大提高并口通信速度及數據吞吐量。
PROFIBUS-DP是一種經過優化的高速、廉價的通信連接方式,專為自動控制系統和設備級的分散I/O之間的通信而設計,用于分布式控制系統的高速數據傳輸,實現自控系統和分散外圍I/O設備及智能現場儀表之間的高速數據通信。[3]SPC3集成了全部的PROFIBUS-DP協議,SPC3在DP方式下將完成所有DP-SAP的設置。SPC3內部集成了1.5KB的雙口RAM,包括參數寄存器、方式寄存器、狀態寄存器和中斷控制器等。SPC3內部集成的看門狗定時器有3種工作狀態:波特率檢測、波特率控制和從站控制。內部的USART可實現并行數據流和串行數據流的相互轉換,微順序控制器控制整個工作過程,空閑定時器直接控制串行總線時序[4]。通信模塊的設計選用了PROFIBUS-DP專用通信協議芯片SPC3,這樣可加速通信的執行,而且可以減輕微處理器的負擔。
基于FPGA的采集控制單元,采用自頂而下的模塊化設計方法,使用Verilog HDL語言完成各控制模塊的設計[5]。FPGA邏輯控制模塊包括A/D采樣控制模塊、FIFO讀寫控制模塊和SPC3控制模塊。
2.4.1 A/D采樣控制模塊
A/D采樣控制模塊負責控制外部ADS8402芯片多路模擬輸入量的選通,并實現對A/D采樣過程的合理控制。
由于ADS8402對16通道的模擬量采取分時轉換的方式,因此在啟動轉換的同時還要進行通道選擇。ADS8402設置了4根通道地址線A0、A1、A2、A3,以及地址鎖存允許信號ALE。當ALE變高時,鎖存由A0、A1、A2、A3編碼所確定的通道號,將該通道的模擬量接入A/D轉換器進行轉換。依據這樣的特性,設計一個帶復位端的十六進制計數器,其計數輸出端Q3、Q2、Q1、Q0分別與ADS8402的4根地址線相連。計數器上電復位以確保系統從0號通道開始采樣。將ADS8402的轉換結束信號EOC作為計數器的時鐘信號,實現一路轉換結束后自動啟動對下一路模擬輸入的采樣控制。
A/D采樣過程的控制采用有限狀態機來實現,把某一通道的采樣過程劃分為7個狀態,如圖2所示。首先S0狀態對各個控制信號進行初始化。在S1狀態產生ALE信號的上升沿,鎖存通道地址。啟動信號START應在產生ALE信號的同一時鐘下降沿產生,由于VHDL語言在同一進程內不允許時鐘的兩個沿作為敏感變量,所以將產生START信號單列為一個狀態S2,啟動轉換。在啟動轉換后,ADS8402使EOC置為低電平,設置S3狀態等待A/D轉換結束。轉換結束后,EOC信號由低電平轉換為高電平,狀態機進入S4狀態,開啟輸出允許OE。狀態機進入S5狀態,開啟數據鎖存信號LOCK鎖存數據。為產生與其他進程通信的信號,狀態機設置S6作為最后一個狀態,然后跳轉回S0初始狀態。

圖2 ADS8402采樣控制狀態轉換圖
2.4.2 FIFO讀寫控制模塊
采用2片FIFO輪流讀寫操作,實現FPGA與PC機之間的數據緩存。乒乓傳輸控制原理示意圖如圖3所示,圖中的實線箭頭與虛線箭頭分別代表不同的讀寫數據周期。輸入數據流通過輸入數據流選擇單元,等時地將數據流分配到FIFO1、FIFO2中。在第1個緩沖周期,將輸入的數據流緩存到FIFO1。在第2個緩沖周期,通過輸入數據流選擇單元的切換,將輸入的數據流緩存到FIFO2,與此同時,將FIFO1緩存的第1個周期的數據通過輸出數據流選擇單元的選擇,送到數據流運算處理模塊被運算處理。在第3個緩沖周期,通過輸入數據流選擇單元的再次切換,將輸入的數據流緩存到FIFO1,與此同時,將FIFO2緩存的第2個周期的數據通過輸出數據流選擇單元的切換,送到數據流運算處理模塊被運算處理。如此循環,周而復始。

圖3 FIFO乒乓傳輸控制原理
2.4.3 SPC3控制模塊
由于SPC3集成了完整的DP協議,因此在進行通信時,FPGA不用參與處理DP狀態機。主要任務是根據SPC3產生的中斷,將SPC3接收到的數據轉存,組織要通過SPC3發給的數據,并根據要求組織外部診斷。[6]在SPC3正常工作之前,需要進行初始化,以配置需要的寄存器,包括設置協議芯片的中斷允許,寫入從站識別號和地址,設置SPC3方式寄存器,設置診斷緩沖區,配置緩沖區、地址緩沖區、初始化長度,并根據以上初始值得出各個緩沖區的指針和輔助緩沖區的指針。通信模塊的控制流程如圖4所示。

圖4 通信模塊控制流程
Nios II系統模塊包含:Nios II處理器、Avalon總線、并行輸入/輸出口PIO、串行外圍設備接口SPI、定時器Timer、片內存儲器EPCS、片外存儲器SDRAM、PROFIBUS-DP的客戶定制邏輯。[7]由Nios II處理器完成程序控制,主要負責對溫度的采集與數據存儲操作,并控制PROFIBUS-DP的通信過程。其架構如圖5所示。

圖5 Nios II系統架構
Nios II處理器的軟件設計是在軟核內存放一段編寫的C/C++語言控制程序。來控制系統運行,它可以讀寫芯片的存儲單元,同時與外圍的設備進行通信。[8]在本系統中,Nios II程序的任務是:在規定的周期內,FPGA通過通信模塊接收上位機發出的采樣任務及控制參數,然后控制模擬選擇開關ADG706和A/D轉換器ADS8402,使它們對選定通道的模擬信號進行調理及A/D轉換,并讀取采樣數據以乒乓傳輸數據方式傳送至片外FIFO緩存,再通過PROFIBUS-DP通信接口將采樣數據傳輸至上位機。主程序流程如圖6所示。

圖6 主程序流程圖
基于FPGA的多通道實時溫度采集系統以Nios II軟核處理器實現SOPC,進一步簡化了硬件設計。與傳統的基于MCU的多通道溫度采集系統相比,該系統具有資源配置靈活、運行穩定可靠、實時性強等優點。另外,該系統具有標準PROFIBUS-DP接口,作為一個DP從站實現與多種DP主站的通信,可廣泛應用于工業生產領域的PROFIBUS分布式控制系統中。
[1] 楊林楠,李紅剛,張麗蓮,等.基于FPGA的高速多路數據采集系統的設計[J] .計算機工程,2007,33(7):246-248.
[2] 紀大偉,徐抒巖,胡君,等.基于FPGA的多通道高速數據采集系統[J] .儀表技術與傳感器,2011(12):69-71.
[3] 王斌.FPGA在現場總線技術的應用[D] .無錫:江南大學,2009:3-5.
[4] Siemens.Siemens SPC3user description,2002.
[5] 夏宇聞.Verilog數字系統設計教程[M] .3版.北京:北京航空航天大學出版社,2013.
[6] 張婕,王征,郭天樂.SPC3在現場總線智能從站設計中的應用[J] .現代電子技術,2008,31(2):10-11.
[7] 王延年,鄧毓.基于軟核Nios II的SOPC智能溫度變送器[J] .電子測量技術,2012,35(1):85-88.
[8] 彭澄廉,周博,邱衛東,等.挑戰SOP——基于Nios II的SOPC設計與實踐[M] .北京:清華大學出版社,2004.