一種高性價(jià)比等精度數(shù)字頻率計(jì)方案設(shè)計(jì)
以下是采用VerilogHDL硬件描述語(yǔ)言設(shè)計(jì)的CPLD內(nèi)部電路源碼:
3.3程序設(shè)計(jì)
整個(gè)測(cè)量過(guò)程由MCU控制完成,然后計(jì)算并把結(jié)果送LCD顯示。測(cè)量開(kāi)始,MCU首先發(fā)出清零CLR信號(hào),對(duì)外部CPLD電路復(fù)位和計(jì)數(shù)器清零,還要將定時(shí)器軟計(jì)數(shù)器清零,之后發(fā)出啟動(dòng)信號(hào)GATE=1,測(cè)量開(kāi)始。MCU通過(guò)查詢軟計(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)。通過(guò)修正單片機(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é)語(yǔ)
將等精度頻率測(cè)量原理巧妙地用MCU+CPLD實(shí)現(xiàn),設(shè)計(jì)了一種低成本、高性價(jià)比的頻率計(jì)方案。MCU選擇STC89C52RC,CPLD選擇Atmel公司的ATF1504AS,實(shí)現(xiàn)了寬范圍高精度的頻率測(cè)量。該方案具有結(jié)構(gòu)簡(jiǎn)單,成本低等優(yōu)點(diǎn),具有廣闊的市場(chǎng)前景。
評(píng)論