- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Verilog HDL密码锁设计
基于Verilog HDL密码锁设计
摘 要
随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。使用EDA环境完成电路的系统综合设计和仿真。用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。
本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。
关键字
密码锁 Verilog HDL Quartus II
总体设计
密码锁分为四个模块:①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。其中由顶层模块调其他分模块来实现密码锁功能。
密码锁功能:
1.由12个拨码开关设置三位密码(0-9)
2.再输入密码开锁,密码正确,指示灯亮开锁成功。
3.密码输入错误,蜂鸣器响五秒,表示开锁失败。
设计思路:
本设计以007为万能密码在忘记密码时开锁使用。开始时密码锁处于关闭的状态,输入万能密码将锁打开。在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。
总体框图
图1.0 总体框图
模块功能其及主要代码
顶层模块
实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时时灯亮,在密码错误时蜂鸣器发出五秒钟的响声。
程序如下:
module dingceng(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk1,clk2,clk3,lock,alarm,Q,ss1,ss0);
input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;
input set,close;
input clk1,clk2,clk3;
output lock,alarm,ss1,ss0;
output[6:0] Q;
reg lock,alarm;
reg ss0,ss1;
reg[6:0] Q;
wire[3:0] X1,X2,X3;
wire X4,X5;
code u1(.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));
show u2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:0]),.ss1(ss1),.ss0(ss0));
speaker u3(.ENA(X4),.CLK2(clk3),.COUT(alarm));
endmodule
2.蜂鸣器模块
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。如图为其原理图:
图 1.1 蜂鸣器原理图结构
蜂鸣器功能实现:
程序共有两个输入信号分别为ENA和CLK2,,一个输出信号COUT。当从信号输入模块检测到有开关输入时,信号ENA已置1,CLK2上升沿到来时,有程序使COUT为1,蜂鸣器发出报警信号,并且进入一个5秒钟的循环,时间到达时,跳出循环,蜂鸣器停止报警。
程序如下:
module speaker(ENA,CLK2,COUT); //ENA为使能信号,CLK为时钟信号规定工作频率
input ENA,CLK2;
output COUT;
reg COUT;
reg[3:0] Q1;
always@(posedge CLK2) //CLK2为敏感信号
begin
if(ENAQ16) //当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
您可能关注的文档
最近下载
- 2025年上半年教师资格证考试《教育教学知识与能力》(小学)真题.pdf
- 2021年广东省3+证书高职高考真题(英语)含答案.doc VIP
- (中药足浴方选.doc VIP
- 2024年甘肃省农垦集团有限责任公司人才招聘469人笔试参考题库附带答案详解.doc
- 新版大型养路机械使用管理规则.pdf VIP
- 湖北省武汉市硚口区2023-2024学年七年级下学期期末数学试题(解析版).docx VIP
- 品管圈提高早孕建册率ppt课件.pptx
- 环氧树脂及环氧树脂胶粘剂的基本知识.docx VIP
- 三维重建模型 内窥镜图像综合分析软件产品技术要求renxing.pdf
- 一般工业固体废物名录(2018).pdf
文档评论(0)