毛群
(阿壩師范學院 電子信息與自動化學院,四川汶川, 623002)
頻率測量在信號處理、工程應用中隨處可用,常見的頻率測量方法有直接測頻法和周期測頻法以及等精度測頻法。其中直接測頻、周期測頻法的弊端在于測頻誤差要隨待測信號本身頻率變化而變化,使其在工程應用中有所限制。而等精度測頻法測量精度高且不會因待測信號頻率變化而發生變化[1]。
等精度測量頻率方法消除誤差的原理是采用被測信號觸發門控信號,使得實際門控信號周期不再是一個固定值,而剛好是被測信號周期的整數倍,這樣便消除傳統測量中產生±l的周期誤差,使測頻精度與待測信號頻率無關,實現待測信號全頻率范圍等精度測量[2]。其時序如圖1所示,設在閘門時間T內,計數器計數N個待測時鐘,計數M個基準時鐘。

圖1 等精度測頻工作時序圖
在時間T內,利用兩個計數器同步計數關系有:
則待測信號頻率為:

數字頻率計系統由自動增益控制AGC模塊、整形模塊、頻率采集模塊、主控模塊和液晶顯示模塊構成,系統結構框圖如圖2所示。頻率采集模塊采用FPGA實現,用它設計等精度測量模塊和SPI通信模塊,對數據進行采集后送給單片機,完成對頻率數據的采集和與主模塊通信。主控模塊采用STM32F103C8T6單片機,其內置64K或128K閃存程序儲存器,具有快速處理數據、低功耗、價格低廉等優點。STM32單片機接收數據后,對數據進行處理計算,送LCD液晶顯示。系統前端主要是利用壓控放大器AD603和檢波電路實現信號增益控制,集成施密特觸發器74HC14電路模塊實現信號整形[3]。

圖2 系統結構框圖
為適應各種頻率、幅度的待測信號fs,頻率計系統設計了自動增益控制電路(AGC),該模塊主要由程控放大器AD603、高速比較器AD8561、集成放大器OPA690和檢波電路構成,如圖3所示。電路基本原理:通過放大信號反饋改變電路放大倍數,實現自動調節,使放大信號幅度在一定的范圍內保持穩定[4]。從而控制其增益,使其輸出幅度穩定的信號。輸出信號通過如圖4所示共射放大整形電路輸入FPGA。

圖3 自動增益控制電路圖

圖4 整形電路圖
基于等精度測頻原理,通過Verilog語言編寫代碼,設計等精度測頻模塊電路,電路如圖5所示,本設計采用的是FPGA CycloneII-EP2C5T144C8N。脈沖計數(signal)采用系統時鐘分頻。單片機發送清零信號對FPGA計數器清零,發啟動信號到FPGA的enable端口。經過邏輯判斷后計數模塊輸出高電平的clken信號到DFF觸發器輸入D端口,此時觸發器輸出Q端是低電平,計數模塊還沒有開始計數和計時,只有當輸入信號出現上升沿時,觸發器輸出Q端才輸出高電平到計數模塊的gate_ctr端口(門控信號),計數模塊在門控信號為高電平時開始對輸入信號和標準時鐘信號計數。當計時到1s時,計數模塊控制邏輯輸出低電平的clken信號到DFF觸發器D端口,此時觸發器輸出Q端還是高電平,計數模塊還沒停止工作,只有當輸入信號出現上升沿時,觸發器輸出Q端才輸出低電平到計數模塊的gate_ctr端口。因為計數器是在輸入信號上升沿開始工作,同樣在輸入信號的上升沿結束,實現了等精度測頻,沒有脈沖計數的誤差[5~6]。

圖5 等精度測頻原理的FPGA設計電路圖
在結束一次測量后,計數模塊(freq)輸出finish信號給單片機,單片機分時讀取計數數據和計時數據,并完成計算處理得出頻率。讀取數據需要sel、addr0、addr1控制信號參與,數據口(count)是8位,而計數(計時)32位,可分批讀取,當SEL為1時,讀取計數值,分4次讀取;當SEL為0時,讀取計時值,分4次讀取,然后進行數據處理。讀取并處理完成數據的頻率值后,進入下一次測量。下一次測量前,單片機發送clr清零信號到FPGA,把上一次的計數計時數據、信號標志位等復位;單片機發送啟動信號(低電平)到FPGA的enable端口,開始新一輪測量。
FPGA除了完成等精度測量電路,還要實現將采集的頻率數據與主控單片機模塊通信,故在FPGA中設計SPI通信模塊。其工作時序為SCK上升沿數據采樣,下降沿輸出數據。在SPI通信模塊中先分別捕捉由STM32傳送的SCK信號的上升沿和下降沿,然后SCK上升沿且CS為低電平,FPGA作為從機逐位讀取STM32主機發送的命令數據并寄存在rxd_data中,再傳送freq模塊的rxd_command;SCK下降沿且CS為低電平,FPGA從機通過MISO通道向STM32主機逐位傳送寄存在txd_Data中的數據。采用Verilog語言編程實現的FPGA電路設計如圖6所示。

圖6 FPGA模塊整體電路圖
單片機主控與外圍電路連接如圖7所示,本設計使用STM32F103C8T6單片機。其中2腳~14腳外接一個LCD液晶顯示,用于顯示測得的信號頻率和周期;21腳~24腳是用于與FPGA通信的四條SPI串線:從設備片選CS、MISO通道、MOSI通道和時鐘信號SCLK。四條SPI串線控制整個系統:通過SPICS選中FPGA或初始化FPGA,時鐘信號SCLK是由STM32控制,STM32向FPGA發送數據時設置為高電平,STM32接收FPGA傳回的數據時設置為低電平。MOSI通道用于STM32向FPGA發送數據或者命令,而MISO通道則是用于FPGA向STM32發送數據或者命令,通過這兩個通道,在時鐘信號的相應階段,實現STM32和FPGA的通信。

圖7 STM32電路連接圖
STM32主控設計流程如圖8所示。當系統開始運行,STM32單片機初始化I/O端口和LCD液晶顯示后,根據SPI協議,通過MOSI端向FPGA發送初始化命令(其中包括使能清零和數據清零),再向FPGA發送測頻使能信號,控制FPGA開始測頻,FPGA計數器計數和定時。單片機檢測FPGA是否傳送回測頻結束信號,確定狀態:如果接收到測頻結束信號,則從FPGA中讀取測頻數據,同時控制FPGA停止測頻,然后對采集的數據進行運算處理得到所測的頻率和周期,并在LCD1602液晶上顯示,再將FPGA初始化,啟動下一次測量。

圖8 STM32單片機主控流程圖
由于自動增益控制電路帶寬設計約為45MHz。系統測試時,在選 擇1Hz~40MHz內 選 取100Hz、100kHz、1MHz、10MHz、40MHz頻率點進行測試,測量結果如表1所示。從測量結果可以看出,所設計的等精度數字頻率計系統消除了頻率測量中的±1誤差,在整個測量范圍內測量相對誤差都在2×10-4以內,系統具有較寬測量范圍和一定精度。

表1 測量結果
本文設計的數字頻率計主要利用FPGA和單片機設計,由FPGA采集計數值,單片機進行頻率值計算和顯示,規避了FPGA不便于浮點運算的不足,有效利用單片機便于控制及人機交互的特點。實驗表明,提高系統晶振頻率和精度,可有效保證頻率計的測量精度,該設計具有潛在的實用價值。