加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
登录/注册
立即注册,领取新人专属福利!
  • 正文
    • II、课题任务
    • III、具体设计内容:
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

03/26 09:00
370
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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

软件:Quartus

语言:Verilog

代码功能:电子密码锁设计

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 电子密码锁按键信号时序图

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

设计文档:见附件

 

1、工程文件

2、程序文件

3、程序编译

4、RTL图

5、Testbench

6、仿真图

Testbench

整体仿真图

上图前段仿真了输入密码5秒内未打开,输出alarm_led报警信号和0011执行机构信号(actuator),中段是输入密码正确,开锁,输出0001执行机构信号(actuator),最后一段是连续输入3次错误密码,输出alarm_led报警信号和0011执行机构信号(actuator)

上图为输入一次错误密码时,执行机构输出0010

按键检测模块

状态机控制模块

输出控制模块

部分代码展示:

//密码锁
module locker(
input clk,//时钟
input rst_p,//高电平复位
input start_key,//开始解锁
input [3:0] value,//键值
input confirm_key,//输入按键
output alarm_led,//报警
output [3:0] actuator//执行机构信号
);
wire key_int;//按键中断
wire [3:0] state;
//按键中断检测模块
key_detect i_key_detect(
. clk(clk),//时钟
. confirm_key(confirm_key),//输入按键
. key_int(key_int) //按键上升沿
);
//状态机控制
fsm i_fsm(
. clk(clk),
. rst_p(rst_p),//高电平复位
. start_key(start_key),//开始解锁
. value(value),//键值
. key_int(key_int),//按键中断
. state(state) //输出状态
);

代码文件(付费下载):http://hdlcode.com/index.php?m=home&c=View&a=index&aid=1507&sessionid=-806226391

【来源:www.hdlcode.com

  • 设计文档.doc
    下载
点赞
收藏
评论
分享
加入交流群
举报

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录