2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  基于Verilog HDL的FPGA的電子密碼鎖的設(shè)計(jì)報(bào)告</p><p>  摘要:基于FPGA設(shè)計(jì)的電子密碼鎖是一個(gè)小型的數(shù)字系統(tǒng),與普通機(jī)械鎖相比,具有許多獨(dú)特的優(yōu)點(diǎn):保密性好,防盜性強(qiáng),可以不用鑰匙,記住密碼即可開(kāi)鎖等。目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件。在實(shí)際應(yīng)用中,程序容易跑飛,系統(tǒng)的可靠性較差。本文介紹的一種基于現(xiàn)場(chǎng)可編輯門(mén)陣列FPGA器件的電子密碼

2、鎖的設(shè)計(jì)方法,采用VHDL語(yǔ)言對(duì)系統(tǒng)進(jìn)行描述,并在EP3C10E144C8上實(shí)現(xiàn)。</p><p>  通過(guò)仿真調(diào)試,利用可編程邏輯器件FPGA的電子密碼鎖的設(shè)計(jì)基本達(dá)到了預(yù)期目的。當(dāng)然,該系統(tǒng)在一些細(xì)節(jié)的設(shè)計(jì)上還需要不斷地完善和改進(jìn),特別是對(duì)系統(tǒng)的擴(kuò)展有很好的使用系統(tǒng)和設(shè)計(jì)的價(jià)值。</p><p>  關(guān)鍵詞:現(xiàn)場(chǎng)可編程門(mén)陣列;VHDL語(yǔ)言;電子密碼鎖</p><p&

3、gt;  The Report Of Electronic Code Lock Design</p><p>  Abstract:FPGA-based design of the electronic code lock is a small digital system. It has many unique advantages:good privacy and security , it do not n

4、eed the key but remember password to unlock, and so on while it compare to ordinary mechanical locks. At present, the electronic code lock is most used of SCM technology .In practice, however, the process easy run to fly

5、. So the reliability of this system is poor. The paper introduced a field programmable gate arrays FPGA devices to design electro</p><p>  Though the simulation tests, using FPGA-based design of the electron

6、ic code lock can achieve the expected goal. Of course, some of the details of the system in the design of the need to constantly refined and improved, in particular the expansion of the system have a good design and prac

7、tical value.</p><p>  Keyword: FPGA; VHDL language; electronic password lock</p><p><b>  一、設(shè)計(jì)內(nèi)容與要求</b></p><p>  設(shè)計(jì)一個(gè)密碼鎖,密碼為一個(gè)4位的十進(jìn)制數(shù),密碼固化在鎖內(nèi) </p&g

8、t;<p>  用戶(hù)輸入密碼正確,則開(kāi)鎖(試驗(yàn)箱D7 LED燈亮);若不正確,則報(bào)警(試驗(yàn)箱D0 LED燈亮) </p><p>  若用戶(hù)輸入密碼不正確,可以按復(fù)位鍵重新輸入密碼。

9、 </p><p><b>  二、設(shè)計(jì)思想</b></p><p>  2.1 系統(tǒng)原理框圖</p><p>  本系統(tǒng)由主控芯片(FPGA),鍵盤(pán),顯示電路,報(bào)警電路和開(kāi)/關(guān)門(mén)電路組成,而主控芯片又可分為按鍵處理部

10、分,控制部分和譯碼顯示部分。系統(tǒng)原理框圖如圖2.1所示:</p><p><b>  圖2.1 系統(tǒng)框圖</b></p><p>  2.2 總體實(shí)現(xiàn)原理</p><p>  本系統(tǒng)有8個(gè)按鍵,K0,K1,K2,K3,K4,K5代表數(shù)字0-9共10個(gè)數(shù)字和1個(gè)確認(rèn)鍵,1個(gè)復(fù)位鍵。密碼長(zhǎng)度為四位,并且固化在鎖內(nèi),輸入正確密碼后,按確認(rèn)鍵即可開(kāi)門(mén),

