基于Verilog的數字密碼鎖設計_第1頁
基于Verilog的數字密碼鎖設計_第2頁
基于Verilog的數字密碼鎖設計_第3頁
基于Verilog的數字密碼鎖設計_第4頁
基于Verilog的數字密碼鎖設計_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告課程設計題目:基于Verilog的數字密碼鎖設計學號:201520070209學生姓名:尹景興專業:通信工程班級:1521301指導教師:鐘凱2018年1月12日目 錄一、課程設計內容 1 二、實現思路- 1 1。解鎖過程- 1 2。報警過程- 1 3.重置密碼過程- 1 三、實現程序 2 四、仿真驗證 5 -1。解鎖過程 5 -2.報警過程- 6 3。重置密碼過程 8 -五、設計心得 11 -一、 課程設計內容設計一個4位串行數字密碼鎖,要求如下:1. 開鎖密碼為4位二進制,當輸入密碼與鎖內給定的密碼一致時,方可開鎖。否則進入“錯誤”狀態,發出報警信號。2. 鎖內的密碼可調.3.

2、 串行數字密碼鎖的報警,直到按下復位開關,才停下.此時,數字密碼鎖又自動等待下一個開鎖狀態.二、 實現思路1. 解鎖過程密碼鎖出廠之前預設一個初始密碼,在本課程設計中將其預設為0101.在密碼鎖上鎖狀態下,輸入正確密碼,密碼鎖打開。2. 報警過程當輸入的密碼與鎖內密碼不一致時,蜂鳴器響起,直到按下取消按鍵,蜂鳴器才停止鳴叫。3. 重置密碼過程重置密碼時,需先驗證原密碼是否正確.當輸入原密碼正確,才可以輸入新密碼,設置新密碼為鎖內密碼。三、 實現程序module coded_lock(clk,in,set,pause,value1,value2,store,bee,status,temp_set

3、,ook); input clk,in,set,pause; output reg bee = 0; output reg status = 0; output regtemp_set = 0; output regook = 0;output reg3:0 value1; output reg3:0 value2; output reg3:0 store;regen = 1;reg2:0 i = 0;reg2:0 j = 0;reg2:0 k = 0;reg2:0 count1 = 0;reg2:0 count2 = 0;reg2:0 count3 = 0;reg3:0 keynum = 4

4、b0101; always (posedgeclk) beginif(set = 1) forktemp_set = 1; value1 = 4bxxxx; value2 <= 4bxxxx; store <= 4'bxxxx;i = 0; j = 0; k = 0;ook <= 0; count1 = 0; count2 <= 0; count3 = 0; join end always (posedgeclk) beginif(temp_set = 0) begin case(en,in) 2'b11: begin value1i = 1b1; i

5、= i + 1; count1 <= count1 + 1;end 2b10: begin value1i = 1b0; i = i + 1; count1 = count1 + 1;endendcase end end always (posedgeclk) beginif(count1 = 4) beginif(value1 = keynum) status = 1; else bee = 1;i <= 0; count1 = 0; value1 <= 4bxxxx; end end always (posedgeclk) beginif(pause = 1) bee &

