實驗三 基于FPGA的數(shù)碼管動態(tài)掃描電路設(shè)計
源文件的鏈接放在最后啦
- 實驗?zāi)康模?br> (1) 熟悉7段數(shù)碼管顯示譯碼電路的設(shè)計。
(2) 掌握數(shù)碼管顯示原理及靜態(tài)、動態(tài)掃描電路的設(shè)計。 - 實驗任務(wù):
(1) 基本任務(wù)1:利用FPGA硬件平臺上的4位數(shù)碼管做靜態(tài)顯示,用SW0-3輸入BCD碼,用SW4-7控制數(shù)碼管位選;
(2) 基本任務(wù)2:利用FPGA硬件平臺上的4位數(shù)碼管顯示模10計數(shù)結(jié)果(以1S為節(jié)拍);
(3) 基本任務(wù)3:利用FPGA硬件平臺上的6位數(shù)碼管顯示模100計數(shù)結(jié)果(以1S為節(jié)拍);
(4) 拓展任務(wù)1:對7448譯碼結(jié)果中的“6”和“9”進行補段;
(5) 拓展任務(wù)2:用按鍵控制計數(shù)器從0-9計數(shù),4位數(shù)碼管顯示計數(shù)結(jié)果;(注意按鍵消抖)
(6) 拓展任務(wù):3:dig_select、decoder和code_select三個模塊做波形仿真。(注意輸入設(shè)置)
基本任務(wù)一:利用FPGA硬件平臺上的4位數(shù)碼管做靜態(tài)顯示,用SW0-3輸入BCD碼,用SW4-7控制數(shù)碼管位選;
1、實驗原理
使用decoder模塊控制數(shù)碼管的顯示功能,輸入二進制碼,輸出對應(yīng)的數(shù)碼管顯示數(shù)字。
dig_select模塊負(fù)責(zé)選擇哪一個數(shù)碼管顯示數(shù)字,add端輸入二進制碼,如果輸入的頻率特別高的話,人眼就分辨不出來一個個顯示的過程了,看起來就是六個數(shù)碼管都在亮。
2、電路模塊設(shè)計
(1)decoder模塊
(2)dig_select模塊
拓展任務(wù)一:對7448譯碼結(jié)果中的“6”和“9”進行補段;
1、電路模塊設(shè)計
(1)補段后的decoder模塊,原本6和9顯示的時候會少一段沒有顯示,加上外部與非門后就可以完整顯示了。
基本任務(wù)二:利用FPGA硬件平臺上的4位數(shù)碼管顯示模10計數(shù)結(jié)果(以1S為節(jié)拍);
1、電路模塊設(shè)計
(1)fre_div模塊(如果不知道原理可以看我的上一篇文章實驗二)
(2)基本任務(wù)一的decoder和dig_select模塊(在上面,用那個補過段的)
(3)模六計數(shù)器cnt6(實驗一里有)
(4)整體設(shè)計
拓展任務(wù)二:用按鍵控制計數(shù)器從0-9計數(shù),4位數(shù)碼管顯示計數(shù)結(jié)果;(注意按鍵消抖)
1、電路模塊設(shè)計
(1)按鍵消抖key_debounce模塊
(2)原理
利用D觸發(fā)器的延時特性,將每一個D觸發(fā)器(延時不同)的輸出端相與,僅當(dāng)所有D觸發(fā)器都輸出為1的時候,消抖模塊才輸出為1,這樣就可以將按鍵抖動的部分(有1也有0的部分)跳過,達成消抖的目的。
后面還可以接更多的D觸發(fā)器,如果效果不好的話。
clk端要接一個500Hz的時鐘
(3)整體設(shè)計
接下來就和上面的差不多了。
我這里接了兩個消抖模塊是因為一個好像效果不太好。
基本任務(wù)3:利用FPGA硬件平臺上的6位數(shù)碼管顯示模100計數(shù)結(jié)果(以1S為節(jié)拍);
1、電路設(shè)計
(1)實驗三就有一些復(fù)雜了。要實現(xiàn)模100計數(shù)結(jié)果,我們首先要有一個模100計數(shù)器。
cnt100
(2)第二個新模塊是sec_select模塊,之所以這么命名和設(shè)計是為了下面的數(shù)字電子鐘做準(zhǔn)備。
這個模塊的主要作用是將每一個電子管顯示不同的內(nèi)容,根據(jù)基本任務(wù)二可知一次只能一個數(shù)碼管顯示一位數(shù)字,我們是通過加快頻率使得人眼看起來是6個數(shù)碼管一起顯示。但是每一位都是顯示的都是同一個內(nèi)容,還沒有分開,所以要用sec_select模塊進行數(shù)據(jù)選擇。我們可以看到現(xiàn)在有6組輸入,以總線的形式輸入到數(shù)選模塊里來,這6組分別代表了六個數(shù)碼管上顯示的數(shù)字,
add端輸入二進制BCD碼與dig_select端保持同步,表示現(xiàn)在在顯示的是哪一個電子管,那么code輸出端就會選擇相應(yīng)的輸入端輸出。(比如add端是000,表示0號數(shù)碼管顯示,code端就會將D0對應(yīng)的sec_ge秒的個位數(shù)字輸出)
(3)整體電路連接
其他用到的還有fre_div模塊、模六計數(shù)器cnt6、code_select/decoder、dig_select模塊
這些在上面都已經(jīng)實現(xiàn)了復(fù)制過來就好。
拓展任務(wù):3:dig_select、decoder和code_select三個模塊做波形仿真。(注意輸入設(shè)置)
這一步就比較簡單了,直接將前面已經(jīng)封裝好的模塊生成相應(yīng)的波形就行。
dig_select
decoder
sec_select
(最后的6個輸入端的數(shù)字是自己輸入的)
以上三個任務(wù)的源文件的鏈接在這里。以后也會更新更多的實驗的,這么好的up主還不趕緊關(guān)注之后白嫖。?文章來源:http://www.zghlxwxcb.cn/news/detail-466741.html
源文件鏈接
鏈接:https://pan.baidu.com/s/1h-XcA9dNkaZXisXnOjWazg
提取碼:2021文章來源地址http://www.zghlxwxcb.cn/news/detail-466741.html
到了這里,關(guān)于實驗三 基于FPGA的數(shù)碼管動態(tài)掃描電路設(shè)計 quartus/數(shù)碼管/電路模塊設(shè)計的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!