翁蕓,李偉
(寧波職業(yè)技術(shù)學(xué)院,浙江寧波,315800)
在儀器儀表中,經(jīng)常需要測量信號的頻率、幅值、失真度、占空比等參數(shù),并根據(jù)這些參數(shù)來分辨信號的種類,測量的精度和識別的準(zhǔn)確率是衡量儀器儀表性能高低的重要指標(biāo)。
用單片機(jī)作為測量核心是目前的主流,其存在設(shè)計(jì)簡單、成本低廉等優(yōu)點(diǎn),但因受單片機(jī)硬件資源的限制,產(chǎn)品的性能很難提升,也不利于升級換代。而隨著芯片制造工藝的不斷發(fā)展及市場需求量不斷增加,F(xiàn)PGA 芯片的性能得到飛速的提升,價(jià)格也趨于穩(wěn)定。FPGA 芯片由于其具有高度靈活、可擴(kuò)展的特點(diǎn),能夠以更低的成本實(shí)現(xiàn)產(chǎn)品性能的提升和升級,受到市場的青睞。本文以FPGA 和STM32F4單片機(jī)為核心,設(shè)計(jì)一款波形識別及參數(shù)測量裝置,測試該裝置的性能并驗(yàn)證方案的可行性,為以后的類似產(chǎn)品研發(fā)打下基礎(chǔ)。
本裝置主要組成為直流供電模塊、信號調(diào)理電路、A/D 轉(zhuǎn)換模塊、過零比較電路、FPGA 信號采樣及處理模塊、STM32 主控模塊、顯示電路,各部分連接關(guān)系如圖1 所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
信號調(diào)理電路采用集成程控放大器,具備放大和衰減的功能,無須多路模擬開關(guān),系統(tǒng)根據(jù)預(yù)測交流信號的幅值大小設(shè)定放大倍數(shù),被測信號經(jīng)過兩級程控放大和一級同相放大后,波形已達(dá)到最佳測量幅值范圍,再送至A/D 模塊進(jìn)行模數(shù)轉(zhuǎn)換,可提高測量精度。
高速A/D 轉(zhuǎn)換模塊則將調(diào)理好后的交流信號轉(zhuǎn)變成數(shù)字信號送至FPGA,為有效消除共模干擾信號,本設(shè)計(jì)采用差模轉(zhuǎn)換方式。
FPGA 模塊采用cyclone IV 系列EP4CE10F17C8 芯片,控制高速ADC 模塊進(jìn)行數(shù)據(jù)采集,通過高速并行口,配合FPGA內(nèi)部的高速RAM,可輕松實(shí)現(xiàn)大于20MHz的采樣速率,該模塊除高速采集A/D 信號外,還要精確測量被測信號的頻率,測量信號是通過過零比較電路得到。FPGA 將采集到的A/D 值和頻率值通過FMC 接口傳送給STM32 單片機(jī)。
STM32 主控模塊采用STM32F429 單片機(jī),根據(jù)按鍵值發(fā)送頻率測量和數(shù)據(jù)采樣啟??刂菩盘?,并利用自身強(qiáng)大的計(jì)算能力對采樣到的數(shù)據(jù)進(jìn)行RMS、FFT 等多種運(yùn)算,得到被測信號的峰峰值、有效值、占空比、失真度等參數(shù),并根據(jù)以上參數(shù)判斷出波形類別,最終將波形及參數(shù)顯示在液晶顯示屏上。
顯示模塊選用電容串口液晶顯示屏,串口的液晶顯示屏功耗比較低,節(jié)能環(huán)保,只需要觸摸,而不需要壓力來產(chǎn)生信號,使用方法靈活、使用壽命長、顯示高彩色保真、高亮、高對比度,其適用范圍廣,與傳統(tǒng)顯示屏相比,畫面效果更佳。
為滿足50mV ≤VPP ≤10V 寬幅值信號采樣需求,信號放大部分采用AD603 集成程控放大器。程控放大電路主要由三個(gè)部分構(gòu)成,分別是第一級調(diào)偏電路及AD603 程控放大電路、第二級調(diào)偏電路及AD603 程控放大電路、末級放大電路。為了使通帶內(nèi)輸出平坦,在第一級和第二級之間加入低通濾波。圖2 為AD603 程控放大電路原理圖。
圖2 AD603程控放大電路原理圖
兩級AD603 的增益控制引腳直接短接,實(shí)現(xiàn)增益的同步設(shè)置;末級運(yùn)放可以根據(jù)實(shí)際需要來設(shè)計(jì)放大電路增益,放大電路類型是同相輸入比例放大,由R6 和R5 的比值來確定增益值,本模塊默認(rèn)放大2 倍。電路增益通過STM32 內(nèi)部D/A 控制,其輸出電壓經(jīng)電平平移后生成VG信號,輸出增益與VG 的關(guān)系為G(db)=80VG+20,VG 取值±500mV。
A/D 轉(zhuǎn)換模塊包括信號調(diào)理與A/D 轉(zhuǎn)換電路兩個(gè)部分,A/D 轉(zhuǎn)換采用TI 公司的高速12bit、最大采樣速率65MSPS的芯片AD9226。其硬件結(jié)構(gòu)框圖如圖3 所示,包括信號輸入接口、衰減電路、信號調(diào)理電路和高速A/D 芯片等。
圖3 A/D 轉(zhuǎn)換模塊結(jié)構(gòu)框圖
信號輸入電壓范圍為-5V~+5V,即峰峰值≤10Vpp。電壓調(diào)理電路轉(zhuǎn)換公式為:VAD=-(1/5)VIN+2。當(dāng)輸入信號VIN=+5V的時(shí)候,輸入到A/D 的信號VAD=1V;當(dāng)輸入信號VIN=0V的時(shí)候,輸入到A/D 的信號VAD=2V;當(dāng)輸入信號VIN=-5V的時(shí)候,輸入到A/D的信號VAD=3V;模塊轉(zhuǎn)換后的數(shù)字量D 和輸入VIN之間的關(guān)系為:D=2048 -(1/5)VIN× 2048。A/D轉(zhuǎn)換模塊原理圖如圖4所示。
圖4 A/D 轉(zhuǎn)換模塊原理圖
FPGA 模塊是本項(xiàng)目的核心,需要完成頻率測量和波形采樣兩大任務(wù),其頂層設(shè)計(jì)如圖5 所示,共有5個(gè)模塊組成,分別是PLL 模塊、頻率測量模塊、ADC 時(shí)鐘控制模塊、AD9226控制模塊和FMC 控制模塊。
圖5 FPGA 頂層設(shè)計(jì)圖
PLL 鎖相環(huán)模塊用于生成高頻時(shí)鐘信號,通過調(diào)用IP核完成,輸入時(shí)鐘50M,輸出時(shí)鐘信號為150M,供其他模塊電路使用。
頻率測量模塊(clock_test)采用等精度頻率測量法,該模塊受STM32 控制,當(dāng)clk_test_sig 為高電平時(shí)開始測量,測得的值通過FMC 模塊傳送至單片機(jī),為保證A/D 采樣時(shí)序與被測信號同步,該模塊還為ADC 時(shí)鐘控制模塊提供被測信號的同步時(shí)鐘信號(clk_edge_out)。
ADC 時(shí)鐘控制模塊(adc_clock_con)用于產(chǎn)生被測信號的128 倍頻時(shí)鐘信號,該時(shí)鐘信號需與被測信號的過零點(diǎn)同步,以確保每次采樣信號的初始相位一致,便于后期數(shù)據(jù)處理及計(jì)算,頻率控制值是STM32 通過FMC 接口傳送給FPGA。倍頻后的時(shí)鐘信號(adc_clk)直接送至A/D 轉(zhuǎn)換電路,作為該模塊的驅(qū)動時(shí)鐘信號。
AD9226 控制模塊(HI_Speed_AD9226)用于將采集到的A/D 值保存到FPGA 內(nèi)部高速RAM 中,需根據(jù)ADC 時(shí)鐘控制模塊提供的信號(adc_test_flag)同步采集,一次測量數(shù)據(jù)采集結(jié)束后,生成數(shù)據(jù)有效信號,通知STM32 讀取數(shù)據(jù)。
FMC(fmc_control)控制模塊用 于FPGA 和STM32 的高速通信,內(nèi)部設(shè)有5 個(gè)數(shù)據(jù)讀寫通道和一個(gè)1024*16 高速RAM,5 個(gè)數(shù)據(jù)讀寫通道可以雙向傳遞控制命令和數(shù)據(jù),而RAM 只用于單向數(shù)據(jù)傳送,F(xiàn)PGA 負(fù)責(zé)寫入,STM32 只能將數(shù)據(jù)讀出。
2.3.1 頻率測量模塊設(shè)計(jì)
頻率測量常用的方法有直接測頻法、直接測周法和等精度測量法。因被測信號的頻率范圍較寬(1Hz~50kHz),為保證測量精度,本設(shè)計(jì)采用等精度測量法,原理框圖如圖6 所示。
圖6 等精度測頻原理圖
頻率測量主要由FPGA 完成,測量啟動信號即預(yù)置門控信號由STM32 發(fā)送給FPGA,只需發(fā)送一個(gè)短脈沖即可,F(xiàn)PGA 收到信號后首先檢測被測信號的上升沿,檢測到以后立刻開啟門控定時(shí)器,生成0.5 秒實(shí)際門控信號,并同時(shí)開啟SCNT 和XCNT 兩個(gè)計(jì)數(shù)器,分別對標(biāo)準(zhǔn)信號fs 和被測信號fx 進(jìn)行計(jì)數(shù),當(dāng)0.5 秒門控時(shí)間到了以后,F(xiàn)PGA 再次檢測被測信號的上升沿,檢測到以后立刻停止SCNT 和XCNT 兩個(gè)計(jì)數(shù)器并將數(shù)據(jù)鎖存在Ns 和Nx 寄存器中,同時(shí)生成頻率測量數(shù)據(jù)有效信號,通知STM32 讀取數(shù)據(jù)并進(jìn)行計(jì)算,被測頻率計(jì)算公式為:fx=(Nx/Ns)×fs。
2.3.2 信號采集模塊設(shè)計(jì)
AD9226 單路高速A/D 模塊是在芯片時(shí)鐘的上升沿進(jìn)行數(shù)據(jù)的采集,根據(jù)設(shè)計(jì)要求,對于不同頻率的被測信號,都要采集128 個(gè)點(diǎn),所以采樣頻率始終是被測頻率的128 倍,這個(gè)頻率控制值由STM32 根據(jù)被測信號的頻率計(jì)算獲得,通過FMC 接口傳送給FPGA,然后下達(dá)采樣開始命令。
FPGA 檢測到采樣開始命令后,把過零比較電路生成的方波信號的上升沿作為同步信號,控制A/D 轉(zhuǎn)換模塊按照被測信號頻率的128 倍頻速率連續(xù)采樣128 個(gè)點(diǎn)(為消除倍頻系數(shù)誤差產(chǎn)生的影響,實(shí)際采樣192 個(gè)點(diǎn)),并把采樣數(shù)據(jù)按順序存儲到FPGA 內(nèi)部RAM 中。采樣結(jié)束后,F(xiàn)PGA 通過FMC 雙向通道通知STM32 讀取數(shù)據(jù),STM32檢測到信號后,按順序讀取FPGA 內(nèi)部RAM 中的數(shù)據(jù)并存放至自己的內(nèi)存中,以供后面的參數(shù)計(jì)算使用。FPGA 信號采集時(shí)序圖如圖7 所示。
圖7 FPGA 信號采集時(shí)序圖
STM32 單片機(jī)主要完成按鍵檢測、測量命令發(fā)送、數(shù)據(jù)計(jì)算、波形識別及LCD 屏顯示等功能,其流程圖如圖8 所示。
圖8 STM32 主流程圖
波形識別最常用方法為波峰系數(shù)識別法(峰值與有效值的比值),可以分辨出矩形波、正弦波和三角波,但光靠波峰系數(shù)一個(gè)參數(shù)還是無法分辨更多的波形,比例鋸齒波、階梯波等,本設(shè)計(jì)采用波峰系數(shù)、失真度、電壓跳變次數(shù)三個(gè)參數(shù)綜合分析法,可以有效分辨以上所有波形。
波形識別前先要對采樣數(shù)據(jù)進(jìn)行必要的處理和計(jì)算,根據(jù)上面同步信號可知,過零信號為采樣起始點(diǎn),所以兩個(gè)相鄰上穿(或下穿)零軸之間的數(shù)據(jù)即為一個(gè)完整周期數(shù)據(jù),把這些數(shù)據(jù)提取出來用于各參數(shù)計(jì)算。需要注意的是,正常的話一個(gè)完整周期應(yīng)該是128 個(gè)點(diǎn),如果不是,說明倍頻值計(jì)算存在誤差,需要對系統(tǒng)主時(shí)鐘或采樣點(diǎn)數(shù)進(jìn)行調(diào)整,不然計(jì)算參數(shù)時(shí)會產(chǎn)生較大誤差。另外,之所以取128 個(gè)點(diǎn),一是為了提高測量精度,二是為滿足STM32 單片機(jī)FFT 運(yùn)算要求。如果要測量更高的頻率信號,可以適當(dāng)降低采樣點(diǎn)數(shù),但必須是2 的n 次方。
所有參數(shù)的計(jì)算都由STM32 單片機(jī)完成,F(xiàn)4 系列單片機(jī)具有基于ARM Cortex M4 的高性能32 位微控制器,并且采用DSP 和FPU 指令,可以高效完成有效值和FFT 運(yùn)算,計(jì)算速度和精度都達(dá)到設(shè)計(jì)要求,根據(jù)實(shí)際測試,各參數(shù)值與理論值非常接近,完全達(dá)到精確辨別波形要求。各波形波峰系數(shù)、失真度和電壓跳變次數(shù)的理論參數(shù)值與實(shí)測參數(shù)值如表1 所示。
表1 各波形參數(shù)理論值與實(shí)測值
本裝置按照先波峰系數(shù)、再失真度、后電壓跳變次數(shù)識別順序,只要各參數(shù)的比較閾值選擇合理,識別成功率達(dá)到100%。
最后經(jīng)多次實(shí)測,頻率、峰峰值及波形識別的測試結(jié)果如表2 所示。
本設(shè)計(jì)充分發(fā)揮FPGA 高速并行性能和STM32 單片機(jī)強(qiáng)大計(jì)算能力,通過兩者的協(xié)同工作,能精確測量周期性信號的幅值、頻率、失真度等參數(shù),誤差遠(yuǎn)小于1%,并能根據(jù)測得的數(shù)據(jù)判斷不同波形,正確率達(dá)100%,完全達(dá)到設(shè)計(jì)預(yù)期效果,本設(shè)計(jì)對于未來開發(fā)高性能的電子測量設(shè)備具有一定的借鑒意義。