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