一。 引言
數(shù)字頻率計(jì)是電子測(cè)試、自動(dòng)化控制等設(shè)備中不可或缺的重要模塊,對(duì)其精度和成本都提出了較高的要求。最常用和直接的頻率測(cè)量方法是直接測(cè)頻法。直接測(cè)頻法工作原理簡(jiǎn)單,設(shè)計(jì)復(fù)雜度低。其通過(guò)在給定的閘門(mén)信號(hào)中對(duì)待測(cè)信號(hào)脈沖進(jìn)行計(jì)數(shù),從而算出待測(cè)信號(hào)的頻率。但由于閘門(mén)是與基準(zhǔn)信號(hào)(fr)完全同步,而不是待測(cè)信號(hào)(ft),所以測(cè)量結(jié)果有±1個(gè)待測(cè)信號(hào)脈沖的誤差,這對(duì)低頻信號(hào)是難以容忍的。多周期同步測(cè)頻法中閘門(mén)的時(shí)間不是固定的,而是被測(cè)信號(hào)的整周期倍。閘門(mén)的開(kāi)閉受門(mén)控信號(hào)和待測(cè)信號(hào)的雙重控制,以期達(dá)到閘門(mén)與待測(cè)信號(hào)完全同步,從而消除±1個(gè)待測(cè)信號(hào)脈沖的誤差。多周期同步測(cè)頻法將誤差轉(zhuǎn)移為±1個(gè)基準(zhǔn)脈沖的誤差,而基準(zhǔn)信號(hào)的頻率一般較高,其±1個(gè)脈沖誤差可忽略不計(jì)。多周期同步測(cè)頻法雖然解決了誤差的問(wèn)題,但其增加了閘門(mén)信號(hào)的設(shè)計(jì)難度,而且加重了頻率計(jì)算部分的負(fù)擔(dān)。
基于此,本文提出了一種采用較小規(guī)模CPLD(Xilinx XC95144)和單片機(jī)(AT89C51)相結(jié)合的數(shù)字頻率計(jì)設(shè)計(jì)方案。該方案不僅體積小、保密性強(qiáng),而且設(shè)計(jì)簡(jiǎn)單、成本低、精度高、可測(cè)頻帶寬。
二。 數(shù)字頻率計(jì)工作原理
本文提出的基于CPLD和單片機(jī)相結(jié)合的設(shè)計(jì)方案不僅能較好地解決誤差問(wèn)題,誤差僅小于等于 0.1HZ,同時(shí)還通過(guò)對(duì)軟硬件界面的科學(xué)劃分,在保證性能的基礎(chǔ)上,盡最大可能地簡(jiǎn)化了硬件設(shè)計(jì)的難度。該方法原理圖如圖1所示。其中測(cè)頻模塊采用CPLD(Xilinx XC95144)設(shè)計(jì)完成,其余功能主要由單片機(jī)來(lái)實(shí)現(xiàn)。完成的功能如下:
測(cè)頻模塊:主要是對(duì)基準(zhǔn)信號(hào)fr和待測(cè)信號(hào)ft的脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)周期為1s;
數(shù)字處理模塊:接收測(cè)頻模塊送出的待測(cè)信號(hào)脈沖計(jì)數(shù)值nt,計(jì)算出其實(shí)際的頻率值。然后采用10次求平均的方法逐步求精待測(cè)信號(hào)頻率值;
格式轉(zhuǎn)換模:塊負(fù)責(zé)將計(jì)算模塊所得的結(jié)果轉(zhuǎn)換為顯示模塊可以識(shí)別的幀格式;
整形模塊:負(fù)責(zé)對(duì)輸入的待測(cè)信號(hào)進(jìn)行整形處理(放大、濾波);
顯示模塊:負(fù)責(zé)待測(cè)信號(hào)頻率值的顯示。
下面將對(duì)對(duì)其核心模塊的設(shè)計(jì)做一介紹。
三。 數(shù)字頻率計(jì)的設(shè)計(jì)
3.1 測(cè)頻模塊
如圖2所示,測(cè)頻模塊主要由兩個(gè)計(jì)數(shù)器C1和C2組成。其工作過(guò)程如下:
C1對(duì)基準(zhǔn)信號(hào)的脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)周期為1s;C1計(jì)數(shù)的同時(shí),C2對(duì)待測(cè)信號(hào)的脈沖進(jìn)行計(jì)數(shù)。當(dāng)C1計(jì)數(shù)滿(mǎn)1s時(shí),門(mén)控信號(hào)rst有效,其終止C1和 C2的計(jì)數(shù),并將C2的計(jì)數(shù)值鎖存至32位寄存器nt中,然后將C1和C2計(jì)數(shù)值清零;接著rst無(wú)效,并開(kāi)始下一次計(jì)數(shù),C1計(jì)數(shù)不滿(mǎn)1s期間rst始終保持無(wú)效。
3.2 數(shù)據(jù)處理模塊
數(shù)字頻率計(jì)的核心單元AT89C51,通過(guò)控制P3.0和P3.1兩個(gè)端口將32位寄存器nt的4個(gè)字節(jié)輸出到AT89C51的直接地址30H, 31H, 32H, 33H處。當(dāng)計(jì)數(shù)器的值被讀到單片機(jī)中后,通過(guò)調(diào)用數(shù)據(jù)處理模塊,對(duì)計(jì)數(shù)值進(jìn)行相應(yīng)的處理,求出所測(cè)參數(shù)的值和單位,最后應(yīng)將參數(shù)值轉(zhuǎn)換為十進(jìn)制數(shù),再轉(zhuǎn)換為驅(qū)動(dòng)LED數(shù)碼顯示器的段碼,包括1個(gè)小數(shù)點(diǎn)。對(duì)計(jì)數(shù)值的處理運(yùn)算要用到除法和乘法。為了用8位單片機(jī)來(lái)處理32位數(shù)的二進(jìn)制到十進(jìn)制的轉(zhuǎn)換,首先利用字節(jié)除法求出每個(gè)字節(jié)對(duì)應(yīng)的十進(jìn)制數(shù)位值。
如:a100=[30H]/100, a10=([30H] mod 100)/10,a1=[30H] mod 10
其中,a1是頻率值的第一個(gè)字節(jié)的個(gè)位, a10是頻率值的第一個(gè)字節(jié)的十位, a100是頻率值的第一個(gè)字節(jié)的百位。
我們將每位十進(jìn)制數(shù)用非壓縮BCD碼表示,分別存儲(chǔ)在AT89C51的直接地址40H~49H。然后通過(guò)如下計(jì)算:
40H=a1+6*a2+6*a3+6*a4
41H=a10+6*a20+5*a2+6*a30+3*a3+6*a40+a4
42H=a100+6*a200+5*a20+2*a2+6*a300+3*a30+5*a3+6*a400+a40+2*a4
43H=5*a200+2*a20+3*a300+5*a30+5*a3+a400+2*a40+7*a4
44H=2*a200+5*a300+5*a30+6*a3+2*a400+7*a40+7*a4
45H=5*a300+6*a30+7*a400+7*a40+7*a4
46H=6*a300+7*a400+7*a40+6*a4
47H=7*a400+6*a40+a4
48H=6*a400+a40
49H=a400
由于本設(shè)計(jì)用非壓縮BCD碼表示十進(jìn)制數(shù),40H到49H所表示的數(shù)值還要進(jìn)行相應(yīng)的調(diào)整,調(diào)整步驟如下: 42H←42H+40H/100
40H←40H mod 100
41H←41H+40H/10
40H←40H mod 10
43H←43H+41H/100
41H←41H mod 100
42H←42H+41H/10
41H←41H mod 10
……
調(diào)整后的每位十進(jìn)制數(shù)都符合非壓縮BCD碼的表示規(guī)范。為了減小直接測(cè)頻法的誤差,本設(shè)計(jì)采用了十次平均逐步求精的方法。因?yàn)閷?duì)同一待測(cè)信號(hào),連續(xù)兩次計(jì)數(shù)值之差不會(huì)超過(guò)1,所以可開(kāi)辟一10字節(jié)的隊(duì)列,初始時(shí)全為0,每次先將個(gè)位(40H)入隊(duì),然后求該隊(duì)列的平均值,將商返送40H,余數(shù)送十分位。為使顯示結(jié)果盡量精確,可用同樣方法填充百分位、千分位、萬(wàn)分位和十萬(wàn)分位。
3.3 格式轉(zhuǎn)換模塊
本設(shè)計(jì)中,將顯示模塊能識(shí)別的計(jì)算結(jié)果定義為如下幀格式,即每幀由8字節(jié)(50H~57H)組成。其中50H表示測(cè)量值的第一個(gè)有效數(shù)字;51H表示52H~56H中還有幾個(gè)整數(shù)位,剩下的為小數(shù)部分;57H
表示顯示單位。如12159676表示115.967 MHZ,10985435表示1.98543KHZ。
四。 實(shí)驗(yàn)結(jié)果
為了驗(yàn)證本設(shè)計(jì)方案的正確性以及先進(jìn)性,我們做了大量實(shí)驗(yàn),該實(shí)驗(yàn)預(yù)置計(jì)數(shù)周期為10s。實(shí)驗(yàn)結(jié)果如下:
從前三組試驗(yàn)可知,本設(shè)計(jì)對(duì)于整數(shù)頻率的測(cè)量誤差為0;第四組試驗(yàn)的誤差主要是由顯示位數(shù)的精度不夠引起的,即本設(shè)計(jì)最多只能顯示6位,其余的將舍去,其最大誤差是-0.9HZ;后兩組試驗(yàn)的誤差主要是由非整數(shù)頻率引起的,這是直接測(cè)頻法先天決定的,經(jīng)過(guò)十次求平均可將其控制在-0.1HZ以?xún)?nèi)。
從實(shí)驗(yàn)結(jié)果可以看出,本方案將部分影響設(shè)計(jì)復(fù)雜度和實(shí)現(xiàn)成本的功能移至軟件部分來(lái)實(shí)現(xiàn),在不考慮顯示精度引起的誤差的情況下,該方案設(shè)計(jì)的數(shù)字頻率計(jì)精確度可達(dá)99.9%以上,基本上能滿(mǎn)足大部分使用領(lǐng)域的要求,且該方案具有設(shè)計(jì)成本低廉、設(shè)計(jì)簡(jiǎn)單、精度高、可測(cè)頻帶寬等優(yōu)點(diǎn),值得從事同類(lèi)開(kāi)發(fā)人員的借鑒。
本文作者創(chuàng)新點(diǎn)在于提出了一種基于CPLD和單片機(jī)相結(jié)合的設(shè)計(jì)方案。該方案以直接測(cè)頻法為基礎(chǔ)、軟件補(bǔ)償技術(shù)為輔助,大大降低了設(shè)計(jì)成本和實(shí)現(xiàn)復(fù)雜度,且較好地解決了誤差問(wèn)題??傊撐乃枋龅脑O(shè)計(jì)思想先進(jìn),對(duì)同類(lèi)使用具有較高參考價(jià)值。
責(zé)任編輯:gt
評(píng)論
查看更多