11、本系統(tǒng)設(shè)置為L(zhǎng)ED D7燈亮。在輸入密碼的過(guò)程中,當(dāng)用戶(hù)鍵入錯(cuò)誤密碼時(shí),報(bào)警燈LED D0燈亮。按下復(fù)位鍵,可使報(bào)警停止,同時(shí)清除所有密碼顯示。</p><p><b>  三、芯片主控設(shè)計(jì)</b></p><p>  3.1 FPGA有限狀態(tài)機(jī)</p><p>  本設(shè)計(jì)是通過(guò)FPGA有限狀態(tài)機(jī)來(lái)實(shí)現(xiàn),設(shè)計(jì)有限狀態(tài)機(jī)最開(kāi)始的工作時(shí)要確定電路,

12、包括哪些狀態(tài),比如某個(gè)電路包括四個(gè)狀態(tài),S0,S1,S2,S3。然后對(duì)所有狀態(tài)給出一個(gè)狀態(tài)編碼,比如為狀態(tài)S0賦予編碼00,為狀態(tài)S1賦予編碼01,為狀態(tài)S2賦予編碼10,為狀態(tài)S3賦予編碼11。狀態(tài)編碼是狀態(tài)的標(biāo)識(shí),保存在寄存器當(dāng)中,對(duì)于此編碼形式,只需一個(gè)2位的寄存器就可以了。</p><p>  FSM Encoding Style 主要有:</p><p>  Binary Enc

13、oding </p><p>  One Hot Encoding </p><p>  Gray Encoding </p><p>  二進(jìn)制與一位熱碼的特性比較:</p><p>  表3.1 二進(jìn)制與一位熱碼的特性比較</p><p>  狀態(tài)機(jī)可以認(rèn)為是組合邏輯和寄存器邏輯的特殊租戶(hù),它一般包括兩個(gè)

14、部分:組合邏輯部分和寄存器邏輯部分。寄存器用于存儲(chǔ)狀態(tài),組合電路用于狀態(tài)譯碼和產(chǎn)生輸出信號(hào)。狀態(tài)機(jī)的下一個(gè)狀態(tài)及輸出,不僅與輸入信號(hào)有關(guān),而且還有寄存器當(dāng)前所處的狀態(tài)有關(guān)。</p><p>  根據(jù)輸出信號(hào)產(chǎn)生方法的不同,狀態(tài)機(jī)可以分成兩類(lèi):Mealy型和Moore型。Moore型狀態(tài)機(jī)的輸出只是當(dāng)前狀態(tài)的函數(shù),而Moore型狀態(tài)機(jī)的輸出只是當(dāng)前狀態(tài)的函數(shù),而Mealy型狀態(tài)機(jī)的輸出則是當(dāng)前狀態(tài)和當(dāng)前輸入狀態(tài)的函

15、數(shù)。其原理如下兩圖:</p><p>  圖3.1Mealy型狀態(tài)機(jī)輸出原理</p><p>  圖3.2 Moore型狀態(tài)機(jī)輸出原理</p><p><b>  3.2設(shè)計(jì)流程</b></p><p>  本次密碼鎖的設(shè)計(jì),有限狀態(tài)機(jī)應(yīng)該包括以下?tīng)顟B(tài):密碼為輸入前的等待狀態(tài)、輸入密碼時(shí)的等待狀態(tài)、輸入密碼正確時(shí)的通

16、過(guò)狀態(tài)、輸入密碼錯(cuò)誤時(shí)的警報(bào)狀態(tài)。</p><p>  圖3.3 主有效狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖</p><p>  其中當(dāng)密碼輸入時(shí)又可包括以下?tīng)顟B(tài),正常輸入狀態(tài)、異常輸入狀態(tài)(包括命令狀態(tài))、輸入確認(rèn)狀態(tài)。</p><p>  下面的圖(圖是在程序編譯后,tools->Netlist_Vewers->RTL Vewer得到的)表示了密碼輸入的時(shí)候的次狀

