王立華,周松江,2a,高世皓,2b,張 恒
(1.山東科技大學(xué) 電子通信與物理學(xué)院, 山東 青島 266590;2.北京郵電大學(xué) a.信息光子學(xué)與光通信研究院, b.泛網(wǎng)無線通信教育部重點實驗室, 北京 100876)
基于內(nèi)嵌Cortex-M3內(nèi)核FPGA的等精度頻率計設(shè)計
王立華1,周松江1,2a,高世皓1,2b,張 恒1
(1.山東科技大學(xué) 電子通信與物理學(xué)院, 山東 青島 266590;2.北京郵電大學(xué) a.信息光子學(xué)與光通信研究院, b.泛網(wǎng)無線通信教育部重點實驗室, 北京 100876)

為了提高頻率計的測量精度和系統(tǒng)性能,解決在傳統(tǒng)的頻率計中無法實現(xiàn)高低頻率等精度測量的情況,采用京微雅格公司的M7系列FPGA,設(shè)計了一種基于SOPC技術(shù)的等精度多功能頻率計。該頻率計以內(nèi)嵌Cortex-M3內(nèi)核的FPGA芯片為控制核心,通過對FPGA模塊和Cortex-M3內(nèi)核部分的設(shè)計,并借助AHB接口的FIFO實現(xiàn)FPGA與Cortex-M3內(nèi)核之間的數(shù)據(jù)通信,完成了1Hz~50MHz范圍內(nèi)等精度頻率計的設(shè)計。通過ModelSim軟件仿真和硬件實測表明,該頻率計可以完成等精度頻率和占空比的測量功能,具有精度高、實時性好等特點。
頻率計; 等精度; 可編程片上系統(tǒng); 現(xiàn)場可編程門陣列; 高性能總線; Cortex-M3
頻率是電子領(lǐng)域中最基本的參數(shù),傳統(tǒng)的測頻方法有直接測量法、周期測量法和分頻測量法等,這些方法往往只適用于測量一段頻率,而無法實現(xiàn)高低頻率等精度的要求。在技術(shù)上,傳統(tǒng)的頻率計大都采用單元電路或單片機(jī)進(jìn)行設(shè)計,使頻率計存在結(jié)構(gòu)復(fù)雜、穩(wěn)定性差且測量范圍小等缺點[1-4]?;诖?,本文以京微雅格公司的M7系列FPGA為設(shè)計載體,利用SOPC技術(shù)和等精度測量原理,在一片內(nèi)嵌Cortex-M3內(nèi)核的FPGA芯片上完成頻率計的設(shè)計。系統(tǒng)充分發(fā)揮FPGA的高速數(shù)據(jù)處理能力,完成對待測信號的測量計數(shù);利用Cortex-M3的數(shù)據(jù)運算與人機(jī)交互能力,完成對測量數(shù)據(jù)的計算與顯示工作。該系統(tǒng)可以實現(xiàn)頻率測量和占空比測量功能,具有測量精確、穩(wěn)定性高、調(diào)試方便等特點[5-7]。
1.1等精度測量原理
等精度測量法的測量原理如圖1所示,其最大的特點是實際閘門時間并不是一個固定值,而是一個與被測信號有關(guān)的值,且剛好為被測信號周期的整數(shù)倍。在啟動測量之后,首先給出一個預(yù)置閘門時間,然后等待被測信號下一個上升沿的到來。當(dāng)被測信號的上升沿到達(dá)后,將預(yù)置閘門時間信號與被測信號進(jìn)行同步,同時用兩個計數(shù)器分別對被測信號和標(biāo)準(zhǔn)信號進(jìn)行計數(shù)。當(dāng)預(yù)置閘門時間結(jié)束后,被測信號的下一個上升沿到達(dá)時兩個計數(shù)器停止計數(shù)。此時會得到兩個計數(shù)值,然后結(jié)合標(biāo)準(zhǔn)信號的頻率值,即可得到被測信號的頻率[8-10]。

圖1 等精度測頻法測頻原理圖
假設(shè)在一次測量中,實際閘門時間為T,被測信號計數(shù)器和標(biāo)準(zhǔn)信號計數(shù)器的計數(shù)值分別為Na和Nb,標(biāo)準(zhǔn)信號的頻率為f0,根據(jù)測量原理可計算出被測信號的頻率為:
f=(Na/Nb)f0
(1)
式中:f為被測信號頻率的測量值,若信號的實際頻率為f′,則測量誤差為:

(2)
若忽略標(biāo)準(zhǔn)信號的頻率誤差,并根據(jù)式(1),可得被測信號實際頻率的表達(dá)式為:

