趙浩,吳斌
(西北機電工程研究所 陜西 咸陽 712099)
在電工技術領域內,頻率是一個最基本的參數,頻率與其他許多電參量的測量方案、測量結果都有十分密切的關系。因此,頻率的測量就顯得尤為重要。隨著航天軍事科學技術的發展,對時間及頻率的測量精度有了更高的要求。而現有的基于單片機、CPLD為核心的測頻設備在高頻率的工作條件下不穩定,電路板設計困難,測量精度達不到要求的數量級[1]。因此,研究測量精度更高的測量設備具有重大意義。
PSoC(Programmable System on Chip)是美國賽普拉斯公司推出的一款完全基于通用IP模塊,具有真正混合信號處理能力的可編程片上系統芯片。PSoC與單片機的根本區別在于其內部集成有數字和模擬模塊。設計者可以根據不同設計要求調用不同的數字和模擬模塊,完成芯片內部的功能設計。實現使用一塊芯片就可以配置成具有多種不同外圍元器件的微控制器,建立一種可配置嵌入式微控制器。用以實現從確定系統功能開始,到軟/硬件劃分,并完成設計的整個過程。同時,PSoC器件提供了ASIC的優點,但卻沒有典型ASICNRE或轉換時間[2]。因此,PSoC能夠適應非常復雜的實時控制需求,使用它進行產品開發可以大大提高開發效率,降低系統開發的復雜性和費用,同時增強系統的可靠性和抗干擾能力。因此,PSoC特別適用于各種控制和自動化領域。
基于上述考慮,本設計采用PSoC來搭建測量系統,提高頻率測量的精度。
頻率測量主要有測頻法和測周法兩種[3]。測頻法就是在確定的閘門時間Tw內,記錄被測信號的變化周期數(或脈沖個數)Nx,則被測信號的頻率為:fx=Nx/Tw。測周法需要有標準頻率的信號fs,在待測信號的一個周期Tx內,記錄標準頻率信號的周期數Ns,則被測信號的頻率為:fx=fs/Ns;在多個周期內,記錄被測頻率的變化周期數(或脈沖個數)Nx,則被測頻率為:fx=fs×Nx/Ns。這兩種方法的計數值會產生±1個字誤差,并且測試精度與計數器中記錄的數值Nx或Ns有關。
結合以上思路,本設計采用多周期同步測頻法:首先通過對定時器的設定來預置閘門時間(閘門時間的設定要考慮被測信號的周期數)。將標準頻率信號和被測頻率信號分別輸入兩個計數器進行多個周期的同步計數。預置閘門時間結束時,兩個計數器并不停止計數,而是等到被測頻率信號下一個同相位觸發沿到來才關閉同步門(實際閘門)并停止計數,故測量結果的精度僅與閘門時間和標準頻率有關,誤差由被測頻率的±1個脈沖減少到標準頻率信號的±1個脈沖,測量精度顯著提高。

圖1 多周期同步測頻法原理圖Fig.1 Principle of multi-cycle synchronization frequency measurement
多路信號頻率測量是在單路信號測頻的基礎上,通過硬件的配置、擴展,和軟件的協調分配來實現的。
由原理分析可知,采用多周期同步測頻法測量單路信號頻率時,至少需要一個能提供閘門信號的定時器;一個控制實際閘門信號在被測信號上升沿處起停的同步控制模塊;兩個分別對實際閘門內的被測頻率信號和標準頻率信號進行計數的計數器。由運算器對計數器的結果進行運算,求出被測頻率值,最后通過顯示模塊進行測量結果顯示。
在兩路信號頻率測量中,不同信號的閘門信號產生電路和計數器都是彼此獨立的,但其控制運算部分都由CPU來完成。基于對PSoC內部資源上的考慮,結合精度要求,采用1片PSoC芯片CY8C29666[4]作為頻率測量系統的主體部分,對應兩路輸入信號。每個PSoC芯片內部至少需要配置兩個定時器功能模塊、4個計數器功能模塊,以供兩路被測信號的頻率測量之用。最后各計數器的計數結果輸入到CPU中進行計算,得到的被測信號頻率值并輸出到顯示部分。
PSoC芯片是整個頻率測量系統的核心部分。其配置方式的可行性和合理性直接關系到系統功能能否順利實現[5]。應用PSoC Designer中的器件編輯器對CY8C29666內部的全局資源、用戶模塊、連接關系以及芯片管腳進行配置,在此基礎上添加外部器件(如電平調理、同步觸發器等),即可完成系統的硬件平臺的搭建。本系統中,兩路信號對應的處理部分平分系統資源,即:定時器模塊均為8位,兩個被測頻率計數器均為16位,兩個標準頻率計數器均為32位。這樣配置既不過多占用內存,又可滿足系統精度要求。
這里重點介紹一下定時器的配置方式。定時器模塊是由1個周期寄存器、一個同步遞減計數器和1個捕獲比較寄存器組成。周期寄存器和捕獲比較寄存器里面要分別存放兩個值,即Period和CompareValue,這兩項值決定著閘門時間的長短。定時器模塊共有兩項輸出:比較輸出和最終計數輸出。其中比較輸出連到同步控制模塊,用于產生同步使能信號;最終計數輸出端接到指定的GPIO管腳,用來判斷何時讀取計數器的計數值及重寫計數器的初值。
開定時器后,遞減計數器由Period值開始遞減,同時兩個輸出端均輸出低電平。當計數值等于CompareValue時,在下一個系統時鐘上升沿,比較輸出端輸出高電平,直至計數值遞減到零時,比較輸出跳低——這樣就產生了定閘門信號。定閘門信號通入同步控制模塊,產生與被測信號上升沿同步的使能信號。兩個計數器在使能信號為高時開始遞減計數。當使能信號跳低后,計數器暫停計數。讀取當前計數值,即可計算出測量結果。
系統結構框圖如圖2所示。