17、態(tài)機(jī),表示了4個(gè)密碼輸入的順序狀態(tài),以及輸入完成后的等待確認(rèn)狀態(tài)。</p><p>  圖3.4次有效狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換</p><p><b>  3.3狀態(tài)編碼</b></p><p>  狀態(tài)編碼主要有二進(jìn)制編碼、格雷編碼和一位獨(dú)熱編碼等方式。</p><p>  格雷編碼時(shí),相鄰狀態(tài)每次只有一個(gè)比特位產(chǎn)生變化,這樣

18、減少了瞬變的次數(shù),也減少了產(chǎn)生毛刺和一些狀態(tài)的可能。</p><p>  采用一位獨(dú)熱編碼,雖然多用了觸發(fā)器,當(dāng)可以有效節(jié)省和簡(jiǎn)化組合電路。對(duì)于寄存器數(shù)量多而邏輯相對(duì)缺乏的FPGA器件來(lái)說(shuō),采用一位獨(dú)熱編碼可以有效提高電路的速度和可靠性,也有利于提高器件資源的利用率。</p><p>  將產(chǎn)生狀態(tài)的組合邏輯電路和用于保存狀態(tài)的寄存器分別寫(xiě)在不同的always塊中。其中主要包括:輸出控制部

19、分、警報(bào)計(jì)時(shí)部分、鎖打開(kāi)后的計(jì)時(shí)部分、比較密碼部分、記錄密碼部分和記錄錯(cuò)誤次數(shù)的部分</p><p><b>  3.4密碼的輸入</b></p><p>  本次密碼鎖的密碼輸入采用FPGA芯片上的8位單個(gè)按鍵,考慮到按鍵數(shù)目不夠,采用了一位按鍵作為功能轉(zhuǎn)換按鍵;即前5位按鍵輸入0~4,同時(shí)按下功能轉(zhuǎn)換按鍵時(shí),按鍵0~4即轉(zhuǎn)換為按鍵5~9,這就彌補(bǔ)了按鍵數(shù)目的不足。

20、最后兩位按鍵設(shè)定為確認(rèn)輸入按鍵和復(fù)位按鍵。密碼輸入完成后可以按確認(rèn)鍵檢驗(yàn)密碼的正誤,報(bào)警、輸入錯(cuò)誤或者其他情況可以按復(fù)位按鍵重新輸入。</p><p>  另外由于按鍵的時(shí)候同時(shí)會(huì)引起狀態(tài)機(jī)的轉(zhuǎn)換,所以如果按鍵的時(shí)候?qū)Π存I判斷次數(shù)過(guò)多會(huì)產(chǎn)生狀態(tài)的過(guò)快轉(zhuǎn)換,記錄的密碼和數(shù)碼管的顯示就同時(shí)會(huì)出現(xiàn)錯(cuò)誤,因此在按鍵部分加入了消除多重按鍵的程序,只檢測(cè)一次按鍵的下降沿,解決了這個(gè)問(wèn)題。</p><p&g

21、t;  3.5 密碼記錄與比較</p><p>  程序設(shè)定了一個(gè)寄存器用來(lái)記錄輸入的密碼。當(dāng)次有效狀態(tài)機(jī)(即密碼輸入的狀態(tài)機(jī))發(fā)生轉(zhuǎn)換并且有密碼輸入時(shí),程序會(huì)記錄下輸入的密碼在寄存器的其中4位里面,最后次有效狀態(tài)轉(zhuǎn)換到確認(rèn)密碼的狀態(tài)時(shí),會(huì)將記錄下的密碼與固化在鎖內(nèi)的密碼進(jìn)行對(duì)比,正確即將主狀態(tài)機(jī)轉(zhuǎn)換到通過(guò)階段,錯(cuò)誤則將狀態(tài)機(jī)轉(zhuǎn)換到報(bào)警階段。其中正確錯(cuò)誤的狀態(tài)轉(zhuǎn)換是通過(guò)控制相應(yīng)的標(biāo)志位實(shí)現(xiàn)的。</p>

