李紅麗,馬耀鋒
(1.中州大學實驗管理中心,鄭州 450044;2.中州大學信息工程學院,鄭州 450044)
基于傳統測頻原理[1]的頻率計將隨被測信號頻率的下降而降低,在實用中有較大的局限性,而等精度頻率計不但具有較高的測頻精度,不隨所測信號的變化而變化,而且在整個測頻區域能保持恒定的測頻精度。本課題利用 EDA技術,基于 KHF-5型 CPLD/FPGA實驗開發系統上的 Altera公司的 EP1K100QC208-3芯片來進行設計與實現等精度頻率計的研究。這使得設計過程大大簡化,縮短了開發周期,減小了電路系統的體積,同時也有利于保證頻率計具有較高的精度和較好的可靠性。
等精度測頻[2]的實現方法可以用圖 1來簡化說明。

圖 1 等精度測頻原理框圖
圖 1的門控信號是可預置的寬度為 Tpr的一個脈沖。COUNT1和 COUNT2是兩個可控計數器。標準頻率信號從COUNT1的時鐘輸入端 CLK輸入,其頻率為 Fo,待測信號從COUNT2的時鐘輸入端 CLK輸入,設其實際頻率為 Fxe,測量頻率為 Fx。
當門控信號為高電平時,被測信號的上沿通過D觸發器的Q端同時啟動計數器 COUNT1和COUNT2。對被測信號 Fx和標準頻率信號 Fo同時計數。當門控信號為低電平時,隨后而至的被測信號的上沿將使這兩個計數器同時關閉。
為了獲得 1s的預置門時間寬度,需要對 50MHz標準進行 100M分頻,即分得頻率為 0.5Hz,脈寬為 1s的脈沖。而這可由 4個 100分頻器級聯獲得。所以需要設計一個 100分頻器 FreDiv100。為了便于自測與自校,在上面所設計的100分頻模塊的基礎上設計了占空比可調的 100分頻模塊FreDiv1_99,實現 100分頻,并根據 ABCDEFG等 7個按鍵的二進制組合來產生占空比為 1%到 99%的脈沖。為實現等精度原理中的D觸發器,其在本設計中單獨設計成一個 D觸發器模塊D_Drigger。因該觸發器是由觸發時鐘輸入信號S觸發的,故其輸出信號 Q的脈寬為觸發時鐘輸入信號 S的周期的整數倍。
因為測量頻率與測量周期的原理和所需要計數的對象是一樣的,在至少 1s里分別對被測信號和標準信號進行計數,所以在本設計中,頻率與周期的測量共用一個計數模塊Counter。而脈寬和占空比的測量都是在被測信號的 100個連續周期里對標準信號進行計數的,只是它們計數的時間段不一樣,即對應脈寬的計數值僅僅需在該 100個周期里的正脈寬里對標準信號進行計數,而對占空比則不僅僅需要在那100個正脈寬里對標準信號進行,還需要在該完整的 100個周期里對標準信號進行計數,也就是說,對脈寬的測量和占空比的測量都需要在該 100個周期里的正脈寬里對標準信號進行計數,基于這一點,我們應該把脈寬和占空比的測量集成到一個脈寬和占空比同步累加計數模塊 CounADD。
控制部分在本設計里,只是進行測量功能的切換,這并不包括對自校功能的控制。因為自校功能的控制與切換并不需要單獨的模塊,那只需一個按鍵與一些邏輯門就可以的了,所以控制部分就只設計了一個功能切換控制模塊 Swap,實現頻率測量、周期測量、脈寬測量和占空比測量的切換。