(3)
聯(lián)立式(1)~(3)可得:

(4)
由此可知,采用等精度測量法測量頻率時,所選擇的閘門時間越長,標(biāo)準(zhǔn)信號的頻率越高,頻率測量的誤差就會越小[11-14]。假設(shè)標(biāo)準(zhǔn)信號的頻率為100 MHz,閘門時間為1 s,那么其精度可達(dá)到10-8。
另外,占空比的測量方式描述如下:在對閘門時間內(nèi)標(biāo)準(zhǔn)信號進(jìn)行計數(shù)的同時,還需要對在閘門時間內(nèi)被測信號高電平時間段的標(biāo)準(zhǔn)信號進(jìn)行計數(shù)[15]。設(shè)兩個計數(shù)器的計數(shù)值分別為Nb和Nc,那么可得到被測信號的占空比為[16]:
D=(Nc/Nb)×100%
(5)
1.2系統(tǒng)總體結(jié)構(gòu)
頻率計系統(tǒng)的總體結(jié)構(gòu)圖如圖2所示。本系統(tǒng)選用京微雅格公司M7系列的FPGA芯片CME-M7A12N0F484C7,該芯片集成了主流的ARM Cortex-M3內(nèi)核和高性能FPGA邏輯單元,F(xiàn)PGA邏輯性能高達(dá)200 MHz,而ARM Cortex-M3內(nèi)核最大頻率可達(dá)300 MHz。利用AHB(Advanced High performance Bus)總線連接FPGA、ARM Cortex-M3內(nèi)核和各個外設(shè),實現(xiàn)了高速數(shù)據(jù)傳輸。

圖2 系統(tǒng)總體結(jié)構(gòu)圖
在圖2所示的系統(tǒng)中,鎖相環(huán)IP核部分用來產(chǎn)生各類時鐘信號,AHB接口的FIFO IP核作為FPGA與Cortex-M3內(nèi)核之間通信的中介。而具有人機(jī)交互優(yōu)勢的Cortex-M3內(nèi)核通過GPIO來輸入外部信號以及控制LCD12864進(jìn)行顯示。同時數(shù)據(jù)通過UART傳輸至電腦端的上位機(jī)軟件,用于系統(tǒng)設(shè)計與調(diào)試。
哪有天天不舒服的?這分明是在找借口逃課嘛!可是,看著妍妍緊皺的眉頭、蒼白的嘴唇和痛苦不堪的表情,又確實不像裝的。
1.3系統(tǒng)工作原理
在圖2所示系統(tǒng)中,時鐘信號(clk)進(jìn)入鎖相環(huán)電路后產(chǎn)生多個高頻時鐘信號用于各個FPGA模塊和Cortex-M3內(nèi)核工作。被測信號(signal)輸入至頻率占空比一體化測量模塊中進(jìn)行測量并產(chǎn)生測量數(shù)據(jù)(Na、Nb和Nc)和數(shù)據(jù)有效信號(valid),然后利用FPGA寫FIFO控制模塊將測量數(shù)據(jù)按照時序要求寫入到AHB接口的FIFO中,在每次寫完數(shù)據(jù)之后產(chǎn)生一個寫完成信號(w_done_f),并通過一個IO口輸出。系統(tǒng)的Cortex-M3內(nèi)核中有一個32位的GPIO,其中有一位與寫完成信號(w_done_f)相連。當(dāng)Cortex-M3檢測到寫完成信號后,利用AHB系統(tǒng)總線讀取FIFO中的數(shù)據(jù),然后對讀取的數(shù)據(jù)進(jìn)行運算得到被測信號的頻率值和占空比值,利用UART將數(shù)據(jù)傳輸至電腦端的上位機(jī),并通過GPIO來控制外部LCD12864顯示器進(jìn)行顯示。
圖2所示系統(tǒng)中的FPGA部分主要用于完成頻率和占空比的測量工作,其一體化設(shè)計結(jié)構(gòu)圖如圖3所示,主要由5個部分構(gòu)成,分別是預(yù)置閘門時間產(chǎn)生模塊、同步電路、計數(shù)器模塊、有效信號產(chǎn)生模塊和FIFO寫控制模塊。在圖3中,clk_50MHz為時鐘信號輸入端,rst為復(fù)位信號輸入端,signal為被測信號輸入端,clk_S為標(biāo)準(zhǔn)信號輸入端,Na、Nb和Nc為3個計數(shù)器的計數(shù)值,valid為數(shù)據(jù)有效信號,wen為FIFO寫使能信號輸出端,wdata為FIFO寫數(shù)據(jù)輸出端,w_done_f為寫完成信號輸出端。

