基于FPGA的等精度頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)
現(xiàn)場可編程門陣列FPGA(Field Programmable GateArray)屬于ASIC產(chǎn)品,通過軟件編程對目標(biāo)器件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),能隨時(shí)對設(shè)計(jì)進(jìn)行調(diào)整,具有集成度高、結(jié)構(gòu)靈活、開發(fā)周期短、快速可靠性高等特點(diǎn),數(shù)字設(shè)計(jì)在其中快速發(fā)展。
本文介紹了一種利用FPGA實(shí)現(xiàn)DC~100 MHz的自動(dòng)切換量程數(shù)字等精度頻率計(jì)的實(shí)現(xiàn)方法,并給出實(shí)現(xiàn)代碼。整個(gè)系統(tǒng)在研制的CPLD/FPGA實(shí)驗(yàn)開發(fā)系統(tǒng)上調(diào)試通過。
1 等精度測頻原理
頻率的測量方法主要分為2種方法:
(1)直接測量法,即在一定的閘門時(shí)間內(nèi)測量被測信號的脈沖個(gè)數(shù)。
(2)間接測量法,例如周期測頻法、V-F轉(zhuǎn)換法等。 間接測頻法僅適用測量低頻信號。
基于傳統(tǒng)測頻原理的頻率計(jì)的測量精度將隨被測信號頻率的下降而降低,在實(shí)用中有較大的局限性,而等精度頻率計(jì)不但具有較高的測量精度,而且在整個(gè)頻率區(qū)域能保持恒定的測試精度。
本設(shè)計(jì)頻率測量方法的主要測量控制框圖如圖1所示。圖1中預(yù)置門控信號GATE是由單片機(jī)發(fā)出,GATE的時(shí)間寬度對測頻精度影響較少,可以在較大的范圍內(nèi)選擇,只要FPGA中32 b計(jì)數(shù)器在計(jì)100 M信號不溢出都行,根據(jù)理論計(jì)算GATE的時(shí)間寬度Tc可以大于42.94 s,但是由于單片機(jī)的數(shù)據(jù)處理能力限制,實(shí)際的時(shí)間寬度較少,一般可在10~0.1 s間選擇,即在高頻段時(shí),閘門時(shí)間較短;低頻時(shí)閘門時(shí)間較長。這樣閘門時(shí)間寬度Tc依據(jù)被測頻率的大小自動(dòng)調(diào)整測頻,從而實(shí)現(xiàn)量程的自動(dòng)轉(zhuǎn)換,擴(kuò)大了測頻的量程范圍;實(shí)現(xiàn)了全范圍等精度測量,減少了低頻測量的誤差。
圖1中BZ_Counter和DC_Counter是2個(gè)可控的32 b高速計(jì)數(shù)器(100 MHz),BZ_ENA和DC_ENA分別是他們的計(jì)數(shù)允許信號端,高電平有效?;鶞?zhǔn)頻率信號從BZ_Counter的時(shí)鐘輸入端BZ_CLK輸入,設(shè)其頻率為Fb;待測信號經(jīng)前端放大、限幅和整形后,從與BZ_Counter相似的32 b計(jì)數(shù)器DC_Counter的時(shí)鐘輸入端DC_CLK輸入,測量頻率為Fx。
測量開始,首選單片機(jī)發(fā)出一個(gè)清零信號CLR,使2個(gè)32 b的計(jì)數(shù)器和D觸發(fā)器置0,然后單片機(jī)再發(fā)出允許測頻命令,即使預(yù)置門控信號GATE為高電平,這時(shí)D觸發(fā)器要一直等到被測信號的上升沿通過時(shí),Q端才被置1,即使BZ_ENA和DC_ENA同時(shí)為1,將啟動(dòng)計(jì)算器BZ_Counter和DC_Counter,系統(tǒng)進(jìn)入計(jì)算允許周期。這時(shí),計(jì)數(shù)器BZ_Counter和DC_Counter分別對被測信號和標(biāo)準(zhǔn)頻率信號同時(shí)計(jì)數(shù)。當(dāng)Tc秒過后,預(yù)置門控信號被單片機(jī)置為低電平,但此時(shí)2個(gè)32 b的計(jì)數(shù)器仍然沒有停止計(jì)數(shù),一直等到隨后而至的被測信號的上升沿到來時(shí),才通過D觸發(fā)器將這2個(gè)計(jì)算器同時(shí)關(guān)閉。由圖2所示的測頻時(shí)序圖可見,GATE的寬度和發(fā)生的時(shí)間都不會(huì)影響計(jì)數(shù)使能信號允許計(jì)數(shù)的周期總是恰好等于待測信號XCLK的完整周期,這正是確保XCLK在任何頻率條件下都能保持恒定測量精度的關(guān)鍵。因?yàn)?,此時(shí)GATE的寬度Tc改變以及隨機(jī)的出現(xiàn)時(shí)間造成的誤差最多只有基準(zhǔn)時(shí)鐘BCLK信號的一個(gè)時(shí)鐘周期,由于BCLK的信號是由高穩(wěn)定度的100 MHz晶體振蕩器發(fā)出的,所以任何時(shí)刻的絕對測量誤差只有1/108 s,這也是系統(tǒng)產(chǎn)生主要的誤差。
設(shè)在某一次預(yù)置門控時(shí)間Tc中對被測信號計(jì)數(shù)值為Nx,對標(biāo)準(zhǔn)頻率信號的計(jì)數(shù)值為Nb,則根據(jù)閘門時(shí)間相等,可得出公式(1):
2 頻率計(jì)的VHDL設(shè)計(jì)
本設(shè)計(jì)采用ALTERA公司的FPGA芯片EPF10K10,該芯片管腳間的延遲為5 ns,即頻率為200 MHz,應(yīng)用標(biāo)準(zhǔn)化的硬件描述語言VHDL有非常豐富的數(shù)據(jù)類型,他的結(jié)構(gòu)模型是層次化的,利用這些豐富的數(shù)據(jù)類型和層次化的結(jié)構(gòu)模型,對復(fù)雜的數(shù)字系統(tǒng)進(jìn)行邏輯設(shè)計(jì)并用計(jì)算機(jī)仿真,逐步完善后進(jìn)行自動(dòng)綜合生成符合要求的、在電路結(jié)構(gòu)上可實(shí)現(xiàn)的數(shù)字邏輯,再下載到可編程邏輯器件中,即可完成設(shè)計(jì)任務(wù)。下面給出該頻率計(jì)基于EPF10K10的VHDL描述源程序:
仿真波形如圖2所示。
3 結(jié) 語
本文利用ALTERA公司的FPGA芯片EPF10K10,使用VHDL編程語言設(shè)計(jì)等精度頻率計(jì),給出核心程序,經(jīng)過ISPEXPER仿真后,驗(yàn)證設(shè)計(jì)是成功的,達(dá)到預(yù)期結(jié)果。
和傳統(tǒng)的頻率計(jì)相比,F(xiàn)PGA的頻率計(jì)簡化了電路板的設(shè)計(jì),提高了系統(tǒng)設(shè)計(jì)的實(shí)現(xiàn)性和可靠性,測頻范圍達(dá)到100 MHz,實(shí)現(xiàn)了數(shù)字系統(tǒng)硬件的軟件化,這是數(shù)字邏輯設(shè)計(jì)的新趨勢。
參考文獻(xiàn)
[1]李景華,杜玉遠(yuǎn).可編程邏輯器件與EDA技術(shù)[M].沈陽:東北大學(xué)出版社,2002.
[2]趙雅興.FPGA原理、設(shè)計(jì)與應(yīng)用[M].天津:天津大學(xué)出版社,1999.
[3]夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的VERILOGHDL設(shè)計(jì)技術(shù)[M].北京:北京航空航天大學(xué)出版社,1998.