基于VerilogHDL密码锁设计.docx

上传人:b****4 文档编号:5411053 上传时间:2023-05-08 格式:DOCX 页数:18 大小:179.73KB
下载 相关 举报
基于VerilogHDL密码锁设计.docx_第1页
第1页 / 共18页
基于VerilogHDL密码锁设计.docx_第2页
第2页 / 共18页
基于VerilogHDL密码锁设计.docx_第3页
第3页 / 共18页
基于VerilogHDL密码锁设计.docx_第4页
第4页 / 共18页
基于VerilogHDL密码锁设计.docx_第5页
第5页 / 共18页
基于VerilogHDL密码锁设计.docx_第6页
第6页 / 共18页
基于VerilogHDL密码锁设计.docx_第7页
第7页 / 共18页
基于VerilogHDL密码锁设计.docx_第8页
第8页 / 共18页
基于VerilogHDL密码锁设计.docx_第9页
第9页 / 共18页
基于VerilogHDL密码锁设计.docx_第10页
第10页 / 共18页
基于VerilogHDL密码锁设计.docx_第11页
第11页 / 共18页
基于VerilogHDL密码锁设计.docx_第12页
第12页 / 共18页
基于VerilogHDL密码锁设计.docx_第13页
第13页 / 共18页
基于VerilogHDL密码锁设计.docx_第14页
第14页 / 共18页
基于VerilogHDL密码锁设计.docx_第15页
第15页 / 共18页
基于VerilogHDL密码锁设计.docx_第16页
第16页 / 共18页
基于VerilogHDL密码锁设计.docx_第17页
第17页 / 共18页
基于VerilogHDL密码锁设计.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于VerilogHDL密码锁设计.docx

《基于VerilogHDL密码锁设计.docx》由会员分享,可在线阅读,更多相关《基于VerilogHDL密码锁设计.docx(18页珍藏版)》请在冰点文库上搜索。

基于VerilogHDL密码锁设计.docx

基于VerilogHDL密码锁设计

基于VerilogHDL密码锁设计

 

摘要

随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。

使用EDA环境完成电路的系统综合设计和仿真。

用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。

本设计基于VerilogHDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。

关键字

密码锁VerilogHDLQuartusII

 

总体设计

密码锁分为四个模块:

①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。

其中由顶层模块调其他分模块来实现密码锁功能。

密码锁功能:

1.由12个拨码开关设置三位密码(0-9)

2.再输入密码开锁,密码正确,指示灯亮开锁成功。

3.密码输入错误,蜂鸣器响五秒,表示开锁失败。

设计思路:

本设计以007为万能密码在忘记密码时开锁使用。

开始时密码锁处于关闭的状态,输入万能密码将锁打开。

在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。

设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。

再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。

总体框图

 

图1.0总体框图

 

模块功能其及主要代码

 

1.顶层模块

实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时时灯亮,在密码错误时蜂鸣器发出五秒钟的响声。

程序如下:

moduledingceng(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk1,clk2,clk3,lock,alarm,Q,ss1,ss0);

inputn0,n1,n2,n3,n4,n5,n6,n7,n8,n9;

inputset,close;

inputclk1,clk2,clk3;

outputlock,alarm,ss1,ss0;

output[6:

0]Q;

reglock,alarm;

regss0,ss1;

reg[6:

0]Q;

wire[3:

0]X1,X2,X3;

wireX4,X5;

codeu1(.lock(lock),.warning(X4),.num1(X1),.num2(X2),.num3(X3),.clk(clk1),.n0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n8),.n9(n9),.set(set),.close(close));

showu2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:

0]),.ss1(ss1),.ss0(ss0));

speakeru3(.ENA(X4),.CLK2(clk3),.COUT(alarm));

endmodule

 

2.蜂鸣器模块

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

如图为其原理图:

 

图1.1蜂鸣器原理图结构

蜂鸣器功能实现:

程序共有两个输入信号分别为ENA和CLK2,,一个输出信号COUT。

当从信号输入模块检测到有开关输入时,信号ENA已置1,CLK2上升沿到来时,有程序使COUT为1,蜂鸣器发出报警信号,并且进入一个5秒钟的循环,时间到达时,跳出循环,蜂鸣器停止报警。

程序如下:

modulespeaker(ENA,CLK2,COUT);//ENA为使能信号,CLK为时钟信号规定工作频率

inputENA,CLK2;

outputCOUT;

regCOUT;

reg[3:

0]Q1;

always@(posedgeCLK2)//CLK2为敏感信号

begin

if(ENA&&Q1<6)//当ENA为1并且Q1小于6时执行下面的语句

Q1=Q1+1;

if(~ENA)//ENA为0时,执行下面的语句

Q1=0;

end

always

begin

if(Q1==6||Q1==0)

COUT='b0;

else

COUT='b1;

end

Endmodule

 

3.显示模块

数码管常用于电子产品的显示部分,原理简单易于实现,将BCD码经译码后显示成十进制的数字

显示模块功能实现:

模块共有四个输入信号A、B、C、CLK,三个输出信号分别为Q、SS1、SS2。

SS1、SS2可对三个数码管进行片选,使它们分别亮。

A、B、C接段选,以控制数码管显示什么数字。

程序如下:

moduleshow(A,B,C,clk,Q,ss1,ss0);

input[3:

0]A,B,C;

inputclk;

output[6:

0]Q;

outputss1,ss0;

