My title page contents

电子密码锁设计Verilog代码Quartus仿真

名称:电子密码锁设计Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

I、题目:电子密码锁设计

II、课题任务

  用VerilogHDL语言编写程序,设计一个电子密码锁控制电路,当输入正确代码时,输出开锁信号以推动执行机构工作。密码锁控制电路中存储一个可修改的6位代码,当输入的代码等于存储的代码时,开锁。从第一位代码输入后5秒内未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并发出持续20秒的报警信号。允许有三次输错的机会,三次输入错误,电路自动复位并进入自锁状态,无法再打开。

III、具体设计内容:

  1、设计任务

密码锁整体结构如图1所示,其中FPGA编程是本课程设计任务,通过按键产生控制信号输入给FPGA芯片,FPGA对按键信号进行处理,并输出信号给执行机构对密码锁进行操作。FPGA的输入时钟频率为1MHz。

                      图1 密码锁整体系统

   开始开锁信号为外部输入信号,当该信号为高电平时,开始输入密码,密码为按键形式,每次按键会先发送一个高脉冲信号,即按键中断信号,然后将该按键对应的数字送出,具体时序如图2所示,FPGA接收到开始开锁信号后开始检测按键中断信号,如果按键中断有上跳沿跳变,便读取4位键值数据,然后与存储的代码匹配,如果匹配成功则输出4位二进制数0001,如果匹配不成功,需要重新输入,则输出二进制数0010,如果要复位自锁输出0011,同时将警报输出信号置高电平,高电平持续20秒时间再置成低电平,不进行任何操作时输出0000,电子密码锁按键时序如下图2所示:

                   图2 电子密码锁按键信号时序图

2、工作内容

(1)软件安装

从网络上下载、安装EDA开发软件,Altera的QuartusII或Xilinx的Vivado,

课程设计报告简要描述软件安装过程。

(2)总体方案设计

总体方案设计包括设计原理,设计思路,设计流程(要画流程图),划分系统模块,明确模块输入和输出,以及模块间接口和数据传输。

(3)密码锁软件编写

◆ 编写各个模块Verilog程序并调试

◆ 整合各个模块,并进行调试

在课程设计报告中要详细描述各模块的功能、设计,与其他模块的关系。(注意:不要在设计报告正文贴代码)。

(4)仿真软件编写和系统测试

◆ 编写仿真程序,产生测试数据;

◆ 例化仿真程序和密码锁程序,进行仿真测试验证。

课程设计报告中要详细描述仿真过程,包括仿真时间和该时间产生的仿真输入数据和输出结果,要有仿真图形,仿真图中的变量含义要有说明,仿真图要清晰,准确。

3、要求与注意事项

(1)代码中每个功能模块要有注释,描述代码功能和端口定义。

(2)每个仿真波形要叙述仿真过程,包括波形中的变量含义,设置的变量值和设置的时间等。

(3)仿真图要清晰,要表达正确的仿真意图。

(4)课程设计报告要严格按标准格式书写,有封面(标准样式),目录等;

(5)课程设计报告包括设计任务,方案设计,功能模块设计与仿真,系统仿真,要有设计流程图。

(6)课程设计报告正文不能粘贴源代码,源码以附件的形式放在课程设计报告后面,分密码锁系统设计源码和仿真源码。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1、工程文件

2、程序文件


3、程序编译

4、RTL图

5、Testbench

6、仿真图

整体仿真图



分频模块

按键上升沿检测模块


控制模块

上图前半段为输入正确密码654321,开锁,输出0001;后半段为连续输入错误3次(error_cnt加到3),alearm信号报警20秒

上图为连续输入错误3次(error_cnt加到3),alearm信号报警20秒


上图为开始输入密码后5秒内未开锁,输出0011,报警20秒


部分代码展示:

//数字密码锁
module mimasuo(
input clk,//时钟
input RST,//复位
input SW_0,//开始开锁信号,高电平
input [3:0] key_num,//4位值(键值)
input key1,//确认按键中断
output alarm,//报警
output [3:0] lock_signals//4位执行机构信号--匹配成功则输出4位二进制数0001,如果匹配不成功,需要重新输入,则输出二进制数0010,如果要复位自锁输出0011
);
wire key1_posedge;
wire second_en;//秒计时信号脉冲
//按键上升沿检测模块
key_posedge i1_key_posedge(
. clk(clk),//时钟
. key_in(key1),//输入按键
. key_posedge(key1_posedge) //按键上升沿
);
//分频到1Hz信号,用于秒倒计时
div_1Hz i_div_1Hz(
. clk(clk),//1KHz
. second_en(second_en)//秒信号
);

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 电子密码锁设计Verilog代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员