張建紅 劉宇翔 朱之貞 胡建明 任興平
(1.云南無(wú)線電有限公司 云南省昆明市 650223)
(2.陸軍裝備部防化軍事代表局駐昆明地區(qū)防化軍事代表室 云南省昆明市 650223)
(3.云南安防科技有限公司 云南省昆明市 650223)
在線監(jiān)測(cè)、控制系統(tǒng)通常需要通過(guò)各類傳感器采集相應(yīng)的信號(hào)(模擬或數(shù)字信號(hào)),經(jīng)計(jì)算處理后應(yīng)用。通常我們采用單片機(jī)控制實(shí)現(xiàn)所需功能,但當(dāng)監(jiān)測(cè)系統(tǒng)較為復(fù)雜,采集數(shù)據(jù)種類較多時(shí),普通單片機(jī)的資源難以實(shí)現(xiàn)功能需求。若想用普通單片機(jī)實(shí)現(xiàn)預(yù)期功能,需采用多單片機(jī)分工聯(lián)機(jī)處理,或通過(guò)外圍功能芯片擴(kuò)展系統(tǒng)應(yīng)用完成所需的監(jiān)測(cè)功能,這樣做的方式將大幅度增加電路的復(fù)雜性,在一定程度上還影響了在線監(jiān)測(cè)控制系統(tǒng)的可靠性和穩(wěn)定性,同時(shí)增加了系統(tǒng)的管理和采購(gòu)成本。
為此,本文提出了基于FPGA 技術(shù)的解決方案,充分利用FPGA 的資源和輸入/輸出端口多(可并行工作),采集數(shù)據(jù)可是模擬信號(hào)也可是數(shù)字信號(hào),可以支持自定義和自由編程支配所需資源,硬件運(yùn)行速度快(是普通MCU 的10 倍)特點(diǎn),通過(guò)VHDL語(yǔ)言設(shè)計(jì),定義用途、功能、及數(shù)據(jù)采集和處理的應(yīng)用編程,并行處理各傳感器傳輸?shù)臄?shù)據(jù),從而有效解決實(shí)時(shí)多路信號(hào)采集和處理問(wèn)題,發(fā)揮在線監(jiān)測(cè)控制系統(tǒng)的效果。
本解決方案中所需的外圍電路較簡(jiǎn)單,很大程度上提高了系統(tǒng)的可靠性;同時(shí)鑒于FPGA 多接口功能特點(diǎn)和VHDL 語(yǔ)言的靈活性,使系統(tǒng)具備良好的功能擴(kuò)展特性,從而擴(kuò)展了監(jiān)測(cè)控制系統(tǒng)應(yīng)用領(lǐng)域,使其具備了較好的通用性。
監(jiān)測(cè)控制系統(tǒng)組成:監(jiān)測(cè)控制系統(tǒng)由FPGA 芯片、數(shù)字采集、多路A/D 選擇、PROM 存貯、時(shí)鐘電路、電源供電、交流信號(hào)整理、光耦隔離等部分組成。系統(tǒng)組成見(jiàn)圖1。
主要組成部分的功能描述:
本在線監(jiān)測(cè)、控制系統(tǒng)方案中所用FPGA 芯片,采用Altera 公司的EP1C6T144。該芯片具有5980 個(gè)邏輯單元(大概相當(dāng)于60 萬(wàn)系統(tǒng)門),集成了2 個(gè)延遲鎖相環(huán)、92160 位片上RAM(包括塊RAM 和分布式RAM),速度達(dá)到250MHz,支持16 個(gè)輸入/輸出高性能接口即可以外接16 種或個(gè)傳感器;支持自定義和自由編程,支持功能擴(kuò)展和現(xiàn)場(chǎng)升級(jí)。
根據(jù)系統(tǒng)功能要求,將FPGA 內(nèi)部資源配置為邏輯運(yùn)算、接口邏輯控制、數(shù)據(jù)采集、A/D 接口選擇等功能模塊。內(nèi)部功能配置示意見(jiàn)圖2。
2.1.1 邏輯運(yùn)算模塊
圖1:監(jiān)測(cè)控制系統(tǒng)組成示意圖
圖2:FPGA 內(nèi)部功能配置示意圖
實(shí)現(xiàn)接收數(shù)據(jù)采集單元、A/D 接口單元傳輸來(lái)的數(shù)據(jù),對(duì)接收到的數(shù)據(jù),按預(yù)定的策略或算法進(jìn)行邏輯運(yùn)算,運(yùn)算結(jié)果根據(jù)預(yù)設(shè)條件情況進(jìn)行分析,按分析結(jié)果進(jìn)行處理,向邏輯控制單元輸出處理指令及相應(yīng)的數(shù)字量等功能。
2.1.2 數(shù)據(jù)采集模塊
實(shí)現(xiàn)對(duì)需監(jiān)測(cè)或控制的環(huán)境狀態(tài)的數(shù)據(jù)采集以及對(duì)外部設(shè)備控制指令輸出的功能。如接收傳感器采集到的數(shù)字或模擬信號(hào);或?qū)ν饨釉O(shè)備發(fā)出開啟、關(guān)閉控制指令等。
2.1.3 A/D 接口選擇模塊
實(shí)現(xiàn)模數(shù)轉(zhuǎn)換芯片及各路數(shù)據(jù)采集的選擇。即通過(guò)發(fā)送指令(1為開通,0 為關(guān)閉)發(fā)送選擇時(shí)序,對(duì)所需監(jiān)測(cè)和控制的數(shù)據(jù)信號(hào)進(jìn)行合理控制,避免數(shù)據(jù)混亂。
2.1.4 接口邏輯控制模塊
此模塊主要是考慮到監(jiān)測(cè)控制系統(tǒng)的通用和功能擴(kuò)展,為與外部單片機(jī)(MCU)或計(jì)算機(jī)兼容和共享數(shù)據(jù),專門設(shè)置設(shè)計(jì)了此接口,以便與其它設(shè)備的數(shù)據(jù)通信或數(shù)據(jù)傳輸,以便完成利用采集數(shù)據(jù)進(jìn)行復(fù)雜運(yùn)算、分析、調(diào)試的功能。
傳感器采集的模擬信號(hào)通過(guò)光電耦合電路傳輸至控制電路中,經(jīng)半波整流進(jìn)行信號(hào)整理后進(jìn)行A/D 轉(zhuǎn)換;多路模擬信號(hào)就經(jīng)多路的A/D 轉(zhuǎn)換;經(jīng)選擇進(jìn)行運(yùn)算分析。
本系統(tǒng)中的A/D 轉(zhuǎn)換芯片選用的AD1674JN。模擬信號(hào)整理后經(jīng)多路開關(guān)選擇進(jìn)入A/D 轉(zhuǎn)換芯片,變成FPGA 可以識(shí)別和處理的數(shù)字信號(hào),并通過(guò)軟件進(jìn)行相應(yīng)的分析和處理。FPGA 對(duì)采集的模擬信號(hào)進(jìn)行分析處理的軟件設(shè)置及控制有以下幾個(gè)方面:
首先是對(duì)與模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)有關(guān)寄存器組(16 位指令寄存器)進(jìn)行定義:
ADPR(參數(shù)寄存器):對(duì)采樣點(diǎn)數(shù)(16、32、64 還是128 個(gè)點(diǎn))、時(shí)鐘頻率、采樣信號(hào)頻率進(jìn)行定義,分別是2 位、5 位和9 位數(shù)據(jù)。
ADOR(輸出控制寄存器):當(dāng)外部單片機(jī)要讀取某傳感器傳輸?shù)男盘?hào)或信息時(shí),由輸出控制寄存器定義FPGA 輸出的是某傳感器信號(hào)的某諧波的電壓,即是基波電壓還是2 次諧波電壓或是信號(hào)值。
ADCR(控制寄存器):用于選擇某通道或某幾個(gè)通過(guò)采樣傳感器及有關(guān)寄存器的有效或復(fù)位,如置為“1”表示選中,置為“0”表示復(fù)位,可選1 個(gè)通道,亦可選多個(gè)通道。
其次是設(shè)計(jì)控制A/D 轉(zhuǎn)換芯片及多路開關(guān)芯片的信號(hào),通常設(shè)置5 位,1 位用于4 位A/D 轉(zhuǎn)換觸發(fā),4 位用于選擇通道,從0000至1111,經(jīng)編碼對(duì)應(yīng)16 個(gè)通道。即可控制16 個(gè)傳感器的信號(hào)。多路開關(guān)芯片在接到控制信號(hào)后,順序切換。為確保切換有效,加入容錯(cuò)即0.5μs 的導(dǎo)通延時(shí)。
A/D 轉(zhuǎn)換完成,轉(zhuǎn)換芯片的EOC 腳為低(即完成轉(zhuǎn)換),F(xiàn)PGA 收到完成轉(zhuǎn)換指令后,產(chǎn)生向A/D 轉(zhuǎn)換芯片AD1674JN 讀數(shù)據(jù)的時(shí)序,于是將轉(zhuǎn)換好的數(shù)據(jù)讀到數(shù)據(jù)緩沖區(qū)進(jìn)行存貯,存貯位置按通道號(hào)和采樣點(diǎn)的二維數(shù)組ADV(x,y)方式存放。循環(huán)采集每個(gè)通道的數(shù)據(jù),當(dāng)16 個(gè)通道的數(shù)據(jù)均采集完成后,設(shè)置“采集結(jié)束”標(biāo)志,經(jīng)濾波處理后存到數(shù)組中,備分析用。
設(shè)計(jì)數(shù)據(jù)的計(jì)算方法,對(duì)設(shè)有標(biāo)志的數(shù)據(jù),即濾波后的數(shù)據(jù)進(jìn)行計(jì)算(如有效值均方根,差值平均等)和分析。計(jì)算分析后清除設(shè)置的標(biāo)志。
當(dāng)外部接口需要讀取采集數(shù)據(jù)時(shí),由外部控制器(MCU)發(fā)出“讀”請(qǐng)求,F(xiàn)PGA 根據(jù)所選地址及輸出控制寄存器(ADOR)的值,將存貯的采集數(shù)據(jù)按時(shí)序要求發(fā)送至數(shù)據(jù)總線上,以便外部控制器接收。
在監(jiān)測(cè)控制系統(tǒng)中,假設(shè)監(jiān)測(cè)對(duì)象有16 個(gè),即有16 個(gè)數(shù)據(jù)采集傳感設(shè)備,控制每個(gè)傳感設(shè)備需要1 路控制輸出,2 路數(shù)據(jù)采集狀態(tài)反饋信號(hào),即共要16 路控制輸出,32 路狀態(tài)反饋信號(hào)。
在FPGA 中設(shè)置3 個(gè)指令寄存器對(duì)數(shù)字信號(hào)采集進(jìn)行控制管理。分別是KGER(開關(guān)量允許寄存器),KGIR(開關(guān)量寄存器)和KGCR(跳閘閉合寄存器)。在FPGA 中設(shè)置16 組位矢量,分別對(duì)應(yīng)16 個(gè)監(jiān)測(cè)對(duì)象,每個(gè)監(jiān)測(cè)對(duì)象有2 個(gè)狀態(tài)反饋位。FPGA 設(shè)16 個(gè)進(jìn)程,分別對(duì)應(yīng)位矢量的狀態(tài)反饋,當(dāng)位矢量的電平發(fā)生變化時(shí),啟動(dòng)相應(yīng)進(jìn)程。根據(jù)監(jiān)測(cè)對(duì)象狀態(tài),記錄輸出數(shù)據(jù);輸出數(shù)據(jù)對(duì)應(yīng)存在數(shù)據(jù)緩沖區(qū)的對(duì)應(yīng)數(shù)據(jù)存儲(chǔ)器中。
當(dāng)控制器要讀FPGA 數(shù)據(jù)時(shí),發(fā)出啟動(dòng)信號(hào),將地址線對(duì)應(yīng)位的信號(hào)置為“1”;FPGA 根據(jù)選擇的通道值,將對(duì)應(yīng)通道數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù)發(fā)送至數(shù)據(jù)總線,控制器根據(jù)時(shí)序讀取數(shù)據(jù)。讀取數(shù)據(jù)正確時(shí),數(shù)據(jù)校驗(yàn)位即前13 位為0101101000000,若不是,說(shuō)明數(shù)據(jù)出錯(cuò)無(wú)效,需要重讀。
在數(shù)據(jù)采集過(guò)程中,控制器可以根據(jù)需要對(duì)需要控制的通道發(fā)送通道開/關(guān)指令,通過(guò)KGIR(開關(guān)量寄存器)設(shè)置實(shí)現(xiàn),要求通道處于開狀態(tài)時(shí),對(duì)應(yīng)位置為“1”,關(guān)則置為“0”,當(dāng)置為0000H 時(shí),表示復(fù)位;允許數(shù)據(jù)輸出或不允許數(shù)據(jù)輸出是通過(guò)KGER(開關(guān)量允許寄存器)實(shí)現(xiàn),“0”為不允許輸出,“1”為允許輸出。FPGA 根據(jù)KGIR 和KGER 寄存器的狀態(tài)判定被監(jiān)控通道的工作狀態(tài)。當(dāng)檢測(cè)通道出現(xiàn)異常時(shí),會(huì)將KGCR(跳閘閉合寄存器)相應(yīng)位置為“1”,發(fā)出中斷,請(qǐng)求FPGA 給予相應(yīng)處理,如發(fā)出接通指令等。
由于FPGA 的數(shù)據(jù)是RAM 的存貯方式,掉電后數(shù)據(jù)不能保存,故設(shè)計(jì)了外置PROM 來(lái)保存數(shù)據(jù),本系統(tǒng)選用通過(guò)復(fù)位引腳可編程的EPCS1 來(lái)實(shí)現(xiàn)數(shù)據(jù)存貯,容量1 兆,用一個(gè)I/O 口實(shí)現(xiàn)數(shù)據(jù)傳輸和存貯。系統(tǒng)一上電,F(xiàn)PGA 進(jìn)行初始化,復(fù)位PROM;當(dāng)PROM 的使能腳(CE)有效(為0)時(shí),選中PROM,數(shù)據(jù)從DATA 腳傳輸?shù)紽PGA 的數(shù)據(jù)輸入腳(DIN),數(shù)據(jù)傳輸出完成后,置高DONE 腳,使PROM 處于省電的待機(jī)模式。
系統(tǒng)上電時(shí),自動(dòng)將燒入到PROM 中的數(shù)據(jù)文件下載到FPGA,系統(tǒng)即可開始工作。
FPGA 具有速度快,可現(xiàn)場(chǎng)編程,開發(fā)周期短等特點(diǎn),在需要采集較多路信號(hào)時(shí),其優(yōu)點(diǎn)是普通的MCU 無(wú)法相比的。本文基于FPGA 技術(shù),充分利用其多路采集數(shù)據(jù)的特點(diǎn),提出的在線監(jiān)測(cè)控制系統(tǒng)解決方案,可以很大程度上降低外圍電路設(shè)計(jì)的復(fù)雜性,同時(shí)更具有非常大的靈活性和適應(yīng)性。由于很多功能的性能都可以通過(guò)仿真和綜合調(diào)試得以認(rèn)證,系統(tǒng)設(shè)計(jì)的成功率非常高,這種方案在多路數(shù)據(jù)采集系統(tǒng),特別電氣測(cè)控系統(tǒng)中有較好的應(yīng)用前景。