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