版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Verilog實現(xiàn)密碼箱.功能概述小腳丫開發(fā)板的有 4位撥碼開關(guān),可以表示數(shù)字 0-9,有兩個七段數(shù)碼管,所以密碼設(shè)為兩位( 00—99),初始密碼00,利用四位撥碼開關(guān)(sw)輸入密碼,,按下個位確認按鍵(low),在數(shù)碼管上顯示個位數(shù)字;再次輸入密碼,按下十位確認按鍵 (high),在數(shù)碼管上顯示十位數(shù)字。按下確認按鍵(enter),比較密碼正誤,若正確,實現(xiàn)開鎖功能,用led8燈亮表示;錯誤,實現(xiàn)報錯功能,用ledl燈亮表示;連續(xù)錯三次,實現(xiàn)警報功能,用8個燈全亮表示,此時只有重置(rst)才能重新輸入密碼。初始密碼為21o為保證安全性,只有在開鎖狀態(tài)下,才可修改密碼,修改撥碼開關(guān)數(shù)值, 按下個位確認按鍵(low),設(shè)置新密碼個位,再次修改撥碼開關(guān)數(shù)值,按下個位確認按鍵(high),設(shè)置新密碼十位(實際上兩個位密碼修改與輸入順序不影響) 。再按下重置鍵(rst),即可重新輸入密碼。同時在使用按鍵時,注意到了消抖。.效果展示密碼錯誤密碼正確修改后密碼正確視頻展示(雙擊播放).代碼分析一、密碼顯示在數(shù)碼管上always@(*)〃數(shù)碼管顯示控制模塊begincase(code_low)4'd0:seg_led1=9'b000111111;//數(shù)碼管1顯示04'd1:seg_led1=9'b000000110;//14'd2:seg_led1=9'b001011011;//24'd3:seg_led1=9'b001001111;//34'd4:seg_led1=9'b001100110;//44'd5:seg_led1=9'b001101101;//54'd6:seg_led1=9'b001111101;//64'd7:seg_led1=9'b000000111;//74'd8:seg_led1=9'b001111111;//84'd9:seg_led1=9'b001101111;//9default:seg_led1=9'b100111111;//0endcasecase(code_high)4'd0:seg_led2=9'b000111111;//數(shù)碼管2顯示04'd1:seg_led2=9'b000000110;//14'd2:seg_led2=9'b001011011;//24'd3:seg_led2=9'b001001111;//34'd4:seg_led2=9'b001100110;//44'd5:seg_led2=9'b001101101;//54'd6:seg_led2=9'b001111101;//6beginbegin4'd7:seg_led2=9'b000000111;//74'd8:seg_led2=9'b001111111;//84'd9:seg_led2=9'b001101111;//9default:seg_led2=9'b100111111;//0endcaseend二、密碼比對判斷always@(posedgeclk)//密碼判斷beginif(!rst)beginwrong_cnt<=2'b00; //初始錯誤次數(shù)為 0code_low<=4'b0000;code_high<=4'b0000;led<=8'b11111111;endelseif(low_d)begincode_low<=sw;endelseif(high_d)code_high<=sw;endelseif(enter_d)beginif(wrong_cnt!=2'd2)beginif((code_low==Y&&code_high==X)||(code_low==newcode_low&&code_high==newcode_high))beginled<=8'b01111111; //密碼正確, led8亮wrong_cnt<=2'd0;endelsebeginled<=8'b11111110;//密碼錯誤, led1亮錯誤次數(shù)加一wrong_cnt<=wrong_cnt+1;endendelseled<=8'b00000000; //密碼輸錯三次,報警endend三、密碼修改實現(xiàn)//修改控制模塊always@(posedgeclk)beginif(!rst)change<=0;elseif(led<=8'b01111111)change<=1;if(change==1&&high_d)beginnewcode_high<=sw;endelseif(change==1&&low_d)beginnewcode_low<=sw;endendendmodule四、按鍵消抖實現(xiàn)//按鍵消抖模塊moduledebounce(clk,rst,key,key_pulse);beginbeginparameterN=2;按鍵的數(shù)量input clk;input rst;input[N-1:0]key;//輸入的按鍵生的脈沖//parameterN=2;按鍵的數(shù)量input clk;input rst;input[N-1:0]key;//輸入的按鍵生的脈沖//要消除的output[N-1:0]key_pulse;//按鍵動作產(chǎn)reg [N-1:0] key_rst_pre;存器型變量存儲上一個觸發(fā)時的按鍵值reg [N-1:0] key_rst;存器變量儲存儲當前時刻觸發(fā)的按鍵值//定義一個寄//定義一個寄wire[N-1:0]key_edge;//檢測到按鍵由高到低變化是產(chǎn)生一個高脈沖//利用非阻塞賦值特點,將兩個時鐘觸發(fā)時按鍵狀態(tài)存儲在兩個寄存器變量中always@(posedgeclkornegedgerst)if(!rst)beginkey_rst<={N{1'b1}}; //初始化時給key_rst賦值全為 1,{}中表示N個1key_rst_pre<={N{1'b1}};endelsebeginkey_rst<=key; //第一個時鐘上升沿觸發(fā)之后key的值賦給 key_rst,同時key_rst的值賦給 key_rst_prekey_rst_pre<=key_rst; //非阻塞賦值。相當于經(jīng)過兩個時鐘觸發(fā), key_rst存儲的是當前時刻 key的值,key_rst_pre存儲的是前一個時鐘的 key的值endendassignkey_edge=key_rst_pre&(~key_rst);//脈沖邊沿檢測。當key檢測到下降沿時, key_edge產(chǎn)生一個時鐘周期的高電平reg[17:0]cnt; //產(chǎn)生延時所用的計數(shù)器,系統(tǒng)時鐘12MHz,要延時20ms左右時間,至少需要18位計數(shù)器//產(chǎn)生 20ms延時,當檢測到 key_edge有效是計數(shù)器清零開始計數(shù)always@(posedgeclkornegedgerst)beginif(!rst)cnt<=18'h0;elseif(key_edge)cnt<=18'h0;elsecnt<=cnt+1'h1;endreg[N-1:0]key_sec_pre; //延時后檢測電平寄存器變量reg[N-1:0]key_sec;〃延時后檢測key,如果按鍵狀態(tài)變低產(chǎn)生一個時鐘的高脈沖。如果按鍵狀態(tài)是高的話說明按鍵無效always@(posedgeclkornegedgerst)beginif(!rst)key_sec<={N{1'b1}};elseif(cnt==18'h3ffff)key_sec<=key;
endalways@(posedgeclkornegedgerst)beginif(!rst)key_sec_pre<={N{1'b1}};elsekey_sec_pre<=key_sec;endassignkey_pulse=key_sec_pre&(~key_sec);endmodule.附錄,源碼圖以及源碼1011121J14151617Ifi20input?Inputinputinput?inputIinputou(putCHItputclk,L:Jrat,Pnt產(chǎn)r.high,Ton.二上 〃巴也猥購升去.用作十E■忸機“復(fù)仁理//S?心棉],爐化麗“TH輔人感“二[7:01ledb "八位賽萼燈.IMS元上項姆木燈?ledl^SiMWTiTreg[8:n]sefljedl,"才肯,二七村reg[8::i]seq.ledJ造吐者上十?勺罡心wnreenterd;low_d;w貓,電X=.J"; //堀什初用不剛Y=4'd(r;wrongrrnt;1/key[3]確■認定招鞘A/AeylU「恒恨認//IteyPI十世稠Mr'ecj[:]CQde_lorf;regL-Jcode_high;,/虢計皆誤談鼓粗筆嶼regcharge;reg[?;<1]nEwcodrg[3:O1newcodB同憶周先咕手指名'//<J匕注匕。-.:',二.Iqg//更新唱UTCI-high;//更新鉛制十位dtlxMinc?r(.Nf))uie(相3132M.tlk<clk),.rst(ntjf.key(〔甘r】k?r.iQw.High】),.key.jiulseC{eflterjd,laf_dhhighL.<J!)“辨招首戰(zhàn)不注制福旗ElbtC|111<_a9e〔(_ude_l口w;',.<:Eftg_ledl=?r:0 ?WHWUltO4'dliseg_ledU9'b(XXHK)0110;//I?*/F-ar11VBHj-arlt-JR1LlPWIOl1DI1-Z713839404142434445464748495051535455565758596061621end4rd::seg_ledl-r*,b000000:10;//l4'd?:SGg_ledl=I11;〃24'd3:seg_1edl=M*I(kn()ol'11;//3i:seg_ledl i;〃4I'dSzseg-ledl-g'bOOIi:;//54*d6:sefl_ledl=9'b0011U101;//64,d「:seg_ledl=9*b0000?>0111;//74#d8:SGg_ledl=9?bOOlllllll;//84*d9:seg_ledl>9'bOOl101.11;//9default:seg.ledl?o,i<i.ni;//Oendcasecase(codeJiigh)):seg_led2>9'bOOOllllll; 2顯于0:segJled2=Q'bcoo()ci;’14"d2:sefl_led2=9?bOOlOUOll;//24*d3:seg_led2=9*bOOlOOllll;//34'd4:seg_led2?''bOOll00ilo;//44*d5:seg.lod?-r,bOOl101.0:;//54"d6:seg.led2=<*'L()(n1w;〃64,d,:seo_led2=9*l(xxxMom;//74,dK:seg_led2=9*bOOlllllll;//8i19:se9_led?,I“III;〃9default:sea_1e(i2=9'blOOllllll;//0endcase63646566676869707172737475alwaysA(posedg?elk)〃密的西盼Eboqinif(!rst)Ebeginwrong_cnt<?2,1)00;〃初3重囊次以為0code-low<-^'boooo;code_high<?41bOOOO;[ed<=tTbllLLLlJLl;endelseifbegincode_l(M<=sw;end 767776777879808182838485868788899091929394959697989910010110?103104105106107108109110111112Lend〃修改控制較洋endelseif(high_d)begincodeJiigh<-sw;endelseif(entered)beginif(wrong_cnt!?2,d2)beginif((code_)ow==Y&&code_high==x)II(code_low==ne^code.loH&&code__hiqh==newcodeJiigh))beginled<=H,b01111111;wrong-cnt<=?,dCi;endelsebeginled<=8*blllllllO;wrong_cnt<-wrong_cnt+l;endendelseled<^'bo?(MMX)0;endalways€(posedgeelk)beginchange<=D;elseifUed^'bOllLllll)chanqe<?l;if(chanqe==l&&high_.d)beginnewcodeJiigh<=sw;endelseif(chanqp==&&low_d)beginnewcode_low<=sw;112m114】i$1H5end
MPneIIN:idul^?ndnewc-a<le_lOwqT.;nt8119no12112?12112-01VS12=6IXnaIN1301111J;1311J4ns136137134IM14fl141M2Hi144BIE-E"岫'通酒牌S步■cduleriebauncQCcHk?r^t?k<ypkey^fKi1se),&ar^?t?r*=2;input elk;Input rt;Input[M-l:Qjkey:output[M-Liujket_p<jdse-regrtflM-1;I]N-l:Hk€y_r5t_pre;HI01N-LiUJkeyjjge;3噂布味的覆也由普?M的百町//恃龍力忙產(chǎn)生田帽佯,,r定:只一十寄將科戛三巾阡找上一,色墨用田r=惚曾rW\需評2:登?儲源諱」工I盯刑檢瓦明尸怛情"性弟到在轅蟲渴到也變也是產(chǎn)生一代M仲鞫,,軸.用非田基/11轉(zhuǎn)*…杵腦十綱"獨友時按例獷忠后能在向T番存苦至重中dl^Tyl4>(p4&ed^eelkorriegeO9erst)beginifClqt)key_rst.■{h{l'bl)}: //fl>r+C.W&key_rstfcttii-^:5^1.□中表:rW1t*y_^tjore—[N(l!bl});e<wJelsekey_rst<-key; "第一i.酎國上斗沿陰生之后It今的,賊笫長勢二一。同時k寸」rt的耨!fil&kj—rslzArek*y_rt_pe十三 //JEiftBllta.r電為十拄耳的T^T和■曳.Hy_rt用嘀時電:iffTfitJlkeMFfGkey_r5t_jprffffendend方加:鵬9124455?方加:鵬9124455?Hg0I2¥4$屯-T9O12R436-444445555555555取標6和-套幣件b_<>相?1T—?|7177—71711XIIninnllull-TJ1111-311111-U11ksI聊key_Wq0=ke^_rst_pr?&(-key_rst>:3f■:■一冶仁機.二kq苣浦siI?碌於時-K鈔)他產(chǎn)生一r時(周期田島里十ng[[1/Li!) oil; 〃江主建時甘■用的甘微片?熟HM寸腫L?MHa-型/用上X左右時回:至少靠要強\|1/FS?0*sBW.甘。制劑k的期那而"呈,斜耳滑雪葉防士Malwaysfl(posedgeelkor打■e口紀dgrst)ifCBrst)mt<-Who;pls.eif(kff/.edge)ent<=Lft'hO;至h電cM?.ent+L4hl;eiidreg [W-l;(}1 Kev/M」pre; //r@g [N<:UJ k^y_Sfr£-丁征BT后法新keiy■如平斤謔怙芒開個產(chǎn)生一7田1河EF高艷桿aluuysAtpo&ed^eelkorneged9erat)*gi)nifClrstJkey_sec<*(攻1/【)上eUeif(cut-:-/iit-:ff)key.sec<-key;Talw^^sStp^jsedoecllkorneoedgierst)LMtiliiifC!rst)key_sec_prev-{n{:'Ll}};廿key_sec_j>n?<-k^y_se£]Mlfcey^Lil&e-lGey_^?_pre&t-key_sec);〃頂層模塊modulesafebox_plus(inputclk,input[3:0]sw,〃四位撥碼開關(guān),用作十進制密碼inputrst, 〃復(fù)位鍵inputenter, 〃密碼確認鍵inputhigh, 〃十位輸入鍵inputlow, 〃個位輸入鍵outputreg[7:0]led, 〃八位報警燈,led8為正確提示燈,led1為錯誤提示燈outputreg[8:0]seg_led1, //數(shù)碼管 1顯示個位密碼outputreg[8:0]seg_led2 //數(shù)碼管 2顯示十位密碼);parameterX=4'd0; //用作初始密碼parameterY=4'd0;wireenter_d;//key[3]確認密碼輸入wirelow_d; //key[1]個位確認wirehigh_d; //key[2]十位確認reg[1:0]wrong_cnt; //統(tǒng)計錯誤次數(shù)reg[3:0]code_low; //個位密碼reg[3:0]code_high; //十位密碼regchange; //可修改密碼狀態(tài)reg[3:0]newcode_low; //更新密碼個位reg[3:0]newcode_high;//更新密碼十位//例化調(diào)用消抖模塊debounce#(.N(3))u1(.clk(clk),.rst(rst),.key({enter,low,high}),.key_pulse({enter_d,low_d,high_d}));always@(*)//數(shù)碼管顯示控制模塊begincase(code_low)4'd0:seg_led1=9'b000111111;//數(shù)碼管1顯示04'd1:seg_led1=9'b000000110;//14'd2:seg_led1=9'b001011011;//24'd3:seg_led1=9'b001001111;//34'd4:seg_led1=9'b001100110;//44'd5:seg_led1=9'b001101101;//54'd6:seg_led1=9'b001111101;//64'd7:seg_led1=9'b000000111;//74'd8:seg_led1=9'b001111111;//84'd9:seg_led1=9'b001101111;//9default:seg_led1=9'b100111111;//0endcasecase(code_high)4'd0:seg_led2=9'b000111111;//數(shù)碼管2顯示04'd1:seg_led2=9'b000000110;//14'd2:seg_led2=9'b001011011;//24'd3:seg_led2=9'b001001111;//34'd4:seg_led2=9'b001100110;//44'd5:seg_led2=9'b001101101;//54'd6:seg_led2=9'b001111101;//64'd7:seg_led2=9'b000000111;//74'd8:seg_led2=9'b001111111;//84'd9:seg_led2=9'b001101111;//9default:seg_led2=9'b100111111;//0endcaseendalways@(posedgeclk)//密碼判斷beginif(!rst)beginwrong_cnt<=2'b00; //初始錯誤次數(shù)為 0code_low<=4'b0000;code_high<=4'b0000;led<=8'b11111111;endelseif(low_d)begincode_low<=sw;endelseif(high_d)begincode_high<=sw;endelseif(enter_d)beginif(wrong_cnt!=2'd2)beginif((code_low==Y&&code_high==X)||(code_low==newcode_low&&code_high==newcode_high))beginled<=8'b01111111;wrong_cnt<=2'd0;endelsebeginled<=8'b11111110;wrong_cnt<=wrong_cnt+1;endendendmoduleendmoduleelseled<=8'b00000000;endend//修改控制模塊always@(posedgeclk)beginif(!rst)change<=0;elseif(led<=8'b01111111)change<=1;if(change==1&&high_d)beginnewcode_high<=sw;endelseif(change==1&&low_d)beginnewcode_low<=sw;endend//按鍵消抖模塊moduledebounce(clk,rst,key,key_pulse);parameterN=2;按鍵的數(shù)量input clk;input rst;input[N-1:0]key;//輸入的按鍵//按鍵消抖模塊moduledebounce(clk,rst,key,key_pulse);parameterN=2;按鍵的數(shù)量input clk;input rst;input[N-1:0]key;//輸入的按鍵生的脈沖output[N-1:0]key_pulse;//按鍵動作產(chǎn)//要消除的reg [N-1:0] key_rst_pre;存器型變量存儲上一個觸發(fā)時的按鍵值reg [N-1:0] key_rst;存器變量儲存儲當前時刻觸發(fā)的按鍵值//定義一個寄//定義一個寄wire[N-1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職幼兒護理基礎(chǔ)(護理基礎(chǔ))試題及答案
- 2025年大學(xué)本科(旅游管理)旅游市場開發(fā)階段測試題及答案
- 2025年大學(xué)大一(水族科學(xué)與技術(shù))水族生物學(xué)基礎(chǔ)試題及答案
- 2025年大學(xué)大三(中醫(yī)學(xué))中醫(yī)內(nèi)科學(xué)基礎(chǔ)試題及答案
- 2025年高職表演藝術(shù)(影視表演技巧)試題及答案
- 2025年大學(xué)工程造價(工程管理)試題及答案
- 2025年中職(木材加工技術(shù))木材切削加工實操測試題及答案
- 2025年高職(空中乘務(wù))航空安全模擬試題
- 橡膠育苗工成果能力考核試卷含答案
- 化學(xué)檢驗員安全文化知識考核試卷含答案
- 國考題庫文件下載及答案詳解(歷年真題)
- 16《我的叔叔于勒》公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 骨科備皮課件
- 商品有機肥施肥施工方案
- 職工代表知識培訓(xùn)內(nèi)容課件
- 2025至2030中國酒店行業(yè)市場現(xiàn)狀分析及有效策略與實施路徑評估報告
- 黑龍江省安全文明施工費管理辦法
- T-CISIA 010-2025 生物刺激素 微生物功能性代謝物通則
- 浙江省杭州市蕭山區(qū)2024-2025學(xué)年六年級上學(xué)期語文期末試卷
- 高中語文統(tǒng)編教材全5冊古代詩歌梳理
- 2024年江蘇省灌云縣衛(wèi)生系統(tǒng)公開招聘麻醉醫(yī)師試題帶答案
評論
0/150
提交評論