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