作者(zhě):造就(jiù)狂野青(qīng)春
本(běn)文(wén)为(wèi)明(míng)德揚原創及(jí)录(lù)用(yòng)文(wén)章(zhāng),轉(zhuǎn)载請注明(míng)出(chū)处!
一(yī)、總(zǒng)體(tǐ)設計(jì)
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
2)密碼模块(kuài)password.v
3)數碼管(guǎn)顯示模块(kuài)sel_disp.v
4)led模块(kuài)led_flag.v
5)按鍵模块(kuài)key_module.v
5.密碼模块(kuài)核心(xīn)代(dài)碼

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)
6.數碼管(guǎn)顯示

參數化(huà)設置顯示0~F对(duì)應(yìng)的(de)8位數

对(duì)比設置的(de)密碼和(hé)輸入(rù)的(de)密碼是(shì)否一(yī)致(zhì),密碼正(zhèng)确时(shí)數碼管(guǎn)顯示1,否則顯示0;
7.led指示燈(dēng)模块(kuài)

密碼正(zhèng)确时(shí)led_y指示燈(dēng)亮(liàng),否則led_n指示燈(dēng)亮(liàng);
8.按鍵消抖代(dài)碼

利用(yòng)明(míng)德揚的(de)按鍵消抖模块(kuài),每20ms掃描一(yī)次(cì)按鍵輸入(rù)key_in,可(kě)以(yǐ)达(dá)到(dào)消抖的(de)目的(de),再用(yòng)寄存器緩存一(yī)下(xià),按鍵为(wèi)低電(diàn)平有(yǒu)效,所(suǒ)以(yǐ)檢测當檢测到(dào)按鍵有(yǒu)下(xià)降沿變(biàn)化(huà)时(shí),代(dài)表(biǎo)該按鍵被(bèi)按下(xià),按鍵有(yǒu)效,輸出(chū)1;
9、Modelsim仿真(zhēn)验(yàn)證

編写测試文(wén)件(jiàn),添加激勵,这(zhè)里(lǐ)避免长时(shí)間(jiān)仿真(zhēn),需将消抖时(shí)間(jiā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)嘗試吧。








