基于FPGA的新型數(shù)字電壓表設(shè)計
數(shù)字電壓表是大學(xué)物理教學(xué)和實驗中的重要儀表,其數(shù)字化是指將連續(xù)的模擬電壓量轉(zhuǎn)換成不連續(xù)、離散的數(shù)字量并加以顯示。傳統(tǒng)的實驗用模擬電壓表功能單一、精度低、體積大,且存在讀數(shù)時的視差,長時間連續(xù)使用易引起視覺疲勞,使用中存在諸多不便。而目前數(shù)字萬用表的內(nèi)部核心多是模/數(shù)轉(zhuǎn)換器,其精度很大程度上限制了整個表的準確度,可靠性較差。本文采用National Semiconductor。公司性能優(yōu)越的8位A/D轉(zhuǎn)換器ADC0809對模擬電壓采樣,以一片高性能FPGA芯片為控制核心,以軟件實現(xiàn)了諸多硬件功能,對電壓信號的轉(zhuǎn)換結(jié)果進行準確實時的運算處理并送出顯示。系統(tǒng)的主要功能都集成在一塊芯片上,大大減少了系統(tǒng)的分立元件數(shù)量,降低了功耗,增加了可靠性,較好地實現(xiàn)了電壓的精準測量。
1 設(shè)計方案比較
采用雙積分式模/數(shù)轉(zhuǎn)換器為核心器件,稱為雙積分式電壓表。在一個測量周期內(nèi),將被測電壓Ui加到積分器的輸入端,在確定的時間內(nèi)進行積分。然后切斷輸入電壓,在積分器的輸入端加與Ui極性相反的電壓U,進行定值積分,但積分方向相反,直到積分輸出達到起始電平為止,從而將Ui轉(zhuǎn)換成時間間隔量進行測量。只要用計數(shù)器累計時間間隔內(nèi)的脈沖數(shù),即為Ui之值。電路簡單,便于維護。但電壓表的測量精度完全受限于模/數(shù)轉(zhuǎn)換的精度。而且系統(tǒng)無升級空間。
另外,采用單片機作為系統(tǒng)的控制核心。輸入信號經(jīng)模/數(shù)轉(zhuǎn)換后送到單片機進行數(shù)據(jù)處理,根據(jù)不同電壓信號計算出不同數(shù)值,并送出顯示。這種方案優(yōu)點是的單片機技術(shù)成熟、運算功能較強、編程靈活、設(shè)計成本也較低,能較準確地測量輸入電壓。但在單片機系統(tǒng)中必須使用許多分立元件組成其外圍電路,整個系統(tǒng)顯得十分復(fù)雜,可靠性較低,抗干擾能力差,而且功耗高。
采用現(xiàn)場可編程門陣列即FPGA為系統(tǒng)核心,是當今電子產(chǎn)品設(shè)計的熱門發(fā)展方向。系統(tǒng)最大限度地將所有器件集成在FPGA芯片上,體積大大減小、集成度高,可靠性高。而且邏輯單元控制靈活、適用范圍極廣,實現(xiàn)了大規(guī)模和超大規(guī)模電路的集成。其硬件功能完全由軟件編程實現(xiàn),修改調(diào)試方便,在不改變原有電路的基礎(chǔ)上便可實現(xiàn)系統(tǒng)升級。較好地克服了另外兩種方案的缺陷,具有自己獨特的優(yōu)勢。綜合上述分析,采用FPGA技術(shù),優(yōu)勢明顯。
2 系統(tǒng)工作原理
首先,被測電壓信號進入A/D轉(zhuǎn)換器,F(xiàn)PGA中控制信號模塊發(fā)出控制信號,啟動A/D轉(zhuǎn)換器進行轉(zhuǎn)換,其采樣得到的數(shù)字信號數(shù)據(jù)在相應(yīng)的碼制轉(zhuǎn)換模塊中轉(zhuǎn)換為顯示代碼。最后譯碼驅(qū)動模塊發(fā)出顯示控制與驅(qū)動信號,驅(qū)動外部的LCD模塊顯示相應(yīng)的數(shù)據(jù)。通過外部的鍵盤,可以手動對系統(tǒng)進行復(fù)位控制和檔位選擇,不同的檔位決定不同的電壓輸入范圍,在程序中實現(xiàn)自動轉(zhuǎn)換?;竟ぷ髟砜驁D如圖1所示。
3 關(guān)鍵電路設(shè)計
3.1 A/D轉(zhuǎn)換電路
實現(xiàn)A/D轉(zhuǎn)換的方法比較多,常見的有計數(shù)法、雙積分法和逐次逼近法。由于逐次逼近式A/D轉(zhuǎn)換具有速度快,分辨率高等優(yōu)點,而且采用該法的ADC芯片成本較低,因此在設(shè)計中采用該種方式。逐次逼近式A/D轉(zhuǎn)換器的原理如圖2所示。它由逐次逼近寄存器、D/A轉(zhuǎn)換器、比較器和緩沖寄存器等組成。當啟動信號由高電平變?yōu)榈碗娖綍r,逐次逼近寄存器清0,這時,D/A轉(zhuǎn)換器輸出電壓V。也為O,當啟動信號變?yōu)楦唠娖綍r,轉(zhuǎn)換開始,同時,逐次逼近寄存器進行計數(shù)。轉(zhuǎn)換原理如圖2所示。
逐次逼近寄存器工作時與普通計數(shù)器不同,它不是從低位向高位逐一進行計數(shù)和進位,而是從最高位開始,通過設(shè)置試探值來進行計數(shù)。在第一個時鐘脈沖到來時,控制電路把最高位送到逐次逼近寄存器,使它的輸出為10000000,這個輸出數(shù)字一出現(xiàn),D/A轉(zhuǎn)換器的輸出電壓V。就成為滿量程值的128/255。這時,若Vo>Vi則作為比較器的運算放大器的輸出就成為低電平,控制電路據(jù)此清除逐次逼近寄存器中的最高位;若Vo≤Vi則比較器輸出高電平,控制電路使最高位的1保留下來。
若最高位被保留下來,則逐次逼近寄存器的內(nèi)容為10000000,下一個時鐘脈沖使次低位D6為1。于是,逐次逼近寄存器的值為11000000,D/A轉(zhuǎn)換器的輸出電壓Vo到達滿量程值的192/255。此后,若Vo>Vi則比較器輸出為低電平,從而使次高位域復(fù)位;若Vo<Vi則比較器輸出為高電平,從而保留次高位為1。重復(fù)上述過程,經(jīng)過N次比較以后,逐次逼近寄存器中得到的值就是轉(zhuǎn)換后的數(shù)值。轉(zhuǎn)換結(jié)束后,控制電路送出一個低電平作為結(jié)束信號,此信號的下降沿將逐次逼近寄存器中的數(shù)字量送入緩沖寄存器,從而得到數(shù)字量輸出。
這里采用的ADC0809是單片雙列直插式集成芯片,是8通道8位A/D轉(zhuǎn)換器,其主要特點是:分辨率為8位;總的不可調(diào)誤差±1 LSB;當模擬輸入電壓范圍為0~5 V時,可使用單一的+5 V電源;轉(zhuǎn)換時間為100μs;溫度范圍-40~+85℃;不需另加接口邏輯可直接與CPU連接;可以輸入8路模擬信號;輸出帶鎖存器;邏輯電平與TTL兼容。
ADC0809帶有8位轉(zhuǎn)換器、8位多路切換開關(guān)以及與微處理機兼容的控制邏輯的CMOS組件。它的8位A/D轉(zhuǎn)換器轉(zhuǎn)換方法為逐次逼近法。在A/D轉(zhuǎn)換器的內(nèi)部,含有一個高阻抗斬波穩(wěn)定比較器,一個帶有模擬開關(guān)樹組的256R分壓器,以及一個逐次逼近的寄存器。8路的模擬開關(guān)由地址鎖存器和譯碼器控制,可以在8個通道中任意訪問一個單邊的模擬信號。其工作框圖如圖3所示。
該A/D轉(zhuǎn)換器無需調(diào)零和滿量程調(diào)整。由于多路開關(guān)的地址輸入能夠進行鎖存和譯碼,而且三態(tài)TTL輸出也可以鎖存,易于與微處理器進行接口。
如圖3所示,它由兩大部分所組成:第一部分是8通道多路模擬開關(guān),它用于控制C,B,A端子和地址鎖存允許端子,可使其中一個通道被選中;第二部分為一個逐次逼近型A/D轉(zhuǎn)換器,它由比較器、控制邏輯、輸出緩沖鎖存器、逐次逼近寄存器以及開關(guān)樹組和256R電阻分壓器組成。后兩種電路,即開關(guān)樹和256R電阻分壓器,組成了D/A轉(zhuǎn)換器。控制邏輯用來控制逐次逼近寄存器從高位到低位逐次取1,然后將此數(shù)字量送到開關(guān)樹組,即8位開關(guān),用來控制開關(guān)S7~S0與參考電平相連接。參考電平經(jīng)256R電阻分壓器,輸出一個模擬電壓Uo,Uo,Ui在比較器中進行比較。當Uo>Ui時,本位D=O;當Uo≤Ui時,則本位D=1。因此,從D7~D0比較8次即可逐次逼近寄存器中的數(shù)字量,即與模擬量Ui所相當于的數(shù)字量相等。此數(shù)字量送入輸出鎖存器,并同時發(fā)轉(zhuǎn)換結(jié)束脈沖。
該電壓表電路中,ADC0809的工作時序如圖4所示。主要控制信號:START是轉(zhuǎn)換啟動信號,高電平有效;ALE是3位通道選擇地址(ADDC,ADDB,ADDA)信號的鎖存信號。當模擬量送至某一輸入端,由3位地址信號進行選擇,而地址信號由ALE鎖存;EOC是檔位轉(zhuǎn)換的狀態(tài)信號。EOC輸出高電平時,表示轉(zhuǎn)換結(jié)束;在EOC的上升沿后,若使能輸出信號OE為高電平,則三態(tài)緩沖器打開,將轉(zhuǎn)換完畢的8位數(shù)據(jù)結(jié)果輸至數(shù)據(jù)總線,至此ADC0809的一次轉(zhuǎn)換結(jié)束。
3.2 檔位轉(zhuǎn)換電路
為了增加數(shù)字電壓表的測量范圍,設(shè)計了檔位選擇電路。采用精密電阻分壓方法,簡潔實用。ADC0809有8路數(shù)據(jù)輸入端口,原理上可以分為8個檔位。從實用性出發(fā),只分了兩檔,如圖5所示。圖5中電位器負責(zé)電阻校準。盡管采用精密電阻,各電阻值的制造誤差不可避免,用電位器來微調(diào)校準以保證測量精度。ADC0809的輸入范圍為0~5 V,檔位的切換是通過程序來控制ADC0809各個通道的選通來自動實現(xiàn)。只要輸入的電壓范圍超過5 V,則檔位自動切換到另一檔,即選通通道INl。
當輸入電壓范圍為O~5 V時,INO導(dǎo)通。此時U=U26,當輸入電壓范圍為5~50 V時,F(xiàn)PGA判斷選擇檔位,INl導(dǎo)通。此時有U=U27即U=(R1+R3)/(R1+R2+R3)=U26/10。
由于ADC0809數(shù)字量輸出為8位,數(shù)字量化范圍為0~255,當輸入電壓為滿量程5 V時,轉(zhuǎn)換電路對輸入電壓的分辨能力為:
3.3 FPGA內(nèi)部模塊設(shè)計
(1)碼制轉(zhuǎn)換模塊。在此碼制變換模塊DATA_CONVERSION功能是將AD0809采樣送來的8位二進制數(shù)轉(zhuǎn)換為可被LCD識別的字符型LCD碼。首先,將8位二進制碼變換為BCD碼;然后,再分別進行轉(zhuǎn)換,得到字符型碼,并送入譯碼顯示模塊。
(2)譯碼驅(qū)動模塊。數(shù)字電壓值的顯示由LCD實現(xiàn)。選用了HY系列字符型液晶顯示模塊HD44780。實現(xiàn)了低功耗,而且可帶單位雙排顯示,字體美觀大方。
整個電路十分簡潔。系統(tǒng)工作過程:FPGA芯片EP2C5T144對ADC0809及LCD進行初始化。當有輸入信號Vi時,由FPGA向ADC0809傳送控制信號控制字,使其對輸入的模擬信號進行轉(zhuǎn)換,變?yōu)?位的數(shù)字信號并送到輸出端。由FPGA經(jīng)過碼制變換等處理后,再通過LCD的接口驅(qū)動,向其發(fā)送數(shù)據(jù)。當ADC0809采樣完成后,F(xiàn)PGA中的碼字轉(zhuǎn)換模塊將數(shù)據(jù)轉(zhuǎn)換為LCD可識別的字符型數(shù)據(jù),然后送至驅(qū)動模塊,由其驅(qū)動LCD,將字符型數(shù)據(jù)送到LCD的DO~D7端,實現(xiàn)顯示。
4 關(guān)鍵算法實現(xiàn)
4.1 檔位自動切換算法
將數(shù)字電壓表分為兩個檔位,分別是0~5 V,0~50 V。檔位切換算法如下:
設(shè)定初始量程為0~5 V。采集100個數(shù)據(jù)點,對輸入信號Vi的采樣值取絕對值的最大值,將其作為Vi的最大值的估計值。如果Vi的最大絕對值估計值小于5 V,則將檔位切換到O~5 V,否則,切換到0~50 V。
4.2 信號采樣周期自調(diào)整算法
為協(xié)調(diào)好數(shù)據(jù)精度和系統(tǒng)負擔兩者之間的關(guān)系,對于疊加周期信號的輸入信號Vi,規(guī)定單個周期的數(shù)據(jù)采集不少于8個點,因此要對AD0809的采樣周期進行自適應(yīng)調(diào)整。這里使用過零點檢測的方法,如果疊加信號的周期在0~25 Hz范圍內(nèi),采樣周期為5 ms。疊加信號周期在25~50 Hz時,采樣周期為2 ms;疊加信號周期在50~100 Hz時,采樣周期為1 ms。
設(shè)采樣周期的初始值為2 ms,采樣數(shù)為100點。則有:首先采集100個數(shù)據(jù),計算平均值,作為輸入信號Vi的均估值(平均值的估計值);再采集100個數(shù)據(jù),與Vi的均估值進行比較,計算過零點的數(shù)量并統(tǒng)計;根據(jù)此數(shù)量,調(diào)整采樣周期,當此數(shù)量大于20時,令采樣周期為1 ms。當此數(shù)量不大于10時,令采樣周期為5 ms。其他令采樣周期為2 ms。
4.3 檢測疊加信號周期算法
依舊采用檢測過零點的數(shù)目來檢測周期。
設(shè)采集的數(shù)據(jù)點為1O0個,計算均值,作為輸入信號Vi的均估值;再采集數(shù)據(jù),與Vi的均估值進行比較,計算過零點的數(shù)量并統(tǒng)計,同時統(tǒng)計每個數(shù)據(jù)過零點的時刻;檢測到三個過零點時,判斷其是否符合均勻分布,判斷是否檢測到一個周期。若檢測到一個周期,則停止檢測并計算此周期,否則繼續(xù)檢測。若檢測到相當數(shù)量的數(shù)據(jù)點,過零點數(shù)量仍小于3個,則認為輸入信號為直流信號。
5 程序流程
程序流程如圖6所示。
6 測試結(jié)果分析
采用高精度數(shù)字多用表UT88B輸出值作為標準值。由表1所示。
由數(shù)據(jù)對比可以看出,在O~5 V檔位上,該數(shù)字電壓表的誤差基本在O.01 V內(nèi)。在O~50 V檔位上,誤差有所增大,但也控制在O.02 V以內(nèi),體現(xiàn)了ADC0809的轉(zhuǎn)換精度,電路整體設(shè)計合理可靠。至于O.02 V以內(nèi)的偏差,可修改程序,采用軟件的方法進行數(shù)據(jù)校正,也可以進一步校正A/D的基準電壓。
7 結(jié)語
利用現(xiàn)場可編程門陣列技術(shù),設(shè)計了該新型數(shù)字式電壓表。用軟件替代諸多硬件,在一塊高性能FPGA芯片上,實現(xiàn)采樣時序的控制、檔位的判斷選擇、碼制的轉(zhuǎn)換和LCD驅(qū)動,極大地提高了系統(tǒng)集成度和可靠性。文中重點介紹了檔位電路和FPGA內(nèi)部模塊的設(shè)計以及關(guān)鍵算法的實現(xiàn)步驟。由測試結(jié)果,可看出該儀表測量范圍較寬,測量精度較高,能夠滿足物理實驗中電量的測量要求。經(jīng)實際使用證明,系統(tǒng)運行穩(wěn)定、操作方便。為了方便電壓表系統(tǒng)與計算機直接通信,還可進一步增加RS 232接口,進行電平轉(zhuǎn)換,可將測得的數(shù)據(jù)實時導(dǎo)入計算機中使用。