圖3 測頻、測占空比一體化設(shè)計結(jié)構(gòu)圖
2.1預(yù)置閘門時間產(chǎn)生模塊
預(yù)置閘門時間產(chǎn)生模塊內(nèi)部是一個分頻電路,將輸入的時鐘信號(clk_in)分頻產(chǎn)生頻率為2 Hz的時鐘信號,通過時鐘輸出端(clk_out)輸出,并將其高電平時間段作為預(yù)置閘門時間,其時間長度正好為1 s。
2.2同步電路
圖3中的同步電路是一個D觸發(fā)器。在該系統(tǒng)中,為了測量的準(zhǔn)確性,需要保證實際閘門時間為被測信號周期的整數(shù)倍,因此本系統(tǒng)利用D觸發(fā)器的同步功能,將被測信號作為同步電路的時鐘輸入端,預(yù)置閘門時間信號作為同步電路的D輸入端,這樣其輸出即為與被測信號同步的實際閘門時間。
另外,為了能夠測量信號的占空比,系統(tǒng)采用門電路的方式,將實際閘門時間信號與被測信號相“與”(AND I),其輸出作為被測信號的計數(shù)信號,同時將其與標(biāo)準(zhǔn)時鐘信號相“與”(AND II),得到閘門時間內(nèi)被測信號高電平時間段標(biāo)準(zhǔn)信號的計數(shù)信號。系統(tǒng)中兩個非門(NOT I與NOT II)起到微延時的作用,使系統(tǒng)工作更加穩(wěn)定,測量更加準(zhǔn)確,其本身對信號的邏輯關(guān)系沒有任何影響。
2.3計數(shù)器模塊
圖3系統(tǒng)中有3個計數(shù)器模塊,其工作原理描述如下:當(dāng)計數(shù)使能端(en)上升沿到達(dá)時,計數(shù)器開始對由clk端輸入的信號進(jìn)行計數(shù),而計數(shù)使能端(en)下降沿到達(dá)后停止計數(shù),同時將計數(shù)值鎖存并通過count_num端輸出,然后將計數(shù)器內(nèi)部計數(shù)值清零,以用于下一次計數(shù)。
在該系統(tǒng)中,需要對閘門時間內(nèi)各個信號的個數(shù)進(jìn)行計數(shù),所以將實際閘門時間信號(同步電路的輸出信號)作為3個計數(shù)器的計數(shù)使能信號。3個計數(shù)器中,計數(shù)器I用于對被測信號進(jìn)行計數(shù),計數(shù)器II用于對被測信號高電平時間段的標(biāo)準(zhǔn)信號進(jìn)行計數(shù),計數(shù)器III用于對標(biāo)準(zhǔn)信號進(jìn)行計數(shù)。根據(jù)測量原理,假設(shè)閘門時間內(nèi)3個計數(shù)器的計數(shù)值分別為Na、Nc和Nb,標(biāo)準(zhǔn)信號的頻率為f0,那么可得被測信號的頻率為:
f=(Na/Nb)f0
(6)
D=(Nc/Nb)×100%
(7)
2.4有效信號產(chǎn)生模塊
圖3中,有效信號產(chǎn)生模塊是在每次測量完成產(chǎn)生新的數(shù)據(jù)之后,將其輸出端(valid)置高。該模塊利用實際閘門時間信號來產(chǎn)生輸出信號,若實際閘門時間信號為高,此時正處于測量過程中,該模塊的輸出(valid)為低;當(dāng)實際閘門時間信號變?yōu)榈椭?,?shù)據(jù)測量完成,此時將模塊的輸出(valid)置為高電平。利用該信號可以控制FIFO寫控制模塊每次將有效的數(shù)據(jù)寫進(jìn)FIFO。
2.5FIFO寫控制模塊
FIFO寫控制模塊的輸入信號有時鐘信號(clk)、復(fù)位信號(rst_n)、3個測量數(shù)據(jù)(Na、Nb和Nc)和數(shù)據(jù)有效信號(valid),模塊的輸出信號為FIFO寫使能信號(wen)、FIFO寫數(shù)據(jù)信號(wdata)和寫完成信號(w_done_f)。該模塊就是根據(jù)FIFO寫數(shù)據(jù)的時序,在數(shù)據(jù)有效(valid為高)之后將測量所得的數(shù)據(jù)依次寫進(jìn)FIFO中進(jìn)行緩存,在寫完之后將寫完成信號(w_done_f)置高。如果檢測到數(shù)據(jù)有效信號(valid)為低,則將寫完成信號(w_done_f)置低。
本文所設(shè)計的頻率計是利用FPGA內(nèi)嵌的Cortex-M3內(nèi)核完成數(shù)據(jù)的接收、處理和顯示工作,在Keil開發(fā)平臺下利用C語言對系統(tǒng)軟件進(jìn)行設(shè)計。系統(tǒng)軟件的程序流程圖如圖4所示。
系統(tǒng)開始運行后,首先進(jìn)行系統(tǒng)初始化,包括初始化串口、初始化GPIO和初始化LCD12864等。之后系統(tǒng)就進(jìn)入了主循環(huán),首先檢測寫完成信號是否有效,如果無效則一直循環(huán)檢測,當(dāng)寫完成信號有效之后則停止檢測,按照順序依次讀取FIFO地址下的3個數(shù)據(jù),然后按照公式計算出被測信號的頻率值和占空比值。接下來系統(tǒng)控制串口將數(shù)據(jù)傳輸至電腦,并利用GPIO控制外部LCD12864對測量結(jié)果進(jìn)行顯示。當(dāng)上述工作全部完成之后,再次檢測寫完成信號,如果其仍然有效,則一直循環(huán)檢測此信號,直到其無效為止,然后回到主循環(huán)開始處,執(zhí)行下一次循環(huán)。

