張國勤
(四川機(jī)電職業(yè)技術(shù)學(xué)院,四川 攀枝花 617000)
基于單片機(jī)與FPGA的等精度頻率計(jì)設(shè)計(jì)
張國勤
(四川機(jī)電職業(yè)技術(shù)學(xué)院,四川 攀枝花617000)
摘要:利用準(zhǔn)等精度測頻原理,提出了一種基于單片機(jī)與FPGA的等精度頻率計(jì)設(shè)計(jì)方案。該頻率計(jì)的測頻范圍可達(dá)1Hz~40MHz,測量范圍內(nèi)頻率測量的精度達(dá)到10-7。
關(guān)鍵詞:單片機(jī)與FPGA;等精度測頻;頻率計(jì)
本文引用格式:張國勤.基于單片機(jī)與FPGA的等精度頻率計(jì)設(shè)計(jì)[J].四川兵工學(xué)報(bào),2015(12):85-88.
Citation format:ZHANG Guo-qin.Design of Equal Precision Frequency Meter with MCU and FPGA[J].Journal of Sichuan Ordnance,2015(12):85-88.
Design of Equal Precision Frequency Meter with MCU and FPGA
ZHANG Guo-qin
(Sichuan Electromechanical Institute of Vocation and Technology, Panzhihua 617000, China)
Abstract:This paper introduced the equal precision frequency measuring principle and put forward design scheme of the equal precision frequency meter based on MCU and FPGA.Its test frequency range is between 1 Hz~40 MHz, and the frequency meter is 10-7within the scope of its measurement precision.
Key words:MCU and FPGA; frequency measurement with equal-precision;frequency meter
頻率是指周期性信號(hào)在單位時(shí)間(1 s)內(nèi)的變化次數(shù)。頻率檢測是電子測量領(lǐng)域的最基本測量之一,在工作及生產(chǎn)中有著重要的作用[1-3]。在自動(dòng)檢測系統(tǒng)中,人們常把壓力、轉(zhuǎn)速、振動(dòng)等信號(hào)轉(zhuǎn)換為頻率信號(hào)進(jìn)行測量,因而頻率檢測的精確度也就成了影響檢測結(jié)果準(zhǔn)確度的一個(gè)重要因素[4-5]。介紹了一種采用單片機(jī)與FPGA相結(jié)合的準(zhǔn)等精度測頻電路,從而能夠以較低的成本來實(shí)現(xiàn)頻率的高精度測量。
1影響測頻精度的因素
一般常見的影響測頻精度的因素主要有2個(gè)方面,一方面是脈沖信號(hào)的形狀,另一方面就是測頻方法的選用。在自動(dòng)檢測中,為了得到比較理想的脈沖形狀,要注意傳感器的初始安裝位置,另外通常也會(huì)在信號(hào)的輸入端加入脈沖放大整形電路,從而使脈沖的形狀符合要求。而在測頻方式方法上,伴隨著電子技術(shù)軟、硬件技術(shù)的發(fā)展,在現(xiàn)代測頻技術(shù)中應(yīng)用最多的是電子計(jì)數(shù)法。
電子計(jì)數(shù)法就是采用電子計(jì)數(shù)器對(duì)一個(gè)周期信號(hào)在單位時(shí)間內(nèi)重復(fù)變化的次數(shù)進(jìn)行計(jì)數(shù),從而得到信號(hào)的頻率值。此方法的測量精度主要取決于基準(zhǔn)時(shí)間和計(jì)數(shù)的量化誤差。電子計(jì)數(shù)法中較典型的測頻方法有M法(脈沖數(shù)定時(shí)測頻法)測頻、T法(脈沖周期測頻法)測頻。
M法測頻是在確定時(shí)間tc內(nèi)記錄待測脈沖個(gè)數(shù)m,然后用所得的脈沖數(shù)m除以測量時(shí)間tc,就可得到頻率f。M法測頻適合于頻率較高的場合,影響其測量精度的因素主要是所記錄的脈沖個(gè)數(shù)m和tc的大小。例如,若脈沖的頻率f=10 000 Hz,tc=1 s時(shí),此時(shí)的測量精度可達(dá)0.01%左右;而當(dāng)頻率較低時(shí),若脈沖的頻率f=100 Hz,tc仍為1 s時(shí),此時(shí)的測量精度就降低到1%左右了。另外tc的長短也會(huì)影響測量精度。雖然tc取得較長時(shí),測量精度較高,但不能反映被測量(如轉(zhuǎn)速)的瞬時(shí)變化,不適合動(dòng)態(tài)測量。tc也不能取得太小,太小會(huì)導(dǎo)致在tc時(shí)間段內(nèi)得到的脈沖數(shù)太少,從而使測量精度降低。
T法測頻則是在待測信號(hào)的一個(gè)周期Tx內(nèi),記錄標(biāo)準(zhǔn)頻率信號(hào)變化次數(shù)n,然后用n除以Tx得到頻率f。T法測頻適合于頻率較低的場合。例如,若脈沖的頻率f=10 Hz,標(biāo)準(zhǔn)頻率信號(hào)的頻率為fs=10 kHz時(shí),測量精度可達(dá)0.1%左右;但當(dāng)頻率較高時(shí),若脈沖的頻率f=1 000 Hz,標(biāo)準(zhǔn)頻率信號(hào)的頻率fs仍為10 kHz,測量精度則會(huì)降低至10%左右。
由以上分析可見,不管是M法測頻或T法測頻都無法使頻率信號(hào)在整個(gè)測量范圍內(nèi)得到一個(gè)同樣的精度。其精度會(huì)隨著輸入頻率的高低不同而發(fā)生變化。要想不論被測信號(hào)頻率高低,測頻精度始終保持不變,通常需采用多周期同步測頻法。
2多周期同步測頻法的原理
多周期同步測頻是指由被測信號(hào)控制門控信號(hào)的開啟,在被測信號(hào)的多個(gè)時(shí)間周期內(nèi)測量信號(hào)頻率。其原理波形圖如圖1所示。
圖1 多周期同步法測頻原理波形
由圖1可看出,這里所介紹的多周期同步測頻只是對(duì)被測信號(hào)同步,對(duì)標(biāo)準(zhǔn)時(shí)鐘信號(hào)并不同步,因此這只是一種準(zhǔn)同步。但由于閘門時(shí)間與被測信號(hào)同步,因此就消除了對(duì)被測信號(hào)計(jì)數(shù)產(chǎn)生的±1個(gè)字誤差,使測頻精度與待測信號(hào)的頻率無關(guān),從而可以實(shí)現(xiàn)在整個(gè)測頻范圍內(nèi)的等精度測量。設(shè)在閘門時(shí)間T內(nèi),被測信號(hào)被計(jì)數(shù)為N個(gè)脈沖,標(biāo)準(zhǔn)時(shí)鐘脈沖被計(jì)數(shù)為M個(gè)脈沖,那么被測信號(hào)的頻率則為
(1)
由式(1)可知影響被測信號(hào)頻率fx精確度的因素有N,M, fs3個(gè)變量,即
由于門控信號(hào)由被測信號(hào)開啟,故對(duì)被測信號(hào)在T內(nèi)的計(jì)數(shù)不會(huì)產(chǎn)生誤差,故dN=0,由式(2)可推出
(3)
在式(3)中dM為閘門打開時(shí),由于標(biāo)準(zhǔn)時(shí)鐘與閘門時(shí)鐘不同步,從而造成計(jì)數(shù)器對(duì)標(biāo)準(zhǔn)時(shí)鐘計(jì)數(shù)會(huì)產(chǎn)生誤差,其最大誤差為±1,即dM=±1。由于M=T·fs,則式(3)可變?yōu)?/p>
(4)
3基于單片機(jī)和FPGA的頻率測量系統(tǒng)
基于多周期同步測頻原理可知,提高fs或增大T可以提高測量精度。如果只選用單片機(jī)來設(shè)計(jì)多周期同步測頻電路,以最常用的MCS—51系列的單片機(jī)為例,定時(shí)器和計(jì)數(shù)器的時(shí)間基準(zhǔn)是其機(jī)器周期,而其機(jī)器周期的長短受單片機(jī)的晶振頻率影響,目前常用的單片機(jī)晶振頻率為12 MHz或24 MHz,由此產(chǎn)生的標(biāo)準(zhǔn)時(shí)鐘頻率fs只能是1 MHz或2 MHz,在這種標(biāo)準(zhǔn)時(shí)鐘頻率下,使用只是基于對(duì)被測信號(hào)同步,而與標(biāo)準(zhǔn)時(shí)鐘不同步的多周期準(zhǔn)同步測頻,不太可能使頻率測量準(zhǔn)確度達(dá)到10-7。為了獲得100 MHz的標(biāo)準(zhǔn)信號(hào),可采用大規(guī)模的可編程邏輯器件(如CPLD和FPGA)和EDA技術(shù)來設(shè)計(jì),從而具有設(shè)計(jì)效率高,設(shè)計(jì)系統(tǒng)體積小、功耗低、工作可靠等特點(diǎn),但在沒有IP核的情況下,用FPGA來完成32位除法運(yùn)算是相當(dāng)難且占資源的。綜合各種因素考慮,故決定采用由單片機(jī)和FPGA來實(shí)現(xiàn)多周期測頻電路。其中單片機(jī)采用89C51,通過軟件編程實(shí)現(xiàn)兩組32位二進(jìn)制數(shù)的乘除運(yùn)算,并將結(jié)果送輸出口驅(qū)動(dòng)8位數(shù)碼管顯示;而由FPGA內(nèi)部硬件設(shè)計(jì)電路來完成對(duì)被測信號(hào)頻率和標(biāo)準(zhǔn)信號(hào)頻率的計(jì)數(shù)?;趩纹瑱C(jī)與FPGA的頻率測量系統(tǒng)框圖如圖2所示。
圖2 基于單片機(jī)與FPGA的頻率測量系統(tǒng)框圖
FPGA硬件設(shè)計(jì)電路如圖3所示,電路含有一個(gè)鎖相環(huán)、一個(gè)秒信號(hào)發(fā)生器、一個(gè)D觸發(fā)器、兩個(gè)32位計(jì)數(shù)器和一個(gè)8選一的數(shù)據(jù)選擇器。鎖相環(huán)(MYPLL)是利用FPGA內(nèi)部提供的PLL,通過設(shè)置相應(yīng)參數(shù)將晶體振蕩器產(chǎn)生的40 MHz時(shí)鐘信號(hào)變?yōu)?00 MHz時(shí)鐘信號(hào)輸出,由它給計(jì)時(shí)和計(jì)數(shù)電路提供標(biāo)準(zhǔn)時(shí)鐘信號(hào)。秒信號(hào)發(fā)生器(second signal功能塊)用來產(chǎn)生一個(gè)1 s的持續(xù)脈沖來作為預(yù)置門信號(hào)T。D觸發(fā)器作為同步門使用,保證門控時(shí)間與被測信號(hào)同步。兩個(gè)32位計(jì)數(shù)器分別完成對(duì)被測信號(hào)與標(biāo)準(zhǔn)時(shí)鐘信號(hào)的計(jì)數(shù)。8選一數(shù)據(jù)選擇器在單片機(jī)的控制下,完成對(duì)兩個(gè)計(jì)數(shù)器數(shù)值的分時(shí)傳送。電路中的清零信號(hào)(clr)、數(shù)據(jù)選擇器的地址信號(hào)sel[2..0]均由單片機(jī)給出。等門控時(shí)間T(1 s)結(jié)束,F(xiàn)PGA通過信號(hào)int0的下降沿通知單片機(jī)讀取計(jì)數(shù)器數(shù)值。
圖3 FPGA內(nèi)部程序設(shè)計(jì)框圖
在本設(shè)計(jì)中預(yù)置門的時(shí)間由FPGA內(nèi)部的秒信號(hào)發(fā)生器來產(chǎn)生。這是因?yàn)橛脝纹瑱C(jī)來完成高精度定時(shí)時(shí),要對(duì)定時(shí)時(shí)間準(zhǔn)確估算,這樣就要考慮程序運(yùn)行時(shí)間及定時(shí)器設(shè)置時(shí)間,稍不小心會(huì)導(dǎo)致門控時(shí)間T出現(xiàn)誤差,從而影響測量精度。故在此采用FPGA的硬件模塊定時(shí),既方便且高效準(zhǔn)確。同時(shí)這樣的結(jié)構(gòu)安排也可以讓單片機(jī)的程序更簡單易行。
單片機(jī)外圍電路設(shè)計(jì)如圖4所示,單片機(jī)的P3.5腳用做數(shù)據(jù)采集中斷口,F(xiàn)PGA在門控時(shí)間T內(nèi)計(jì)數(shù)完畢,向單片機(jī)發(fā)出中斷請(qǐng)求。單片機(jī)的P0口用做計(jì)數(shù)器數(shù)據(jù)輸入口,要讀入8組數(shù)據(jù),數(shù)據(jù)的地址由P2.2~P2.0口給出到FPGA的sel[2..0]管腳上,F(xiàn)PGA的清零復(fù)位信號(hào)(clr)由單片機(jī)的 P3.6給出。P1口用做七段顯示字碼輸出,P2.6~P2.4口用作八位顯示器位碼輸出口。
圖4 單片機(jī)電路硬件原理
單片機(jī)在此系統(tǒng)中的作用是對(duì)FPGA進(jìn)行清零及在收到中斷信號(hào)后對(duì)輸入P0口進(jìn)行讀數(shù),完成運(yùn)算,并將結(jié)果送P1口驅(qū)動(dòng)8位LED數(shù)碼管進(jìn)行顯示。其主程序流程圖如圖5所示。圖6為中斷讀數(shù)子程序。
圖5 主程序流程
圖6 INT0中斷子程序流程
4結(jié)論
采用晶振為12 MHz的AT89C51與Altera公司的Cyclone系列的EP1C12Q240C8的FPGA芯片來進(jìn)行組裝調(diào)試,其最高檢測頻率可達(dá)40 MHz,最低檢測頻率為1 Hz。在整個(gè)測試頻率范圍內(nèi)其測量精度為10-7。采用Cyclone系列的FPGA可利用其內(nèi)部所帶的鎖相環(huán)將標(biāo)準(zhǔn)信號(hào)的頻率提高到100 MHz,從而提高測頻精度,但由于FPGA具有易失性,因而需為系統(tǒng)設(shè)計(jì)配置電路,對(duì)其進(jìn)行上電自動(dòng)加載。這樣印制板電路會(huì)較復(fù)雜些,若想讓印制板電路簡單些,可以選用CPLD來實(shí)現(xiàn),譬如Altera公司的MAX Ⅱ系列。
參考文獻(xiàn):
[1]曾繁泰.可編程器件應(yīng)用導(dǎo)論[M].北京:清華大學(xué)出版社,2001.
[2]龔江濤.EDA技術(shù)應(yīng)用[M].北京:高等教育出版社,2012.
[3]賈立新.電子系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京:清華大學(xué)版社,2007.
[4]侯伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2004.
[5]吳繼華.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2009.(責(zé)任編輯楊繼森)
【信息科學(xué)與控制工程】
中圖分類號(hào):TP391
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1006-0707(2015)12-0085-04
doi:10.11809/scbgxb2015.12.021
作者簡介:張國勤(1970—),女,碩士,講師,主要從事自動(dòng)檢測及電子電路仿真與設(shè)計(jì)研究。
收稿日期:2015-06-25