22、<p><b>  3.6密碼的顯示</b></p><p>  密碼顯示采用數(shù)碼管動(dòng)態(tài)掃描顯示,初始時(shí)顯示密碼為4位0,當(dāng)輸入密碼后數(shù)碼管的第一位、第二位、第三位、第四位會(huì)依次顯示輸入的密碼,錯(cuò)誤后復(fù)位可以重新輸入。密碼顯示采用的是記錄密碼的寄存器的數(shù)據(jù),顯示掃描的掃描時(shí)間設(shè)置為1ms左右,這樣顯示不會(huì)出現(xiàn)閃爍或者殘影。</p><p><b&g

23、t;  四、程序仿真</b></p><p>  下前面的輸入cmd的編碼:</p><p>  //輸入的數(shù)字編碼 0~9,enter,cancel</p><p>  one=4'b0001, two=4’b0010,three=4'b0011,four=4'b0100,five=4'b0101,</p>

24、<p>  six=4'b0110,seven=4'b0111,eight=4'b1000,nine=4'b1001,</p><p>  zero=4'b1000,enter=4'b1010,cancel=4'b1011;</p><p>  可以看到,在復(fù)位以后,輸入第1,2,3,4個(gè)密碼(依次為1111)后,pass

25、ed變成高電平</p><p>  當(dāng)過(guò)了一定的時(shí)間后,passed變成低電平,重新計(jì)入鍵盤(pán)讀入值,進(jìn)行下一輪的密碼辨別。</p><p><b>  五、程序清單</b></p><p>  module passwd_lock(</p><p><b>  clk0,</b></p&

26、gt;<p><b>  passed,</b></p><p><b>  one1,</b></p><p><b>  two1,</b></p><p><b>  three1,</b></p><p><b>  fou

27、r1,</b></p><p><b>  zero1,</b></p><p><b>  change,</b></p><p><b>  yes,</b></p><p><b>  resetb,</b></p><

28、;p><b>  seg,</b></p><p><b>  dig</b></p><p><b>  );</b></p><p>  input one1,two1,three1,four1,zero1,change;</p><p>  reg zero,o

29、ne,two,three,four;</p><p>  input yes; </p><p>  inputresetb;//輸入復(fù)位信號(hào)</p><p>  inputclk0;//輸入時(shí)鐘信號(hào)</p><p>  output[7:0]passed;//輸出信號(hào)</p><p>

30、  output [7:0] seg;//////段選</p><p>  output [7:0] dig;//////位選</p><p>  reg [3:0] key;</p><p>  reg RXBuf0,RXBuf1,RXBuf2,RXBuf3,RXBuf4;</p><p><b>  //display</

31、b></p><p>  reg clk0_div;</p><p>  reg [2:0] digyi;////////////yiwei////</p><p>  reg [7:0] dig;/////////////weixuan</p><p>  reg [3:0] seg0;/////////////duanxuan<

32、;/p><p>  reg [7:0] seg;</p><p>  reg [12:0] CNT_R0;</p><p>  reg [18:0] CNT_R1;</p><p><b>  reg clk1;</b></p><p>  reg [21:0] CNT_R2;</p>

33、<p><b>  reg clk2;</b></p><p>  reg[7:0]passed;</p><p>  /*輸入與輸出的聲明部分,其中,clk0為輸入的時(shí)鐘信號(hào),resetb為密碼舒服的輸入信號(hào),key為輸入命令,</p><p>  需注意的時(shí),key并不是總在表示密碼,也表示密碼的間隔,如當(dāng)輸入4位密碼后需

34、要一個(gè)確認(rèn)“enter”信號(hào),</p><p>  當(dāng)密碼輸入錯(cuò)誤時(shí),需要取消“cancel”信號(hào),這些信號(hào)之間在設(shè)計(jì)中通過(guò)有限狀態(tài)轉(zhuǎn)換機(jī)實(shí)現(xiàn)。*/</p><p>  parameterPASSWORD=16'b0001000100010001;//盛放密碼的參數(shù)</p><p>  reg[15:0]password;//輸入數(shù)值盛放寄存器&l