6、lt;= 0; end always (posedgeclk) beginif(temp_set = 1 & ook = 0) begin case(en,in) 2b11: begin value2j = 1'b1; j <= j + 1; count2 = count2 + 1;end 2'b10: begin value2j = 1b0; j <= j + 1; count2 = count2 + 1;endendcase end end always (posedgeclk) beginif(count2 = 4) beginif(value2 =

7、keynum)ook = 1; j <= 0; count2 = 0; value2 = 4'bxxxx; end end always (posedgeclk) beginif(ook = 1) begin case(en,in) 2b11: begin storek = 1b1; k <= k + 1; count3 = count3 + 1;end 2b10: begin storek = 1'b0; k = k + 1; count3 = count3 + 1;endendcase end end always (posedgeclk) beginif(co

8、unt3 = 4) beginkeynum = store;temp_set <= 0;ook <= 0; k <= 0; count3 <= 0; end end endmodule四、 仿真驗證1. 解鎖過程測試平臺代碼:timescale 1ns/1nsmodule text;regclk,set,pause;reg in; wire bee,status,ook;wire3:0 value1,value2;wire3:0 store; wire temp_set;coded_lock temp(.clk(clk),.in(in),。set(set),.pause

9、(pause),。bee(bee),。ook(ook),。status(status),。value1(value1),。value2(value2),.store(store),。temp_set(temp_set); always 10 clk = clk; initial forkclk = 0; in = 1bx; set = 0; pause = 0; join initial begin 123 in = 1b1; 23 in = 1'bx; 45 in = 1'b0; #23 in = 1'bx; 45 in = 1b1; 23 in = 1bx; 45

10、in = 1b0; #23 in = 1bx; end endmodule如圖,當輸入預設密碼0101時,圖中status由0變為1,表示密碼鎖打開。2. 報警過程測試平臺代碼:timescale 1ns/1nsmodule text3;regclk,set,pause;reg in; wire bee,status,ook;wire3:0 value1,value2;wire3:0 store; wire temp_set;coded_lock temp3(。clk(clk),。in(in),。set(set),。pause(pause),。bee(bee),.ook(ook),。statu

11、s(status),。value1(value1),.value2(value2),.store(store),。temp_set(temp_set); always 10 clk = clk; initial forkclk = 0; in = 1bx; set = 0; pause = 0; join initial begin 123 in = 1b1; #23 in = 1'bx; 45 in = 1'b1; #23 in = 1bx; #45 in = 1b0; 23 in = 1bx; 45 in = 1b0; #23 in = 1'bx; 123 paus

12、e = 1; 23 pause = 0; end endmodule如下圖,當輸入密碼0011時,與鎖內密碼不一致,bee由0變為1,表示蜂鳴器響起。當按下pause按鈕時,bee由1變為0,表示蜂鳴器停止鳴叫。3. 重置密碼過程測試平臺代碼:timescale 1ns/1nsmodule text2;regclk,set,pause;reg in; wire bee,status,ook;wire3:0 value1,value2;wire3:0 store; wire temp_set;coded_lock temp2(。clk(clk),。in(in),。set(set),。pause(

13、pause),。bee(bee),。ook(ook),.status(status),。value1(value1),。value2(value2),。store(store),。temp_set(temp_set); always #10 clk = clk; initial forkclk = 0; in = 1'bx; set = 0; pause = 0; join initial begin #123 set = 1; 21 set = 0; 123 in = 1b1; #21 in = 1bx; 45 in = 1'b0; #21 in = 1bx; 45 in =

14、 1b1; #21 in = 1'bx; #45 in = 1b0; 21 in = 1bx; 125 in = 1'b0; 21 in = 1bx; 45 in = 1b1; 21 in = 1bx; 45 in = 1b0; 21 in = 1bx; 45 in = 1b1; #21 in = 1bx; 125 in = 1b0; 21 in = 1'bx; 45 in = 1'b1; 21 in = 1bx; 45 in = 1b0; #21 in = 1bx; 45 in = 1b1; #21 in = 1bx;end endmodule如下圖,當正確輸

15、入預設密碼0101時,ook由0變為1,表示可以更改密碼,更改密碼為1010.接著,輸入新密碼1010,status由0變為1,表示密碼鎖被新密碼打開,如下圖。五、 設計心得通過這次課程設計,我更深入熟悉了Verilog編程的各個過程和原理,并且,成功地做出了一個產品的簡化模型極大地挺高了我的學習興趣。當然,設計過程中也遇到了各種問題和困難,我極力克服,過后感覺受益匪淺。我會再接再厲的。Bingo!- 11 -東華理工大學課程設計評分表學生姓名:尹景興班級:1521301 學號:201520070209課程設計題目:基于Verilog的數字密碼鎖設計項目內容滿分實評選題能結合所學課程知識、有一定的能力訓練.符合選題要求(5人一題)10工作量適中,難易度合理10能力水平能熟練應用所學知識,有一定查閱文獻及運用文獻資料能力10理論依據充

溫馨提示

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

評論

0/150

提交評論