基于FPGA的智能溫度采集控制器
1引言
目前基于智能溫度傳感器DS18B20的測溫設(shè)計(jì)大多是單片機(jī)程序。本課題嘗試使用FPGA芯片進(jìn)行設(shè)計(jì)。FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳,同時(shí)具有靜態(tài)可重復(fù)編程和動(dòng)態(tài)在系統(tǒng)重構(gòu)的特性,極大地提高了設(shè)計(jì)的靈活性和通用性,更適用于電子系統(tǒng)的開發(fā)。如果用戶需求量非常大,采用ASIC流片能極大地節(jié)省成本,經(jīng)濟(jì)效益十分顯著。FPGA可做其它全定制或半定制ASIC電路的中試樣片。鑒于此,本課題使用硬件描述語言設(shè)計(jì)FPGA控制器來實(shí)現(xiàn)傳感器控制,同時(shí)用VC來實(shí)現(xiàn)用戶控制界面。
一線總線(l-wire)傳感器的出現(xiàn)(如DS18B20),使得在倉庫、工廠、樓宇等需要實(shí)時(shí)測溫的網(wǎng)絡(luò)布線得以大大改善。在大體積混凝土的建造過程中,為了防止混凝土的開裂而造成工程的失敗,需要對若干點(diǎn)的溫度進(jìn)行實(shí)時(shí)監(jiān)控。由于施工現(xiàn)場的限制,使得可利用的布線區(qū)域越簡單越好。與此同時(shí),現(xiàn)場溫度的采集與控制也有一定的要求。這時(shí)就可以在需要的測溫點(diǎn)橫向或縱向構(gòu)成多層網(wǎng)絡(luò),而各個(gè)一線總線傳感器直接掛接在上面即可。而對于每層的溫度采集和控制則可以由“FPGA控制器”去實(shí)現(xiàn),使用和拆卸都很方便。并且由于FPGA移植性好、升級方便,對于各企業(yè)的成本也可以大大降低。隨著FPGA的進(jìn)一步發(fā)展,此溫度采集控制器的應(yīng)用范圍將不斷擴(kuò)大,所體現(xiàn)的價(jià)值也將越來越高。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)是當(dāng)今應(yīng)用最廣泛的一類可編程專用集成電路(ASIC)。FPGA作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。電子設(shè)計(jì)工程師利用它可以在辦公室或?qū)嶒?yàn)室里設(shè)計(jì)出所需的專用集成電路,從而大大縮短了產(chǎn)品上市時(shí)間,降低了開發(fā)成本。此外,可編程邏輯器件還具有靜態(tài)可重復(fù)編程和動(dòng)態(tài)在系統(tǒng)重構(gòu)的特性。這使得硬件的功能可以像軟件一樣通過編程來修改,極大地提高了電子系統(tǒng)設(shè)計(jì)的靈活性和通用性。
2智能溫度采集器的設(shè)計(jì)
在FPGA的設(shè)計(jì)中一般有兩種方法:自上而下和自下而上。任何復(fù)雜的數(shù)字系統(tǒng),都可以按層次細(xì)分,一直分到對每個(gè)部分都有比較明確而簡單的設(shè)計(jì)方案為止。這就是常常說的分而治之的方法。自上而下的方法之所以重要,就在于只有在上面的層次上才能全面確定下面模塊的輸入輸出和功能行為的規(guī)格。而自下而上有時(shí)也行得通的原因是有些模塊的規(guī)格本身是就是事先確定的或者基本可以確定的。
針對溫度采集控制器系統(tǒng)的特點(diǎn),決定采用自上而下的設(shè)計(jì)方法,并將整個(gè)系統(tǒng)分為Control Unit和Data Path來進(jìn)行設(shè)計(jì)(圖1)。這樣實(shí)現(xiàn)有以下優(yōu)點(diǎn):(1)Control Unit在內(nèi)部FSM的控制下,在每一個(gè)State會(huì)有Outputs,控制Data Path中數(shù)據(jù)的傳輸,滿足DS18B20的時(shí)序要求;(2)Data Path則完成了所有的數(shù)據(jù)流傳輸,并實(shí)時(shí)的反饋給Control Unit一些Inputs,從而使其State轉(zhuǎn)換能夠正確完成;(3)如果要有附加的控制流和數(shù)據(jù)流要添加進(jìn)整個(gè)FPGA系統(tǒng),則只要在Control Unit中更改相應(yīng)的State和Data Path中做相應(yīng)修改就可。這樣設(shè)計(jì)出來的系統(tǒng)穩(wěn)定、擴(kuò)展性好。
圖1、智能溫度采集器的系統(tǒng)結(jié)構(gòu)框圖
在設(shè)計(jì)Control Block的時(shí)候一般采取有限狀態(tài)機(jī)(FSM)的方法。FSM分兩大類:米里型(Inputs對輸出邏輯和下一狀態(tài)邏輯有影響)和摩爾型(Inputs只對下一狀態(tài)邏輯有影響)。FSM設(shè)計(jì)中首要的是確定狀態(tài)變量。這是以對設(shè)計(jì)問題的深入了解為基礎(chǔ)的。每一個(gè)狀態(tài)都有可以實(shí)現(xiàn)的進(jìn)入條件,每個(gè)狀態(tài)在所有輸入條件下都有明確的下一狀態(tài),包括下一狀態(tài)和目前狀態(tài)相同的狀態(tài)的情況。顯然,如果下一狀態(tài)只有和目前狀態(tài)相同的狀態(tài)才是可實(shí)現(xiàn)的,那么FSM一旦進(jìn)入這個(gè)狀態(tài)就不會(huì)再改變了,這種“死機(jī)”狀態(tài)當(dāng)然是要避免的。在此系統(tǒng)的 Control Block中的FSM采用摩爾型,設(shè)計(jì)出“下一狀態(tài)邏輯”從而使得“狀態(tài)寄存器”能在每一個(gè)時(shí)鐘沿正確的進(jìn)行狀態(tài)轉(zhuǎn)換,并確定好“輸出邏輯”,在每一個(gè)狀態(tài)都能輸出正確的控制流來對 Data Path中的數(shù)據(jù)流進(jìn)行正確的控制,保證整個(gè)系統(tǒng)能夠正確的工作。
數(shù)據(jù)通道實(shí)現(xiàn)的是數(shù)據(jù)間的運(yùn)算和傳輸。數(shù)據(jù)可能是8/16/32/64位的,一般所有位的運(yùn)算并沒有太大的不同。但是,它又要同時(shí)實(shí)現(xiàn)Control Block中的FSM的功能,其設(shè)計(jì)是要和 Control Block中的FSM的結(jié)構(gòu)一起考慮的。一旦FSM確定了,數(shù)據(jù)通道的計(jì)劃就要著手進(jìn)行。由于數(shù)據(jù)通道的性能決定了整個(gè)系統(tǒng)的性能的高低,所以它又非常的關(guān)鍵。以往通用處理器因?yàn)樯a(chǎn)數(shù)量大,數(shù)據(jù)通道用全定制的方法設(shè)計(jì)比較多,線路和版圖設(shè)計(jì)的精雕細(xì)刻,以求換得低的芯片生產(chǎn)成本和用其他方法難以達(dá)到的性能水平。這種情況在現(xiàn)代的SOC產(chǎn)品里有了很大的改變,因?yàn)镾OC產(chǎn)品的產(chǎn)量一般都比較小,而且設(shè)計(jì)者都希望同一個(gè)處理器核的設(shè)計(jì)能夠用于不同工藝生產(chǎn)的產(chǎn)品。這樣,全定制的設(shè)計(jì)就不合適了。一般來說,數(shù)據(jù)通道是一定形式的流水線,因?yàn)閿?shù)據(jù)的讀取、運(yùn)算和結(jié)果的寫入都在同一個(gè)周期內(nèi)實(shí)現(xiàn),時(shí)鐘頻率就很難提高,所以高性能處理器的數(shù)據(jù)通道現(xiàn)在都采用流水線設(shè)計(jì)。數(shù)據(jù)通道和數(shù)據(jù)寄存器和數(shù)據(jù)存儲(chǔ)器的關(guān)系十分密切,這當(dāng)然是由處理器的結(jié)構(gòu)確定的。在此系統(tǒng)中的 Data Path的數(shù)據(jù)流處理功能并不是非常的復(fù)雜,可以不用采取流水線設(shè)計(jì),并在FSM的控制下進(jìn)行正確的數(shù)據(jù)流傳輸,同時(shí)會(huì)反饋給FSM中的“下一狀態(tài)邏輯”一些Inputs信號來使其能夠進(jìn)行正確的狀態(tài)轉(zhuǎn)換。
3智能溫度采集器的實(shí)現(xiàn)
系統(tǒng)開發(fā)環(huán)境。本課題硬件設(shè)計(jì)采用XILINX公司SPARTAN-3器件開發(fā)板進(jìn)行編程驗(yàn)證,其特性如下:(1)具有二十萬門,十二個(gè)嵌入式18x18乘法器支持高性能DSP應(yīng)用,216 Kbit的塊RAM,50 MHZ內(nèi)部時(shí)鐘晶振;(2)板上2Mbit Platform Flash;(3)八個(gè)開關(guān),四個(gè)按鈕,八個(gè)LED,四個(gè)七段顯示;(4)串口,VGA口,PS/兩個(gè)鼠標(biāo)/一個(gè)鍵盤口;(5)三組各40個(gè)引腳的擴(kuò)展連接;(6)三個(gè)強(qiáng)電流的電壓整流器(3.3V,2.5V,1.2V);(7)配合JTAG3編程線和Xilinx的P4&MultiPRO線。系統(tǒng)硬件設(shè)計(jì)采用Verilog HDL設(shè)計(jì)語言,設(shè)計(jì)流程在Xilinx公司提供的開發(fā)工具ISE中完成,配合MODELSIM SE仿真工具。SPARTAN-3開發(fā)板上使用MAX3222電平轉(zhuǎn)換器,轉(zhuǎn)換RS-232C的EIA電平+12V與TTL電平+3.3V。在本系統(tǒng)中,由于串口通訊的雙方都是自訂制的,因此本課題中的RS-232C的串行傳輸波特率選擇使用了PC機(jī)所能達(dá)到的最快傳輸速度:115200 bit/s。上位機(jī)軟件編程采用VC++ 6.0。
控制器邏輯功能流程圖。首先設(shè)計(jì)各個(gè)硬件模塊,其中主控模塊狀態(tài)機(jī)先只實(shí)現(xiàn)一些基本功能指令的流程控制,仿真測試單獨(dú)的模塊。然后連接各個(gè)模塊組成完整的硬件電路并進(jìn)行一些基本功能指令的測試。再利用串口調(diào)試助手及示波器檢驗(yàn)硬件電路對一線總線上單個(gè)DS18B20的初始化(INITAILIZATION)、發(fā)送匹配ROM命令(MATCH ROM)、發(fā)送溫度轉(zhuǎn)換命令(CONVERT T)、發(fā)送引腳讀取命令(READ SCRATCHPAD)、發(fā)送讀時(shí)隙脈沖(READ TIMESLOTS)的操作結(jié)果。串口調(diào)試結(jié)果正確后聯(lián)合上位機(jī)程序?qū)崿F(xiàn)最基本的“Read Temperature”功能。上位機(jī)調(diào)試結(jié)果正確后硬件電路繼續(xù)添加其他功能,調(diào)試“搜索ROM命令(SEARCH ROM)和讀取ROM ID命令”,在FSM中實(shí)現(xiàn)搜索算法將溫度采集擴(kuò)展至一線總線上多個(gè)DS18B20。整個(gè)系統(tǒng)邏輯框圖可見圖2。
圖2、智能溫度控制器邏輯功能流程圖
控制器邏輯功能模塊。FPGA實(shí)現(xiàn)的控制器處于PC端上位機(jī)與溫度傳感器DS18B2O中間。FPGA的主要設(shè)計(jì)任務(wù)便是接收從串口得來的PC端上位機(jī)命令,通過內(nèi)部狀態(tài)機(jī)邏輯的判斷和控制,通過Data Path將命令傳達(dá)至溫度傳感器DS18B20,并將命令的執(zhí)行結(jié)果返回給上位機(jī)。FPGA主要實(shí)現(xiàn)1-wire收發(fā)器和RS232收發(fā)器,對兩邊起溝通作用。整個(gè)硬件模塊大致分成三層(圖3),第一層為RS232串行通信模塊和時(shí)鐘分頻模塊fenpin,第二層為主控模塊 Control Block,第三層為 Data Path部分:讀/寫模塊bytebit。
圖3、智能溫度控制器系統(tǒng)模塊層次結(jié)構(gòu)圖
l)RS232串行通信模塊。負(fù)責(zé)外部上位機(jī)串行bit與主控模塊Control Block并行byte間的數(shù)據(jù)傳輸。RS232串行通信速率采用 115200 bit/S。Uartrec從上位機(jī)接受一個(gè)字節(jié)com命令發(fā)給主控模塊Control Block,同時(shí)Uarttran從主控模塊Control Block接收一個(gè)字節(jié)result回應(yīng)發(fā)給上位機(jī)。
2)分頻模塊fenpin。由50 MHZ內(nèi)部晶振產(chǎn)生與DS18B20同步的1 MHZ時(shí)鐘。
3)主控模塊 Control Block。負(fù)責(zé)狀態(tài)轉(zhuǎn)化控制,實(shí)現(xiàn) Data Path和RS232收發(fā)器的溝通。通過內(nèi)部FSM邏輯的判斷和控制,將命令傳達(dá)至傳感器,并將命令的執(zhí)行結(jié)果返回給上位機(jī)。由兩個(gè)延時(shí)子模塊組成。初始化模塊init,負(fù)責(zé)初始化總線上所有DS18B20,并在初始化成功后報(bào)告主控模塊初始化狀態(tài)。若初始化失敗,將繼續(xù)初始化。若超過設(shè)定初始化時(shí)間仍不能成功初始化,將停止初始化并報(bào)警。溫度轉(zhuǎn)化等待模塊Convert,負(fù)責(zé)在讀/寫模塊bytebit向DS18B20發(fā)出convert命令后延時(shí)800 ms再報(bào)告主控模塊轉(zhuǎn)化完畢。根據(jù)DS18B20用戶手冊,溫度轉(zhuǎn)化最多用750 ms。所以采用800 ms的保守估算。
4)Data Path。由讀/寫模塊bytebit構(gòu)成,負(fù)責(zé)主控模塊Control Block和DS18B20之間的數(shù)據(jù)通信。由主控模塊Control Block的r_w信號決定是發(fā)WRITE TIME SLOTS還是發(fā)READ TIME SLOTS。
4結(jié)束語
本文作者的主要?jiǎng)?chuàng)新點(diǎn):分析并設(shè)計(jì)了一個(gè)基于FPGA的智能溫度測控系統(tǒng)。本系統(tǒng)已經(jīng)廣泛地應(yīng)用到各種相關(guān)的實(shí)際系統(tǒng)。本項(xiàng)目已經(jīng)產(chǎn)生經(jīng)濟(jì)效益越230萬元。