現(xiàn)場可編程門陣列FPGA(Field Programmable GateArray)屬于ASIC產(chǎn)品,通過軟件編程對目標(biāo)器件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),能隨時對設(shè)計進(jìn)行調(diào)整,具有集成度高、結(jié)構(gòu)靈活、開發(fā)周期短、快速可靠性高等特點(diǎn),數(shù)字設(shè)計在其中快速發(fā)展。
本文介紹了一種利用FPGA實現(xiàn)DC~100 MHz的自動切換量程數(shù)字等精度頻率計的實現(xiàn)方法,并給出實現(xiàn)代碼。整個系統(tǒng)在研制的CPLD/FPGA實驗開發(fā)系統(tǒng)上調(diào)試通過。
1 等精度測頻原理
頻率的測量方法主要分為2種方法:
(1)直接測量法,即在一定的閘門時間內(nèi)測量被測信號的脈沖個數(shù)。
(2)間接測量法,例如周期測頻法、V-F轉(zhuǎn)換法等。 間接測頻法僅適用測量低頻信號。
基于傳統(tǒng)測頻原理的頻率計的測量精度將隨被測信號頻率的下降而降低,在實用中有較大的局限性,而等精度頻率計不但具有較高的測量精度,而且在整個頻率區(qū)域能保持恒定的測試精度。
本設(shè)計頻率測量方法的主要測量控制框圖如圖1所示。圖1中預(yù)置門控信號GATE是由單片機(jī)發(fā)出,GATE的時間寬度對測頻精度影響較少,可以在較大的范圍內(nèi)選擇,只要FPGA中32 b計數(shù)器在計100 M信號不溢出都行,根據(jù)理論計算GATE的時間寬度Tc可以大于42.94 s,但是由于單片機(jī)的數(shù)據(jù)處理能力限制,實際的時間寬度較少,一般可在10~0.1 s間選擇,即在高頻段時,閘門時間較短;低頻時閘門時間較長。這樣閘門時間寬度Tc依據(jù)被測頻率的大小自動調(diào)整測頻,從而實現(xiàn)量程的自動轉(zhuǎn)換,擴(kuò)大了測頻的量程范圍;實現(xiàn)了全范圍等精度測量,減少了低頻測量的誤差。
圖1中BZ_Counter和DC_Counter是2個可控的32 b高速計數(shù)器(100 MHz),BZ_ENA和DC_ENA分別是他們的計數(shù)允許信號端,高電平有效?;鶞?zhǔn)頻率信號從BZ_Counter的時鐘輸入端BZ_CLK輸入,設(shè)其頻率為Fb;待測信號經(jīng)前端放大、限幅和整形后,從與BZ_Counter相似的32 b計數(shù)器DC_Counter的時鐘輸入端DC_CLK輸入,測量頻率為Fx。
測量開始,首選單片機(jī)發(fā)出一個清零信號CLR,使2個32 b的計數(shù)器和D觸發(fā)器置0,然后單片機(jī)再發(fā)出允許測頻命令,即使預(yù)置門控信號GATE為高電平,這時D觸發(fā)器要一直等到被測信號的上升沿通過時,Q端才被置1,即使BZ_ENA和DC_ENA同時為1,將啟動計算器BZ_Counter和DC_Counter,系統(tǒng)進(jìn)入計算允許周期。這時,計數(shù)器BZ_Counter和DC_Counter分別對被測信號和標(biāo)準(zhǔn)頻率信號同時計數(shù)。當(dāng)Tc秒過后,預(yù)置門控信號被單片機(jī)置為低電平,但此時2個32 b的計數(shù)器仍然沒有停止計數(shù),一直等到隨后而至的被測信號的上升沿到來時,才通過D觸發(fā)器將這2個計算器同時關(guān)閉。由圖2所示的測頻時序圖可見,GATE的寬度和發(fā)生的時間都不會影響計數(shù)使能信號允許計數(shù)的周期總是恰好等于待測信號XCLK的完整周期,這正是確保XCLK在任何頻率條件下都能保持恒定測量精度的關(guān)鍵。因為,此時GATE的寬度Tc改變以及隨機(jī)的出現(xiàn)時間造成的誤差最多只有基準(zhǔn)時鐘BCLK信號的一個時鐘周期,由于BCLK的信號是由高穩(wěn)定度的100 MHz晶體振蕩器發(fā)出的,所以任何時刻的絕對測量誤差只有1/108 s,這也是系統(tǒng)產(chǎn)生主要的誤差。
設(shè)在某一次預(yù)置門控時間Tc中對被測信號計數(shù)值為Nx,對標(biāo)準(zhǔn)頻率信號的計數(shù)值為Nb,則根據(jù)閘門時間相等,可得出公式(1):