35、t;/p><p><b>  //輸入的數(shù)字編碼</b></p><p>  always @( posedge clk1 ) begin//檢測(cè)線(xiàn)路的下降沿</p><p>  RXBuf1 <= one1;</p><p>  one <= ~(RXBuf1 & ( ~one1 ));</p

36、><p>  //RXFall1<=RXFall;</p><p><b>  end</b></p><p><b>  //消除多重按鍵</b></p><p>  always @( posedge clk1 ) begin//檢測(cè)線(xiàn)路的下降沿</p><p>

37、  RXBuf0 <= zero1;</p><p>  zero <= ~(RXBuf0 & ( ~zero1 ));</p><p>  //RXFall1<=RXFall;</p><p><b>  end</b></p><p><b>  //消除多重按鍵</b&g

38、t;</p><p>  always @( posedge clk1 ) begin//檢測(cè)線(xiàn)路的下降沿</p><p>  RXBuf2 <= two1;</p><p>  two <= ~(RXBuf2 & ( ~two1 ));</p><p>  //RXFall1<=RXFall;</p&g

39、t;<p><b>  end</b></p><p><b>  //消除多重按</b></p><p>  always @( posedge clk1 ) </p><p>  begin//檢測(cè)線(xiàn)路的下降沿</p><p>  RXBuf3 <= three1;<

40、;/p><p>  three <= ~(RXBuf3 & ( ~three1 ));</p><p>  //RXFall1<=RXFall;</p><p><b>  end</b></p><p><b>  //消除多重按鍵</b></p><p>

41、;  always @( posedge clk1 )</p><p>  begin//檢測(cè)線(xiàn)路的下降沿</p><p>  RXBuf4 <= four1;</p><p>  four <= ~(RXBuf4 & ( ~four1 ));</p><p>  //RXFall1<=RXFall;</

42、p><p><b>  end</b></p><p><b>  //消除多重按鍵</b></p><p>  reg[2:0]main_state;//主狀態(tài)</p><p>  reg[2:0]next_state;//下一個(gè)狀態(tài)</p><p>  //主

43、有限狀態(tài)轉(zhuǎn)換機(jī)的三個(gè)狀態(tài):waits、pass、alarm</p><p>  parameterwaits=3'b001,</p><p>  pass=3'b010,</p><p>  alarm=3'b100;</p><p>  reg[2:0]sub_state;</p><p

44、>  reg[2:0]next_sub_state;</p><p>  //主有限狀態(tài)轉(zhuǎn)換機(jī)的三個(gè)狀態(tài):first、second、third、fourth、finish。</p><p>  parameterfirst=3'b000,</p><p>  second=3'b001,</p><p>  t

45、hird=3'b010,</p><p>  fourth=3'b011,</p><p>  finish=3'b100;</p><p><b>  //通過(guò)計(jì)時(shí)寄存器</b></p><p>  reg[7:0]pass_count;</p><p><b

46、>  //警報(bào)計(jì)時(shí)寄存器</b></p><p>  reg[10:0]alarm_count;</p><p><b>  //嘗試次數(shù)寄存器</b></p><p>  reg[1:0]try_count;</p><p>  //輸入狀態(tài)寄存器:error和correct</p&

47、gt;<p>  regerror;</p><p>  regcorrect;</p><p>  //以上為中間狀態(tài)的一些寄存器和一些所用到的參數(shù)</p><p><b>  //主機(jī)狀態(tài)機(jī)部分</b></p><p>  always @(posedge clk0)</p>

48、<p><b>  begin</b></p><p>  CNT_R2 <= CNT_R2 + 1'b1;</p><p>  if(CNT_R2 < 4000000)</p><p><b>  begin</b></p><p>  clk1 <= 1;&l

49、t;/p><p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  clk1 <= 0;</p><p><b>  end</b><