圖4 系統(tǒng)軟件程序流程圖
4.1FPGA模塊仿真
根據(jù)等精度測量的原理和FPGA模塊結(jié)構(gòu)設(shè)計,利用Verilog硬件描述語言對測頻、測占空比一體化設(shè)計結(jié)構(gòu)進(jìn)行設(shè)計,并利用ModelSim軟件對其整體進(jìn)行功能仿真。如圖5、6所示為頻率計的整體仿真結(jié)果,其中測試信號的頻率是5 Hz,占空比為80%。由圖5可見,預(yù)置閘門時間、被測信號和實際閘門時間等信號的時序與等精度測量原理圖相一致,同時測量所得的3個計數(shù)值準(zhǔn)確,與測試信號的頻率、占空比相符。從圖6中可以看出,F(xiàn)IFO寫控制模塊按照時序要求將測量所得的3個數(shù)據(jù)依次輸出至FIFO中,同時在寫完成之后將寫完成標(biāo)志置高。
4.2硬件實現(xiàn)與測試
利用Keil軟件完成Cortex-M3內(nèi)核軟件的設(shè)計工作,并將其產(chǎn)生的HEX文件導(dǎo)入京微雅格的EDA設(shè)計工具Primace中,與所設(shè)計的FPGA模塊一并生成比特流數(shù)據(jù),并將其下載至M7開發(fā)板中,按照設(shè)計結(jié)構(gòu)將外部引腳進(jìn)行連接,即完成了頻率計系統(tǒng)的硬件實現(xiàn)。該頻率計利用LCD12864對測試結(jié)果進(jìn)行顯示,采用自動量程的方式,無需人工調(diào)整。
利用本文所設(shè)計的頻率計對測試信號的頻率和占空比進(jìn)行測試,然后對結(jié)果進(jìn)行分析,圖7所示為系統(tǒng)測試圖。

圖5 頻率計整體仿真結(jié)果

圖6 FIFO寫控制模塊仿真結(jié)果

圖7 系統(tǒng)測試圖
表1是本頻率計的一組測試數(shù)據(jù),通過對被測信號的頻率、占空比和測試所得的頻率值和占空比值相比較可知,在所給的測量范圍之內(nèi),頻率測量誤差均小于10-4,占空比測量誤差的絕對值均小于10-2。測量結(jié)果的誤差分布在同一個數(shù)量級,并沒有因為頻率值的變化而變化,從而達(dá)到了等精度測量的目的。

