基于Verilog語(yǔ)言的等精度頻率計設計
本文引用地址:http://dyxdggzs.com/article/201708/362968.htm
引言
傳統測量頻率的方法主要有直接測量法、分頻測量法、測周法等,這些方法往往只適用于測量一段頻率,當被測信號的頻率發(fā)生變化時(shí),測量的精度就會(huì )下降。本文提出一種基于等精度原理的測量頻率的方法,在整個(gè)頻率測量過(guò)程中都能達到相同的測量精度,而與被測信號的頻率變化無(wú)關(guān)。本文利用FPGA(現場(chǎng)可編程門(mén)陣列)的高速數據處理能力,實(shí)現對被測信號的測量計數;利用單片機的運算和控制能力,實(shí)現對頻率、周期、脈沖寬度的計算及顯示。
等精度測量原理等精度測量的一個(gè)最大特點(diǎn)是測量的實(shí)際門(mén)控時(shí)間不是一個(gè)固定值,而是一個(gè)與被測信號有關(guān)的值,剛好是被測信號的整數倍。在計數允許時(shí)間內,同時(shí)對標準信號和被測信號進(jìn)行計數,再通過(guò)數學(xué)公式推導得到被測信號的頻率。由于門(mén)控信號是被測信號的整數倍,就消除了對被測信號產(chǎn)生的士1誤差,但是會(huì )產(chǎn)生對標準信號士1的誤差。如圖1所示。

系統中,如果采用的標準信號源的精度很高,就叮以達到一個(gè)很高的測量精度,一般情況下都是采用晶體作為標準信號源,因此可以達到很高的精度,滿(mǎn)足一般系統的要求。
2、FPGA模塊設計
本系統在傳統的等精度測量原理基礎上進(jìn)行了改進(jìn)和優(yōu)化。增加了測量占空比的功能,同時(shí)由FPGA內部產(chǎn)生清零信號,節省了資源。改進(jìn)后的FPGA核心模塊如圖2所示。FPGA部分主要由門(mén)控信號產(chǎn)生模塊、計數器控制模塊、計數器模塊、鎖存器、中斷輸出、數據選擇輸出、頂層模塊組成。

1)門(mén)控信號為了測量頻率為1H:的信號,要求系統的開(kāi)門(mén)時(shí)間不小于1s;同理,為了測量0.1H:頻率的信號,要求開(kāi)門(mén)時(shí)間最短為109。但是如果系統一直采用10s的門(mén)控信號,測量高頻信號的等待時(shí)間太長(cháng),顯然不合理,因為測量結果的顯示必須要等到一個(gè)測量周期結束之后才能更新。本系統采用的方法是,由單片機給FPGA提供一個(gè)門(mén)控的選擇信號,如果FPG人測得的頻率小于1Hz,那么單片機自動(dòng)給出一個(gè)啟動(dòng)10s門(mén)控的控制信號;反之,如果發(fā)現測量的頻率大于1Hz,自動(dòng)切換回1。門(mén)控,實(shí)現了一個(gè)閉環(huán)的自動(dòng)控制,很好地解決了門(mén)控的時(shí)間問(wèn)題。
2)計數器控制模塊
該模塊是本文的創(chuàng )新點(diǎn)所在,主要用來(lái)同步被測信號。由前面的分析可知,門(mén)控信號啟動(dòng)(上升沿)后,在被測信號的上升沿啟動(dòng)計數允許模塊,允許計數器計數;門(mén)控信號關(guān)閉(下降沿)后,在被測信號的下一個(gè)上升沿關(guān)閉計數允許模塊,停止計數,從而保證了門(mén)控信號是被測信號的整數倍,達到了等精度的目的。該模塊有GATE,CLKx這2個(gè)輸人端;ENh,ENx,Load,CLR這4個(gè)輸出端。GATE為上一級給出的門(mén)控信號漢LKesx為被測信號;EN-h,高電平期間對標準信號進(jìn)行計數,得到CNT_h;EN_x為給出的允許計數信號,在EN-x的高電平期間,對被測信號、標準信號同時(shí)計數,得到CNT-x,CNT-b;Load為鎖存信號;CLR為計數器清零信號。
由CNTx和CNT_b可以計算出被測信號的頻率和周期;由CNTex和CNTh可以計算出被測信號的脈沖寬度。佑直圖加圖3所式。

3)計數器模塊
在設計計數器的過(guò)程中需要注意計數器的寬度設置,系統中采用的最大門(mén)控時(shí)間為10a,標準信號源的頻率為50MHz,則在計數的允許時(shí)間內計數的最大值為:536870912,為了方便數據傳輸,系統中采用了32位位寬的計數器。
4)鎖存器模塊
在門(mén)控信號關(guān)閉的同時(shí),停止計數,同時(shí)啟動(dòng)鎖存模塊,把測量的數據鎖存起來(lái),以便傳輸。
5)中斷輸出
鎖存數據的同時(shí),給單片機一個(gè)低電平的中斷信號,通知單片機讀取數據。
6)數據選擇輸出模塊
系統中采用了3個(gè)32位的計數器,由于單片機采用的是51系列單片機,只有8位的數據總線(xiàn),所以一次通信只能傳輸8位數據,3x32/8二12,所以設計了一個(gè)數據輸出控制模塊,由單片機提供4根地址線(xiàn),譯碼后可以選擇16組數據,單片機得到中斷通知后,分12次讀取測量的數據。
7)頂層模塊
實(shí)例化所有的底層模塊,同時(shí)為了調試方便,加入了一些測試點(diǎn)。FPGA部分的整體結構圖如圖4所示。

3、單片機模塊控制
3.1理論分析
在計數允許EN-x時(shí)間內,對被測信號和標準信號同時(shí)進(jìn)行進(jìn)行計數,得到CNT_x和CNT_b,設被測信號的周期為T(mén),,頻率為Fx,標準信號周期為F6.頻率為Fb。則有:

系統中采用式(6)一式(8)進(jìn)行計算,得到最終的測量數據,單片機中采用浮點(diǎn)數進(jìn)行運算,計算的精度可以滿(mǎn)足系統的要求。
3.2硬件電路
系統硬件電路比較簡(jiǎn)單,就是單片機的最小系統加上液晶顯示模塊,設計時(shí)需要注意,51單片機端口電壓是5V輸出,而FPGA是3.3V輸出,所以在數據傳輸時(shí)要串聯(lián)一個(gè)電阻一般1000一300f2即可。電路原理圖如圖5所示。

3.3軟件設計
單片機軟件主要由系統初始化、數據傳輸、頻率、周期、占空比計算、液晶顯示等程序模塊組成。


下面簡(jiǎn)單介紹主函數及計算子函數。軟件流程如圖6所示。

中斷服務(wù)子程序如圖7所示。

4、結束語(yǔ)
本系統設計采用FPGA和單片機結合的方式實(shí)現等精度測量頻率,充分發(fā)揮了FPGA高速的數據處理能力以及單片機的計算、控制能力。采用Verilog硬件描述語(yǔ)言對系統進(jìn)行仿真測試.最終下載到FPGA內部。單片機采用C語(yǔ)言編寫(xiě)程序,利用浮點(diǎn)數進(jìn)行計算,精度高。同時(shí)設計了門(mén)控信號自動(dòng)選擇的閉環(huán)控制,大大地提高了系統的性能。等精度測量技術(shù)在生產(chǎn)、實(shí)驗等環(huán)境中得到了廣泛的應用。
評論