reg[1:

0]M;

regss0,ss1;

reg[6:

0]Q;

always@(posedgeclk)

begin

M=M+1;

if(M=='b11)

M<='b00;

end

always@(posedgeclk)

begin

if(M=='b00)

begin

ss1<=0;

ss0<=0;

case(A)

0:

Q<='b0111111;

1:

Q<='b0000110;

2:

Q<='b1011011;

3:

Q<='b1001111;

4:

Q<='b1100110;

5:

Q<='b1101101;

6:

Q<='b1111101;

7:

Q<='b0000111;

8:

Q<='b1111111;

9:

Q<='b1101111;

endcase

end

if(M=='b01)

begin

ss1<=0;

ss0<=1;

case(B)

0:

Q<='b0111111;

1:

Q<='b0000110;

2:

Q<='b1011011;

3:

Q<='b1001111;

4:

Q<='b1100110;

5:

Q<='b1101101;

6:

Q<='b1111101;

7:

Q<='b0000111;

8:

Q<='b1111111;

9:

Q<='b1101111;

endcase

end

if(M=='b10)

begin

ss1<=1;

ss0<=0;

case(C)

0:

Q<='b0111111;

1:

Q<='b0000110;

2:

Q<='b1011011;

3:

Q<='b1001111;

4:

Q<='b1100110;

5:

Q<='b1101101;

6:

Q<='b1111101;

7:

Q<='b0000111;

8:

Q<='b1111111;

9:

Q<='b1101111;

endcase

end

end

Endmodule

 

4.控制模块

控制模块用于密码的设置

控制模块功能实现:

模块可以通过程序的执行实现对密码进行设置和进行开琐,开始时锁处于关闭的状态,即为1,输入事先设置的万能密码开琐,在锁开的状态时设置密码,然后将锁关闭,再输入三位数字进行开锁,正确时为1既灯亮,否则为0为1,即蜂鸣器响。

控制模块程序如下:

/*

clk:

时钟信号

n0,n1,n2,n3,n4,n5,n6,n7,n8,n9:

密码输入信号

lock:

状态显示信号

close:

关信号

set:

密码确认信号

*/

modulecode(lock,warning,num1,num2,num3,clk,n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close);

inputn0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk;

output[3:

0]num1,num2,num3;

outputlock,warning;

reglock,warning;

reg[3:

0]num1,num2,num3,temp;

reg[11:

0]code;

always@(posedgeclk)

begin

if({n0,n1,n2,n3,n4,n5,n6,n7,n8,n9}!

=10'b0000000000)

begin

case({n9,n8,n7,n6,n5,n4,n3,n2,n1,n0})

10'b0000000001:

temp=1'd0;

10'b0000000010:

temp=1'd1;

10'b0000000100:

temp=1'd2;

10'b0000001000:

temp=1'd3;

10'b0000010000:

temp=1'd4;

10'b0000100000:

temp=1'd5;

10'b0001000000:

temp=1'd6;

10'b0010000000:

temp=1'd7;

10'b0100000000:

temp=1'd8;

10'b1000000000:

temp=1'd9;

endcase

num3<=num2;

num2<=num1;

num1<=temp;

end

if(close)

begin

num1<=0;

num2<=0;

num3<=0;

end

end

always@(posedgeclk)

begin

if(lock==0&&set)

begin

if(code=={num3,num2,num1})

lock<=1;

elseif({num3,num2,num1}==16'b000000000111)

lock<=1;

elsewarning<=1;

end

if(lock==1&&close)

lock<=0;

if(close)

warning<=0;

end

always@(posedgeclk)

begin

if(lock==1&&set)

code<={num3,num2,num1};

end

Endmodule

 

各个模块功能仿真波形

 

1.顶层模块时序仿真:

图1.2万能密码开锁的波形

 

图1.3设置密码的波形

图1.4开锁失败的波形

 

2.蜂鸣器时序仿真

图1.5:

当ENA为1时且CLK2上升沿到来时,COUT被置1,即蜂鸣器开始发出响声

图1.5蜂鸣器功能波形

3.显示模块时序仿真:

图1.6:

SS0、SS1不断的进行片选使三个数码管分别显示所输入的密码,

以实现对密码的动态显示

图1.6显示模块功能波形

 

4.控制模块时序仿真

图1.7:

输入万能密码007,并使set置1,运行程序后lock被置1。

说明开锁成功。

图1.7输入万能密码后的波形

 

图1.8:

锁开的状态下设置密码123,并使close置1,使锁关闭,再set使置1,此时lock置0,表示锁关闭。

实现设置密码的功能。

图1.8设置密码波形

 

图1.9:

输入密码123即正确的密码进行解锁。

因为输入的密码正确所以使lock置1,表示开锁成功。

图1.9成功开锁波形

 

图2.0:

输入错误密码234时,warning被置1,表示开锁失败。

图2.0开锁失败的波形

 

总结

通过本设计可以学的到很多的东西,同时不仅可以巩固所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次设计,进一步加深了对EDA的了解,。

每一个子模块编写调试,都需要非常用心。

编写过程中遇到了不少问题,通过查找相关资料,并且细心的检查,找出了错误和警告,并且排除在波形仿真时,设定输入的时钟信号,找到比较合适的输入数值,仿真时长等。

通过这次设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,用于实践,提高自己的实际动手能力和独立思考的能力。

在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

需要耐心,信心去完成。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2