基於FPGA的高速高精度頻率測量的研究

2021-05-27 14:36:45 字數 4327 閱讀 9493

摘要:以fpga

為核心的高速高精度的頻率測量,不同於常用測頻法和測週期法。本文介紹的測頻方法,不僅消除了直接測頻方法中對測量頻率需要採用分段測試的局際,而且在整個測試頻段內能夠保持高精度不變。又由於採用

fpga

晶元來實現頻率測量,因而具有高整合度、高速和高可靠性的特點。

高精度

引言

在電子測量技術中,測頻是最基本的測量之一。常用的直接測頻方法在實用中有較大的侷限性,其測量精度隨著被測訊號頻率的下降而降低,並且對被測訊號的計數要產生±1

個數字誤差。採用等精度頻率測量方法具有測量精度,測量精度保持恆定,不隨所測訊號的變化而變化;並且結合現場可程式設計門陣列fpga

(field programmable gate array

)具有整合度高、高速和高可靠性的特點,使頻率的測頻範圍可達到

0.1hz

~100mhz

,測頻全域相對誤差恒為

1/1 000 000,

1 測頻原理及誤差分析

常用的直接測頻方法主要有測頻法和測週期法兩種。測頻法就是在確定的閘門時間tw

內,記錄被測訊號的變化週期數(或脈衝個數)

nx,則被測訊號的頻率為:

fx=nx/tw

。測週期法需要有標準訊號的頻率

fs,在待測訊號的乙個週期

tx內,記錄標準頻率的週期數

ns,則被測訊號的頻率為:

fx=fs/ns

。這兩種方法的計數值會產生

±1個字誤差,並且測試精度與計數器中記錄的數值nx或

ns有關。為了保證測試精度,一般對於低頻訊號採用測週期法;對於高頻訊號採用測頻法,因此測試時很不方便,所以人門提出等精度測頻方法。

等精度測頻方法是在直接測頻方法的基礎上發展起來的。它的閘門時間不是固定的值,而是被測訊號週期的整數倍,即與被測訊號同步,因此,測除了對被測訊號計數所產生±1

個字誤差,並且達到了在整個測試頻段的等精度測量。其測頻原理如圖

1所示。

在測量過程中,有兩個計數器分別對標準訊號和被測訊號同時計數。首先給出閘門開啟訊號(預置閘門上公升沿),此時計數器並不開始計數,而是等到被測訊號的上公升沿到來時,計數器才真正開始計數。然後預置閘門關閉訊號(下降沿)到時,計數器並不立即停止計數,而是等到被測訊號的上公升沿到來時才結束計數,完成一次測量過程。可以看出,實際閘門時間τ

與預置閘門時間

τ1並不嚴格相等,但差值不超過被測訊號的乙個週期。

設在一次實際閘門時間τ

中計數器對被測訊號的計數值為

nx,對標準訊號的計數值為

ns。標準訊號的頻率為

fs,則被測訊號的頻率為

由式(1

)可知,若忽略標頻

fs的誤差,則等精度測頻可能產生的相對誤差為

δ=(|fxc-fx|/fxe)×100% (2)

其中fxe

為被測訊號頻率的準確值。

在測量中,由於fx

計數的起停時間都是由該訊號的上公升測觸發的,在閘門時間τ內對

fx的計數

nx無誤差(

τ=nxtx

);對fs

的計數ns

最多相差乙個數的誤差,即

|δns|≤1,

其測量頻率為

fxe=[nx/(ns+δns)]/fs (3)

