【紫光同创国产FPGA教程】【PGC1/2KG第六章】密码锁实验例程

本文主要是介绍【紫光同创国产FPGA教程】【PGC1/2KG第六章】密码锁实验例程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处

适用于板卡型号:

紫光同创PGC1/2KG开发平台(盘古1K/2K)

一:盘古1K/2K开发板(紫光同创PGC2KG开发平台)简介

盘古1/2K 开发板是一套基于紫光 FPGA 的开发套件,以紫光 Compa 系列PGC1KG-LPG100 / PGC2KG-LPG100 器件为核心,预留丰富的扩展 IO 及数码管、按键、LED 灯,为用户提供基本的硬件环境。

二:实验目的

利用MES2K板卡上的按键,拨码开关以及数码管实现一种简单的密码锁;

三:实验要求

利用拨码开关设置密码,使用按键输入开锁密码。当开锁密码与设定密码相同时开锁成功,数码管显示 8888,密码错误时显示 7777。

SW1-  SW4 设置 2 位数密码,每两位设置一位密码,BM[0:1]设置第一位对应 BM1和 BM2,BM[2:3]设置第二位。所以密码是由0,1,2,3 组成的四位数。

KEY1-KEY2 作为密码输入,按键按一下数字加 1,数字由数码管显示,数字在 0,1,2,3 中循环。

K4 作为确认按键,按下 K4,输入的密码与设置的密码比对,如相同则显示 8888,若不同则显示 7777。 按下 K3 清零,按下后数码管显示 0000,可以重新输密码。

四:实验原理

原理上与前一个章节的序列检测是类似的,在前一个实验的基础上有了一些延伸;

序列对比的位宽发生改变,单个数据占2bit,一个按键控制输入密码数据设置为2bit即可;对比与重新开始在此实验用两个按键实现,一个确认对比,一个清空结果;

五:实验源码(完整源码查看demo源文件)

根据需求我们需要如下三个子模块:

①按键控制模块;

1、对4个按键输入信号均做消抖处理,2、KEY4和KEY3取下降沿输出,3、KEY[2:1]以下降沿来变更各自的输入密码,每次数字加1(0~3循环,2bit即可)

②数码管显示模块;

    显示状态有两种:

    密码输入状态:

        1、上电默认状态; 2、KEY3下降沿触发进入重置状态;3、实时显示2位输入密码;

    密码验证状态:

        1、KEY4下降沿触发进入;

        2、显示密码验证结果,正确则显示8888,错误则显示7777;

③密码验证模块;

     KEY4下降沿触发使能工作; KEY4下降沿触发所存输入密码,并与拨码开关设置的密码进行比较;

     输出密码比较结果,提供个数码管显示模块。​​​​​​​

顶层模块设计

顶层模块与上述三个模块之间的关系如下图

输入输出信号如下表:

Module设计如下:

​​​​​​​按键控制设计

Module设计如下:

​​​​​​​按键消抖设计

​​​​​​​对比模块设计

Module设计

​​​​​​​显示模块设计

此模块设计需要注意数码管显示的两种模式:密码输入模式与密码对比结果显示模式;两种模式的切换由enter_trig与init_trig触发进入;

对于数码管的显示控制模块这里就不重复描述了;

六:实验现象

验证步骤:

  1. 调整输入序列,更改拨码开关的输入值(SW[3:0]);
  2. 调整固定序列,通过轻触按键调整输入密码,数码管实时显示输入密码;
  3. 按下轻触按键KEY3,触发进行密码比对,并且数码管显示比对结果;
  4. 按下轻触按键KEY4,进入重新输入密码状态,重新执行前面三个步骤;

实验现象

当SW[3:0]=8’b1010;当输入密码状态时显示0022时,按下Key3后数码管显示数字8888;当输入密码状态时显示不是4个2时2,按下Key3后数码管显示数字7777;按下Key4后重新调整密码,进入输入密码状态; 

这篇关于【紫光同创国产FPGA教程】【PGC1/2KG第六章】密码锁实验例程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/371752

相关文章

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

Python pandas库自学超详细教程

《Pythonpandas库自学超详细教程》文章介绍了Pandas库的基本功能、安装方法及核心操作,涵盖数据导入(CSV/Excel等)、数据结构(Series、DataFrame)、数据清洗、转换... 目录一、什么是Pandas库(1)、Pandas 应用(2)、Pandas 功能(3)、数据结构二、安

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实