基於FPGA的數字頻率計(設計全過程)

2021-06-21 21:17:06 字數 2618 閱讀 4889

小序:

前幾天看全國大學生電子設計競賽

數字頻率計總體設計採用分塊的思想,自底向上設計方向,三個子模組包括頻率測量模組(fre_meter),二進位製到十進位制轉換的模組(bin_dec)和數碼管顯示模組(led),最後用乙個頂層模組(top)把三個子模組例化到一起。總體設計思路就是先通過測頻模組測得的頻率值然後通過進製轉換模組將頻率值轉換為十進位制數,最後再輸入給顯示模組顯示出該頻率值。

下圖為模組示意圖(實際工程中並沒有採用原理圖的輸入方法,有種感覺ise中原理圖輸入方法總會產生各種錯誤,這裡僅作示意)。

下面分模組說明:

fre_meter

:  測頻模組,設計思路完全根據之前我寫的一篇博文《verilog編寫數字頻率計》,只是稍作修改,這裡不再重複

輸入   clk:系統時鐘訊號 50mhzrst_n:低電平非同步復位clk_in :被測時鐘頻率

輸出   fre:20bit位寬的頻率值,可以滿足題目中要求的 1mhz的要求

bin_dec

:     進製轉換模組,二進位制數轉換為十進位制 ,之前寫的一篇部落格《利用verilog將二進位製碼轉換為十進位制bcd碼》其中只涉及到了8bit轉換,本設計中待測最高頻率1m,轉換為二進位制數為1111_0100_0010_0100_0000

,之前的8bit轉換思路沒法搬到20bit轉換中來用,所以尋找其他思路,後來在乙個論壇中找到了16bit轉換的**,**  ,經過修改後可以實現20bit二進位制數到10進製的轉換。

具體轉換思路如下,位寬為20bit的二進位制數最大為1111_1111_1111_1111_1111,轉換為十進位制為1048575,那麼對於輸入的二進位制數hex,輸出十進位制數fre從百萬位到各位分別為 million , hunthousand , tenthousand , thousand , hundred , ten , one。首先對比hex是否大於999999,如果是那麼轉換為十進位制後的第七位million為1,然後另d1=hex-1000000,如果hex不大於999999,那麼 million  =0,d1=hex。 下面判斷第六位hunthousand ,依次先後判斷d1是否大於899999 、799999、699999......99999,假設d1>899999  ,那麼  hunthousand=9,d2=d1-900000;如果d1>799999  ,那麼  hunthousand=8,d2=d1-800000  ........依次類推逐一求得十進位制數的每一位(具體設計見**)。

輸入   clk:系統時鐘訊號50mhz

rst:低電平非同步復位

hex:20bit二進位制頻率值

輸出  million , hunthousand , tenthousand , thousand , hundred , ten , one:4bit位寬的頻率值,代表十進位制頻率值的不同位

led

:            數碼管顯示模組,數碼管做動態顯示利用人眼的對顯示頻率的敏感限度,八段數碼管在一定頻率下切換賦值,每乙個時鐘對乙個數碼管單獨賦值並顯示,切換頻率大於一定值後,看起來像8位數碼管同時顯示(具體設計見**)。

輸入   clk:系統時鐘訊號50mhz

million , hunthousand , tenthousand , thousand , hundred , ten , one:4bit位寬的頻率值,代表十進位制頻率值的不同為位

輸出sel:8bit 數碼管位選訊號               

data:8bit數碼管解碼顯示的值

測試結果:

下圖為頻率計的測試結果,上面一排為訊號發生器輸入的待測試脈衝的頻率,下面一排為對應的頻率計的測試結果,可以看出本設計的測量精度完全可以滿足題目的要求,但是由於裝置的限制,沒能實現正弦波的測試,以及脈衝寬度的測試等等功能,但是我覺得原理基本和本設計中的測頻模組相同。

,積分不夠用朋友可以給我發郵件[email protected]

第四周(交集創賽和15年電賽F題數字頻率計)

5.31 可以將集創賽交上去,然後開始學習課本上的知識,每天一小時學習一點fpga和其他相關知識,以零碎知識為主。6.1 申請了432電賽的板卡,要開始準備電賽了,學長還讓我們做15年的電賽f題,之前準備過相關知識,盡量在準備考試的同時每天一小時把它做完。中午得到訊息提交時間推遲了,在截止後又推遲群...

等精度頻率計設計中的貓膩

最近檢視了一些關於等精度頻率計的文章,也找時間去關注一下 精度 問題 也就是說精度常使用三種方式來表徵。1 最大誤差佔真實值的百分比,如測量誤差3 2 最大誤差,如 測量精度 0.02mm 3 誤差 正態分佈 如誤差0 10 佔比例65 誤差10 20 佔比例20 誤差20 30 佔10 誤差30 ...

基於STM32的頻率計(採用外部中斷的方式)

最近在了解電賽相關的東西,和指導老師交流一下,我決定先從最簡單的頻率計做起。頻率計是來檢測訊號的頻率的,在做頻率計的時候可以用訊號發生器發出的訊號來進行測試。這是最基礎的方波,我們可以通過檢測上公升沿的方式來測量其頻率。從週期的角度出發連續兩個上公升沿的時間就是這個方波的週期,那這個週期分之一就是這...