50、;/p><p><b>  end</b></p><p>  always@(main_state or correct or error)</p><p><b>  begin</b></p><p>  case(main_state)</p><p><b>

51、  waits:</b></p><p>  if(correct==1) //由waits轉(zhuǎn)換到pass的條件</p><p>  next_state=pass;</p><p>  else if(error==1&&try_count==1)</p><p>  next_state=alarm; //由w

52、aits轉(zhuǎn)換到alarm的條件</p><p><b>  else</b></p><p>  next_state=waits;</p><p><b>  pass:</b></p><p>  if(pass_count[7]==1)//由pass轉(zhuǎn)換到waits的條件</p>

53、<p>  next_state=waits;</p><p><b>  else</b></p><p>  next_state=pass;</p><p><b>  alarm:</b></p><p>  if(alarm_count[10]==1)// 由alarm轉(zhuǎn)換到w

54、aits的條件</p><p>  next_state=waits;</p><p><b>  else</b></p><p>  next_state=alarm;</p><p>  default://默認(rèn)狀態(tài):waits</p><p>  next_state=waits;<

55、/p><p><b>  endcase</b></p><p><b>  end</b></p><p><b>  //狀態(tài)轉(zhuǎn)換</b></p><p>  always@(posedge clk1 or negedge resetb)</p><p>

56、;<b>  begin</b></p><p>  if(!resetb)</p><p>  main_state<=waits;</p><p><b>  else</b></p><p>  main_state<=next_state;</p><p>

57、;<b>  end</b></p><p><b>  //輸出控制部分</b></p><p>  always@(posedge clk1 or negedge resetb)</p><p><b>  begin</b></p><p>  if(!resetb)//

58、復(fù)位時(shí),開(kāi)鎖輸出與警報(bào)輸出都為零</p><p><b>  begin</b></p><p>  passed<=8'b00000000;</p><p><b>  end</b></p><p>  else if(main_state==pass)//當(dāng)主機(jī)狀態(tài)為pass時(shí),

59、開(kāi)鎖</p><p><b>  begin</b></p><p>  passed<=8'b10000000;</p><p><b>  end</b></p><p>  else if(main_state==alarm)//當(dāng)主機(jī)狀態(tài)為alarm時(shí),警報(bào)</p>

60、<p><b>  begin</b></p><p>  passed<=8'b00000001;</p><p><b>  end</b></p><p>  else//其它狀態(tài)復(fù)位</p><p><b>  begin</b></p

61、><p>  passed<=8'b00000000;</p><p><b>  end</b></p><p><b>  end</b></p><p>  //alarm一段時(shí)間后,自動(dòng)進(jìn)入waits狀態(tài)</p><p>  //alarm定時(shí)器</p

62、><p>  always@(posedge clk1 or negedge resetb)</p><p><b>  begin</b></p><p>  if(!resetb)</p><p>  alarm_count<=0;</p><p>  else if(main_state=

63、=alarm)//alarm狀態(tài)計(jì)時(shí)器alarm定時(shí)器加1</p><p>  alarm_count<=alarm_count+1;</p><p><b>  else</b></p><p>  alarm_count<=0;</p><p><b>  end</b></p

64、><p>  //鎖pass以后計(jì)數(shù)開(kāi)始,當(dāng)規(guī)定的時(shí)間到達(dá)后自動(dòng)上鎖,并進(jìn)入waits狀態(tài)</p><p><b>  //pass定時(shí)器</b></p><p>  always@(posedge clk1 or negedge resetb)</p><p><b>  begin</b></

65、p><p>  if(!resetb)</p><p>  pass_count<=0;</p><p>  else if(main_state==pass) //pass狀態(tài)計(jì)時(shí)器pass定時(shí)器加1</p><p>  pass_count<=pass_count+1;</p><p><b> 

66、 else</b></p><p>  pass_count<=0;</p><p><b>  end</b></p><p>  //從狀態(tài)機(jī),用于輸入4位密碼</p><p>  always@(posedge clk1 or negedge resetb)</p><p&g

