蔣江紅,張玉梅
(陜西師范大學(xué) 計算機科學(xué)學(xué)院,陜西 西安 710119)
傳統(tǒng)數(shù)字存儲示波器普遍存在體積大、價格昂貴和不方便攜帶等問題[1-2],主要是在一些有條件的實驗室環(huán)境下使用,對于一些條件比較惡劣和環(huán)境復(fù)雜的場合,使用起來往往比較困難。為了解決這些問題,設(shè)計了一種FPGA與STM32相結(jié)合的便攜式數(shù)字存儲示波器系統(tǒng)。由于示波器的性能、復(fù)雜度和成本與數(shù)據(jù)處理端信號的采樣、存儲和處理有關(guān)[3-4],F(xiàn)PGA與其他微處理器相比,不僅處理速度較快而且接口資源豐富[5-7],因此可以結(jié)合FPGA在邏輯控制以及高速信號采集方面的優(yōu)勢來提高數(shù)字存儲示波器的性能。
FPGA主要包括基準(zhǔn)時鐘、分頻器、門限生成、采樣率控制幾個功能子模塊[8-9]。另外根據(jù)μc OS II操作系統(tǒng)和μc GUI圖形界面系統(tǒng)在LCD顯示的實時性以及執(zhí)行任務(wù)的靈活性[10],采用模塊化的設(shè)計方法,極大地提高了系統(tǒng)在復(fù)雜工作環(huán)境下進(jìn)行信號檢測的效率。
整個系統(tǒng)采用FPGA+STM32相結(jié)合的工作方式,STM32作為系統(tǒng)的控制核心[11],主要完成示波器的信號分析、處理、變換,系統(tǒng)功能控制和顯示操作等工作;數(shù)據(jù)信號的采集控制和顯示控制等工作由FPGA完成。系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
系統(tǒng)中前端調(diào)理電路的作用主要是為了產(chǎn)生適合于進(jìn)行高速AD轉(zhuǎn)換的信號[12]。該部分由輸入阻抗匹配電路、放大電路、信號緩沖電路和電平平移電路組成,其中輸入阻抗匹配電路主要是為了避免由于接上的負(fù)載干擾電路的正常工作;放大電路的主要功能是適當(dāng)調(diào)整信號的幅度,以便后續(xù)電路對信號的處理;信號緩沖電路和平移電路的主要作用是對傳輸?shù)男盘栠M(jìn)行處理,以便產(chǎn)生適合AD轉(zhuǎn)換的信號。
比較電路是上升沿觸發(fā)信號產(chǎn)生電路的關(guān)鍵組成部分,該電路工作的過程是將輸入信號與設(shè)定的觸發(fā)電平即門限電平進(jìn)行比較,當(dāng)輸入信號的幅度大于設(shè)定的閾值時,比較器輸出上升沿跳變,形成觸發(fā)信號,為后續(xù)顯示提供FIFO輸出參考[13]。通過引入正反饋來形成遲滯電平,從而完成遲滯比較和消除噪聲干擾。
數(shù)據(jù)采集電路中的AD芯片選用的是雙核8位單芯片模數(shù)轉(zhuǎn)換器AD9288。該芯片內(nèi)置片內(nèi)保持電路,采用100 MSPS轉(zhuǎn)換速率工作,每個通道均可以獨立工作。為了簡化硬件電路的設(shè)計以及消除其他信號的干擾,AD數(shù)據(jù)采集中的采樣時鐘由FPGA提供;通過改變采樣頻率來實現(xiàn)掃描速度的改變。信號的采樣分為實時采樣和等效采樣,為了提高系統(tǒng)的性能,系統(tǒng)將兩種方式相結(jié)合,當(dāng)輸入信號頻率低于20 MHz時,選用實時采樣;反之,選用等效采樣。
FPGA電路主要包括時鐘分頻電路和FIFO電路,通過在FPGA內(nèi)部設(shè)計一個分頻電路來選擇不同的采樣頻率,確保數(shù)據(jù)采集系統(tǒng)具有較大的測量范圍,利用程序來實現(xiàn)電路的不同分頻比,從而使時鐘滿足AD采集需求。為了實現(xiàn)對AD采集數(shù)據(jù)的快速存儲,設(shè)計大小為4 096 B的FIFO,AD采集電路開啟時,F(xiàn)IFO開始存儲數(shù)據(jù)[14-15]。
該系統(tǒng)的中央控制器采用的是低功耗的Cortex-M3系列的STM32芯片[16],該芯片的最大工作頻率為72 MHz。中央控制器的主要功能是以一定的時鐘頻率讀取FPGA內(nèi)FIFO中的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行相應(yīng)處理,以便重建信號波形;顯示部分使用的是具有觸摸功能的TFTLCD,分辨率為400*240,通過STM32的FSMC接口來控制該顯示器。
系統(tǒng)通過FPGA進(jìn)行數(shù)據(jù)的采集和AD轉(zhuǎn)換控制,分為AD采樣控制模塊和FIFO讀寫數(shù)據(jù)控制模塊,其中采樣控制模塊產(chǎn)生一個時鐘信號,控制AD工作,以及將AD轉(zhuǎn)換后的數(shù)據(jù)寫入到異步FIFO中;讀寫數(shù)據(jù)控制模塊用來控制數(shù)據(jù)的讀和寫。FPGA的程序設(shè)計流程如圖2所示。
圖2 FPGA程序設(shè)計流程
數(shù)字存儲示波器的參數(shù)分為幅度參數(shù)和周期時間參數(shù),其中幅度參數(shù)是根據(jù)各通道的量程來計算,時間參數(shù)是依據(jù)時基來計算。
根據(jù)脈沖參數(shù)的定義,在參數(shù)測試中只需要知道波形頂值電壓、底值電壓、10%電壓、50%電壓、90%電壓等幾個關(guān)鍵的電壓值,就能在此基礎(chǔ)上找到對應(yīng)電壓值出現(xiàn)在待測波形數(shù)據(jù)中的相對位置,從而實現(xiàn)各參數(shù)的測試。
3.2.1 頻數(shù)直方圖密度分布眾數(shù)法
由于波形的頂值和底值可能不是波形的全局最值,為了較精確地獲取波形的底線和頂線數(shù)據(jù),采用頻數(shù)直方圖密度分布眾數(shù)法將出現(xiàn)次數(shù)比整個顯示點數(shù)的5%多并且反復(fù)出現(xiàn)的點作為最一般常見點,當(dāng)這種類型的點不存在時,分別將正峰值和負(fù)峰值作為波形的頂值和底值。
3.2.2 周期和頻率的測量
根據(jù)定義可知,通過信號周期可以計算頻率,因此可以先測出周期,其倒數(shù)即為頻率,當(dāng)信號周期不存在,其頻率也不存在。定義計算周期的步驟為:
(1)信號的頂值和底值是通過直方圖方法來確定;
(2)計算出50%電壓值:50%電壓值=底值電壓+(頂值電壓-低值電壓)*50%;
(3)對于周期的測量需要找到連續(xù)的3個數(shù)值和50%電壓值相等的點的屏幕坐標(biāo);當(dāng)沒有等于50%電壓值時,找到與50%電壓值最接近的點;
(4)周期=(第三個50%點的坐標(biāo)-第一個50%點的坐標(biāo))*單位時間值。
當(dāng)時基較小,可以求出所有50%點,通過50%點的平均值的算法提高精確度;當(dāng)時基較大時,第三個50%點不是第300個點時,由于每屏為300個點,可以繼續(xù)尋找下一個50%點直到第300個點為止。程序流程如圖3所示。
主控制器軟件系統(tǒng)的主要功能是讀取FPGA中采集到的用于波形分析和重建的數(shù)據(jù),為了提高系統(tǒng)的實時性和可維護(hù)性,系統(tǒng)采用源碼公開的UCOS多任務(wù)實時操作系統(tǒng),同時充分利用系統(tǒng)底層CPU寄存器來編寫出高效率可靠的實時應(yīng)用層代碼。
在波形的顯示上主要采用嵌入式圖形軟件UCGUI,由于其采用模塊化的設(shè)計,LCD驅(qū)動程序包含了對LCD的全部訪問接口,因此適用于任何LCD控制和CPU的任何尺寸的物理和虛擬顯示。系統(tǒng)的控制流程如圖4所示。
圖3 周期測量流程
圖4 系統(tǒng)控制流程
基于以上設(shè)計和硬件平臺,分別進(jìn)行了水平分辨率測試和垂直靈敏度測試。系統(tǒng)測試如圖5所示,觀察示波器產(chǎn)生的掃描電壓以及在信號上升沿開始顯示波形。通過實際觀察能夠產(chǎn)生掃描電壓,并正常顯示波形。在垂直靈敏度測試的正弦信號頻率為10 kHz時,測得的數(shù)據(jù)如表1所示。
檔位輸入Vi/V輸出Vo/V誤差=|Vi-Vo|/V?100%1 V/div76.74.20%43.85.00%22.15.00%0.1 V/div0.80.773.75%0.60.623.33%0.40.384.00%0.2 V/div0.0160.015 53.12%0.0080.008 11.25%0.0040.003 92.50%
由表1數(shù)據(jù)可知,測量結(jié)果都在測量誤差允許的范圍內(nèi),很好地完成了設(shè)計任務(wù)。
系統(tǒng)在設(shè)計中主要有以下三個難點:系統(tǒng)前端調(diào)理電路設(shè)計,該部分電路設(shè)計的好壞是整個系統(tǒng)能否正常運行的關(guān)鍵;觸發(fā)電路的設(shè)計;提高被測波形的相關(guān)參數(shù)測量的精確度一直都是重點解決的問題。系統(tǒng)的創(chuàng)新主要體現(xiàn)在:一、系統(tǒng)將高速邏輯控制器件與單片機結(jié)合在一起,能夠?qū)烧叩膬?yōu)勢發(fā)揮出來,分工合作使其設(shè)計的效果達(dá)到最佳;二、采用高速的AD轉(zhuǎn)換芯片,提高了系統(tǒng)的帶寬;三、將嵌入式實時操作系統(tǒng)與嵌入式圖形界面結(jié)合在一起,比較精確地重建了波形。