表1 頻率計系統(tǒng)實驗測試數(shù)據(jù)
本文以京微雅格公司的M7系列FPGA為設(shè)計載體,利用SOPC技術(shù)和等精度測量原理,在一片內(nèi)嵌Cortex-M3內(nèi)核的FPGA芯片上完成了頻率計的設(shè)計,可以實現(xiàn)頻率測量和占空比測量功能。利用Verilog硬件描述語言完成FPGA模塊的設(shè)計,并利用ModelSim軟件對其進(jìn)行仿真驗證。通過Keil軟件完成Cortex-M3內(nèi)核的軟件設(shè)計,利用Primace工具進(jìn)行分析、綜合,并最終下載到芯片中,完成系統(tǒng)的硬件實現(xiàn)。通過實際測試,系統(tǒng)可以很好地完成頻率測量與占空比測量功能,并達(dá)到了等精度測量的目的。
[1] 張 博,曹學(xué)沿,房 亮.基于VHDL的簡易數(shù)字頻率計的設(shè)計[J].傳感器世界,2013(5):29-34.
[2] 陳尚志,胡榮強,胡合松.基于FPGA自適應(yīng)數(shù)字頻率計的設(shè)計[J].中國測試技術(shù),2007,33(2):141-144.
[3] 曹浩彤,劉 艷.基于430單片機(jī)的簡易頻率計設(shè)計[J].微型機(jī)與應(yīng)用,2014,33(21):92-94.
[4] 謝尚港,王佳豪,黃繼業(yè).基于FPGA移相倍頻方式的頻率計設(shè)計與實現(xiàn)[J].自動化與儀器儀表,2016(4):29-31.
[5] NING Zehong,XU Dawang,DONG Zhanyong.Frequency measurement technique based on frequency conversion[J].Journal of Measurement Science and Instrumentation,2013,4(2): 146-149.
[6] 郝統(tǒng)關(guān),程 明.基于FPGA Nios II的等精度頻率計設(shè)計[J].電測與儀表,2009,46(2):56-58.
[7] 黎山峰,楊 雷,孫建軍.基于NiosⅡ的FPGA頻率計設(shè)計與實現(xiàn)[J].儀表技術(shù)與傳感器,2016(8):105-108,112.
[8] 黃 俊,余水寶.基于STC12C5A60S2的高頻高精度頻率計的設(shè)計[J].微型機(jī)與應(yīng)用,2012,31(17):22-24.
[9] 曹作寶,包曉敏,彭 霄.基于NIOS II的多功能數(shù)字頻率計的設(shè)計[J].工業(yè)控制計算機(jī),2009(10):74-75.
[10] DU Baoqiang,WANG Yanfeng,CUI Guangzhao,etal.High-precision time and frequency measurement method combining time-space conversion and different frequency phase detection[J].Science China(Physics,Mechanics & Astronomy),2013,56(11): 2110-2115.
[11] Fang Yiyuan,Chen Xuejun.Design of equal precision frequency meter based on FPGA[J].Engineering,2012,4 (10): 696-700.
[12] 王 慧.基于FPGA高速高精度頻率測量系統(tǒng)的實現(xiàn)[J].傳感器世界,2006(1):27-29.
[13] 李鑫彪,王笑怡.基于FPGA的頻率測量儀設(shè)計[J].微處理機(jī),2014(10):5-7.
[14] 井新宇.基于SOPC的FPGA Nios II嵌入式等精度頻率計設(shè)計[J].實驗室研究與探索,2012,31(6):217-220.
[15] 許可行,劉延飛,羊 帆.基于多周期同步測量的頻率計設(shè)計[J].國外電子測量技術(shù),2016(9):76-80.
[16] 謝尚港,王佳豪,黃繼業(yè).基于FPGA移相倍頻方式的頻率計設(shè)計與實現(xiàn) [J].自動化與儀器儀表,2016(4): 29-31.
Design of Equal Precision Frequency Meter Based on FPGA with Embedded Cortex-M3 Core
WANGLihua1,ZHOUSongjiang1,2a,GAOShihao1,2b,ZHANGHeng1
(1.School of Electronic Communication & Physics,Shandong University of Science & Technology,Qingdao 266590,Shandong,China; 2a.Institute of Information Photonics and Optical Communication,2b.Key Laboratory of Universal Wireless Communications,Ministry of Education,Beijing University of Posts and Telecommunications,Beijing 100876,China)
In order to solve the problem that the traditional frequency meter cannot achieve equal precision in high or low frequency measurement,improve the precision and performance of frequency meter,an equal precision frequency meter based on SOPC is designed in this paper.An FPGA chip that is embedded with Cortex-M3 as the system’s controlling core,through the design of FPGA module and Cortex-M3 module,data communication between FPGA and Cortex-M3 is achieved by FIFO with AHB interface.The device completes the design of equal precision frequency meter in 1Hz~50MHz range.By ModelSim software simulation and hardware testing,the frequency meter can complete equal precision frequency and has duty ratio measuring function,and has the characteristics of high precision and good real-time.
frequency meter; equal precision; system-on-a-programmable chip (SOPC); field-programmable gate array (FPGA); advanced high performance bus (AHB); Cortex-M3
2016-11-10
王立華(1971-),男,山東濰坊人,副教授,碩士生導(dǎo)師,主要從事嵌入式應(yīng)用、光伏發(fā)電技術(shù)和通信技術(shù)的教學(xué)與研究。
Tel.:13730917192;E-mail:wanglihua7141@126.com
TM 935.13
:A
1006-7167(2017)07-0139-05