基于FPGA的高速高精度頻率測(cè)量的研究
關(guān)鍵詞:頻率 測(cè)量 FPGA 高精度
引言
在電子測(cè)量技術(shù)中,測(cè)頻是最基本的測(cè)量之一。常用的直接測(cè)頻方法在實(shí)用中有較大的局限性,其測(cè)量精度隨著被測(cè)信號(hào)頻率的下降而降低,并且對(duì)被測(cè)信號(hào)的計(jì)數(shù)要產(chǎn)生±1個(gè)數(shù)字誤差。采用等精度頻率測(cè)量方法具有測(cè)量精度,測(cè)量精度保持恒定,不隨所測(cè)信號(hào)的變化而變化;并且結(jié)合現(xiàn)場(chǎng)可編程門(mén)陣列FPGA(Field Programmable Gate Array)具有集成度高、高速和高可靠性的特點(diǎn),使頻率的測(cè)頻范圍可達(dá)到0.1Hz~100MHz,測(cè)頻全域相對(duì)誤差恒為1/1 000 000,
1 測(cè)頻原理及誤差分析
常用的直接測(cè)頻方法主要有測(cè)頻法和測(cè)周期法兩種。測(cè)頻法就是在確定的閘門(mén)時(shí)間Tw內(nèi),記錄被測(cè)信號(hào)的變化周期數(shù)(或脈沖個(gè)數(shù))Nx,則被測(cè)信號(hào)的頻率為:fx=Nx/Tw。測(cè)周期法需要有標(biāo)準(zhǔn)信號(hào)的頻率fs,在待測(cè)信號(hào)的一個(gè)周期Tx內(nèi),記錄標(biāo)準(zhǔn)頻率的周期數(shù)Ns,則被測(cè)信號(hào)的頻率為:fx=fs/Ns。這兩種方法的計(jì)數(shù)值會(huì)產(chǎn)生±1個(gè)字誤差,并且測(cè)試精度與計(jì)數(shù)器中記錄的數(shù)值Nx或Ns有關(guān)。為了保證測(cè)試精度,一般對(duì)于低頻信號(hào)采用測(cè)周期法;對(duì)于高頻信號(hào)采用測(cè)頻法,因此測(cè)試時(shí)很不方便,所以人門(mén)提出等精度測(cè)頻方法。
等精度測(cè)頻方法是在直接測(cè)頻方法的基礎(chǔ)上發(fā)展起來(lái)的。它的閘門(mén)時(shí)間不是固定的值,而是被測(cè)信號(hào)周期的整數(shù)倍,即與被測(cè)信號(hào)同步,因此,測(cè)除了對(duì)被測(cè)信號(hào)計(jì)數(shù)所產(chǎn)生±1個(gè)字誤差,并且達(dá)到了在整個(gè)測(cè)試頻段的等精度測(cè)量。其測(cè)頻原理如圖1所示。
在測(cè)量過(guò)程中,有兩個(gè)計(jì)數(shù)器分別對(duì)標(biāo)準(zhǔn)信號(hào)和被測(cè)信號(hào)同時(shí)計(jì)數(shù)。首先給出閘門(mén)開(kāi)啟信號(hào)(預(yù)置閘門(mén)上升沿),此時(shí)計(jì)數(shù)器并不開(kāi)始計(jì)數(shù),而是等到被測(cè)信號(hào)的上升沿到來(lái)時(shí),計(jì)數(shù)器才真正開(kāi)始計(jì)數(shù)。然后預(yù)置閘門(mén)關(guān)閉信號(hào)(下降沿)到時(shí),計(jì)數(shù)器并不立即停止計(jì)數(shù),而是等到被測(cè)信號(hào)的上升沿到來(lái)時(shí)才結(jié)束計(jì)數(shù),完成一次測(cè)量過(guò)程??梢钥闯?,實(shí)際閘門(mén)時(shí)間τ與預(yù)置閘門(mén)時(shí)間τ1并不嚴(yán)格相等,但差值不超過(guò)被測(cè)信號(hào)的一個(gè)周期。
設(shè)在一次實(shí)際閘門(mén)時(shí)間τ中計(jì)數(shù)器對(duì)被測(cè)信號(hào)的計(jì)數(shù)值為Nx,對(duì)標(biāo)準(zhǔn)信號(hào)的計(jì)數(shù)值為Ns。標(biāo)準(zhǔn)信號(hào)的頻率為fs,則被測(cè)信號(hào)的頻率為
由式(1)可知,若忽略標(biāo)頻fs的誤差,則等精度測(cè)頻可能產(chǎn)生的相對(duì)誤差為
δ=(|fxc-fx|/fxe)×100% (2)
其中fxe為被測(cè)信號(hào)頻率的準(zhǔn)確值。
在測(cè)量中,由于fx計(jì)數(shù)的起停時(shí)間都是由該信號(hào)的上升測(cè)觸發(fā)的,在閘門(mén)時(shí)間τ內(nèi)對(duì)fx的計(jì)數(shù)Nx無(wú)誤差(τ=NxTx);對(duì)fs的計(jì)數(shù)Ns最多相差一個(gè)數(shù)的誤差,即|ΔNs|≤1,其測(cè)量頻率為
fxe=[Nx/(Ns+ΔNs)]/fs (3)
將式(1)和(3)代入式(2),并整理得:
δ=|ΔNs|/Ns≤1/Ns=1/(τ·fs)
由上式可以看出,測(cè)量頻率的相對(duì)誤差與被測(cè)信號(hào)頻率的大小無(wú)關(guān),僅與閘門(mén)時(shí)間和標(biāo)準(zhǔn)信號(hào)頻率有關(guān),即實(shí)現(xiàn)了整個(gè)測(cè)試頻段的等精度測(cè)量。閘門(mén)時(shí)間越長(zhǎng),標(biāo)準(zhǔn)頻率越高,測(cè)頻的相對(duì)誤差就越小。標(biāo)準(zhǔn)頻率可由穩(wěn)定度好、精度高的高頻率晶體振蕩器產(chǎn)生,在保證測(cè)量精度不變的前提下,提高標(biāo)準(zhǔn)信號(hào)頻率,可使閘門(mén)時(shí)間縮短,即提高測(cè)試速度。表1所列為標(biāo)頻在10MHz時(shí)閘門(mén)時(shí)間與最大允許誤差的對(duì)應(yīng)關(guān)系。
表1 閘門(mén)時(shí)間與精度的關(guān)系
閘門(mén)時(shí)間/s | 精 度 |
0.01 0.1 1 |
10 -5 10 -6 10 -7 |
等精度測(cè)頻的實(shí)現(xiàn)方法可簡(jiǎn)化為圖2所示的框圖。CNT1和CNT2是兩個(gè)可控計(jì)數(shù)器,標(biāo)準(zhǔn)頻率(fs)信號(hào)從CNT1的時(shí)鐘輸入端CLK輸入;經(jīng)整形后的被測(cè)信號(hào)(fx)從CNT2的時(shí)鐘輸入端CLK輸入。每個(gè)計(jì)數(shù)器中的CEN輸入端為時(shí)鐘使能端控制時(shí)鐘輸入。當(dāng)預(yù)置門(mén)信號(hào)為高電平(預(yù)置時(shí)間開(kāi)始)時(shí),被測(cè)信號(hào)的上升沿通過(guò)D觸發(fā)器的輸出端,同時(shí)啟動(dòng)兩個(gè)計(jì)數(shù)器計(jì)數(shù);同樣,當(dāng)預(yù)置門(mén)信號(hào)為低電平(預(yù)置時(shí)間結(jié)束)時(shí),被測(cè)信號(hào)的上升沿通過(guò)D觸發(fā)器的輸出端,同時(shí)關(guān)閉計(jì)數(shù)器的計(jì)數(shù)。
2 硬件設(shè)計(jì)
在快速測(cè)量的要求下,要保證較高精度的測(cè)頻,必須采用較高的標(biāo)準(zhǔn)頻率信號(hào);而單片機(jī)受本身時(shí)鐘頻率和若干指令運(yùn)算的限制,測(cè)頻速度較慢,無(wú)法滿足高速、高精度的測(cè)頻要求。采用高集成度、高速的現(xiàn)場(chǎng)可編程門(mén)陣列FPGA為實(shí)現(xiàn)高速,高精度的測(cè)頻提供了保證。
FPGA是20世紀(jì)90年代發(fā)展起來(lái)的大規(guī)??删幊踢壿嬈骷?,隨著EDA(電子設(shè)計(jì)自動(dòng)化)技術(shù)和微電子技術(shù)的進(jìn)步,F(xiàn)PGA的時(shí)鐘延遲可達(dá)到ns級(jí),結(jié)合其并行工作方式,在超高速、實(shí)時(shí)測(cè)控方面有非常廣闊的應(yīng)用前景;并且FPGA具有高集成度、高可靠性,幾乎可將整個(gè)設(shè)計(jì)系統(tǒng)下載于同一芯片中,實(shí)現(xiàn)所謂片上系統(tǒng),從而大大縮小其體積。
整個(gè)測(cè)頻系統(tǒng)分為多個(gè)功能模塊,如信號(hào)同步輸入、控制部件、分頻和計(jì)數(shù)部件、定時(shí)、脈沖寬度測(cè)量、數(shù)碼顯示、放大整形和標(biāo)頻信號(hào)等模塊。除數(shù)碼管、放大整形和標(biāo)頻信號(hào)外,其它模塊可集成于FPGA芯片中,并且各邏輯模塊用硬件描述語(yǔ)言HDL來(lái)描述其功能,如用VHDL或AHDL來(lái)對(duì)各功能模塊進(jìn)行邏輯描述。然后通過(guò)EDA開(kāi)發(fā)平臺(tái),對(duì)設(shè)計(jì)文件自動(dòng)地完成邏輯編譯、邏輯化簡(jiǎn)、綜合及優(yōu)化、邏輯布局布線、邏輯仿真,最后對(duì)FPGA芯片進(jìn)行編程,以實(shí)現(xiàn)系統(tǒng)的設(shè)計(jì)要求。
圖3所示為測(cè)頻主系統(tǒng)框圖。一片F(xiàn)PGA(EPF10K10LC84)可完成各種測(cè)試功能,可利用單片機(jī)完成數(shù)據(jù)處理和顯示輸出。在標(biāo)準(zhǔn)頻率信號(hào)為60MHz的情況下,其測(cè)量精度可達(dá)到1.1×10 -8,即能夠顯示近8位有效數(shù)字。其中A0~A7和B0~B7為兩計(jì)數(shù)器的計(jì)數(shù)值輸出。計(jì)數(shù)器是32位二進(jìn)制計(jì)數(shù)器(4個(gè)8位計(jì)數(shù)值)。單片機(jī)通過(guò)[R1,R0]數(shù)據(jù)讀出選通端分別從這兩個(gè)計(jì)數(shù)值輸出端讀出4個(gè)8位計(jì)數(shù)值,根據(jù)測(cè)頻和測(cè)脈寬原理公式計(jì)算出頻和脈沖寬度。STR為預(yù)置門(mén)啟動(dòng)輸入;F/T為測(cè)頻和測(cè)脈寬選擇;CH為自校/測(cè)頻選擇;Fa為自校頻率輸入端;Fs為標(biāo)準(zhǔn)頻率信號(hào)輸入端;Fx為經(jīng)過(guò)放大整形后的被測(cè)信號(hào)輸入端;END為計(jì)數(shù)結(jié)束狀態(tài)信號(hào)。
FPGA中各功能模塊如圖4所示。
圖4中,CH1和CH2為選擇器,CH1進(jìn)行自校/測(cè)頻選擇,CH2進(jìn)行測(cè)頻和測(cè)脈寬選擇。CONTRL1為控制模塊,控制被測(cè)信號(hào)fx和標(biāo)頻信號(hào)fs的導(dǎo)通,以及兩個(gè)計(jì)數(shù)器(CONTa和CONTb)的計(jì)數(shù)。CONTa和CONTb為32位計(jì)數(shù)器,分別以4個(gè)8位二進(jìn)制數(shù)輸出。
圖4 FPGA中各功能模塊
FPGA與單片機(jī)AT89C51的接口比較簡(jiǎn)單。圖3中的輸入/輸出端與單片機(jī)連接:A[7..0]與單片機(jī)P2端口相連接;B[7..0]與單片機(jī)P0口相連接;其它輸入/輸出端與單片機(jī)P3口相連接。
結(jié)語(yǔ)
隨著EDA技術(shù)和FPGA集成度的提高,F(xiàn)PGA不但包括了MCU(微控制器或單片機(jī))特點(diǎn),并兼有串、并行工作方式和高速、高可靠性以及寬口徑適用性等諸多方面的特點(diǎn)。單片機(jī)完成的數(shù)據(jù)處理功能也可集成在FPGA芯片中?;?strong>FPGA的電子系統(tǒng)設(shè)計(jì)僅僅是各種邏輯模塊與IP核的邏輯合成和拼裝。測(cè)頻系統(tǒng)的標(biāo)準(zhǔn)信號(hào)頻率的提高,可進(jìn)一步提高測(cè)頻的精度或縮短測(cè)頻時(shí)間。