圖 2 等精度頻率、周期、脈寬測量儀的頂層原理圖
由于需要對前面測量模塊計得的數值進行運算并加以碼制轉換和譯碼才能得到最終的測量結果,在本設計中,我們設計了數據處理需要用到的 32位二進制乘法器Multiplier和 32位二進制除法器 Divider32。
由于最終結果是由數碼管以十進制數顯示的,而在之前的測量部分和數據處理部分里所用的數制都是二進制數,因此我們設計了二進制碼轉換成 BCD碼模塊 B2BCD,把二進制數碼轉換成十進制數碼。另外,在本設計中,設計了 8個7段數碼管的位選擇器 Position Select,數碼管段碼選通模塊Decode,數碼管 (共陰極)譯碼顯示模塊 Display來實現 8個動態數碼管的“掃描式”顯示。
根據前面所述各模塊組成等精度頻率、周期、脈寬測量儀的頂層原理圖如圖 2所示。
在圖 2的輸入和輸出引腳說明如下:
LY為自校功能的切換開關,當其為 0時,用頻率為 0.5MHz的標準脈沖進行自校;當其為 1時,用頻率為 5KHz的標準脈沖進行自校。
CLK為標準時鐘 50MHz的輸入端,SIG為被測信號的測量輸入端,START為測量開始控制開關,當其為 1時,真正的測量開始。
1、2、3 、4、5、6和 7是配合 LY開關使用的 ,即用它們對不同脈寬范圍和占空比范圍在實際上的測試與自校,主要是通過它們來改變自校信號的占空比以檢測本設計能否完成指標中 1%到 99%的占空比的測試功能。
ALARM為計數溢出警報,計數超過或等于 4 294 967 295時,即計數的開放時間大于或等于 85 899 345 900ns警報響起表示所測量的頻率超出量程,以此來計算,本設計的頻率測量范圍應為 0.0012Hz-85 899 345 900Hz(85GHz),可實際上,由于數碼管的顯示位數不夠,所以那是看不到的。
H、W則是測量功能的切換控制開關,當 H、W都沒有按下時進行的是頻率測量;當 H按下、W沒有按下時進行的是周期測量;當 H沒有按下、W按下時進行的是脈寬測量;當H、W都按下時進行的則是占空比測量。
SEL[2..0]是輸出到芯片上 38譯碼器的,Q1[6..0]是輸出到靜態數碼管 1的,Q2[6..0]是輸出到靜態數碼管 2的,Q3[6..0]則是輸出到動態數碼管的。
這里給出兩個主要測量模塊頻率和周期同步計數模塊Counter及脈寬和占空比同步累加計數模塊 CounADD在 QUARTUSII6.0上時序仿真波形圖分別如圖 3、圖 4所示。

圖 3 頻率和周期同步計數模塊 Counter時序波形
圖 3中 CLK的周期為 6ns,SIG的周期為 10ns。從上面的波形仿真圖可以看出,對標準信號 CLK進行計數的計數值QA和對待測信號 SIG進行計數的計數值 QB的起始和終止都受 EN的控制,且呈現出一致性。

圖 4 脈寬和占空比同步累加計數模塊 CounADD時序波形
在圖 4中,SIG的周期為 72ns(脈寬為 36ns),CLK的周期為 14ns(脈寬為 7ns),QA、QB分別為在 100個 SIG的正脈寬和周期里對 CLK的計數值。從圖 4中可得出,36×100÷14=257≈256,511×14+49=7203,其中 49為開始對 CLK進行計數前的時間,即第 4個 CLK上升沿前的時間,3×14+7=7×7=49。另外,值得注意的是,QA、QB的計數起始和終止在本模塊中是同步的,這保證了測量的一致性和精度。
最后,在最終的硬件測試中記錄的幾組數據:
在 LY=0,START=0時,測得頻率為 0.5MHz(顯示 5 000 000),周期為 2us(顯示 200),脈寬為 0.99us(顯示 99),占空比為 50%(顯示 50)。另外,在 1234567的組合改變時,測得脈寬和占空比都隨之變化,但脈寬總比理論值少 1,占空比測量正確。
在 LY=1,START=0時,測得頻率為 5KHz(顯示 50 000),周期為 200us(顯示 20000),脈寬為 99.99us(顯示9999),占空比為 50%(顯示 50)。另外,在 1234567的組合改變時,測得脈寬和占空比都隨之變化,但脈寬總比理論值少 1;占空比則能正確測量,1%和 99%也可以測量得出。
針對上述兩種情況,可分析得出,就以上兩組數據而言,本設計的誤差是穩定的,脈寬的測量只有 0.01us的誤差,而頻率和周期則實現 0誤差。
在 START=1時,測得的幾組數據如表 1所示。

表 1 硬件測試結果
本設計根據等精度測頻原理(高精度恒誤差測頻原理),以浙江天煌科技實業有限公司的“KHF-5型 CPLD/FPGA實驗開發系統”為硬件基礎,采用 VHDL語言進行設計,所選用的設計器件為 Altera公司的 EP1K100QC208-3。從仿真和實測結果可以看出該系統不但具有較高的測量精度,而且在整個頻率區域保持恒定的測量精度。
[1]謝自美.電子線路設計·實驗·測試 [M].武漢:華中科技大學出版社,2003.
[2]潘松.EDA技術與 VHDL[M].2版.北京:清華大學出版社,2007.