67、t;<b>  begin</b></p><p>  if(!resetb)</p><p>  sub_state<=first;</p><p><b>  else</b></p><p>  sub_state<=next_sub_state;</p><p

68、><b>  end</b></p><p>  always@(!zero||!one||!two||!three||!four||!yes or sub_state)</p><p>  //always@(key or sub_state)</p><p><b>  begin</b></p>

69、<p>  if(key_pressed_flag||!yes)</p><p>  if(!yes)//4個(gè)密碼輸完時(shí),進(jìn)行確認(rèn)</p><p>  next_sub_state=first;</p><p>  //default為輸入了某位密碼,輸入完自動(dòng)將狀態(tài)轉(zhuǎn)入下一位</p><p><b>  else<

70、;/b></p><p>  if(!zero||!one||!two||!three||!four)</p><p>  case(sub_state)</p><p><b>  first:</b></p><p>  next_sub_state=second;</p><p>&

71、lt;b>  second:</b></p><p>  next_sub_state=third;</p><p><b>  third:</b></p><p>  next_sub_state=fourth;</p><p><b>  fourth:</b></p&

72、gt;<p>  next_sub_state=finish;</p><p>  //當(dāng)輸入完4位密碼以后狀態(tài)保持不變,等待輸入enter命</p><p><b>  //令</b></p><p><b>  finish:</b></p><p>  next_sub_stat

73、e=finish;</p><p>  default: next_sub_state=sub_state;</p><p><b>  endcase</b></p><p><b>  else</b></p><p>  next_sub_state=sub_state;</p>

74、<p><b>  end</b></p><p>  //比較密碼,產(chǎn)生正確或者錯(cuò)誤信息</p><p>  always@(posedge clk1 or negedge resetb)</p><p><b>  begin</b></p><p>  if(!resetb)<

75、;/p><p><b>  begin</b></p><p>  correct<=0;</p><p><b>  error<=0;</b></p><p><b>  end</b></p><p>  else if(!key_pres

76、sed_flag&&!yes)</p><p>  if(password==PASSWORD)//密碼正確時(shí)</p><p><b>  begin</b></p><p>  correct<=1;</p><p><b>  error<=0;</b></p&

77、gt;<p><b>  end</b></p><p>  else//密碼錯(cuò)誤時(shí)</p><p><b>  begin</b></p><p><b>  error<=1;</b></p><p>  correct<=0;</p>

78、<p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  correct<=0;</p><p><b>  error<=0;</b>&

79、lt;/p><p><b>  end</b></p><p><b>  end</b></p><p><b>  //記錄密碼</b></p><p>  always@(posedge clk1 or negedge resetb)</p><p>

80、<b>  begin</b></p><p>  if(!resetb)</p><p>  password<=0;</p><p>  else if(!zero||!one||!two||!three||!four)</p><p>  case(sub_state)</p><p>

81、;<b>  first:</b></p><p>  password[15:12]<=key;</p><p><b>  second:</b></p><p>  password[11:8]<=key;</p><p><b>  third:</b>&l

82、t;/p><p>  password[7:4]<=key;</p><p><b>  fourth:</b></p><p>  password[3:0]<=key;</p><p><b>  default:</b></p><p>  password&l

83、t;=password;</p><p><b>  endcase</b></p><p><b>  else</b></p><p>  password<=password;</p><p><b>  end</b></p><p>&l

84、t;b>  //記錄錯(cuò)誤次數(shù)</b></p><p>  always@(posedge clk1 or negedge resetb)</p><p><b>  begin</b></p><p>  if(!resetb)</p><p>  try_count<=0;</p>

85、<p>  else if(error==1)</p><p>  try_count<=try_count+1;</p><p>  else if(main_state==pass||main_state==alarm)</p><p>  try_count<=0;</p><p><b>  end&

86、lt;/b></p><p>  reg key_pressed_flag; // 鍵盤(pán)按下標(biāo)志</p><p>  always@(posedge clk1 or negedge resetb) </p><p><b>  begin</b></p><p>  if(!re

