新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Verilog語言的等精度頻率計設計

        基于Verilog語言的等精度頻率計設計

        作者: 時間:2017-08-14 來源:網絡 收藏

         

        本文引用地址:http://www.104case.com/article/201708/362968.htm

          引言

          傳統測量頻率的方法主要有直接測量法、分頻測量法、測周法等,這些方法往往只適用于測量一段頻率,當被測信號的頻率發生變化時,測量的精度就會下降。本文提出一種基于等精度原理的測量頻率的方法,在整個頻率測量過程中都能達到相同的測量精度,而與被測信號的頻率變化無關。本文利用(現場可編程門陣列)的高速數據處理能力,實現對被測信號的測量計數;利用單片機的運算和控制能力,實現對頻率、周期、脈沖寬度的計算及顯示。

          等精度測量原理等精度測量的一個最大特點是測量的實際門控時間不是一個固定值,而是一個與被測信號有關的值,剛好是被測信號的整數倍。在計數允許時間內,同時對標準信號和被測信號進行計數,再通過數學公式推導得到被測信號的頻率。由于門控信號是被測信號的整數倍,就消除了對被測信號產生的士1誤差,但是會產生對標準信號士1的誤差。如圖1所示。

          系統中,如果采用的標準信號源的精度很高,就叮以達到一個很高的測量精度,一般情況下都是采用晶體作為標準信號源,因此可以達到很高的精度,滿足一般系統的要求。

          2、模塊設計

          本系統在傳統的等精度測量原理基礎上進行了改進和優化。增加了測量占空比的功能,同時由內部產生清零信號,節省了資源。改進后的FPGA核心模塊如圖2所示。FPGA部分主要由門控信號產生模塊、計數器控制模塊、計數器模塊、鎖存器、中斷輸出、數據選擇輸出、頂層模塊組成。

          1)門控信號為了測量頻率為1H:的信號,要求系統的開門時間不小于1s;同理,為了測量0.1H:頻率的信號,要求開門時間最短為109。但是如果系統一直采用10s的門控信號,測量高頻信號的等待時間太長,顯然不合理,因為測量結果的顯示必須要等到一個測量周期結束之后才能更新。本系統采用的方法是,由單片機給FPGA提供一個門控的選擇信號,如果FPG人測得的頻率小于1Hz,那么單片機自動給出一個啟動10s門控的控制信號;反之,如果發現測量的頻率大于1Hz,自動切換回1。門控,實現了一個閉環的自動控制,很好地解決了門控的時間問題。

          2)計數器控制模塊

          該模塊是本文的創新點所在,主要用來同步被測信號。由前面的分析可知,門控信號啟動(上升沿)后,在被測信號的上升沿啟動計數允許模塊,允許計數器計數;門控信號關閉(下降沿)后,在被測信號的下一個上升沿關閉計數允許模塊,停止計數,從而保證了門控信號是被測信號的整數倍,達到了等精度的目的。該模塊有GATE,CLKx這2個輸人端;ENh,ENx,Load,CLR這4個輸出端。GATE為上一級給出的門控信號漢LKesx為被測信號;EN-h,高電平期間對標準信號進行計數,得到CNT_h;EN_x為給出的允許計數信號,在EN-x的高電平期間,對被測信號、標準信號同時計數,得到CNT-x,CNT-b;Load為鎖存信號;CLR為計數器清零信號。

          由CNTx和CNT_b可以計算出被測信號的頻率和周期;由CNTex和CNTh可以計算出被測信號的脈沖寬度。佑直圖加圖3所式。

          3)計數器模塊

          在設計計數器的過程中需要注意計數器的寬度設置,系統中采用的最大門控時間為10a,標準信號源的頻率為50MHz,則在計數的允許時間內計數的最大值為:536870912,為了方便數據傳輸,系統中采用了32位位寬的計數器。

          4)鎖存器模塊

          在門控信號關閉的同時,停止計數,同時啟動鎖存模塊,把測量的數據鎖存起來,以便傳輸。

          5)中斷輸出

          鎖存數據的同時,給單片機一個低電平的中斷信號,通知單片機讀取數據。

          6)數據選擇輸出模塊

          系統中采用了3個32位的計數器,由于單片機采用的是51系列單片機,只有8位的數據總線,所以一次通信只能傳輸8位數據,3x32/8二12,所以設計了一個數據輸出控制模塊,由單片機提供4根地址線,譯碼后可以選擇16組數據,單片機得到中斷通知后,分12次讀取測量的數據。

          7)頂層模塊

          實例化所有的底層模塊,同時為了調試方便,加入了一些測試點。FPGA部分的整體結構圖如圖4所示。

           

          3、單片機模塊控制

          3.1理論分析

          在計數允許EN-x時間內,對被測信號和標準信號同時進行進行計數,得到CNT_x和CNT_b,設被測信號的周期為T,,頻率為Fx,標準信號周期為F6.頻率為Fb。則有:

          系統中采用式(6)一式(8)進行計算,得到最終的測量數據,單片機中采用浮點數進行運算,計算的精度可以滿足系統的要求。

          3.2硬件電路

          系統硬件電路比較簡單,就是單片機的最小系統加上液晶顯示模塊,設計時需要注意,51單片機端口電壓是5V輸出,而FPGA是3.3V輸出,所以在數據傳輸時要串聯一個電阻一般1000一300f2即可。電路原理圖如圖5所示。

          3.3軟件設計

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

         

           

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

          中斷服務子程序如圖7所示。

          4、結束語

          本系統設計采用FPGA和單片機結合的方式實現等精度測量頻率,充分發揮了FPGA高速的數據處理能力以及單片機的計算、控制能力。采用硬件描述語言對系統進行仿真測試.最終下載到FPGA內部。單片機采用C語言編寫程序,利用浮點數進行計算,精度高。同時設計了門控信號自動選擇的閉環控制,大大地提高了系統的性能。等精度測量技術在生產、實驗等環境中得到了廣泛的應用。



        關鍵詞: Verilog FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 孟连| 柞水县| 茂名市| 中山市| 丽水市| 崇文区| 莒南县| 会东县| 文水县| 平南县| 剑阁县| 桃园县| 东城区| 扎赉特旗| 五大连池市| 肥乡县| 光泽县| 汶上县| 衡东县| 河南省| 垦利县| 麻城市| 阿巴嘎旗| 炎陵县| 涞源县| 类乌齐县| 北碚区| 溧水县| 芷江| 凤台县| 甘谷县| 肇源县| 乳源| 仪征市| 彭山县| 乐都县| 青川县| 新和县| 库车县| 大安市| 寿宁县|