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