87、setb)</p><p><b>  begin</b></p><p>  key_pressed_flag<=0;</p><p>  key=4'b0000;</p><p><b>  end</b></p><p>  else if(!zero&a

88、mp;&change) </p><p>  begin key_pressed_flag<=1;key<=4'b0000; end</p><p>  else if(!one&&change) </p><p>  begin key_pressed_flag<=1;key<=4'b0001; en

89、d</p><p>  else if(!two&&change) </p><p>  begin key_pressed_flag<=1;key<=4'b0010; end</p><p>  else if(!three&&change) </p><p>  begin key_pr

90、essed_flag<=1;key<=4'b0011; end</p><p>  else if(!four&&change) </p><p>  begin key_pressed_flag<=1;key<=4'b0100; end </p><p>  else if(!zero&&!

91、change) </p><p>  begin key_pressed_flag<=1;key<=4'b0101; end</p><p>  else if(!one&&!change) </p><p>  begin key_pressed_flag<=1;key<=4'b0110; end</p

92、><p>  else if(!two&&!change) </p><p>  begin key_pressed_flag<=1;key<=4'b0111; end</p><p>  else if(!three&&!change) </p><p>  begin key_pressed

93、_flag<=1;key<=4'b1000; end</p><p>  else if(!four&&!change) </p><p>  begin key_pressed_flag<=1;key<=4'b1001; end</p><p>  else if(!yes)</p><p

94、>  begin key_pressed_flag<=0;key<=4'b1010; end</p><p><b>  end</b></p><p><b>  //diaplay</b></p><p>  always @(posedge clk0)</p><p&g

95、t;<b>  begin</b></p><p>  CNT_R0 <= CNT_R0 + 1'b1;</p><p>  if(CNT_R0 < 4096)</p><p><b>  begin</b></p><p>  clk0_div <= 1;</p&g

96、t;<p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  clk0_div <= 0;</p><p><b>  end</b></

97、p><p><b>  end</b></p><p>  always @(posedge clk0_div)</p><p><b>  begin</b></p><p>  if(digyi==3'd3)</p><p><b>  begin</

98、b></p><p><b>  digyi<=0;</b></p><p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  

99、digyi<=digyi+1;</p><p><b>  end</b></p><p><b>  end</b></p><p>  //////////////yima//////////////</p><p>  always @(digyi)</p><p&g

100、t;<b>  begin</b></p><p>  case(digyi)</p><p>  3'b000: dig=8'b11111110;</p><p>  3'b001: dig=8'b11111101; </p><p>  3'b010: dig=8'b1

101、1111011; </p><p>  3'b011: dig=8'b11110111; </p><p><b>  endcase</b></p><p><b>  end</b></p><p>  ///////////////xuanshu///////////////

102、/////</p><p>  always @(digyi)</p><p><b>  begin</b></p><p>  case(digyi)</p><p>  3'b000: seg0=password[15:12];</p><p>  3'b001: seg0=

103、password[11:8];</p><p>  3'b010: seg0=password[7:4];</p><p>  3'b011: seg0=password[3:0];</p><p><b>  endcase</b></p><p><b>  end</b><

104、;/p><p>  ////////////seg yima///////////////////////</p><p>  always @(seg0)</p><p><b>  begin</b></p><p>  case(seg0)</p><p>  4'b0000 : seg

105、=7'b0111111; //0</p><p>  4'b0001 : seg=7'b0000110; //1</p><p>  4'b0010 : seg=7'b1011011; //2</p><p>  4'b0011 : seg=7'b1001111; //3</p>

106、<p>  4'b0100 : seg=7'b1100110; //4</p><p>  4'b0101 : seg=7'b1101101; //5</p><p>  4'b0110 : seg=7'b1111101; //6</p><p>  4'b0111 : seg=7'

107、;b0000111; //7</p><p>  4'b1000 : seg=7'b1111111; //8</p><p>  4'b1001 : seg=7'b1101111; //9</p><p><b>  endcase</b></p><p><b> 

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論