摘要:以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...