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
信號 | 定義 |
clk | 系統時鐘 |
rst_n | 低電平復位信號 |
ad_data | AD采集輸入 |
seg_sel | 數碼管位選信號 |
Seg_ment | 數碼管顯示信號 |
(2)頻率測量模塊Frequency.v
信號 | 定義 |
clk | 系統時鐘 |
rst_n | 低電平復位信號 |
ad_data | AD采集輸入 |
Freq | 頻率值 |
Period | 周期 |
(3)電壓測量模塊Voltage.v
信號 | 定義 |
clk | 系統時鐘 |
rst_n | 低電平復位信號 |
ad_data | AD采集輸入 |
Volt | 電壓值(峰峰值) |
(4)數碼管顯示模塊sel_disp.v
信號 | 定義 |
clk | 系統時鐘 |
rst_n | 低電平復位信號 |
din | 顯示數據 |
seg_sel | 數碼管位選信號 |
Seg_ment | 數碼管顯示信號 |
(5)按鍵模塊key_module.v
信號 | 定義 |
clk | 系統時鐘 |
rst_n | 低電平復位信號 |
key_in | 按鍵輸入 |
key_vld | 有效按鍵 |
5、頻率測量代碼
利用明德揚的四段式狀態機模板,可以很熟練地寫出狀態的轉換,先將ad_data取最高位,得到同頻率的方波,再分別計算方波高電平和低電平的時間,就可以得出一個周期的時間,從而計算出頻率值和峰峰值。利用wave的高低電平控制狀態機進入高電平計數或低電平計數狀態。
S1狀態:即wave=1時開始進行高電平計數,wave=0時證明變為低電平,記錄下high_cnt的最大值,代表高電平的時間。
S2狀態:即wave=0時開始進行低電平計數,wave=1時證明變為高電平,記錄下low_cnt的最大值,代表低電平的時間。
得到高電平和低電平的時間,相加即得到一個周期的時間,可以算出頻率值和周期值
FPGA原則上不能直接進行除法運算,因此調用除法器IP進行除法運算可以算出頻率值,取整數部分。
6、電壓測量
將AD數據和初始的最大值最小值相比較,如果AD數據大則賦值給fengzhi_max,如果AD數據小則賦值給fengzhi_min,經過一段時間后可以得出數據的最大值和最小值。如果是8位AD9280,則255代表+5V,0代表-5V;
則可以得到峰峰值計算公式;
值得注意的是,記錄下最大最小值后,fengzhi_max,fengzhi_min將不變,為了能夠實時記錄數據最大最小值,需要定時刷新,因此設置1s RST信號,定時初始化fengzhi_max,fengzhi_min。
7、數碼管顯示
通過按鍵切換決定數碼管顯示頻率值還是電壓值。
動態掃描數碼管,同時顯示多個不同數字,顯示頻率和電壓信息。數碼顯示原理和案例具體請學習明德揚論壇上資料。
在這個設計案例中,至簡設計法和明德揚計數器模板、狀態機模板發揮了至關重要的作用,使我能夠快速準確完成設計。
本設計可以加以拓展:結合明德揚AD采集波形案例,將計算出的頻率值、電壓值顯示在VGA屏幕上;
對于初學者而言,流水燈太簡單,復雜項目又太難,不如嘗試一下這些相對簡單而又酷炫的案例,并一步步拓展成大項目。趕緊動手嘗試吧。
溫馨提示:明德揚2023推出了全新課程——邏輯設計基本功修煉課,降低學習FPGA門檻的同時,增加了學習的趣味性,并組織了考試贏積分活動
http://www.cqqtmy.cn/ffkc/415.html
(點擊→了解課程詳情?)感興趣請聯系易老師:13112063618(微信同步)