欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于Verilog-HDL密码锁设计.doc

    • 资源ID:32754842       资源大小:31.04KB        全文页数:8页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Verilog-HDL密码锁设计.doc

    基于Verilog HDL密码锁设计摘 要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能.使用EDA环境完成电路的系统综合设计和仿真.用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。关键字密码锁 Verilog HDL Quartus II总体设计密码锁分为四个模块:顶层模块、显示模块、蜂鸣器模块、控制模块。其中由顶层模块调其他分模块来实现密码锁功能。密码锁功能:1。由12个拨码开关设置三位密码(0-9)2。再输入密码开锁,密码正确,指示灯亮开锁成功.3.密码输入错误,蜂鸣器响五秒,表示开锁失败。设计思路:本设计以007为万能密码在忘记密码时开锁使用。开始时密码锁处于关闭的状态,输入万能密码将锁打开.在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。总体框图调用部分顶层模块显示部分七段数码管报警部分蜂鸣器密码设置12个拨码开关图1。0 总体框图模块功能其及主要代码1. 顶层模块实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时时灯亮,在密码错误时蜂鸣器发出五秒钟的响声。程序如下: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;output6:0 Q;reg lock,alarm;reg ss0,ss1;reg6:0 Q;wire3: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(Q6:0),.ss1(ss1),。ss0(ss0));speaker u3(.ENA(X4),.CLK2(clk3),.COUT(alarm));endmodule2。蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。如图为其原理图:COUTENACLK2K 图 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;reg3:0 Q1;always(posedge CLK2)/CLK2为敏感信号begin if(ENA&Q1<6)/当ENA为1并且Q1小于6时执行下面的语句Q1=Q1+1;if(ENA)/ENA为0时,执行下面的语句Q1=0;endalwaysbeginif(Q1=6Q1=0)COUT=b0;elseCOUT='b1;endEndmodule3。显示模块数码管常用于电子产品的显示部分,原理简单易于实现,将BCD码经译码后显示成十进制的数字显示模块功能实现:模块共有四个输入信号A、B、C、CLK,三个输出信号分别为Q、SS1、SS2。SS1、SS2可对三个数码管进行片选,使它们分别亮.A、B、C接段选,以控制数码管显示什么数字。程序如下:module show(A,B,C,clk,Q,ss1,ss0);input3:0 A,B,C;input clk;output6:0 Q;output ss1,ss0;reg1:0 M;reg ss0,ss1;reg6:0 Q;always(posedge clk)beginM=M+1;if(M='b11)M=b00;endalways(posedge clk)beginif(M=b00)beginss1=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;endcaseendif(M=b01)beginss1<=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;endcaseendif(M=b10)beginss1=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;endcaseendendEndmodule4.控制模块控制模块用于密码的设置控制模块功能实现:模块可以通过程序的执行实现对密码进行设置和进行开琐,开始时锁处于关闭的状态,即为1,输入事先设置的万能密码开琐,在锁开的状态时设置密码,然后将锁关闭,再输入三位数字进行开锁,正确时为1既灯亮,否则为0为1,即蜂鸣器响。 控制模块程序如下:/*clk:时钟信号n0,n1,n2,n3,n4,n5,n6,n7,n8,n9:密码输入信号lock:状态显示信号close:关信号set:密码确认信号/module code(lock,warning,num1,num2,num3,clk,n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close);input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk;output3:0num1,num2,num3;output lock,warning;reg lock,warning;reg3:0num1,num2,num3,temp;reg11:0code;always(posedge clk)beginif(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=1d0;10b0000000010:temp=1'd1;10'b0000000100:temp=1d2;10'b0000001000:temp=1'd3;10b0000010000:temp=1'd4;10b0000100000:temp=1'd5;10b0001000000:temp=1'd6;10b0010000000:temp=1d7;10b0100000000:temp=1'd8;10'b1000000000:temp=1d9;endcasenum3=num2;num2<=num1;num1=temp;endif(close)beginnum1=0;num2=0;num3<=0;endendalways(posedge clk)beginif(lock=0&&set)beginif(code=num3,num2,num1)lock=1;else if(num3,num2,num1=16'b000000000111)lock<=1;else warning<=1;endif(lock=1&&close)lock<=0;if(close)warning=0;endalways(posedge clk)beginif(lock=1&set)code<=num3,num2,num1;endEndmodule各个模块功能仿真波形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.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的了解,。每一个子模块编写调试,都需要非常用心。编写过程中遇到了不少问题,通过查找相关资料,并且细心的检查,找出了错误和警告,并且排除在波形仿真时,设定输入的时钟信号,找到比较合适的输入数值,仿真时长等.通过这次设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,用于实践,提高自己的实际动手能力和独立思考的能力。在设计的过程难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。需要耐心,信心去完成。

    注意事项

    本文(基于Verilog-HDL密码锁设计.doc)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开