参考资料见练习一:
主要参考“MES2KG.rar”中MES2KG\demo中教程“MES2KG开发板实验指导.pdf”,本次实验主要参照 5. 序列检测器和6. 密码锁。另还需参考MES2KG\工具篇中“PDS快速使用手册.docx”。
5. 序列检测器是和6. 密码锁的基础,需要先学习5. 序列检测器才能更快理解6. 密码锁,每周任务因只有5个任务整合了5. 序列检测器是和6. 密码锁。
编写代码
参见“MES2KG.rar”中MES2KG\demo\6_lock\source\Desktop
代码设计:
顶层文件----lock_seq.v
按键消抖模块----btn_deb.v
对比模块----compare.v
按键计数模块----key_ctl.v
时钟分频模块----div_clk.v
数码管显示模块----seq_control.v
数码管控制模块----seq_display.v
按键消抖和按键计数等均可参考按键彩灯3_key_led_rgb。
时钟分频和数码管显示模块等可参考数码管动态显示4_top_seq。
对比模块和数码管控制模块等可参考序列检测器5_top_seq_det。
序列对比的位宽为单个数据占2bit,KEY1和KEY2按键控制输入密码数据设置为2bit。
按键控制:
4个按键输入信号均需消抖处理,KEY4 和KEY3 取下降沿输出,KEY[2:1]以下降沿来变更各自的输入密码,每次数字加1(0~3 循环,2bit)
数码管显示:
2种显示状态:
密码输入状态:上电默认状态0000闪烁,KEY3 下降沿触发进入重置状态,右侧2个数码管实时显示2 位输入密码
密码验证状态:KEY4 下降沿触发,显示密码验证结果,正确显示8888,错误则显示7777
密码验证;
KEY4 下降沿触发使能工作, KEY4 下降沿触发所存输入密码,并与拨码开关设置的密码进行比较,输出密码比较结果,提供给数码管显示。
正式操作
简单版:打开PDS 软件,打开demo\6_lock\lock_top.pds工程,切换PGC2KG-6LPG100为PGC1KG-6LPG100,重新编译、生成位流文件并使用编程器刷写到板子上。
一般操作:具体步骤参见练习一
I/O设置如下:
实验结果:拨码开关SW1-SW4用于设置密码,2个一组,二进制,对应十进制的0-3,如全上拨设置密码为33,全下拨为00,上下上下为22,下上下上为11。KEY1-KEY2 用于密码输入,按键按一下数字加1,数字由数码管显示,数字在0,1,2,3 中循环,KEY1控制最右侧数码管,KEY2控制右数第2个数码管。K4 作为确认按键,按下K4,输入的密码与设置的密码比对,匹配时显示8888,不匹配则显示7777。按下K3重置输入,数码管显示0000,可以重新输密码。
密码管始终闪烁,尝试修改代码改为常亮,未果。