CY8C29666芯片的高精度頻率測量系統(tǒng)設(shè)計
引言
在電工技術(shù)領(lǐng)域內(nèi),頻率是一個最基本的參數(shù),頻率與其他許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系。隨著航天軍事科學(xué)技術(shù)的發(fā)展,對時間及頻率的測量精度有了更高的要求。但是在現(xiàn)有基于單片機、CPLD等的測頻設(shè)備中,在高頻率的工作條件下工作不夠穩(wěn)定,電路板的設(shè)計比較困難,測量精度達(dá)不到系統(tǒng)要求的數(shù)量級。因此,研究測量精度更高的測量設(shè)備具有重大意義。
PSoC(Programmable System on Chip)是Cypress公司推出的一款基于通用IP模塊,并且具有真正混合信號處理能力的可編程片上系統(tǒng)芯片。在PSoC芯片的設(shè)計中,設(shè)計者可以根據(jù)不同設(shè)計要求調(diào)用不同的數(shù)字和模擬模塊,完成芯片內(nèi)部的功能設(shè)計。使用一塊芯片就可以配置成具有多種不同外圍元器件的微控制器,以實現(xiàn)從確定系統(tǒng)功能開始,到軟硬件劃分,并完成設(shè)計的整個過程。因此,PSoC能夠滿足非常復(fù)雜的實時控制需求,使用它進行產(chǎn)品開發(fā)可以大大提高開發(fā)效率,降低系統(tǒng)開發(fā)的復(fù)雜性和費用,同時增強系統(tǒng)的可靠性和抗干擾能力。因此,PSoC特別適用于各種控制和自動化領(lǐng)域。
1 測量原理
頻率測量主要有測頻法和測周法兩種。測頻法就是在確定的閘門時間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)。
本設(shè)計采用多周期同步測頻法:首先通過對定時器的設(shè)定來預(yù)置閘門時間。將標(biāo)準(zhǔn)頻率信號和被測頻率信號分別輸入兩個計數(shù)器進行多個周期的同步計數(shù)。預(yù)置閘門時間結(jié)束時,兩個計數(shù)器并不停止計數(shù),而是等到被測頻率信號下一個同相位觸發(fā)沿到來之后才關(guān)閉同步門并停止計數(shù)。因此,測量結(jié)果的精度僅與閘門時間和標(biāo)準(zhǔn)頻率有關(guān),誤差由被測頻率的±1個脈沖減少到標(biāo)準(zhǔn)頻率信號的±1個脈沖,測量精度有顯著提高。多周期同步測頻法原理圖如圖1所示。
2 系統(tǒng)設(shè)計
2.1 硬件設(shè)計
由原理分析可知,采用多周期同步測頻法測量單路信號頻率時,至少需要一個能提供閘門信號的定時器,一個控制實際閘門信號在被測信號上升沿處啟停的同步控制模塊,以及兩個分別對實際閘門內(nèi)的被測頻率信號和標(biāo)準(zhǔn)頻率信號進行計數(shù)的計數(shù)器。由運算器對計數(shù)器的結(jié)果進行運算,求出被測頻率值,最后通過顯示模塊顯示測量結(jié)果。
在兩路信號頻率測量中,不同信號的閘門信號產(chǎn)生電路和計數(shù)器都是彼此獨立的,但其控制運算部分都由CPU來完成。基于對PsoC內(nèi)部資源上的考慮,本設(shè)計采用1片PSoC芯片CY8C29666作為頻率測量系統(tǒng)的主體部分,每個PsoC芯片內(nèi)部至少需要配置2個定時器功能模塊和4個計數(shù)器功能模塊。各計數(shù)器的計數(shù)結(jié)果輸入到CPU中進行計算,得到的被測信號頻率值并輸出到顯示部分。
PSoC芯片是整個頻率測量系統(tǒng)的核心,其配置方式的可行性和合理性直接關(guān)系到系統(tǒng)功能能否順利實現(xiàn)。本設(shè)計中使用PSoC Designer軟件中的器件編輯器對CY8C29666內(nèi)部的全局資源、用戶模塊、連接關(guān)系以及芯片引腳進行配置,在此基礎(chǔ)上添加外部器件,即可完成系統(tǒng)的硬件平臺的搭建。本設(shè)計中,兩路信號對應(yīng)的處理部分將系統(tǒng)資源一分為二,即定時器模塊均為8位,兩個被測頻率計數(shù)器均為16位,兩個標(biāo)準(zhǔn)頻率計數(shù)器均為32位。
定時器的配置方式是關(guān)鍵的環(huán)節(jié)。定時器模塊是由1個周期寄存器、1個同步遞減計數(shù)器和1個捕獲比較寄存器組成。周期寄存器和捕獲比較寄存器中要分別存放兩個值,即Period和CompareValue,這兩項值決定著閘門時間的長短。定時器模塊共有兩項輸出:比較輸出和最終計數(shù)輸出。其中比較輸出連到同步控制模塊,用于產(chǎn)生同步使能信號;最終計數(shù)輸出端接到指定的GPIO引腳,用來判斷何時讀取計數(shù)器的計數(shù)值及重寫計數(shù)器的初值。
開啟定時器后,遞減計數(shù)器由Period值開始遞減,同時兩個輸出端均輸出低電平。當(dāng)計數(shù)值等于Compare Value時,在下一個系統(tǒng)時鐘上升沿,比較輸出端輸出高電平,直至計數(shù)值遞減到零時,比較輸出跳低——這樣就產(chǎn)生了定閘門信號。定閘門信號進入同步控制模塊,產(chǎn)生與被測信號上升沿同步的使能信號。兩個計數(shù)器在使能信號為高時開始遞減計數(shù)。當(dāng)使能信號跳低后,計數(shù)器暫停計數(shù)。讀取當(dāng)前計數(shù)值,即可計算出測量結(jié)果。系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
2.2 軟件設(shè)計
該系統(tǒng)的程序設(shè)計主要由主程序、中斷服務(wù)子程序和顯示子程序構(gòu)成。為了使設(shè)計出來的軟件功能明確,便于調(diào)試、擴展和移植,采用結(jié)構(gòu)化的程序設(shè)計方法。主程序如圖3所示。
需要注意的是,定時器最終計數(shù)結(jié)束后的下一個系統(tǒng)時鐘周期,定時器會自動重新加載計數(shù)初值,所以要在此之前讀取兩計數(shù)器的計數(shù)值。故使用定時器的最終計數(shù)輸出功能,在此時輸出一個脈沖觸發(fā)中斷,即可通過編寫中斷處理程序?qū)崿F(xiàn)讀取計數(shù)值,并重置計數(shù)器初值的功能。
3 實驗結(jié)果及誤差分析
設(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)生的誤差為:
δ=[(fxe-fx)/fxe]×100% (1)
由于測量中兩計數(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)信號頻率為48 MHz,閘門時間分別為10 s和10 ms的情況。通過計算可知:閘門時間為10 s時,理論誤差為2.083×10-9;閘門時間為10 ms時,理論誤差為2.083×10-8。系統(tǒng)電路安裝調(diào)試成功后,對上述結(jié)果進行驗證。兩路輸入信號分別取自綠楊牌YB1631信號發(fā)生器以及信達(dá)牌XD11BH多用信號發(fā)生器。被測信號參考頻率由Keithley 2000數(shù)字萬用表測得。測量結(jié)果如表1所列。
由表1可知,本設(shè)計測量結(jié)果的相對精度在10-6以上,基本達(dá)到設(shè)計精度要求,但是與理論誤差相比還有一定差距。原因有兩方面:一方面在現(xiàn)有的實驗室條件下,沒有頻率精度更高的頻率計,故以其為標(biāo)準(zhǔn)計算得到的誤差只能作為參考,更高的測量精度無法驗證;另一方面是系統(tǒng)本身存在誤差。
結(jié)語
本系統(tǒng)以PSoC芯片CY8C29666為核心,以多周期同步測頻法為基礎(chǔ),充分利用了PSoC芯片內(nèi)部集成的功能模塊資源,完成了兩路信號頻率測量系統(tǒng)的設(shè)計。其硬件電路簡單,提高了頻率測量的精度,實現(xiàn)了高集成度、高速和高可靠性。同時,由于PSoC器件的體積和功能優(yōu)勢,簡化了系統(tǒng)的設(shè)計,進一步降低了成本。