圖2 采用多周期同步測量法測量兩路數字信號的結構框圖Fig.2 Structure diagram of multi-cycle synchronization frequency measurement for two digital signal
該系統的程序設計主要由主程序、中斷服務子程序和顯示子程序構成。為了使設計出來的軟件功能明確,便于調試、擴展和移植,采用結構化的程序設計方法[6]。主程序如圖3所示。

圖3 主程序流程圖Fig.3 Flow char of the main program
系統的工作方式在硬件部分已作過介紹,這里不再贅述。需要注意的是,定時器最終計數結束后的下一個系統時鐘周期,定時器會自動重新加載計數初值。所以要在此之前讀取兩計數器的計數值。故使用定時器的最終計數輸出功能,在此時輸出一個脈沖觸發中斷,即可通過編寫中斷處理程序實現讀取計數值,并重置計數器初值的功能。中斷服務程序流程圖如圖4所示。
設標準信號的頻率為fs,通過配置定時器模塊得到的閘門時間為T,被測信號頻率的理論值為fxe,T時間內計數器對被測頻率信號和基準頻率信號的計數值分別為Nx和Ns,則被測信號的頻率為fx=fs×Nx/Ns。在忽略基準頻率fs誤差的情況下,測頻可能產生的誤差為

圖4 中斷服務子程序流程圖Fig.4 Flow char of the Interrupt Service Routine (ISR)

由于測量中兩計數器的計數起停都由fx的上升沿觸發,即實際閘門時間為被測頻率信號的整數倍,故對fx計數不存在誤差;對fs的計數Ns最多相差一個脈沖的誤差,即|ΔNs|≤1,此時測量頻率為

將此式和頻率計算公式代入誤差計算公式可以得出

由式(3)可以看出,測量頻率的相對誤差與被測信號頻率的大小無關,僅與閘門時間和基準信號頻率有關。閘門時間越長,標準頻率越高,測頻的相對誤差就越小。這里選定標準信號頻率為SystemCLK*2模式(即48 MHz),討論閘門時間分別為10 s和10 ms情況下,系統的誤差情況。通過計算可知:閘門時間為10 s時,理論誤差為 2.083×10-9;閘門時間為 10 ms時,理論誤差為 2.083×10-6。
系統電路安裝調試成功后,對上述結果進行驗證。兩路輸入信號分別取自江蘇揚中市綠楊電子廠生產的綠楊牌YB1631信號發生器以及安徽埠陽無線電廠的信達牌XD11BH多用信號發生器。被測信號參考頻率由美國Keithley公司生產的Keithley 2000數字萬用表測得。實測結果如表1所示。
由表1數據可知,本頻率測量系統的相對精度在10-6以上,基本達到設計精度要求。但是跟理論誤差相比還有一定差距。這一方面是由于在我們現有的實驗室條件下,沒有比參考頻率精度更高的頻率計,故以其為標準計算得到的誤差只能作為參考,更高的測量精度無法驗證,另一方面是因為系統本身存在誤差。經分析,系統本身的誤差可能由下述原因引起:
1)被測頻率信號本身的不準確性。2)測量環境中存在電磁干擾,對準確計數產生影響。3)計算中的舍入誤差。
本系統以PSoC器件為核心,以多周期同步測頻法為基礎,充分利用了PSoC芯片內部集成的功能模塊資源完成兩路信號頻率測量系統的設計。其接口電路簡單,提高了頻率測量的精度,實現了高集成度、高速和高可靠性,同時由于PSoC器件的體積和功能優勢,簡化了儀表的設計,進一步降低了成本。

表1 測試數據Tab.1 Testing data
[1]馬獻果,焦陽.頻率測量方法的改進 [J].儀器儀表學報,2004,25(4):21 MA Xian-guo,JIAO Yang.Frequency measurement method improvement[J].Chinese Journal of Scientific Instrument,2004,25(4):21.
[2]何賓.可編程片上系統PSoC設計指南[M].北京:化學工業出版社,2011.
[3]侯俊勇.高速高精度頻率測量系統的CPLD實現 [J].儀器儀表學報,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]邵自然,曹丹.一種頻率測量片上系統設計與實現[J].電腦開發與應用,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.