馬 俊,唐 林
(四川職業(yè)技術(shù)學(xué)院 電子工程學(xué)院,四川 遂寧 629000)
頻率是電子技術(shù)領(lǐng)域一個(gè)基本的參數(shù),對(duì)頻率的準(zhǔn)確測(cè)量是電子技術(shù)中的一項(xiàng)基本需求[1-2]。在某些傳感器中,比如位移或者轉(zhuǎn)速傳感器,檢測(cè)結(jié)果多是通過頻率信號(hào)的形式輸出的,頻率信號(hào)相對(duì)于數(shù)值信號(hào)有更好的抗干擾性,準(zhǔn)確測(cè)量頻率十分重要。FPGA 基于硬件邏輯電路實(shí)現(xiàn)相應(yīng)功能,相對(duì)于MCU 或者CPU,在速度和可靠性方面[3,5]有顯著的優(yōu)勢(shì)。本文基于FPGA 設(shè)計(jì)了頻率測(cè)量器,改進(jìn)了閘門生成方式,使其成為自適應(yīng)閘門,在測(cè)量中兼顧到中高頻和低頻,提高了適應(yīng)性和便利性。
頻率(f)和周期(T)是相關(guān)聯(lián)的兩個(gè)物理量,T=1/f,所以只要知道其中一個(gè)量,另外一個(gè)量自然可知。第一種方法,頻率測(cè)量法,先給定一個(gè)時(shí)間段△t,在這個(gè)時(shí)間段△t 內(nèi),對(duì)被測(cè)信號(hào)進(jìn)行計(jì)數(shù),假設(shè)計(jì)數(shù)結(jié)果為N,那么頻率則為f=N/△t。第二種方法是周期測(cè)量法,測(cè)量信號(hào)的單個(gè)周期的時(shí)間長(zhǎng)度T,由f=1/T,得到相應(yīng)的頻率。這兩種方法對(duì)應(yīng)的場(chǎng)景不一樣,第一種方法適應(yīng)于頻率較高的場(chǎng)合,而第二種方法適合頻率較低的場(chǎng)合。由于對(duì)被測(cè)信號(hào)的計(jì)數(shù)存在+/-1 的誤差,這個(gè)誤差可能會(huì)很大,就有了等精度測(cè)量法[6],等精度測(cè)量法是基于被測(cè)信號(hào)產(chǎn)生的一個(gè)計(jì)數(shù)時(shí)間段,稱之為計(jì)數(shù)閘門,這個(gè)閘門與被測(cè)信號(hào)同步,避免被測(cè)信號(hào)計(jì)數(shù)+/-1 的誤差。在等精度測(cè)量法中,由軟件產(chǎn)生一個(gè)軟件閘門,比如長(zhǎng)度為1s 的閘門,該閘門可以設(shè)置為更長(zhǎng)或者更短,更長(zhǎng)的閘門可以使測(cè)量精度提升,但是測(cè)量響應(yīng)時(shí)間也會(huì)變長(zhǎng),更短的時(shí)間可以縮短響應(yīng)時(shí)間,但是精度會(huì)受到一定程度的影響[7]。除此之外,這個(gè)閘門一旦固定,還會(huì)對(duì)被測(cè)信號(hào)最小頻率進(jìn)行限制,因?yàn)樵谝粋€(gè)閘門時(shí)間內(nèi),可能根本就沒有檢測(cè)到一個(gè)完整的被測(cè)信號(hào)。
本文提出了一種基于等精度測(cè)量法的高精度自適應(yīng)閘門設(shè)計(jì)方案。該方案會(huì)自動(dòng)根據(jù)被測(cè)信號(hào)的頻率或者周期在適當(dāng)?shù)臅r(shí)候延長(zhǎng)閘門時(shí)間,用于針對(duì)低頻信號(hào)的測(cè)量。在軟件閘門已經(jīng)設(shè)定的基礎(chǔ)上,針對(duì)低頻信號(hào),實(shí)際閘門會(huì)根據(jù)被測(cè)信號(hào)的周期自動(dòng)延長(zhǎng),假設(shè)被測(cè)信號(hào)的周期為3s,那么實(shí)際閘門會(huì)在軟件閘門1s 的基礎(chǔ)之上自動(dòng)延長(zhǎng)至2s,保證閘門內(nèi)至少有一個(gè)完整的周期。對(duì)應(yīng)的計(jì)算時(shí)間也會(huì)相應(yīng)地后延。即自適應(yīng)的等精度,不再需要人為地進(jìn)行閘門時(shí)間調(diào)節(jié)。為了實(shí)現(xiàn)自適應(yīng)閘門,閘門計(jì)數(shù)器會(huì)在軟件閘門拉低之后實(shí)際閘門拉低之前停止計(jì)數(shù);實(shí)際閘門拉低之后繼續(xù)計(jì)數(shù),這樣就巧妙地避免了隨著頻率的降低,軟件閘門寬度無法估計(jì)或者過寬的問題。
采用EP4CE6F17C8,該FPGA 芯片是INTEL 旗下的CYCLONE IV E 系列,包含6272 個(gè)邏輯單元(logic elements),30 個(gè)內(nèi)置9-bit 乘法器單元,2 個(gè)PLL 單元;對(duì)于我們這個(gè)頻率測(cè)量設(shè)計(jì)來說足夠,浪費(fèi)不多,資源整體利用率在70%左右。
如圖1 所示,為設(shè)計(jì)整體框圖,其中最主要的是頻率測(cè)量與計(jì)算模塊Freq_meter_calc,另外還包含兩個(gè)輔助模塊,一個(gè)十六進(jìn)制數(shù)轉(zhuǎn)BCD 的模塊hex2bcd 以方便數(shù)碼管顯示,一個(gè)數(shù)碼管掃描顯示模塊scan_8seg_led。
圖1 頻率測(cè)量與顯示整體設(shè)計(jì)框圖
頻率測(cè)量與計(jì)算模塊內(nèi)部結(jié)果如圖2 所示,其中有一個(gè)PLL 子模塊PLL_clk_100MHz,用于產(chǎn)生基準(zhǔn)時(shí)鐘信號(hào);一個(gè)自適應(yīng)閘門產(chǎn)生模塊Gate_gen, 用于產(chǎn)生實(shí)際閘門,實(shí)際閘門在頻率較低的情況下,比如0.1Hz,會(huì)自動(dòng)延長(zhǎng)實(shí)際閘門時(shí)間;兩個(gè)計(jì)數(shù)器模塊,Cnt_signal 用于對(duì)被測(cè)信號(hào)進(jìn)行計(jì)數(shù),Cnt_std_clk 用于對(duì)基準(zhǔn)時(shí)鐘進(jìn)行計(jì)數(shù);一個(gè)頻率計(jì)算模塊Freq_cal,該模塊根據(jù)兩個(gè)計(jì)數(shù)器的計(jì)數(shù)值得到被測(cè)信號(hào)的頻率值;為了保留5 位小數(shù),計(jì)算結(jié)果是乘以105之后的結(jié)果,所以小數(shù)點(diǎn)dp[7:0]被置為8’b1101_1111,其中0 表示小數(shù)點(diǎn)的位置,即小數(shù)點(diǎn)之后有5 位小數(shù);在不同的頻率范圍,計(jì)算結(jié)果會(huì)自動(dòng)選擇單位:MHz、KHz 或者Hz,數(shù)值上會(huì)相對(duì)應(yīng)地乘以10-6,10-3或者1。
圖2 頻率測(cè)量模塊設(shè)計(jì)框圖
如圖3 所示,為頻率測(cè)量模塊設(shè)計(jì)波形圖,該波形圖中,軟件閘門為gate_s,其依據(jù)計(jì)數(shù)器cnt_sys_clk_1s2 來確定1S 的閘門時(shí)間,實(shí)際閘門gate 則由gate_s 和被測(cè)信號(hào)共同決定。當(dāng)gate_s 被拉低,而沒有檢測(cè)到被測(cè)信號(hào)的上升沿的時(shí)候,實(shí)際閘門gate 不會(huì)被拉低,直到檢測(cè)到被測(cè)信號(hào)的上升沿;在這一段時(shí)間里,計(jì)數(shù)器cnt_sys_clk_1s2 將停止計(jì)數(shù),這是自適應(yīng)的關(guān)鍵所在,特別是對(duì)頻率特別低的情況。當(dāng)gate 也被拉低之后則開始計(jì)算,根據(jù)兩個(gè)計(jì)數(shù)的總時(shí)間一致的原則[7]可以得到:
圖3 頻率測(cè)量模塊波形設(shè)計(jì)圖
M 為基準(zhǔn)時(shí)鐘計(jì)數(shù)值;N 為被測(cè)信號(hào)計(jì)數(shù)值;fstd_clk基準(zhǔn)時(shí)鐘頻率,為已知量;ftest_signal為被測(cè)信號(hào)頻率。由于FPGA 計(jì)算的特殊性,采用先算乘法后算除法的原則。
在0.001Hz~400MHz 范圍內(nèi),抽樣了16 個(gè)不同頻率,進(jìn)行對(duì)比測(cè)量,測(cè)量結(jié)果如表1 所示。通過對(duì)比示波器與本設(shè)計(jì)的測(cè)量結(jié)果,在0.001Hz~400MHz 范圍內(nèi),兩者之間的相對(duì)誤差為0.0015%以內(nèi),是一個(gè)可以接受的值。
表1 測(cè)量數(shù)據(jù)
如圖4 所示,為開發(fā)板實(shí)物圖,使用到的只有FPGA 本身,顯示模塊,一個(gè)復(fù)位按鈕,顯示模塊的驅(qū)動(dòng)是集成在FPGA 內(nèi)部的,所以可以做成小型化輕量化口袋化的測(cè)量設(shè)備。如圖5 所示,則展示了100MHz 和100KHz 兩個(gè)頻率信號(hào)的示波器和本設(shè)計(jì)測(cè)量結(jié)果實(shí)拍照片。
圖4 開發(fā)板整體圖
圖5 示波器測(cè)量結(jié)果與本設(shè)計(jì)測(cè)量結(jié)果實(shí)物對(duì)比
利用FPGA 在速度和可靠性方面固有的優(yōu)勢(shì),采用等精度測(cè)量方法,通過優(yōu)化閘門時(shí)間設(shè)置方式,自適應(yīng)的閘門時(shí)間將根據(jù)頻率的變化自動(dòng)變化,既保證了中高頻段的快速測(cè)量,又保證了低頻信號(hào)的有效測(cè)量。整體實(shí)現(xiàn)了400MHz 到0.001Hz 的自動(dòng)測(cè)量與顯示,相對(duì)于示波器(GWINSTEK GDS-3152)測(cè)量結(jié)果,相對(duì)誤差在0.0015%內(nèi),滿足基本需求,可以實(shí)際應(yīng)用于小型化口袋儀表。