陳 靖,徐 清
(1.中國電子科技集團(tuán)公司電子科學(xué)研究院,北京 100041;2. 中國電子科技集團(tuán)公司信息科學(xué)研究院,北京 100041)
基于可編程邏輯陣列的高精度頻率計(jì)設(shè)計(jì)
陳靖1,徐清2
(1.中國電子科技集團(tuán)公司電子科學(xué)研究院,北京 100041;2. 中國電子科技集團(tuán)公司信息科學(xué)研究院,北京 100041)
本設(shè)計(jì)是一個(gè)等精度頻率計(jì),不但具有測頻功能,還可以對(duì)周期、脈寬和占空比進(jìn)行測量,克服了傳統(tǒng)頻率計(jì)的精度隨著被測頻率的改變而改變的缺點(diǎn),在整個(gè)頻率區(qū)域都能保持恒定的測試精度。
等精度;頻率計(jì);單片機(jī);FPGA
頻率檢測是電子測量領(lǐng)域最基本也是最重要的測量之一,頻率信號(hào)抗干擾能力強(qiáng),易于傳輸,可以獲得較高的測量精度。所以測量頻率方法的研究越來越受到重視,設(shè)計(jì)中采用了模塊化設(shè)計(jì)方法,并使用了EDA工具,提高了設(shè)計(jì)的效率,各項(xiàng)實(shí)測表明,等精度測頻率、周期、占空比的原理是合理的、成功的,本產(chǎn)品的研制解決了在測量系統(tǒng)中需要高精度測量的不便。
傳統(tǒng)的數(shù)字頻率計(jì)一般是由分立元件搭建而成,隨著單片機(jī)的應(yīng)用,出現(xiàn)了不少用單片機(jī)控制的頻率測量系統(tǒng)。相比分立元件構(gòu)成的電路,單片機(jī)頻率測量系統(tǒng)在測量范圍、測量精度和測量速度上都有了很大的提高。但是由于單片機(jī)固有特性的限制(頻率、內(nèi)部計(jì)數(shù)器位數(shù)),使單片機(jī)控制的頻率測量系統(tǒng)無法在頻率測量范圍、精度、速度上有更大突破[1]。
FPGA是新型的可編程邏輯器件,具有集成度高、速度快、可移植性強(qiáng)、具備在系統(tǒng)編程等優(yōu)點(diǎn),在測頻精度和速度上有絕對(duì)的優(yōu)勢。但是,等精度數(shù)字頻率計(jì)涉及到的計(jì)算包括加、減、乘、除等,以及對(duì)于顯示和輸入設(shè)備的控制,耗用的資源比較大,用一般的中小規(guī)模FPGA芯片難以實(shí)現(xiàn)。因此,我們選擇單片機(jī)和FPGA的結(jié)合來實(shí)現(xiàn)。電路系統(tǒng)原理框圖如圖1所示,其中單片機(jī)完成整個(gè)測量電路的測試控制、數(shù)據(jù)處理和顯示輸出, FPGA完成各種測試功能。單片機(jī)接收紅外遙控信號(hào),從FPGA讀回計(jì)數(shù)數(shù)據(jù)并進(jìn)行運(yùn)算,向顯示電路輸出測量結(jié)果。這樣的設(shè)計(jì)充分發(fā)揮了單片機(jī)和FPGA的優(yōu)勢[2]。
圖1 等精度頻率計(jì)電路系統(tǒng)原理框圖
等精度測頻方法是在直接測頻方法的基礎(chǔ)上發(fā)展起來的。它的閘門時(shí)間不是固定的值,而是被測信號(hào)周期的整數(shù)倍,即與被測信號(hào)同步,因此,避除了對(duì)被測信號(hào)計(jì)數(shù)所產(chǎn)生±1個(gè)字誤差,并且達(dá)到了在整個(gè)測試頻段的等精度測量,其測頻原理如圖2所示。在測量過程中,由兩個(gè)計(jì)數(shù)器分別對(duì)標(biāo)準(zhǔn)信號(hào)和被測信號(hào)同時(shí)計(jì)數(shù)。首先給出閘門開啟信號(hào)(預(yù)置閘門上升沿),此時(shí)計(jì)數(shù)器并不開始計(jì)數(shù),而是等到被測信號(hào)的上升沿到來時(shí),計(jì)數(shù)器才真正開始計(jì)數(shù)。然后預(yù)置閘門關(guān)閉信號(hào)(下降沿)到時(shí),計(jì)數(shù)器并不立即停止計(jì)數(shù),而是等到被測信號(hào)的上升沿到來時(shí)才結(jié)束計(jì)數(shù),完成一次測量過程??梢钥闯觯瑢?shí)際閘門時(shí)間T與預(yù)置閘門時(shí)間T0并不嚴(yán)格相等,但差值不超過被測信號(hào)的一個(gè)周期[3]。
圖2 等精度測頻原理框圖
等精度測頻原理框圖如圖3所示,CONT1和CONT2是兩個(gè)可控計(jì)數(shù)器,標(biāo)準(zhǔn)頻率信號(hào)從CONT1的時(shí)鐘輸入端CLK1輸入;經(jīng)整形后的被測信號(hào)從CONT2的時(shí)鐘輸入端CLK2輸入。當(dāng)預(yù)置門控信號(hào)為高電平時(shí),經(jīng)整形后的被測信號(hào)的上升沿通過D觸發(fā)器的Q端同時(shí)啟動(dòng)CONT1和CONT2。CONT1,CONT2同時(shí)對(duì)標(biāo)準(zhǔn)頻率信號(hào)和經(jīng)整形后的被測信號(hào)進(jìn)行計(jì)數(shù),分別為Ns與Nx。當(dāng)預(yù)置門信號(hào)為低電平的時(shí)候,后而來的被測信號(hào)的上升沿將使兩個(gè)計(jì)數(shù)器同時(shí)關(guān)閉,所測得的頻率為(Fs/Ns)*Nx。則等精度測量方法測量精度與預(yù)置門寬度的標(biāo)準(zhǔn)頻率有關(guān),與被測信號(hào)的頻率無關(guān)。在預(yù)置門時(shí)間和常規(guī)測頻閘門時(shí)間相同而被測信號(hào)頻率不同的情況下,等精度測量法的測量精度不變[4]。
圖3 等精度測頻原理框圖
4.1FPGA內(nèi)部功能模塊設(shè)計(jì)
本設(shè)計(jì)中采用FPGA和單片機(jī)相結(jié)合來實(shí)現(xiàn)對(duì)頻率的測量,它們都是可編程芯片,需要對(duì)其進(jìn)行軟件編程。FPGA是在Quartus II開發(fā)平臺(tái)下運(yùn)用VHDL語言進(jìn)行編程、仿真與驗(yàn)證,而單片機(jī)的程序是在Keil軟件下運(yùn)用C語言來編寫。等精度頻率計(jì)FPGA部分的RTL電路如圖4所示。
圖4 等精度頻率計(jì)FPGA部分的RTL電路
SS1的邏輯功能為:當(dāng)Q2=‘1’,Q3=‘0’,則PUL=‘1’,否則PUL=‘0’。當(dāng)Q2=‘1’,Q3=‘1’則EEND=‘1’,否則EEND=‘0’。
根據(jù)RTL電路可以比較容易地寫出相應(yīng)的VHDL程序,接下來在所建項(xiàng)目下建立一個(gè)波形文件,進(jìn)行仿真。所得到的波形結(jié)果如圖5和圖6所示。
圖5 等精度頻率計(jì)頻率測試仿真波形
圖6 等精度頻率計(jì)脈寬測試仿真波形
4.2單片機(jī)軟件設(shè)計(jì)
系統(tǒng)軟件的設(shè)計(jì)主要是和硬件電路相結(jié)合,正確地實(shí)現(xiàn)等精度測量。單片機(jī)程序主要完成的任務(wù)包括:接收紅外遙控信號(hào),從而控制FPGA執(zhí)行測頻或測脈寬功能,并且從32位計(jì)數(shù)模塊讀取標(biāo)準(zhǔn)信號(hào)和被測頻率信號(hào)的計(jì)數(shù)值,然后進(jìn)行數(shù)據(jù)處理,把處理結(jié)果通知系統(tǒng),由系統(tǒng)根據(jù)數(shù)據(jù)的處理結(jié)果做出調(diào)整,對(duì)運(yùn)算后的結(jié)果用液晶12864進(jìn)行顯示。
在向液晶屏寫指令和寫數(shù)據(jù)時(shí),是嚴(yán)格按照時(shí)序來操作的,所以要盡量少的運(yùn)用中斷程序,或者使中斷里的程序盡量簡短,這樣才不至于干擾到液晶屏的顯示,否則很容易出現(xiàn)花屏現(xiàn)象。而對(duì)于紅外數(shù)據(jù)的解碼主要在于對(duì)數(shù)據(jù)“0”和“1”的判斷,當(dāng)一個(gè)周期內(nèi)高電平和低電平比例為一比一,那么就判斷為“0”,而當(dāng)在一個(gè)周期內(nèi)高電平和低電平比例為一比三,那么就判斷為“1”,這些在編程時(shí)都有一些小的技巧,需要不斷通過調(diào)試來完成。而在單片機(jī)與FPGA通信方面我們也下了不少功夫,SPI協(xié)議是一種串行協(xié)議,我們這里卻不是完全按照串行協(xié)議來使用,而是用單片機(jī)模擬出來的一種改良后的協(xié)議,可以很穩(wěn)定的讓單片機(jī)和FPGA之間傳輸信號(hào)[5]。
4.3單片機(jī)與FPGA連接電路
單片機(jī)測頻控制電路如圖7所示,由單片機(jī)完成整個(gè)測量電路的測試控制、數(shù)據(jù)處理和顯示輸出,F(xiàn)PGA完成各種測試功能[18]。當(dāng)中由于單片機(jī)與FPGA在速度上存在不匹配的問題,所以單片機(jī)與FPGA不能直接進(jìn)行通信,而是通過增加兩根連接線,在程序上模擬出SPI協(xié)議,通過SPI協(xié)議可以很穩(wěn)定的進(jìn)行之間的通信,這樣就很好地解決了單片機(jī)和FPGA之間速度不匹配的問題[6]。 4.4硬件實(shí)現(xiàn)
圖7 CPLD與單片機(jī)通信框圖
本實(shí)驗(yàn)在調(diào)試階段中用到的主要硬件有MAX II最小系統(tǒng),LY-51S單片機(jī)開發(fā)板,12864液晶屏,紅外遙控器。在寢室時(shí),由于沒有標(biāo)準(zhǔn)信號(hào)發(fā)生器,所以調(diào)試階段,單獨(dú)用一個(gè)單片機(jī)最小系統(tǒng)產(chǎn)生一個(gè)固定信號(hào),作為信號(hào)源,對(duì)此信號(hào)進(jìn)行測量。通過這套系統(tǒng)把單片機(jī)和FPGA程序最終調(diào)試了出來。調(diào)試階段整個(gè)硬件系統(tǒng)如圖8所示。
圖8 調(diào)試階段硬件系統(tǒng)
在通過開發(fā)板調(diào)試完單片機(jī)和FPGA程序后,接著對(duì)硬件的最終形式做了定奪。采用雙層板結(jié)構(gòu),把連線部分完全放在兩層板子中間,這樣在外部看來不會(huì)顯得很亂,F(xiàn)PGA和單片機(jī)插在下層板上,上層板放置了12864液晶屏、紅外接收頭和紅外信號(hào)接收指示燈,這樣的設(shè)計(jì)使整個(gè)系統(tǒng)簡潔大方,最終成品如圖9~圖11所示。
圖9 最終作品功能菜單
圖10 最終作品背面展示
圖11 最終成品進(jìn)行頻率測量
我們?cè)谶@里設(shè)置了紅外信號(hào)接收指示燈的主要目的是對(duì)紅外干擾信號(hào)的探測,因?yàn)楫?dāng)我們測頻時(shí)外部有可能有紅外干擾信號(hào),而紅外接收芯片是與單片機(jī)的外部中斷P3.2口相連,且設(shè)置的是下降沿觸發(fā),所以一旦有干擾信號(hào),單片機(jī)就會(huì)誤進(jìn)中斷,而12864液晶屏是按時(shí)序來控制的,一旦誤進(jìn)入中斷次數(shù)過多,就會(huì)使12864液晶屏出現(xiàn)花屏現(xiàn)象,降低了用戶體驗(yàn)。所以設(shè)置了指示燈和一個(gè)可以切斷紅外接收芯片和單片機(jī)相連的開關(guān),當(dāng)發(fā)現(xiàn)指示燈提示干擾過多,可以手動(dòng)關(guān)掉此開關(guān),單片機(jī)不再接收紅外信號(hào)。
在基本功能實(shí)現(xiàn)的基礎(chǔ)上,出于對(duì)個(gè)性的追求,最后又加入了點(diǎn)陣顯示模塊,點(diǎn)陣顯示模塊是與主模塊隨時(shí)保持同步工作,用于提示此時(shí)機(jī)器處于的狀態(tài),從另一層面增加了用戶體驗(yàn)。
4.5技術(shù)指標(biāo)
基于傳統(tǒng)測頻原理的頻率計(jì)的測頻精度將隨被測信號(hào)頻率的下降而降低,在實(shí)用中有較大的局限性,而等精度頻率計(jì)不但具有較高的測量精度,而且在整個(gè)測量頻率區(qū)域內(nèi)保持恒定的測試精度。本系統(tǒng)設(shè)計(jì)的基本指標(biāo)如下:
⊙ 對(duì)于頻率測試功能,測頻范圍為270Hz~50MHz,對(duì)于頻率精度,測頻全域相對(duì)誤差恒為百萬分之一。
⊙ 對(duì)于周期測試范圍,信號(hào)的測試范圍與精度與頻率測試功能相同。
⊙ 對(duì)于脈寬測試功能,測試的范圍為0.1μs~1s,測試的精度為0.01μs。
⊙ 對(duì)于占空比測試功能,測試精度為1%~99%。
在軟件設(shè)計(jì)方面,針對(duì)系統(tǒng)實(shí)際應(yīng)用,對(duì)系統(tǒng)的各組成模塊進(jìn)行程序設(shè)計(jì)并進(jìn)行波形仿真,簡單介紹了單片機(jī)的工作過程。但是由于采用的單片機(jī)是中等檔次,在算數(shù)運(yùn)算方面只支持單精度浮點(diǎn)運(yùn)算,因此在得到的測量結(jié)果中,只能保證7位有效數(shù)字。最后通過系統(tǒng)的整體設(shè)計(jì),將各模塊有機(jī)的連接起來。在硬件驗(yàn)證方面,先是利用單片機(jī)程序開發(fā)板和FPGA最小系統(tǒng)進(jìn)行調(diào)試,驗(yàn)證硬件與軟件的實(shí)現(xiàn)方案。然后通過手工焊板,實(shí)現(xiàn)簡潔的一體機(jī)結(jié)構(gòu)。
[1] 黃任.AVR單片機(jī)與CPLD/FPGA綜合應(yīng)用入門.北京:北京航空航天大學(xué)出版社,2004.8
[2] 陳云.PLD應(yīng)用技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版社,2003:79-82 [3] 曾任賢.基于FPGA的等精度數(shù)字頻率計(jì)的研究與實(shí)現(xiàn).科技廣場,2009, (5):238-239
[4] 林明權(quán).VHDL數(shù)字控制系統(tǒng)設(shè)計(jì)范例.北京:電子工業(yè)出版社,2003:83~114
[5] Altera Corp. Nios II DevelopmentBoard Data Sheet. Altera,2005.45-48
[6] Lin Mengxi, Lin Jingqiu. Design and Frequency Measurement Based on FPGA and MCU. The 2nd International Conference on Computer Engineering and Technology.2010
Design of a High Precision Cymometer Based on FPGA
Chen Jing1, Xu Qing2
(1.China Academy of Electronics and information Technology, Beijing, 100041; 2. nformation Sciences Academy of China Electronics Technology Corporation, Beijing, 100041)
The design is an equal precision frequency meter, not only has the frequency measurement function, you can also cycle, pulse width and duty cycle measurements. This design overcomes the shortcomings of conventional frequency meter accuracy with the change of the measured frequency change in the entire frequency region can maintain a constant test accuracy.
Equal precision; Frequency meter; MCU; FPGA
10.3969/J.ISSN.1672-7274.2016.11.009
TN98文獻(xiàn)標(biāo)示碼:A
1672-7274(2016)11-0030-04