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