【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計

1、概述

基於明德揚至簡設計法和明德揚設計規範,設計一個基於FPGA的頻率、電壓測量儀器,實現了測量AD採集後的波形頻率和電壓(峰峰值),並將數值顯示在數碼管上。這個案例通過擴展還可結合明德揚的波形採集顯示案例實現顯示波形頻率、峰峰值功能,還可拓展結合上次DDS案例產生的已知波形的頻率峰峰值,驗證本設計的正確性。


本案例的擴展和應用在現實生活中具有重大意義。


在本案例的設計過程中,應用了至簡設計法、狀態機模板應用等,在經過逐步改進、調試等一系列工作之後,最終達到了設計目標。


2、設計目標


(1)將AD採集後的數據轉換成同頻率的方波,並測量出波形實際頻率


(2)能夠實現測量出波形的週期


(3)能夠實現測量波形的峰峰值或者某個信號的電壓值


(4)數碼管顯示頻率或電壓值,並通過按鍵控制切換決定數碼管顯示頻率或電壓值


3、模塊功能


(1)頻率測量模塊實現功能:

將AD採集後的數據轉換成同頻率的方波;

測量出波形的實際頻率;

測量出波形的週期


(2)電壓測量模塊實現功能:

將AD採集後的數據進行緩衝;

記錄數據最大值和最小值;

根據公式得出波形的峰峰值(電壓)


(3)數碼管顯示模塊實現功能

數碼管顯示頻率值或者電壓值

通過按鍵1實現切換決定數碼管顯示頻率還是電壓


(4)按鍵模塊實現功能:

將外來異步信號打兩拍處理,將異步信號同步化;

實現20ms按鍵消抖功能,並輸出有效按鍵信號;


4、信號定義


(1)頂層模塊Freq_Volt_Top.v


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


(2)頻率測量模塊Frequency.v


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


(3)電壓測量模塊Voltage.v


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


(4)數碼管顯示模塊sel_disp.v


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


(5)按鍵模塊key_module.v


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


5、頻率測量代碼


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計

【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


利用明德揚的四段式狀態機模板,可以很熟練地寫出狀態的轉換,先將ad_data取最高位,得到同頻率的方波,再分別計算方波高電平和低電平的時間,就可以得出一個週期的時間,從而計算出頻率值和峰峰值。利用wave的高低電平控制狀態機進入高電平計數或低電平計數狀態。


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


S1狀態:即wave=1時開始進行高電平計數,wave=0時證明變為低電平,記錄下high_cnt的最大值,代表高電平的時間。


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


S2狀態:即wave=0時開始進行低電平計數,wave=1時證明變為高電平,記錄下low_cnt的最大值,代表低電平的時間。

得到高電平和低電平的時間,相加即得到一個週期的時間,可以算出頻率值和週期值


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


FPGA原則上不能直接進行除法運算,因此調用除法器IP進行除法運算可以算出頻率值,取整數部分。


6、電壓測量


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


將AD數據和初始的最大值最小值相比較,如果AD數據大則賦值給fengzhi_max,如果AD數據小則賦值給fengzhi_min,經過一段時間後可以得出數據的最大值和最小值。如果是8位AD9280,則255代表+5V,0代表-5V;


則可以得到峰峰值計算公式;


值得注意的是,記錄下最大最小值後,fengzhi_max,fengzhi_min將不變,為了能夠實時記錄數據最大最小值,需要定時刷新,因此設置1s RST信號,定時初始化fengzhi_max,fengzhi_min。


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


7、數碼管顯示


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


通過按鍵切換決定數碼管顯示頻率值還是電壓值。


【至簡設計案例系列】基於FPGA的頻率、電壓測量儀器設計


動態掃描數碼管,同時顯示多個不同數字,顯示頻率和電壓信息。數碼顯示原理和案例具體請學習明德揚論壇上資料。


在這個設計案例中,至簡設計法和明德揚計數器模板、狀態機模板發揮了至關重要的作用,使我能夠快速準確完成設計。


本設計可以加以拓展:

結合明德揚AD採集波形案例,將計算出的頻率值、電壓值顯示在VGA屏幕上;


對於初學者而言,流水燈太簡單,複雜項目又太難,不如嘗試一下這些相對簡單而又酷炫的案例,並一步步拓展成大項目。趕緊動手嘗試吧。


分享到:


相關文章: