趙浩,吳斌
(西北機電工程研究所 陜西 咸陽 712099)
在電工技術(shù)領(lǐng)域內(nèi),頻率是一個最基本的參數(shù),頻率與其他許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系。因此,頻率的測量就顯得尤為重要。隨著航天軍事科學(xué)技術(shù)的發(fā)展,對時間及頻率的測量精度有了更高的要求。而現(xiàn)有的基于單片機、CPLD為核心的測頻設(shè)備在高頻率的工作條件下不穩(wěn)定,電路板設(shè)計困難,測量精度達(dá)不到要求的數(shù)量級[1]。因此,研究測量精度更高的測量設(shè)備具有重大意義。
PSoC(Programmable System on Chip)是美國賽普拉斯公司推出的一款完全基于通用IP模塊,具有真正混合信號處理能力的可編程片上系統(tǒng)芯片。PSoC與單片機的根本區(qū)別在于其內(nèi)部集成有數(shù)字和模擬模塊。設(shè)計者可以根據(jù)不同設(shè)計要求調(diào)用不同的數(shù)字和模擬模塊,完成芯片內(nèi)部的功能設(shè)計。實現(xiàn)使用一塊芯片就可以配置成具有多種不同外圍元器件的微控制器,建立一種可配置嵌入式微控制器。用以實現(xiàn)從確定系統(tǒng)功能開始,到軟/硬件劃分,并完成設(shè)計的整個過程。同時,PSoC器件提供了ASIC的優(yōu)點,但卻沒有典型ASICNRE或轉(zhuǎn)換時間[2]。因此,PSoC能夠適應(yīng)非常復(fù)雜的實時控制需求,使用它進(jìn)行產(chǎn)品開發(fā)可以大大提高開發(fā)效率,降低系統(tǒng)開發(fā)的復(fù)雜性和費用,同時增強系統(tǒng)的可靠性和抗干擾能力。因此,PSoC特別適用于各種控制和自動化領(lǐng)域。
基于上述考慮,本設(shè)計采用PSoC來搭建測量系統(tǒng),提高頻率測量的精度。
頻率測量主要有測頻法和測周法兩種[3]。測頻法就是在確定的閘門時間Tw內(nèi),記錄被測信號的變化周期數(shù)(或脈沖個數(shù))Nx,則被測信號的頻率為:fx=Nx/Tw。測周法需要有標(biāo)準(zhǔn)頻率的信號fs,在待測信號的一個周期Tx內(nèi),記錄標(biāo)準(zhǔn)頻率信號的周期數(shù)Ns,則被測信號的頻率為:fx=fs/Ns;在多個周期內(nèi),記錄被測頻率的變化周期數(shù)(或脈沖個數(shù))Nx,則被測頻率為:fx=fs×Nx/Ns。這兩種方法的計數(shù)值會產(chǎn)生±1個字誤差,并且測試精度與計數(shù)器中記錄的數(shù)值Nx或Ns有關(guān)。
結(jié)合以上思路,本設(shè)計采用多周期同步測頻法:首先通過對定時器的設(shè)定來預(yù)置閘門時間(閘門時間的設(shè)定要考慮被測信號的周期數(shù))。將標(biāo)準(zhǔn)頻率信號和被測頻率信號分別輸入兩個計數(shù)器進(jìn)行多個周期的同步計數(shù)。預(yù)置閘門時間結(jié)束時,兩個計數(shù)器并不停止計數(shù),而是等到被測頻率信號下一個同相位觸發(fā)沿到來才關(guān)閉同步門(實際閘門)并停止計數(shù),故測量結(jié)果的精度僅與閘門時間和標(biāo)準(zhǔn)頻率有關(guān),誤差由被測頻率的±1個脈沖減少到標(biāo)準(zhǔn)頻率信號的±1個脈沖,測量精度顯著提高。
圖1 多周期同步測頻法原理圖Fig.1 Principle of multi-cycle synchronization frequency measurement
多路信號頻率測量是在單路信號測頻的基礎(chǔ)上,通過硬件的配置、擴展,和軟件的協(xié)調(diào)分配來實現(xiàn)的。
由原理分析可知,采用多周期同步測頻法測量單路信號頻率時,至少需要一個能提供閘門信號的定時器;一個控制實際閘門信號在被測信號上升沿處起停的同步控制模塊;兩個分別對實際閘門內(nèi)的被測頻率信號和標(biāo)準(zhǔn)頻率信號進(jìn)行計數(shù)的計數(shù)器。由運算器對計數(shù)器的結(jié)果進(jìn)行運算,求出被測頻率值,最后通過顯示模塊進(jìn)行測量結(jié)果顯示。
在兩路信號頻率測量中,不同信號的閘門信號產(chǎn)生電路和計數(shù)器都是彼此獨立的,但其控制運算部分都由CPU來完成?;趯SoC內(nèi)部資源上的考慮,結(jié)合精度要求,采用1片PSoC芯片CY8C29666[4]作為頻率測量系統(tǒng)的主體部分,對應(yīng)兩路輸入信號。每個PSoC芯片內(nèi)部至少需要配置兩個定時器功能模塊、4個計數(shù)器功能模塊,以供兩路被測信號的頻率測量之用。最后各計數(shù)器的計數(shù)結(jié)果輸入到CPU中進(jìn)行計算,得到的被測信號頻率值并輸出到顯示部分。
PSoC芯片是整個頻率測量系統(tǒng)的核心部分。其配置方式的可行性和合理性直接關(guān)系到系統(tǒng)功能能否順利實現(xiàn)[5]。應(yīng)用PSoC Designer中的器件編輯器對CY8C29666內(nèi)部的全局資源、用戶模塊、連接關(guān)系以及芯片管腳進(jìn)行配置,在此基礎(chǔ)上添加外部器件(如電平調(diào)理、同步觸發(fā)器等),即可完成系統(tǒng)的硬件平臺的搭建。本系統(tǒng)中,兩路信號對應(yīng)的處理部分平分系統(tǒng)資源,即:定時器模塊均為8位,兩個被測頻率計數(shù)器均為16位,兩個標(biāo)準(zhǔn)頻率計數(shù)器均為32位。這樣配置既不過多占用內(nèi)存,又可滿足系統(tǒng)精度要求。
這里重點介紹一下定時器的配置方式。定時器模塊是由1個周期寄存器、一個同步遞減計數(shù)器和1個捕獲比較寄存器組成。周期寄存器和捕獲比較寄存器里面要分別存放兩個值,即Period和CompareValue,這兩項值決定著閘門時間的長短。定時器模塊共有兩項輸出:比較輸出和最終計數(shù)輸出。其中比較輸出連到同步控制模塊,用于產(chǎn)生同步使能信號;最終計數(shù)輸出端接到指定的GPIO管腳,用來判斷何時讀取計數(shù)器的計數(shù)值及重寫計數(shù)器的初值。
開定時器后,遞減計數(shù)器由Period值開始遞減,同時兩個輸出端均輸出低電平。當(dāng)計數(shù)值等于CompareValue時,在下一個系統(tǒng)時鐘上升沿,比較輸出端輸出高電平,直至計數(shù)值遞減到零時,比較輸出跳低——這樣就產(chǎn)生了定閘門信號。定閘門信號通入同步控制模塊,產(chǎn)生與被測信號上升沿同步的使能信號。兩個計數(shù)器在使能信號為高時開始遞減計數(shù)。當(dāng)使能信號跳低后,計數(shù)器暫停計數(shù)。讀取當(dāng)前計數(shù)值,即可計算出測量結(jié)果。
系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
圖2 采用多周期同步測量法測量兩路數(shù)字信號的結(jié)構(gòu)框圖Fig.2 Structure diagram of multi-cycle synchronization frequency measurement for two digital signal
該系統(tǒng)的程序設(shè)計主要由主程序、中斷服務(wù)子程序和顯示子程序構(gòu)成。為了使設(shè)計出來的軟件功能明確,便于調(diào)試、擴展和移植,采用結(jié)構(gòu)化的程序設(shè)計方法[6]。主程序如圖3所示。
圖3 主程序流程圖Fig.3 Flow char of the main program
系統(tǒng)的工作方式在硬件部分已作過介紹,這里不再贅述。需要注意的是,定時器最終計數(shù)結(jié)束后的下一個系統(tǒng)時鐘周期,定時器會自動重新加載計數(shù)初值。所以要在此之前讀取兩計數(shù)器的計數(shù)值。故使用定時器的最終計數(shù)輸出功能,在此時輸出一個脈沖觸發(fā)中斷,即可通過編寫中斷處理程序?qū)崿F(xiàn)讀取計數(shù)值,并重置計數(shù)器初值的功能。中斷服務(wù)程序流程圖如圖4所示。
設(shè)標(biāo)準(zhǔn)信號的頻率為fs,通過配置定時器模塊得到的閘門時間為T,被測信號頻率的理論值為fxe,T時間內(nèi)計數(shù)器對被測頻率信號和基準(zhǔn)頻率信號的計數(shù)值分別為Nx和Ns,則被測信號的頻率為fx=fs×Nx/Ns。在忽略基準(zhǔn)頻率fs誤差的情況下,測頻可能產(chǎn)生的誤差為
圖4 中斷服務(wù)子程序流程圖Fig.4 Flow char of the Interrupt Service Routine (ISR)
由于測量中兩計數(shù)器的計數(shù)起停都由fx的上升沿觸發(fā),即實際閘門時間為被測頻率信號的整數(shù)倍,故對fx計數(shù)不存在誤差;對fs的計數(shù)Ns最多相差一個脈沖的誤差,即|ΔNs|≤1,此時測量頻率為
將此式和頻率計算公式代入誤差計算公式可以得出
由式(3)可以看出,測量頻率的相對誤差與被測信號頻率的大小無關(guān),僅與閘門時間和基準(zhǔn)信號頻率有關(guān)。閘門時間越長,標(biāo)準(zhǔn)頻率越高,測頻的相對誤差就越小。這里選定標(biāo)準(zhǔn)信號頻率為SystemCLK*2模式(即48 MHz),討論閘門時間分別為10 s和10 ms情況下,系統(tǒng)的誤差情況。通過計算可知:閘門時間為10 s時,理論誤差為 2.083×10-9;閘門時間為 10 ms時,理論誤差為 2.083×10-6。
系統(tǒng)電路安裝調(diào)試成功后,對上述結(jié)果進(jìn)行驗證。兩路輸入信號分別取自江蘇揚中市綠楊電子廠生產(chǎn)的綠楊牌YB1631信號發(fā)生器以及安徽埠陽無線電廠的信達(dá)牌XD11BH多用信號發(fā)生器。被測信號參考頻率由美國Keithley公司生產(chǎn)的Keithley 2000數(shù)字萬用表測得。實測結(jié)果如表1所示。
由表1數(shù)據(jù)可知,本頻率測量系統(tǒng)的相對精度在10-6以上,基本達(dá)到設(shè)計精度要求。但是跟理論誤差相比還有一定差距。這一方面是由于在我們現(xiàn)有的實驗室條件下,沒有比參考頻率精度更高的頻率計,故以其為標(biāo)準(zhǔn)計算得到的誤差只能作為參考,更高的測量精度無法驗證,另一方面是因為系統(tǒng)本身存在誤差。經(jīng)分析,系統(tǒng)本身的誤差可能由下述原因引起:
1)被測頻率信號本身的不準(zhǔn)確性。2)測量環(huán)境中存在電磁干擾,對準(zhǔn)確計數(shù)產(chǎn)生影響。3)計算中的舍入誤差。
本系統(tǒng)以PSoC器件為核心,以多周期同步測頻法為基礎(chǔ),充分利用了PSoC芯片內(nèi)部集成的功能模塊資源完成兩路信號頻率測量系統(tǒng)的設(shè)計。其接口電路簡單,提高了頻率測量的精度,實現(xiàn)了高集成度、高速和高可靠性,同時由于PSoC器件的體積和功能優(yōu)勢,簡化了儀表的設(shè)計,進(jìn)一步降低了成本。
表1 測試數(shù)據(jù)Tab.1 Testing data
[1]馬獻(xiàn)果,焦陽.頻率測量方法的改進(jìn) [J].儀器儀表學(xué)報,2004,25(4):21 MA Xian-guo,JIAO Yang.Frequency measurement method improvement[J].Chinese Journal of Scientific Instrument,2004,25(4):21.
[2]何賓.可編程片上系統(tǒng)PSoC設(shè)計指南[M].北京:化學(xué)工業(yè)出版社,2011.
[3]侯俊勇.高速高精度頻率測量系統(tǒng)的CPLD實現(xiàn) [J].儀器儀表學(xué)報,2003,24(4):159.HOU Jun-yong.The realizing of high-speed and highaccuracy frequency surveying system in CPLD[J].Chinese Journal of Scientific Instrument,2003,24(4):159.
[4]PSoC?Mixed-Signal Array Final Data Sheet_CY8C29666[EB/OL].http://download.cypress.com.edgesuite.net/design_resources/datasheets/contents/cy8c29666_8.pdf.
[5]邵自然,曹丹.一種頻率測量片上系統(tǒng)設(shè)計與實現(xiàn)[J].電腦開發(fā)與應(yīng)用,2006(6):49.SHAO Zi-ran,CAO Dan.Design and implementation of frequency measurement system based on SoC[J].Computer Development&Applications,2006(6):49.
[6]San Jose.PSoC Designer C Language Compiler User Guide[EB/OL].(2011-09-13)http://www.cypress.com.