一種高性價比等精度數(shù)字頻率計方案設(shè)計
頻率的概念就是1 s時間內(nèi)被測信號的周期個數(shù),最直接的測量方法就是單位時間內(nèi)計數(shù)法,這種方法比較適合高頻測量。低頻通常用測周期法。這兩種方法的測量精度不固定,與被測信號的范圍相關(guān)。
等精度頻率測量法融合以上兩種方法的優(yōu)點,可兼顧低頻與高頻信號;但較以上兩種方法而言,等精度頻率測量有較高的測量精度,且誤差不會隨著被測信號頻率的改變而改變。
1等精度頻率測量原理
等精度頻率測量原理框圖如圖1所示。圖中計數(shù)器是帶使能控制的32位計數(shù)器,EN是計數(shù)允許使能信號,高電平允許計數(shù)。計數(shù)器1對基準(zhǔn)時鐘信號fb計數(shù),計數(shù)器2對被測信號fx計數(shù)。D觸發(fā)器實現(xiàn)對被測信號fx上升沿檢測,實現(xiàn)門控信號與fx上升沿同步,從而保證計數(shù)器2對被測信號計數(shù)剛好為整數(shù)個周期,零誤差。
測量過程控制時序波形如圖2所示。測量開始,t0時刻MCU發(fā)出一個清零信號Clr,使計數(shù)器和D觸發(fā)器置0;t1時刻MCU發(fā)出測量啟動信號Gate,使D觸發(fā)器輸人D為高電平;在被測信號fb上升沿到來t2時刻,D觸發(fā)器Q端才被置1,使計數(shù)器1和計數(shù)器2的EN同時為1,計數(shù)器開始計數(shù),系統(tǒng)進(jìn)入計數(shù)允許周期。這時,計數(shù)器1和2分別對基準(zhǔn)時鐘信號和被測信號同時計數(shù)。一段時間過后,t3時刻MCU發(fā)出停止信號,即D觸發(fā)器輸入D為低電平,但此時計數(shù)器仍然沒有停止計數(shù),直到下一個被測信號的上升沿t4時刻到來時,D觸發(fā)器Q輸出0將這2個計數(shù)器同時關(guān)閉。
由圖2可見,Gate的寬度Tc和發(fā)生的時間都不會直接影響計數(shù)使能信號EN,EN總是在被測信號fx上升沿改變,從而保證了被測信號被計數(shù)的周期總是整數(shù)個周期nTx,而與被測信號的頻率無關(guān)。正確理解這點,是理解等精度頻率測量的關(guān)鍵。由于測量過程中不能保證基準(zhǔn)時鐘周期的完整性,還會引入測量誤差。這種隨機(jī)誤差dt最多只有基準(zhǔn)時鐘fb信號的一個時鐘周期。由于fb的信號通常由高穩(wěn)定度的高頻晶體振蕩器發(fā)出,任何時刻的絕對測量誤差只有1/N1。例如,對于門控信號接近1 s的測量過程,fb取100 MHz的晶振,最大誤差可以達(dá)到10-8。
2方案設(shè)計
2.1系統(tǒng)方案
單片機(jī)定時器/計數(shù)器電路如圖3所示。當(dāng)C/T=0,TR=1,GATE=1時,單片機(jī)內(nèi)部計數(shù)器時鐘開關(guān)可受外部引腳INTn控制,這樣就可以實現(xiàn)單片機(jī)內(nèi)部計數(shù)器與外部計數(shù)器同步開關(guān)。
正是基于單片機(jī)這種電路結(jié)構(gòu),根據(jù)等精度原理,提出圖4所示的系統(tǒng)框圖。單片機(jī)加CPLD結(jié)構(gòu),利用單片機(jī)內(nèi)部定時器定時,外部CPLD實現(xiàn)等精度測量邏輯電路和計數(shù)功能?;鶞?zhǔn)時鐘fb由單片機(jī)晶振提供,頻率為單片機(jī)時鐘晶振12分頻后所得機(jī)器時鐘。預(yù)置閘門由單片機(jī)引腳P1.0輸出控制,計數(shù)器清零和復(fù)位由單片機(jī)引腳P1.1輸出控制,單片機(jī)引腳P3.2是內(nèi)部定時器使能開關(guān)控制引腳。
2.2單片機(jī)與CPLD接口設(shè)計
圖5所示為一種基于總線的接口方案,采用三總線(數(shù)據(jù)、控制、地址)結(jié)構(gòu),用于實現(xiàn)單片機(jī)與CPLD之間的數(shù)據(jù)傳輸。
單片機(jī)P0口為雙向數(shù)據(jù)總線,與CPLD的通用IO口連接,完成數(shù)據(jù)和低8位地址傳送。控制總線包括單片機(jī)讀寫控制總線RD和WR,以及地址鎖存信號ALE(Address Lock Enable)。地址總線A15(P2.7)通過CPLD的全局輸入信號引腳輸入。
2.3 CPLD電路
CPLD內(nèi)部電路原理框圖如圖6所示。當(dāng)預(yù)置閘門GATE輸入高電平時,由于DFF觸發(fā)器為邊沿觸發(fā)器,在上升沿時才將數(shù)據(jù)輸出,所以Q輸出端并不立即置1,只有當(dāng)外部信號上升沿到來時,Q才為1,使能計數(shù)器和定時器。這樣保證了計數(shù)器和定時器在被測信號的上升沿到來時同時有效。當(dāng)預(yù)置閘門GATE=0關(guān)閉時,兩計數(shù)器的允許信號同樣在被測信號的上升沿到來時同時關(guān)閉。由于基準(zhǔn)信號的定時器與被測信號嚴(yán)格同步,所以理論上最大誤差只有基頻的一個周期。CPLD內(nèi)計數(shù)器為32位,在預(yù)置時間內(nèi),只要計數(shù)器不溢出,即可準(zhǔn)確測量被測信號個數(shù)。
3方案實現(xiàn)
3.1電路原理
電路原理如圖7所示。圖中給出了單片機(jī)(STC89C52RC)與CPLD(ATF1504AS)的具體接口電路,LCD1602接口電路,帶ISP下載接口的CPLD電路,被測信號從J1直接輸入給CPLD I/O引腳。這里沒有給出信號前置調(diào)理與波形整形電路。
3.2 CPLD電路設(shè)計
CPLD開發(fā)選擇Altera公司的EDA軟件QuartusII和目標(biāo)器件EPM7064SLC44=10,需要完成電路設(shè)計輸入、編譯、仿真、引腳綁定(引腳分配請參考電路圖),并編譯得到最終配置文件*.pof。然后再使用Atmel公司提供的轉(zhuǎn)換工具POF2JED軟件將前面得到的*.pof文件轉(zhuǎn)換成*.jed文件,再用AtmelISP軟件將*.jed文件下載到CPLD器件ATF1504即可。
以下是采用VerilogHDL硬件描述語言設(shè)計的CPLD內(nèi)部電路源碼:
3.3程序設(shè)計
整個測量過程由MCU控制完成,然后計算并把結(jié)果送LCD顯示。測量開始,MCU首先發(fā)出清零CLR信號,對外部CPLD電路復(fù)位和計數(shù)器清零,還要將定時器軟計數(shù)器清零,之后發(fā)出啟動信號GATE=1,測量開始。MCU通過查詢軟計數(shù)器(定時中斷加1),控制閘門時間大致在1 s左右,時間到,MCU立即發(fā)出停止信號GATE=0,隨后查詢引腳INT0,確認(rèn)計數(shù)停止。之后,分別讀回外部計數(shù)和內(nèi)部計數(shù)器計數(shù)結(jié)果,MCU根據(jù)等精度原理算出信號頻率,將結(jié)果送LCD顯示。程序主流程和定時中斷流程如圖8所示。
4測試結(jié)果
筆者在實驗室使用RIGOL-DG1015DDS信號發(fā)生器校準(zhǔn)。通過修正單片機(jī)時鐘偏差,22.118 4 MHz的12分頻為1.843 2 MHz,對1 843 200 Hz修正86.95 Hz后帶入程序計算,整數(shù)頻點測量結(jié)果可以達(dá)到和信號發(fā)生器完全一致,接近零誤差。特針對一些非整數(shù)頻點進(jìn)行測量,結(jié)果如表1所列,誤差達(dá)到10-7數(shù)量級,與理論值一致。
由于系統(tǒng)采用的是單片機(jī)機(jī)器時鐘作為基準(zhǔn)信號時鐘,基準(zhǔn)信號頻率較低,使得測量精度不高;如果采用外部更高頻基準(zhǔn)信號做時鐘信號,精度還可進(jìn)一步提高。
結(jié)語
將等精度頻率測量原理巧妙地用MCU+CPLD實現(xiàn),設(shè)計了一種低成本、高性價比的頻率計方案。MCU選擇STC89C52RC,CPLD選擇Atmel公司的ATF1504AS,實現(xiàn)了寬范圍高精度的頻率測量。該方案具有結(jié)構(gòu)簡單,成本低等優(yōu)點,具有廣闊的市場前景。