將式(1

)和(3

)代入式(2

δ=|δns|/ns≤1/ns=1/(τ·fs)

由上式可以看出,測量頻率的相對誤差與被測訊號頻率的大小無關,僅與閘門時間和標準訊號頻率有關,即實現了整個測試頻段的等精度測量。閘門時間越長,標準頻率越高,測頻的相對誤差就越小。標準頻率可由穩定度好、精度高的高頻率晶體振盪器產生,在保證測量精度不變的前提下,提高標準訊號頻率,可使閘門時間縮短,即提高測試速度。表1

所列為標頻在

10mhz

時閘門時間與最大允許誤差的對應關係。

閘門時間/s

精 度0.01

10 -5

0.110 -6

10 -7

表1 閘門時間與精度的關係

等精度測頻的實現方法可簡化為圖2

所示的框圖。

cnt1

和cnt2

是兩個可控計數器,標準頻率(

fs)訊號從

cnt1

的時鐘輸入端

clk輸入;經整形後的被測訊號(

fx)從

cnt2

的時鐘輸入端

clk輸入。每個計數器中的

cen輸入端為時鐘使能端控制時鐘輸入。當預置門訊號為高電平(預置時間開始)時,被測訊號的上公升沿通過

d觸發器的輸出端,同時啟動兩個計數器計數;同樣,當預置門訊號為低電平(預置時間結束)時,被測訊號的上公升沿通過

d觸發器的輸出端,同時關閉計數器的計數。

2 硬體設計

在快速測量的要求下,要保證較高精度的測頻,必須採用較高的標準頻率訊號;而微控制器受本身時鐘頻率和若干指令運算的限制,測頻速度較慢,無法滿足高速、高精度的測頻要求。採用高整合度、高速的現場可程式設計門陣列fpga

為實現高速,高精度的測頻提供了保證。

fpga是

20世紀

90年代發展起來的大規模可程式設計邏輯器件,隨著

eda(電子設計自動化)技術和微電子技術的進步,

fpga

的時鐘延遲可達到

ns級,結合其並行工作方式,在超高速、實時測控方面有非常廣闊的應用前景;並且

fpga

整個測頻系統分為多個功能模組,如訊號同步輸入、控制部件、分頻和計數部件、定時、脈衝寬度測量、數碼顯示、放大整形和標頻訊號等模組。除數碼管、放大整形和標頻訊號外,其它模組可整合於fpga

晶元中,並且各邏輯模組用硬體描述語言

hdl來描述其功能,如用

vhdl

或ahdl

來對各功能模組進行邏輯描述。然後通過

eda開發平台,對設計檔案自動地完成邏輯編譯、邏輯化簡、綜合及優化、邏輯布局佈線、邏輯**,最後對

fpga

晶元進行程式設計,以實現系統的設計要求。

圖3所示為測頻主系統框圖。一片

fpga

(epf10k10lc84

)可完成各種測試功能,可利用微控制器完成資料處理和顯示輸出。在標準頻率訊號為

60mhz

的情況下,其測量精度可達到

1.1×10 -8

,即能夠顯示近

8位有效數字。其中a0~

a7和b0~

b7為兩計數器的計數值輸出。計數器是

32位二進位制計數器(4個

8位計數值)。微控制器通過

[r1,r0]

資料讀出選通端分別從這兩個計數值輸出端讀出4個

8位計數值,根據測頻和測脈寬原理公式計算出頻和脈衝寬度。

str為預置門啟動輸入;

f/t為測頻和測脈寬選擇;

ch為自校

/測頻選擇;

fa為自校頻率輸入端;

fs為標準頻率訊號輸入端;

fx為經過放大整形後的被測訊號輸入端;

end為計數結束狀態訊號。

fpga中各功能模組如圖

4所示。

圖4中,ch1

和ch2

為選擇器,

ch1進行自校

/測頻選擇,

ch2進行測頻和測脈寬選擇。

contrl1

為控制模組,控制被測訊號

fx和標頻訊號

fs的導通,以及兩個計數器(

conta

和contb

)的計數。

conta

和contb為32

位計數器,分別以4個

8位二進位制數輸出。

fpga與微控制器

at89c51

的介面比較簡單。圖

3中的輸入

/輸出端與微控制器連線:

a[7..0]

與微控制器

p2埠相連線;

b[7..0]

與微控制器

p0口相連線;其它輸入

/輸出端與微控制器

p3口相連線。

結語

隨著eda

技術和fpga

整合度的提高,

fpga

不但包括了

mcu(微控制器或微控制器)特點,並兼有串、並行工作方式和高速、高可靠性以及寬口徑適用性等諸多方面的特點。微控制器完成的資料處理功能也可整合在

fpga

晶元中。基於

fpga

的電子系統設計僅僅是各種邏輯模組與

ip核的邏輯合成和拼裝。測頻系統的標準訊號頻率的提高,可進一步提高測頻的精度或縮短測頻時間。

FPGA等精度測量法測訊號頻率

硬體描述語言verilog早在實驗課上有所接觸,但這些天才開始慢慢嘗試把它實際用起來做一些事,總體感覺硬體描述語言與c語言相比雖然語法上還有比較相似的地方,但兩種程式設計過程中的思維方式完全不一致,fpga cpld本身是要求開發者在開發過程中以硬體的對映將其描述出來,即便是自頂向下的設計方式中,你...

基於c 11 的高精度計時器

c 11 增加了用於處理時間的標準庫,於是便可以很方便的實現乙個程式計時器,用於測量某段 執行所使用的時間。ifndef timer h define timer h include include namespace kedixa void start void pause void stop s...

C 學習記錄 基於chrono庫的高精度計時器

c 11中新引入了std chrono庫,由此可以較為容易的實現乙個計時器。同時,休眠操作也可以通過這個庫來實現,從而使 有良好的跨平台性,避免使用windows linux的系統休眠函式。在接下來的網路程式設計學習中,將引入該計時器,實現對每秒收包 連線等資料的計數顯示。本篇學習記錄使用的語言為c...