1.概述
本(běn)文(wén)基于(yú)明(míng)德揚至(zhì)簡設計(jì)法和(hé)明(míng)德揚設計(jì)規範,設計(jì)了(le)一(yī)个(gè)基于(yú)FPGA的(de)數字(zì)密碼鎖,实現(xiàn)了(le)在(zài)撥碼開(kāi)關(guān)条(tiáo)件(jiàn)下(xià),按鍵設置密碼、按鍵輸入(rù)解(jiě)鎖密碼,密碼正(zhèng)确时(shí)正(zhèng)确指示燈(dēng)亮(liàng)、密碼錯誤时(shí)或(huò)者(zhě)默認狀态錯誤指示燈(dēng)亮(liàng),密碼正(zhèng)确时(shí)一(yī)位數碼管(guǎn)顯示1,其他(tā)情(qíng)況顯示0。本(běn)案(àn)例的(de)擴展(zhǎn)和(hé)應(yìng)用(yòng)在(zài)現(xiàn)实生(shēng)活中(zhōng)具有(yǒu)重(zhòng)大意(yì)義。在(zài)本(běn)案(àn)例的(de)設計(jì)过(guò)程中(zhōng),應(yìng)用(yòng)了(le)至(zhì)簡設計(jì)法、計(jì)數器模板應(yìng)用(yòng)等,在(zài)經(jīng)过(guò)逐步改進(jìn)、調試等一(yī)系(xì)列工作之後(hòu),最(zuì)終(zhōng)达(dá)到(dào)了(le)設計(jì)目标(biāo)。
2. 設計(jì)目标(biāo)
(1)实現(xiàn)8位數字(zì)密碼鎖功能(néng)
(2)按鍵1、2設置密碼,按鍵1有(yǒu)效时(shí)設置一(yī)位密碼0,按鍵2有(yǒu)效时(shí)設置一(yī)位密碼1,按下(xià)8次(cì)後(hòu)密碼設置完成(chéng)
(3)按鍵3、4輸入(rù)密碼,按鍵3有(yǒu)效时(shí)輸入(rù)一(yī)位密碼0,按鍵2有(yǒu)效时(shí)輸入(rù)一(yī)位密碼1,按下(xià)8次(cì)後(hòu)密碼輸入(rù)完成(chéng)
(4)比較設置的(de)密碼和(hé)輸入(rù)的(de)密碼是(shì)否相同(tóng),正(zhèng)确时(shí)正(zhèng)确指示燈(dēng)亮(liàng),數碼管(guǎn)顯示1,否則錯誤指示燈(dēng)亮(liàng),數碼管(guǎn)顯示0;
3. 模块(kuài)功能(néng)
1) 密碼模块(kuài)实現(xiàn)功能(néng):
SW1有(yǒu)效时(shí)按鍵1、2設置密碼,按鍵1有(yǒu)效时(shí)設置一(yī)位密碼0,按鍵2有(yǒu)效时(shí)設置一(yī)位密碼1,按下(xià)8次(cì)後(hòu)密碼設置完成(chéng)
SW2有(yǒu)效时(shí)按鍵3、4輸入(rù)密碼,按鍵3有(yǒu)效时(shí)輸入(rù)一(yī)位密碼0,按鍵2有(yǒu)效时(shí)輸入(rù)一(yī)位密碼1,按下(xià)8次(cì)後(hòu)密碼輸入(rù)完成(chéng)
2) 數碼管(guǎn)顯示模块(kuài)实現(xiàn)功能(néng)
密碼正(zhèng)确时(shí)數碼管(guǎn)顯示1,否則顯示0;
3) led模块(kuài)实現(xiàn)功能(néng):
密碼正(zhèng)确时(shí)led_y指示燈(dēng)亮(liàng),否則led_n指示燈(dēng)亮(liàng);
4) 按鍵模块(kuài)实現(xiàn)功能(néng)
将外(wài)来(lái)异(yì)步信(xìn)号(hào)打(dǎ)两(liǎng)拍处理,将异(yì)步信(xìn)号(hào)同(tóng)步化(huà);
实現(xiàn)20ms按鍵消抖功能(néng),并輸出(chū)有(yǒu)效按鍵信(xìn)号(hào);
4. 信(xìn)号(hào)定(dìng)義
1)頂层模块(kuài)Lock_Top.v
信(xìn)号(hào) | 定(dìng)義 |
clk | 系(xì)統时(shí)鐘(zhōng) |
rst_n | 低電(diàn)平複位信(xìn)号(hào) |
key_in | 按鍵輸入(rù) |
sw | 撥碼開(kāi)關(guān) |
led_y | 正(zhèng)确指示燈(dēng) |
led_n | 錯誤指示燈(dēng) |
seg_sel | 數碼管(guǎn)位選信(xìn)号(hào) |
segment | 數碼管(guǎn)顯示信(xìn)号(hào) |
2)密碼模块(kuài)password.v
信(xìn)号(hào) | 定(dìng)義 |
clk | 系(xì)統时(shí)鐘(zhōng) |
rst_n | 低電(diàn)平複位信(xìn)号(hào) |
key_vld | 按鍵有(yǒu)效 |
SW | 撥碼開(kāi)關(guān) |
password_set | 設置的(de)密碼 |
password_shift | 輸入(rù)的(de)密碼 |
3)數碼管(guǎn)顯示模块(kuài)sel_disp.v
信(xìn)号(hào) | 定(dìng)義 |
clk | 系(xì)統时(shí)鐘(zhōng) |
rst_n | 低電(diàn)平複位信(xìn)号(hào) |
password_set | 設置的(de)密碼 |
password_shift | 輸入(rù)的(de)密碼 |
seg_sel | 數碼管(guǎn)位選信(xìn)号(hào) |
segment | 數碼管(guǎn)顯示信(xìn)号(hào) |
4)led模块(kuài)led_flag.v
信(xìn)号(hào) | 定(dìng)義 |
clk | 系(xì)統时(shí)鐘(zhōng) |
rst_n | 低電(diàn)平複位信(xìn)号(hào) |
led_y | 正(zhèng)确指示燈(dēng) |
led_n | 錯誤指示燈(dēng) |
5)按鍵模块(kuài)key_module.v
信(xìn)号(hào) | 定(dìng)義 |
clk | 系(xì)統时(shí)鐘(zhōng) |
rst_n | 低電(diàn)平複位信(xìn)号(hào) |
key_in | 按鍵輸入(rù) |
key_vld | 有(yǒu)效按鍵 |

