基于USB接口和FPGA控制的虛擬儀器設(shè)計(jì)
隨著目前科學(xué)技術(shù)的發(fā)展,電子技術(shù)的應(yīng)用領(lǐng)域越來(lái)越廣。電子測(cè)試測(cè)量?jī)x器作為電子技術(shù)的基礎(chǔ),其應(yīng)用范圍也越來(lái)越廣。在許多領(lǐng)域?qū)@些儀器提出了很高的要求,不僅要有高的測(cè)量、傳輸速度,高的精確度、穩(wěn)定性、可靠性等,有的甚至要有一定的智能化,能夠?qū)崿F(xiàn)自動(dòng)測(cè)量、自動(dòng)控制,還要能夠快速完成一些復(fù)雜的數(shù)學(xué)運(yùn)算與處理,能夠根據(jù)實(shí)際應(yīng)用的情況,快速開(kāi)發(fā)出新的功能。傳統(tǒng)的測(cè)試測(cè)量?jī)x器由于設(shè)計(jì)理念落后、發(fā)展緩慢、功能單一,開(kāi)發(fā)新功能或新產(chǎn)品的難度大,已經(jīng)無(wú)法適應(yīng)各種新的測(cè)量情況。而且其價(jià)格昂貴、體積大、不易操作,已經(jīng)無(wú)法滿(mǎn)足人們的要求。
虛擬儀器作為傳統(tǒng)測(cè)試測(cè)量?jī)x器的可能的替代品,從1986年美國(guó)國(guó)家儀器公司(NI)首先提出其概念至今不過(guò)短短二十幾年,但其發(fā)展卻十分迅速。目前已生產(chǎn)數(shù)百個(gè)型號(hào)的虛擬儀器產(chǎn)品,其應(yīng)用涉及到電子測(cè)量、過(guò)程控制、電信、醫(yī)學(xué)等領(lǐng)域。我國(guó)虛擬儀器研究的起步較晚,最早的研究也是從引進(jìn)消化NI的產(chǎn)品開(kāi)始,但其發(fā)展也是十分迅速的。我國(guó)國(guó)民經(jīng)濟(jì)的持續(xù)快速發(fā)展,加快了企業(yè)的技術(shù)升級(jí)步伐,對(duì)先進(jìn)儀器設(shè)備的需求更加強(qiáng)勁,虛擬儀器賴(lài)以生存的個(gè)人計(jì)算機(jī)最近幾年以極高的速度在中國(guó)發(fā)展,這些都為虛擬儀器在我國(guó)的普及奠定了良好的基礎(chǔ)。隨著我國(guó)個(gè)人計(jì)算機(jī)的普及以及性能的不斷提高,這種基于計(jì)算機(jī)的虛擬儀器在我國(guó)將會(huì)被更加廣泛的應(yīng)用。在我國(guó)由于電子技術(shù)水平相對(duì)落后,許多高精度、高性能的電子儀器都要進(jìn)口,價(jià)格昂貴,難以被廣泛使用,因而研制這種成本低的高性能的虛擬儀器,是很有必要的,而虛擬儀器也將成為今后電子器件發(fā)展的主流。
1 系統(tǒng)整體結(jié)構(gòu)概述
本設(shè)計(jì)主要是研制一個(gè)基于USB以及FPGA的虛擬數(shù)字存儲(chǔ)示波器,該系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示。系統(tǒng)主要由基于FPGA的數(shù)據(jù)采集電路、基于USB接口總線傳輸控制電路和計(jì)算機(jī)應(yīng)用程序三個(gè)主要部分組成。其中信號(hào)預(yù)處理電路還包括峰值檢測(cè)電路、信號(hào)觸發(fā)電路。USB接口傳輸電路主要是能實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,既要使數(shù)據(jù)采集電路采集到的數(shù)據(jù)能夠傳到計(jì)算機(jī),也要使計(jì)算機(jī)的控制信息能夠傳到硬件電路,控制數(shù)據(jù)采集工作。計(jì)算機(jī)的應(yīng)用程序要能夠?qū)Σ杉降臄?shù)據(jù)進(jìn)行處理、顯示,能夠控制硬件進(jìn)行數(shù)據(jù)采集等工作。
系統(tǒng)的基本工作原理如下:計(jì)算機(jī)首先通知FPGA開(kāi)始采集數(shù)據(jù),F(xiàn)PGA等到信號(hào)觸發(fā)時(shí)刻到來(lái)時(shí)就開(kāi)始從A/D轉(zhuǎn)換器中讀取500個(gè)數(shù)據(jù)存儲(chǔ)到FPGA的存儲(chǔ)器中;然后計(jì)算機(jī)就控制從FPGA讀取數(shù)據(jù),單片機(jī)接到命令后就從FPGA中讀取數(shù)據(jù)和信號(hào)的放大衰減倍數(shù)通過(guò)USB接口傳送到計(jì)算機(jī)。計(jì)算機(jī)軟件讀取了采集數(shù)據(jù)和信號(hào)的放大衰減倍數(shù)就能夠顯示出來(lái)了,并且通過(guò)控制虛擬界面就能夠?qū)崿F(xiàn)各種各樣的功能。而FPGA通過(guò)定時(shí)讀取信號(hào)的峰值幅度范圍再?zèng)Q定控制信號(hào)的放大衰減倍數(shù)。定時(shí)去重復(fù)以上過(guò)程就能夠看到信號(hào)的實(shí)時(shí)波形。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 數(shù)據(jù)采集電路設(shè)計(jì)
數(shù)據(jù)采集部分的功能就是采集被測(cè)信號(hào)波形數(shù)據(jù)并把它存人到FPGA中。首先把信號(hào)進(jìn)行預(yù)處理,再經(jīng)過(guò)A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字信號(hào),最后存入FPGA中。數(shù)據(jù)采集部分可以分為以下幾個(gè)模塊:信號(hào)調(diào)理、A/D轉(zhuǎn)換、觸發(fā)電路、峰值檢測(cè)以及FPGA的設(shè)計(jì)。數(shù)據(jù)采集電路結(jié)構(gòu)框圖如圖2所示。
由于被測(cè)信號(hào)的種類(lèi)多種多樣,相應(yīng)的采樣方式也千差萬(wàn)別?;静蓸臃绞娇煞譃閮纱箢?lèi):實(shí)時(shí)采樣和等效時(shí)間采樣。考慮到采樣方式的基本原則是:以保證采樣精度為前提,以被測(cè)信號(hào)的具體特性為依據(jù),盡量以較低的速率實(shí)現(xiàn)采樣,從而減少數(shù)據(jù)量,降低對(duì)傳輸、變換系統(tǒng)的要求,提高數(shù)據(jù)處理的效率。因此選擇實(shí)時(shí)采樣方式。對(duì)于實(shí)時(shí)采樣,當(dāng)數(shù)字化一開(kāi)始,信號(hào)波形的第一個(gè)采樣點(diǎn)就被采樣并數(shù)字化,經(jīng)過(guò)一個(gè)采樣間隔,再采入第二個(gè)子樣,這樣一直將整個(gè)信號(hào)波形數(shù)字化后存入波形示波器。實(shí)時(shí)采樣的優(yōu)點(diǎn)在于信號(hào)波形一到就采入,因此適用于任何形式的信號(hào),重復(fù)的或不重復(fù)的,單次的或連續(xù)的。所有的采樣點(diǎn)都是以時(shí)間為順序,因而易于實(shí)現(xiàn)波形顯示功能。本設(shè)計(jì)采用高的采樣頻率來(lái)實(shí)現(xiàn)對(duì)比較高的頻率信號(hào)進(jìn)行實(shí)時(shí)采樣,采用的A/D轉(zhuǎn)換器是TLC5510,采樣頻率最高可以達(dá)到20 MHz。
對(duì)于觸發(fā)電路采用比較器電路來(lái)實(shí)現(xiàn),用A/D轉(zhuǎn)換之前的模擬信號(hào)與一個(gè)固定的電壓進(jìn)行比較,比較器的輸出為一個(gè)與采樣信號(hào)同頻率的矩形波作為FPGA開(kāi)始讀取數(shù)據(jù)觸發(fā)信號(hào)。具體實(shí)現(xiàn)方法如下:采樣信號(hào)接比較器的同向輸入端,可變電阻的調(diào)整端接反向輸入端,而可調(diào)電阻的另外兩端分別接電源的正負(fù)極,這樣就可以通過(guò)調(diào)節(jié)可變電阻調(diào)節(jié)觸發(fā)電平。
被測(cè)信號(hào)調(diào)理電路的作用就是使輸入信號(hào)滿(mǎn)足A/D轉(zhuǎn)換器的幅度要求,同時(shí)也擴(kuò)大了輸入信號(hào)的幅度范圍。比如大信號(hào)必須經(jīng)過(guò)適當(dāng)?shù)乃p,以免因?yàn)榉冗^(guò)大而損壞電路中的元器件或是引起信號(hào)失真。而小信號(hào)又需要適當(dāng)?shù)姆糯?,否則采集恢復(fù)后的信號(hào)幅度太小,以至于無(wú)法正確地觀測(cè)信號(hào)。模擬信號(hào)調(diào)理主要包括:高阻衰減電路、程控放大器和加法器。被測(cè)信號(hào)調(diào)理電路原理圖如圖3所示。該電路主要采用多級(jí)運(yùn)算放大器電路構(gòu)成。
為了使FPGA能夠準(zhǔn)確地控制程控放大器的模擬開(kāi)關(guān),使程控放大器放大或衰減后的信號(hào)幅度在±1 V之內(nèi),又能夠充分利用A/D轉(zhuǎn)換器的量程。所以FPGA必須要先知道信號(hào)的峰值電壓,這就需要采用峰值檢測(cè)電路來(lái)檢測(cè)信號(hào)的峰值電壓。采樣信號(hào)先經(jīng)過(guò)電壓跟隨器來(lái)隔離輸入信號(hào)和峰值檢測(cè)電路,再用運(yùn)算放大器、二極管和電容組成檢測(cè)信號(hào)峰值。用三極管可以對(duì)電容上的電荷進(jìn)行放電。最后經(jīng)過(guò)比較器就可知道信號(hào)的峰值范圍。FPGA通過(guò)定時(shí)檢測(cè)峰值,從而去控制模擬開(kāi)關(guān),實(shí)時(shí)跟蹤信號(hào)的幅度。峰值檢測(cè)電路原理圖如圖4所示。
控制數(shù)據(jù)采集和從存儲(chǔ)器讀數(shù)據(jù)模塊的功能就是控制從A/D轉(zhuǎn)換器的輸出端中讀取數(shù)據(jù),然后存儲(chǔ)到FPGA中的存儲(chǔ)器。當(dāng)計(jì)算機(jī)需要讀數(shù)據(jù)時(shí),就控制把存儲(chǔ)器中的數(shù)據(jù)依次送出去,再通過(guò)USB接口傳送到計(jì)算機(jī)??刂茢?shù)據(jù)采集模塊和讀存儲(chǔ)器數(shù)據(jù)的電路示意圖如圖5所示。FPGA采用Altera公司生產(chǎn)的FPGA芯片EP1C3T144主芯片。
2.2 USB接口電路設(shè)計(jì)
USB接口電路綜合多方面因素進(jìn)行考慮,選用Philips公司的專(zhuān)用USB接口芯片PDIUSBD12和AT-MEL公司的AT89S52單片機(jī)進(jìn)行連接來(lái)實(shí)現(xiàn)USB總線接口功能。PDIUSBD12芯片提供了與任何外部微控制器或微處理器連接的高速并行接口。對(duì)單片機(jī)而言,PDIUSBD12就像一個(gè)帶8位數(shù)據(jù)總線和地址總線的存儲(chǔ)器件。PDIUSBD12芯片與單片機(jī)連接有兩種方式:地址和數(shù)據(jù)總線復(fù)用模式和非復(fù)用模式。這兩種模式的主要區(qū)別是芯片的第10引腳ALE和第28引腳A0的連接有所不同。本系統(tǒng)采用地址和數(shù)據(jù)總線復(fù)用模式,將第10腳ALE連接到單片機(jī)的地址鎖存使能端ALE,該腳將地址/數(shù)據(jù)總線上的地址信息鎖存,并通過(guò)內(nèi)部邏輯產(chǎn)生選通信號(hào),來(lái)判斷總線上傳輸?shù)氖敲钸€是數(shù)據(jù),因此單片機(jī)與該芯片的通信采用如下的方式:一個(gè)偶數(shù)地址表示單片機(jī)對(duì)芯片進(jìn)行讀/寫(xiě)數(shù)據(jù),本設(shè)計(jì)中使用7F00H地址,一個(gè)奇數(shù)地址表示單片機(jī)對(duì)芯片寫(xiě)入操作指令,本設(shè)計(jì)中使用7F01H地址。在這種模式下,該芯片的28引腳A0可以忽略,通過(guò)上拉電阻接電源。PDIUSBD12與單片機(jī)的連接電路原理圖如圖6所示。
3 系統(tǒng)軟件設(shè)計(jì)
應(yīng)用程序是指為了完成某項(xiàng)或某幾項(xiàng)特定任務(wù)開(kāi)發(fā)運(yùn)行于操作系統(tǒng)之上的計(jì)算機(jī)程序。本系統(tǒng)利用Borland C++ Builder 6.0開(kāi)發(fā)了一個(gè)具有基本硬件控制、數(shù)據(jù)傳輸、數(shù)據(jù)處理與顯示功能的應(yīng)用程序。該應(yīng)用程序主要包括顯示部分和控制面板部分。顯示部分可以將經(jīng)過(guò)一定處理的信號(hào)數(shù)據(jù)顯示出來(lái),并可對(duì)顯示方式做一定的調(diào)整??刂泼姘宀糠挚梢栽诳刂茢?shù)據(jù)采集硬件電路的啟動(dòng)、停止、采樣頻率以及存儲(chǔ)數(shù)據(jù)、頻譜分析等工作。
應(yīng)用軟件是整個(gè)系統(tǒng)的控制中心,所有的命令都是由這里發(fā)出的。主要由面板顯示部分、觸發(fā)采集數(shù)據(jù)與讀取數(shù)據(jù)部分、采樣頻率控制部分、頻譜分析部分、波形保存與回放部分、調(diào)節(jié)波形顯示部分等幾部分組成的。工作過(guò)程如下:軟件先發(fā)出開(kāi)始波形信號(hào)采集的命令,通過(guò)USB接口控制FPGA采集數(shù)據(jù),根據(jù)采樣頻率即可大概估計(jì)FPGA采集500個(gè)點(diǎn)所需要的時(shí)間,經(jīng)過(guò)適當(dāng)?shù)难訒r(shí)之后就控制從FPGA存儲(chǔ)器讀取采集的數(shù)據(jù),然后根據(jù)采樣頻率和信號(hào)的放大倍數(shù)對(duì)數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚?,最后就在面板上顯示出來(lái)。定時(shí)地重復(fù)上面的過(guò)程就能夠定時(shí)地更新顯示的波形,從而實(shí)時(shí)顯示信號(hào)的波形。
應(yīng)用程序中主循環(huán)程序是核心內(nèi)容,它主要是檢查事件標(biāo)志,然后進(jìn)入對(duì)應(yīng)的子程序進(jìn)行進(jìn)一步處理。本系統(tǒng)主要用到端點(diǎn)2的輸入與輸出兩個(gè)功能,利用端點(diǎn)2的輸入傳輸采集到的數(shù)據(jù),利用端點(diǎn)2的輸出讓單片機(jī)接受計(jì)算機(jī)的命令,例如啟動(dòng)采樣,改變采樣頻率等。主循環(huán)程序的流程圖如圖7所示。
最后開(kāi)發(fā)出具有多功能綜合測(cè)量應(yīng)用軟件界面如圖8所示。
4 結(jié) 語(yǔ)
本設(shè)計(jì)是在C++ Builder。的應(yīng)用軟件開(kāi)發(fā)環(huán)境下,由PDIUSBD12的USB接口芯片組成的USB接口電路及FPGA控制的數(shù)據(jù)采集系統(tǒng)做成的虛擬數(shù)字示波器。該系統(tǒng)能實(shí)現(xiàn)對(duì)信號(hào)幅度在±O.1~±25 V,頻率在0~1 MHz的信號(hào)進(jìn)行測(cè)量并顯示出波形。本設(shè)計(jì)研究的虛擬數(shù)字示波器具有普通示波器的顯示信號(hào)波形的功能,而且具有普通示波器所不具有的存儲(chǔ)和回放信號(hào)的波形、頻譜分析等功能。通過(guò)對(duì)應(yīng)用軟件進(jìn)行操作,可對(duì)信號(hào)波形進(jìn)行左右拉伸、上下拉伸、左右移動(dòng)和上下移動(dòng)。還可以對(duì)信號(hào)進(jìn)行頻譜分析、存儲(chǔ)和顯示信號(hào)的波形,調(diào)節(jié)信號(hào)的采樣頻率。實(shí)驗(yàn)結(jié)果表明該設(shè)計(jì)方案是可行的,并具有較好的應(yīng)用前景。