摘要:設計理念通過撥動開關輸入由四位二進制表示的密碼,然后按鍵確認輸入并校驗。如果校驗失敗,則數碼不亮,全亮,啟動報警,直到輸入正確密碼并再次確認校驗成功后,滅,數碼顯示提示開鎖。
1.設計理念
通過撥動開關輸入由四位二進制表示的密碼,然后按鍵確認輸入并校驗。
如果校驗通過,則led不亮,數碼led顯示0提示開鎖。
如果校驗失敗,則數碼led不亮,led全亮,啟動報警,直到輸入正確密碼并再次確認校驗成功后,led滅,數碼led顯示0提示開鎖。
安全性:
視頻見附件。
2.代碼
(1) my_codelock.v
module my_codelock(seg_led, //數碼 led_state,key_confirm,sw_input, //led,開關,按鍵 clk,rst //消抖需要的輸入 ); input key_confirm; //按鍵=確認 input [3:0] sw_input; //撥動開關=輸入密碼 output [7:0] led_state; reg [7:0] led_state; //led表示狀態 reg [8:0] seg_led; output [8:0] seg_led; //數碼管提示正確打開 input clk,rst; always@(*)begin seg_led=9"h00; if (key_confirm==0)begin //當按下確認開始校對 if (sw_input==4"b0101) begin led_state=8"b1111_1111; //如果密碼正確,那就不亮led亮數碼板 seg_led=9"h3f; end else begin led_state=8"b0000_0000; end end end debounce u1 ( .clk (clk), .rst (rst), .key (key_confirm), .key_pulse () ); endmodule
(1) debounce.v
module debounce (clk,rst,key,key_pulse); parameter N = 1; //要消除的按鍵的數量 input clk; input rst; input [N-1:0] key; //輸入的按鍵 output [N-1:0] key_pulse; //按鍵動作產生的脈沖 reg [N-1:0] key_rst_pre; //定義一個寄存器型變量存儲上一個觸發時的按鍵值 reg [N-1:0] key_rst; //定義一個寄存器變量儲存儲當前時刻觸發的按鍵值 wire [N-1:0] key_edge; //檢測到按鍵由高到低變化是產生一個高脈沖 //利用非阻塞賦值特點,將兩個時鐘觸發時按鍵狀態存儲在兩個寄存器變量中 always @(posedge clk or negedge rst) begin if (!rst) begin key_rst <= {N{1"b1}}; //初始化時給key_rst賦值全為1,{}中表示N個1 key_rst_pre <= {N{1"b1}}; end else begin key_rst <= key; //第一個時鐘上升沿觸發之后key的值賦給key_rst,同時key_rst的值賦給key_rst_pre key_rst_pre <= key_rst; //非阻塞賦值。相當于經過兩個時鐘觸發,key_rst存儲的是當前時刻key的值,key_rst_pre存儲的是前一個時鐘的key的值 end end assign key_edge = key_rst_pre & (~key_rst);//脈沖邊沿檢測。當key檢測到下降沿時,key_edge產生一個時鐘周期的高電平 reg [17:0] cnt; //產生延時所用的計數器,系統時鐘12MHz,要延時20ms左右時間,至少需要18位計數器 //產生20ms延時,當檢測到key_edge有效是計數器清零開始計數 always @(posedge clk or negedge rst) begin if(!rst) cnt <= 18"h0; else if(key_edge) cnt <= 18"h0; else cnt <= cnt + 1"h1; end reg [N-1:0] key_sec_pre; //延時后檢測電平寄存器變量 reg [N-1:0] key_sec; //延時后檢測key,如果按鍵狀態變低產生一個時鐘的高脈沖。如果按鍵狀態是高的話說明按鍵無效 always @(posedge clk or negedge rst) begin if (!rst) key_sec <= {N{1"b1}}; else if (cnt==18"h3ffff) key_sec <= key; end always @(posedge clk or negedge rst) begin if (!rst) key_sec_pre <= {N{1"b1}}; else key_sec_pre <= key_sec; end assign key_pulse = key_sec_pre & (~key_sec); endmodule
3.RTL電路
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121775.html
摘要:區塊鏈是軟件開源運動所結出的果子。原因是區塊鏈創造的信任是基于代碼產生的。 上一講中,我們深入探討了區塊鏈對一些基本問題的答案,包括對時間的答案、對空間的答案以及對能量的答案。在這一篇文章中,我們將從區塊鏈作為基本工具的工具論方面切入。這個方面包括了它是怎樣看待這個世界的:它使用了哪些工具,以及它使用了哪些方法?構造了哪些全新的博弈環境并形成了哪些新的博弈均衡態?這些方法也許和人們過去...
摘要:秘猿科技法務總監錢靖受邀參加北京大學數字金融研究中心舉辦的數字金融第十講,作為主講嘉賓就區塊鏈正在重塑法律做了主題演講。而區塊鏈在很大程度上可以幫助解決這些問題。第三個方面涉及到區塊鏈對每個部門法的影響。 showImg(https://segmentfault.com/img/bVboMSK?w=1280&h=543); 秘猿科技法務總監錢靖受邀參加北京大學數字金融研究中心舉辦的數字...
摘要:安全透明輕量的螞蟻區塊鏈摩斯安全計算基礎設施螞蟻摩斯依托螞蟻金融科技平臺,結合區塊鏈技術,將復雜的隱私保護與密碼學算法透明化產品化,提供安全發布安全模型安全統計安全查詢安全腳本等核心功能。 摘要:?螞蟻區塊鏈摩斯安全計算平臺針對數據安全信任、個人隱私保護以及數據基礎設施不足等痛點,秉持數據可用不可見和將計算移動到數據端的原則,借助區塊鏈、密碼學、隱私保護、安全多方計算、可信計算等前沿...
摘要:第二步微信開發工具你可以下微信的,了解小程序的前端和后端的開發結構。第三步微信的后臺處理購買主機建站會獲得一個可用的無備案的域名。 小程序制作和部署從本質上是和其他的網站是一樣的,需要域名、服務器空間和數據庫。域名就是你們家的地址,服務器空間就是你們家房子,數據庫就是你們家的保險柜。 但是小程序和網站又有不同,小程序的前端部分是需要通過微信開發工具上傳到微信的服務器上,就是說你們家的...
閱讀 1008·2021-11-22 13:52
閱讀 1445·2021-11-19 09:40
閱讀 3162·2021-11-16 11:44
閱讀 1272·2021-11-15 11:39
閱讀 3902·2021-10-08 10:04
閱讀 5362·2021-09-22 14:57
閱讀 3101·2021-09-10 10:50
閱讀 3184·2021-08-17 10:13