茍銘澤 ,崔少輝 ,魏保華 ,2
(1.陸軍工程大學 導彈工程系,河北 石家莊 050003;2.電子信息系統(tǒng)復雜環(huán)境效應國家重點實驗室,河南 洛陽 471003;3.中國人民解放軍63850部隊,吉林 白城 137001)
隨著科學技術的發(fā)展,時間及頻率測量的意義已越來越重要,在衛(wèi)星發(fā)射、飛行導航、天文觀測、通信廣播、科學研究、生產生活等各個方面都需要對時間及頻率進行測量[1]。頻率測量的方法主要有直讀測頻法、比較測頻法、脈沖計數(shù)測頻法[2]。其中,脈沖計數(shù)測頻法又分為直接測頻法和周期測頻法,二者最主要的區(qū)別是前者的計數(shù)閘門由標準信號充當,后者的計數(shù)閘門由被測信號充當[3]。但是直接測頻法和周期測頻法都存在±1計數(shù)誤差問題,導致測量精度不理想[4]。其中,周期測頻法是以被測信號作為計數(shù)閘門,如果被測信號的頻率過高,閘門也跟著變窄,導致計數(shù)誤差變大,所以周期測頻法不適用于測量高頻信號[5]。本文針對周期測頻法的這一問題,設計了一種優(yōu)化周期測頻法的數(shù)字頻率計,使其可以測量高頻信號。
周期測頻法之所以在測高頻信號存在較大誤差,是因為這種方法由待測信號fx作為閘門,一旦fx頻率過高,閘門也就隨之變窄,從而影響到計數(shù)結果的準確度[6]。
本文設計思路是:所有測量結果均用周期表示(單位:μs):先對待測信號進行量程范圍的預估,從而確定真實測量結果的小數(shù)點位置以及分頻數(shù)N;再將待測信號進行2×10N分頻,擴大閘門寬度進行周期測量(此時所測周期是真實周期的10N倍);所測數(shù)據(jù)和小數(shù)點相結合顯示出來的即為待測信號的周期。
頻率計采用模塊化的設計方法[7],主要包括量程估計模塊、分頻產生閘門模塊、測周期模塊以及小數(shù)點產生模塊,其總體設計框圖如圖1所示。其中,標準頻率f0是由10 MHz的外部晶振產生,它和待測頻率fx一同經過量程估計模塊,得出量程范圍Range;分頻產生閘門模塊和小數(shù)點模塊根據(jù)Range的數(shù)值產生相應的閘門信號Gate和小數(shù)點位置;而后使用該閘門信號進行周期測頻。
圖1 頻率計組成圖Fig.1 Composition diagram of frequency meter
量程估計模塊、小數(shù)點產生模塊和分頻產生閘門模塊是本文的核心,下面對它們進行介紹。
該模塊的功能是對被測信號fx進行頻段的預估,也可以說是對頻率計量程的估計,最終輸出的結果是以數(shù)字0~7表示的量程。量程估計是根據(jù)計數(shù)器在計數(shù)閘門下的實際結果與劃分頻段的理論計數(shù)范圍進行比較(見表1),從而確定相應的量程編號[8-9]。其原理結構如圖2所示。f0是計數(shù)時鐘,7位BCD計數(shù)器在經過二分頻的fx,電平為低時開始計數(shù)。zeros[6..0]是每一位BCD數(shù)的 0標志位(zeros[i]=1,則第i位數(shù)為 0;zeros[i]=0,則第i位不為0),count是計數(shù)器的進位信號。
圖2 量程估計模塊的原理圖Fig.2 Schematic diagram of range estimation module
量程估計模塊的工作原理如下:計數(shù)器在fx二分頻信號的低電平下計數(shù),此時計數(shù)器實時向寄存器發(fā)送count和zeros[6..0]的值。寄存器內控制程序執(zhí)行循環(huán)依次讀取count到zeros[6..0]數(shù)值的操作,如果count=1,則說明計數(shù)器溢出了,那么量程編號為“0”;如果count=0且zeros[6]=0,則量程編號為“1”;如果count=0且zeros[6]=1,zeros[5]=0,則量程編號為“2”;如果count=0且zeros[6]=1,zeros[5]=1,zeros[4]=0,則量程編號為“3”,依次向下進行判斷。
表1 頻段、計數(shù)值與量程對應關系Table 1 Correspondence of frequency band,count value and range
因為標準頻率是10 MHz,那么如果待測頻率是屬于0.1~1 Hz的范圍,則計數(shù)器在fx二分頻信號閘門內計數(shù)的最大值為108,最小值為107,必將引起溢出,使得count=1,則量程編號為“0”。同理,若待測頻率屬于102~103Hz的范圍,則計數(shù)值在 104~105之間,此時,count=0 且zeros[6]=1,zeros[5]=1,zeros[4]=0,則量程編號為“3”。
圖3分別對應的是待測頻率分別為1.234 MHz,876 kHz,8 Hz時的仿真結果。從仿真結果來看,量程估計在剛開始的一段時間會由于計數(shù)的不穩(wěn)定造成誤判,隨著多次重復的計數(shù),結果得以修正,最終得到的結果均符合表1的規(guī)定。
圖3 量程估計模塊仿真結果Fig.3 Simulation results of range estimation module
小數(shù)點模塊的本質其實是一個選擇器[7],其在接收到量程估計模塊的量程值range后,根據(jù)不同的range值選擇執(zhí)行對數(shù)碼管小數(shù)點的控制程序。該頻率計最終的顯示結果是以μs為單位的周期值,待測頻率的范圍是 0.1~107Hz,所以顯示結果的范圍是 0.1~107μs。測試結果是由7位數(shù)碼管顯示,控制程序給“1”,表示點亮某位數(shù)碼管的小數(shù)點,給“0”則不顯示小數(shù)點。需要說明一點,7位數(shù)碼管顯示的小數(shù)點只能是“X.XXXXXX”~“XXXXXXX.”,無法顯示“0.XXXXXXX”的模式,故約定所有小數(shù)點都亮表示該模式。量程與小數(shù)點顯示的關系如表2所示。
表2 量程與小數(shù)點對應關系Table 2 Correspondence between range and decimal point
周期測頻法在測量高頻信號時存在較大誤差的原因是隨著信號頻率的增加,計數(shù)閘門變窄,使得計數(shù)產生大的誤差。所以本文設計了分頻模塊,通過該模塊根據(jù)量程編號對待測信號fx進行相應的10N分頻,從而使計數(shù)閘門變寬,其中N為分頻數(shù)。本文規(guī)定,除量程0和1時,N=0;其他量程情況下,N=量程編號-1。通過計算可以得到,除了量程“0”外,其余量程下的信號經過分頻后產生的新閘門寬度都在0.1~1 s之間。
本模塊使用7位BCD計數(shù)器對待測信號fx進行分頻。其原理是利用其零標志位zeros[i]的輸出來控制分頻[10]。例如:當7位BCD計數(shù)器百位數(shù)字是0時,則zeros[2]=1,輸出為高電平;百位數(shù)字非0,則zeros[2]=0,輸出為低電平。此時高電平占100個計數(shù)周期,低電平占900個計數(shù)周期,所以zeros[2]是fx的103分頻。
為了驗證設計是否正確,對該模塊進行仿真,結果如圖4所示。圖中分別對應當fx為8 MHz,50 kHz,600 Hz時的閘門產生情況,可以看出符合設計要求。
根據(jù)圖1的總體結構圖設計各個模塊,得到最后如圖5所示的頂層設計圖。對此進行系統(tǒng)仿真,結果如圖6所示。其中,圖6a)的fx為8.76 MHz,理論計算其周期為0.114 155 2 μs,仿真結果為0.114 154 9 μs,誤差為2.628×10-6。圖 6b)的fx為 50 kHz,理論計算其周期為20 μs,仿真結果為19.999 99 μs,誤差為5×10-7。仿真結果表明符合設計要求。
圖4 分頻產生閘門模塊的仿真結果Fig.4 Simulation results of gate module generated by frequency division
圖5 頻率計的QuartusⅡ頂層邏輯圖Fig.5 QuartusⅡtop-layer logic diagram of frequency meter
圖6 頻率計仿真結果Fig.6 Simulation results of frequency meter
本文利用FPGA設計了一種優(yōu)化周期測頻法的頻率計,其在測量高頻信號時也能持有較高精度。該頻率計有量程估計模塊,不需人為設置量程,而且量程模塊本身也是提高測試精度的關鍵模塊,它先預估待測信號的頻段,后面的測量模塊再在該頻段內精確測量。從仿真結果看,該頻率計測量誤差控制在10-6~10-7之間,具有較好的應用價值。