摘 要:針對單片機進行高頻測量存在的響應速度問題,利用CPLD適合精確、高速計數的特點,提出了一種基于單片機和CPLD的頻率測量電路,通過CPLD對被測信號分頻再與單片機計數值進行比較,實現了高精度、等精度測量,同時又解決了高頻測量中存在的問題,滿足了系統對響應時間的要求。該項研究成果已經在所設計信號源產品中得到了應用。
關鍵詞:頻率測量;信號源;高頻測量;CPLD
中圖分類號:TP3681文獻標識碼:A
文章編號:1004-373X(2008)24-052-02
Research of Frequency Measurement Based on Single Chip Computer and CPLD
YU Ning1,ZOU Yingquan2
(1.Huaian College of Information Technology,Huaian,223003,China;2.Nanjing University of Information Science Technology,Nanjing,210044,China)
Abstract:In order to deal with the problem ofresponse rate of single chip computer while measuring high frequency,a frequency measurement circuit based on single chip computer and CPLD is proposed,which realizes high-accuracy measurement by comparing the frequency division of the measured signals with the counting number of single chip computer,which has been applied in funtion generator.
Keywords:frequency measurement;signal source;high frequency measurement;CPLD
信號源一般都具有頻率測量功能,信號源中大多數的測頻電路都是通過單片機實現,低頻時采用測周,高頻時采用測頻。這種方法存在非等精度誤差問題,同時由于單片機速度限制,不能測量很高信號頻率。當信號頻率高于10 MHz時,這種方法難于實現。針對單片機測頻電路缺點,本文提出了一種基于單片機和CPLD的測頻方法,并在實踐中得到了驗證。
1 硬件電路設計
硬件電路包括模擬調理電路、CPLD部分、單片機部分,如圖1所示。模擬調理電路完成對被測信號的整形,該電路將輸入的正弦或其他波形的信號通過整形,輸出方波。模擬調理電路主要由滯回比較器和輸入保護電路構成。CPLD完成對輸入信號分頻,CPLD用Altera公司MAX3128。單片機完成對分頻后的被測信號測周,單片機采用Cygnal公司C8051F206。
被測信號通過模擬調理電路后接入CPLD的全局時鐘I/O口,CPLD對被測信號進行適當分頻,把外部信號通過分頻將頻率限制在一定范圍內,然后送至單片機,在送入單片機信號的1個周期內,單片機對其進行計數,可以得到計數值為Nx。設單片機頻率為fs,輸入單片機信號的頻率為fx,則可得fx=fs/Nx,得到的頻率再乘以前面CPLD中的分頻比,就可以得到外部輸入信號的頻率,以達到頻率測量目的。CPLD中的分頻比由單片機控制,復位時單片機送固定分頻比給CPLD,CPLD對外部輸入被測信號分頻,分頻后送至單片機進行計數,單片機計數并判斷計數值,如果單片機得到的計數值不在要求的范圍之內(具體范圍在軟件設計中討論),那么單片機根據得到的計數值再送不同分頻比給CPLD,CPLD對輸入信號再次分頻,反復上述過程,直到單片機得到合適的計數值。這樣,可以保證外部信號頻率的測試精度,同時實現了等精度測量。
圖1 工作原理圖
2 軟件設計
軟件部分包括單片機程序和CPLD程序。單片機主要完成計數和頻率計算、顯示。CPLD接收單片機送來的分頻比,完成分頻。
2.1 單片機程序設計
當送到單片機的被測信號為高電平時,高電平計數子程序計數,計數時基是100 μs;單片機內時基采用循環計數實現,高電平計數完成再對低電平計數,對高低電平分別計數解決了占空比不是1∶1的頻率測量問題。判斷總的計數值是否在1 000~10 000之間。如果在該范圍內,則頻率(kHz)為:f=NDIV/0.1Ncount,其中,Ncount為單片機計數值;NDIV為CPLD內部分頻比。如果計數值不在1 000~10 000范圍內,根據計數值單片機向CPLD重新送分頻比,然后再次計數,判斷計數值,直到計數值在要求的范圍之內,因為如果計數值太小,則計算的頻率誤差偏大,所以要求計數值必須在一個合適的范圍內。圖2是程序的流程圖。
圖2 頻率測量軟件流程圖
2.2 CPLD程序設計
CPLD程序頂層圖采用原理圖設計,模塊采用VHDL語言編寫。其包括2個部分,如圖3所示,第一部分完成CPLD與單片機通信,CPLD與單片機的通信協議為自定義協議;WR為單片機的普通I/O口,mcu_data[7..0]為單片機的數據總線;WR下降沿來時表示寫入的是地址,WR為上升沿時表示寫入對應數據。第二部分是分頻部分,根據單片機送來的20位分頻比對被測信號fin分頻。分頻之后信號送單片機計數。分頻之后的信號頻率控制在0.1~1 Hz之間。
圖3 Max+PlusⅡ環境下的頂層圖
3 誤差及性能分析
測頻電路的誤差來源主要有時基電路誤差,單片機計數誤差,以及頻率值定點運算誤差。由于顯示采用的是6位數碼管顯示,在計算頻率值時取了6位有效數字,所以忽略定點運算誤差。誤差計算表達式可以表示為:
df/f=dN/N+dt/t
其中,N為計數值;t為時基。時基時間相對誤差dt/t主要取決于單片機晶體的頻率穩定度,選擇合適的石英晶體和振蕩電路,誤差一般可小于10-6。當僅顯示6 位有效數字時,該項誤差可以忽略。對于dN/N部分,無論時基時間長短,計數法測頻總存在1個單位的量化誤差。由于計數值的范圍在1 000~10 000之間,所以測頻電路的相對誤差為:0.001~0.000 1,絕對誤差為:NDIVNcount。經過電路實際測量誤差完全在允許范圍內。
測頻電路的頻率測量范圍也是一個非常重要指標,當CPLD的分頻比為1,單片機的計數值為10 000時測得的頻率為能測得的最低頻率,其最低頻率為:1/(10 000×0.1 ms)=0.1 Hz;當CPLD的分頻比為FFFFFH,單片機計數值為1 000時測得的頻率為能測得的最高頻率,為:1 048 575×1/(1 000×0.1 ms)=10.485 75 MHz。在實際電路設計中上限測量頻率為10 MHz。從上面分析來看下限頻率決定于計數值和時基選擇,通過選擇不同時基可以實現更低頻率測量。最高頻率測量范圍主要決定于CPLD內部的分頻比,如果CPLD的分頻計數器為25位,那能測量的最高頻率為:8 388 600×1/(1 000×0.1 ms)=83.886 MHz。能否實現這么高的頻率測量決定于CPLD的性能,而與單片機性能無關,現CPLD最高能到400 MHz,所以對100 MHz信號分頻完全可以實現。通過分析可以看出這種測頻電路的可擴展性非常好。
4 結 語
本文的測頻電路方案結構合理,能實現等精度頻率測量,且可擴展性強。該測頻電路已在所設計信號源中得到應用,并投入生產。經檢驗,產品性能穩定,指標符合設計要求。在該信號源中CPLD同時完成單片機的I/O口擴展和LED顯示控制,所以測頻電路成本較低。
參考文獻
[1]潘琢金,施國君.C8051FXXX高速SoC單片機原理及應用.北京:北京航空航天大學出版社,2002.
[2]MAX3000A Date Sheet,Programmable Logic Device Family,Altera Corporation,1999.
[3]蔣煥文.電子測量.北京:中國計量出版社,1988.
[4]陳曉榮,蔡萍,周紅全.基于單片機的頻率測量的幾種實用方法.工業儀表與自動化裝置,2003(1):40-42.
[5]鄧勇,施文康.8031單片機測量高頻信號頻率的一種方法.電測與儀表,2000,37(10):23-25,7.
[6]張雪平.單片機提高頻率測量精確度的新方法.微計算機應用,2004,25(1):114-117.
[7]李漢軍,許百榮.等精度測頻單片機系統的研究.儀器儀表用戶,2001(1):16-18.
[8]于忠得.基于單片機的脈沖頻率的寬范圍高精度測量.儀表技術,2002(6):19-20.
[9]赫建國,劉立新.基于單片機的頻率計設計.西安郵電學院學報,2003,8(3):31-34,72.
[10]鄭丹玲.一種快速高精度測頻方法.重慶郵電學院學報:自然科學版,1999,11(2):58-59,64.
作者簡介
俞 寧 江蘇省淮安信息職業技術學院副院長,研究員級高工。
鄒應全 南京信息工程大學講師。
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文