6.數碼管(guǎn)顯示


7.led指示燈(dēng)模块(kuài)


9、Modelsim仿真(zhēn)验(yàn)證


按鍵2按下(xià)时(shí)設置了(le)一(yī)位密碼1,再按鍵时(shí)設置了(le)两(liǎng)位密碼1;
按鍵4按下(xià)时(shí)輸入(rù)了(le)一(yī)位密碼1,再按鍵时(shí)輸入(rù)了(le)两(liǎng)位密碼1;
設置的(de)密碼和(hé)輸入(rù)的(de)密碼是(shì)否相同(tóng),正(zhèng)确时(shí)正(zhèng)确指示燈(dēng)亮(liàng),數碼管(guǎn)顯示1,否則錯誤指示燈(dēng)亮(liàng),數碼管(guǎn)顯示0;從仿真(zhēn)图(tú)可(kě)以(yǐ)看(kàn)出(chū)符合功能(néng)要(yào)求。
在(zài)这(zhè)个(gè)設計(jì)案(àn)例中(zhōng),至(zhì)簡設計(jì)法和(hé)明(míng)德揚至(zhì)簡法發(fà)揮了(le)至(zhì)關(guān)重(zhòng)要(yào)的(de)作用(yòng),使我(wǒ)能(néng)够快(kuài)速準确完成(chéng)設計(jì)。
本(běn)設計(jì)可(kě)以(yǐ)加以(yǐ)拓展(zhǎn):
1) 可(kě)以(yǐ)結合開(kāi)發(fà)板外(wài)設和(hé)实際情(qíng)況,改變(biàn)設置和(hé)輸入(rù)密碼的(de)方(fāng)式、位數,以(yǐ)及(jí)密碼正(zhèng)确與(yǔ)否的(de)反(fǎn)應(yìng),如(rú)蜂鳴器報警等等。
对(duì)于(yú)初学者(zhě)而(ér)言,流水(shuǐ)燈(dēng)太簡單,複雜項目又太難,不(bù)如(rú)嘗試一(yī)下(xià)这(zhè)些相对(duì)簡單而(ér)又酷炫的(de)案(àn)例,并一(yī)步步拓展(zhǎn)成(chéng)大項目。趕緊動(dòng)手(shǒu)嘗試吧。
温(wēn)馨提(tí)示:明(míng)德揚2023推出(chū)了(le)全(quán)新課程——邏輯設計(jì)基本(běn)功修煉課,降低学習FPGA門(mén)檻的(de)同(tóng)时(shí),增加了(le)学習的(de)趣味性(xìng),并組織了(le)考試赢積分(fēn)活動(dòng)
http://www.minyingyiyuan.com/ffkc/415.html
(點(diǎn)擊→了(le)解(jiě)課程詳情(qíng)☝)感(gǎn)興趣請聯系(xì)易老(lǎo)师(shī):13112063618(微信(xìn)同(tóng)步)