基于Verilog HDL密码锁设计Word格式.docx
- 文档编号:16481021
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:17
- 大小:161.19KB
基于Verilog HDL密码锁设计Word格式.docx
《基于Verilog HDL密码锁设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于Verilog HDL密码锁设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
调用部分
顶层模块
报警部分
蜂鸣器
密码设置
12个拨码开关
显示部分
七段数码管
图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:
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.蜂鸣器模块
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。
如图为其原理图:
ENA
CLK2K@
COUT
图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
b1;
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;
outputss1,ss0;
reg[1:
0]M;
always@(posedgeclk)
M=M+1;
if(M=='
b11)
M<
='
b00;
b00)
ss1<
=0;
ss0<
case(A)
0:
Q<
b0111111;
1:
b0000110;
2:
b1011011;
3:
b1001111;
4:
b1100110;
5:
b1101101;
6:
b1111101;
7:
b0000111;
8:
b1111111;
9:
b1101111;
endcase
b01)
=1;
case(B)
b10)
case(C)
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;
0]num1,num2,num3,temp;
reg[11:
0]code;
if({n0,n1,n2,n3,n4,n5,n6,n7,n8,n9}!
=10'
b0000000000)
case({n9,n8,n7,n6,n5,n4,n3,n2,n1,n0})
10'
b0000000001:
temp=1'
d0;
b0000000010:
d1;
b0000000100:
d2;
b0000001000:
d3;
b0000010000:
d4;
b0000100000:
d5;
b0001000000:
d6;
b0010000000:
d7;
b0100000000:
d8;
b1000000000:
d9;
num3<
=num2;
num2<
=num1;
num1<
=temp;
if(close)
if(lock==0&
set)
if(code=={num3,num2,num1})
lock<
elseif({num3,num2,num1}==16'
b000000000111)
elsewarning<
if(lock==1&
close)
warning<
code<
={num3,num2,num1};
各个模块功能仿真波形
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的了解,。
每一个子模块编写调试,都需要非常用心。
编写过程中遇到了不少问题,通过查找相关资料,并且细心的检查,找出了错误和警告,并且排除在波形仿真时,设定输入的时钟信号,找到比较合适的输入数值,仿真时长等。
通过这次设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,用于实践,提高自己的实际动手能力和独立思考的能力。
在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
需要耐心,信心去完成。
Welcome!
!
欢迎您的下载,
资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于Verilog HDL密码锁设计 基于 Verilog HDL 密码锁 设计