适用于板卡型号:
紫光同创PG2L50H_MBG324开发平台(盘古PGX-Nano)
PGX-Nano 是一套以紫光同创 FPGA 为核心的开发板,选用紫光同创 logos2 系列 28nm 工艺的 FPGA(PG2L50H_MBG324)。集成下载器芯片,极大的便利 了用户的使用。 板卡搭载一颗容量为 2MB 的 SRAM 用于数据缓存,DAC 芯片用于产生模 拟信号进行测试验证,esp32 模组进行 WIFI、蓝牙透传;预留了丰富的扩展 IO 用于用户验证、测试外接模块电路功能,一组串口进行串行通信;同时为用户提 供基础的硬件电路资源,例如 led 灯、按键、拨码开关等。
二:实验目的
利用盘古 PGX-Nano 板卡上的按键,拨码开关以及数码管实现一种简单的密码锁;
三:实验要求
利用拨码开关设置密码,使用按键输入开锁密码。当开锁密码与设定密码相同时开锁成功,数码管显示 8888,密码错误时显示 7777。
SW0~SW3 设置 2 位数密码,每两位设置一位密码,SW[1:0]设置第一位数据对应的二进制数值,SW[3:2]设置第二位数据对应的二进制数值。所以密码是由 0,1,2,3 组成的四位数。
S1-S0 按键作为密码输入,按键按一下数字加 1,数字由数码管显示,数字在 0,1,2,3 中循环。
S2 作为确认按键,按下 S2,输入的密码与设置的密码比对,如相同则显示 8888,若不同则显示 7777。 按下 S3 清零,按下后数码管显示 0000,可以重新输密码。
四:实验原理
原理上与前一个章节的序列检测是类似的,在前一个实验的基础上有了一些延伸;
序列对比的位宽发生改变,单个数据占 2bit,一个按键控制输入密码数据设置为 2bit 即可;对比与重新开始在此实验用两个按键实现,一个确认对比,一个清空结果;
五:实验源码(完整源码查看 demo 源文件)
根据需求我们需要如下三个子模块:
①按键控制模块;
1、对 4 个按键输入信号均做消抖处理
2、S3 和 S2 取下降沿输出
3、S[1:0]以下降沿来变更各自的输入密码,每次数字加 1(0~3 循环,2bit即可)
②数码管显示模块;
显示状态有两种:密码输入状态:
1、上电默认状态; 2、S3 下降沿触发进入重置状态;3、实时显示 2 位输入密码;
密码验证状态:
1、S2 下降沿触发进入;
2、显示密码验证结果,正确则显示 8888,错误则显示 7777;
③密码验证模块;
S2 下降沿触发使能工作; S2 下降沿触发所存输入密码,并与拨码开关设置的密码进行比较;
输出密码比较结果,提供个数码管显示模块。
顶层模块设计
顶层模块与上述三个模块之间的关系如下图:
输入输出信号如下表:
Module 设计如下:
按键控制设计
按键消抖设计
对比模块设计
显示模块设计
此模块设计需要注意数码管显示的两种模式:密码输入模式与密码对比结果显示模式;两种模式的切换由 enter_trig 与 init_trig 触发进入;
对于数码管的显示控制模块这里就不重复描述了;
六:实验现象
验证步骤:
1、 调整输入序列,更改拨码开关的输入值(SW[3:0]);8 / 8
2、 调整固定序列,通过轻触按键 S1~S0 调整输入密码,数码管实时显示输入密码;
3、 按下轻触按键 S2,触发进行密码比对,并且数码管显示比对结果;
4、 按下轻触按键 S3,进入重新输入密码状态,重新执行前面三个步骤;
实验现象
当 SW[3:0]=8’b1010;当输入密码状态时显示 0022 时,按下 S2 后数码管显示数字 8888;当输入密码状态时显示不是 0022 时,按下 S2 后数码管显示数字 7777;按下 S3 后重新调整密码,进入输入密码状态;
当 SW[3:0]=8’b1100;当输入密码状态时显示 0030 时,按下 S2 后数码管显示数字 8888;当输入密码状态时显示不是 0030 时,按下 S2 后数码管显示数字 7777;按下 S3 后重新调整密码,进入输入密码状态;
抖yin搜索:小眼睛FPGA