【紫光同创国产FPGA教程】——【PGL22G第六章】密码锁实验例程

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

紫光同创PGL22G开发平台(盘古22K)

一:盘古22K开发板(紫光同创PGL22G开发平台)简介

盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板,全面实现国产化方案,板载资源丰富,高容量、高带宽,外围接口丰富,不仅适用于高校教学,还可以用于实验项目、项目开发,一板多用,满足多方位的开发需求。

二:实验目的

利用 MES22GP 板卡上的按键,拨码开关以及数码管实现一种简单的密码锁。
利用拨码开关设置密码,使用按键输入开锁密码。当开锁密码与设定密码相同时开锁成功, 数码管显示 8888,密码错误时显示 7777。
SW1~SW8 设置 4 位数密码,每两位设置一位密码,SW[2:1]设置第一位,SW[4:3]设置第二位,SW[6:5]设置第三位,SW[8:7]设置第四位。四位密码最高可设置为“3333”;
KEY4~KEY1 作为密码输入,按键按一下数字加 1,数字由数码管显示,数字在 0,1,2, 3 中循环。
K7 作为确认按键,按下 K7,输入的密码与设置的密码比对,如相同则显示 8888,若不同则显示 7777。
按下 K8 清零,按下后数码管显示 0000,可以重新输密码。
三:实验原理
原理上与前一个章节的序列检测是类似的,在前一个实验的基础上有了一些延伸;
序列对比的位宽发生改变,单个数据占 2bit,一个按键控制输入密码数据设置为 2bit 即可;对比与重新开始在此实验用两个按键实现,一个确认对比,一个清空结果;
四:实验源码设计
根据需求我们需要如下三个子模块:
①按键控制模块;
1、对 6 个按键输入信号均做消抖处理,2、KEY[4:1]以下降沿来变更各自的输入密码,
每次数字加 1(0~3 循环,2bit 即可)
②数码管显示模块;
显示状态有两种:
密码输入状态:
1、上电默认状态; 2、KEY8 触发进入重置状态;3、实时显示 4 位输入密码;
密码验证状态:
1、KEY7 触发进入;
2、显示密码验证结果,正确则显示 8888,错误则显示 7777;
③密码验证模块;
KEY7 下降沿触发使能工作; KEY7 下降沿触发所存输入密码,并与拨码开关设置的密码进行比较;
输出密码比较结果,提供个数码管显示模块
顶层模块设计
顶层模块与上述三个模块之间的关系如下图:

输入输出信号如下表:

Module 设计如下:

按键控制设计

输入输出信号如下表:
Module 设计如下:

对比模块设计
输入输出信号如下表:

Module 设计

显示模块设计
输入输出信号如下表:

此模块设计需要注意数码管显示的两种模式:密码输入模式与密码对比结果显示模式;两
种模式的切换由 enter_trig 与 init_trig 触发进入;
对于数码管的显示控制模块这里就不重复描述了;

五:实验现象 

实验步骤:
1 、 调整输入序列,更改拨码开关的输入值( SW[8 1] );
2 、 调整固定序列,通过轻触按键调整输入密码,数码管实时显示输入密码;
3 、 按下轻触按键 KEY7 ,触发进行密码比对,并且数码管显示比对结果;
4 、 按下轻触按键 KEY8 ,进入重新输入密码状态,重新执行前面三个步骤。
实验现象:
SW[8:1]=8’b10101010; 当输入密码状态时显示 4 2 ,按下 Key7 后数码管显示数字8888;当输入密码状态时显示不是 4 2 2 ,按下 Key7 后数码管显示数字 7777 ;按下 Key8后重新调整密码,进入输入密码状态。

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/97392.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年9月重庆/南京/深圳CDGA/CDGP数据治理认证考试报名

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

C#2010 .NET4 解析 json 字符串

下载Newtonsoft.Json.dll using System; using System.Collections.Generic; using System.Linq; using System.Text;using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; namespace ConsoleApplication1 {class Program{static void Main(string[] args){strin…

硬件知识积累 USB 接口 type - A type - B type - C 的介绍与功能说明 (简单介绍)

1. USB 的介绍 1.1 USB 的定义 USB : 通用串行总线(英语: Universal Serial Bus,缩写:USB)是一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视&a…

Redis各类数据结构应用场景总结

Redis各类数据结构应用场景总结 引言String应用场景 List应用场景 Hash应用场景 Set应用场景 ZSet应用场景 小结 引言 实际面试过程中更多看重的是对Redis相关数据结构的活学活用,同时也可能会引申出Redis相关底层数据结构原理的实现,笔者最近面试过程中…

MySQL事务原理、MVCC详解

事务原理 1 事务基础 1). 事务 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 2). 特性 原子性(Atomi…

Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421

文章目录 0.前言1.参考文档2.基础介绍3.漏洞利用原理3.解决方案1. 升级Spring Boot版本2. 限制端点的访问3. 禁用环境端点4. 不公开敏感的Actuator端点5. 开启安全审计 0.前言 背景: Spring Boot Actuator的Env端点存在本地文件包含(LFI)漏洞CVE-2020-5421。被扫描到…

用Socket实现网络通信

文章目录 背景网络编程网络编程三要素 2.Socket之UDP通信程序2.1 UDP发送数据2.2UDP接收数据 3. Socket之TCP通信程序3.1TCP发送数据3.2TCP接收数据 背景 网络编程 ● 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来…

TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?

先来介绍一些osi七层模型 分为应用层、表示层、会话层、运输层、网络层、链路层、物理层。 应用层(数据):确定进程之间通信的性质以及满足用户需要以及提供网络和用户应用,为应用程序提供服务,DNS,HTTP,HTTPS&#xf…

Shell 脚本入门

目录 一、Shell是什么 1.1 我们为什么要学习Shell和使用Shell? 1.2 Shell的分类有哪些? 二、Shell脚本入门知识 2.1 Shell文件命名规范 2.2 Shell解析器 2.3 用Shell 编写hello World 三、Shell的四种变量类型 3.1 系统预定义变量 3.2 自定义变…

2024年java面试--redis(1)

系列文章目录 2024年java面试(一)–spring篇2024年java面试(二)–spring篇2024年java面试(三)–spring篇2024年java面试(四)–spring篇 文章目录 系列文章目录前言Redis数据类型Red…

vue 小黑记事本

vue 小黑记事本 下面这个界面用html和css 如何搞出来?

软考:中级软件设计师:大数据

软考:中级软件设计师:大数据 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 &#x…

Java 复习笔记 - 方法篇

文章目录 一,方法的定义二,最简单的方法定义和调用三,带参数的方法定义和调用四,带返回值方法的定义和调用五,小结六,方法的重载七,方法简单练习1,数组遍历2,数组最大值3…

无涯教程-Android Intent Standard Extra Data函数

下表列出了各种重要的Android Intent Standard Extra Data。您可以查看Android官方文档以获取额外数据的完整列表- Sr.NoExtra Data & Description1 EXTRA_ALARM_COUNT 用作AlarmManager intents(意图)中的int Extra字段,以告诉正在调用的应用程序intents(意图)释放了多少…

java Spring Boot将不同配置拆分入不同文件管理

关于java多环境开发 最后还有一个小点 我们一般会将不同的配置 放在不同的配置文件中 好处肯定就在于 想换的时候非常方便 那么 我们直接看代码 我们将项目中的 application.yml 更改代码如下 spring:profiles:active: dev这里 意思是 我们选择了dev 环境 然后创建一个文件 …

【网络设备】交换机的概念、工作原理、功能以及以太网帧格式

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、认识交换机 二、交换机的主要功能 1、数…

ARP欺骗(大白话)

前提条件: 有三台主机,PC1,PC2,PC3,现要实现PC1与PC2的关联(如图) 不存在ARP欺骗时 步骤: 首先查看arp表(有ip和mac的关系) 如果表中有PC2的信息&#xf…

【Python数据分析】数据分析之numpy基础

实验环境:建立在Python3的基础之上 numpy提供了一种数据类型,提供了数据分析的运算基础,安装方式 pip install numpy导入numpy到python项目 import numpy as np本文以案例的方式展示numpy的基本语法,没有介绍语法的细枝末节&am…

打破对ChatGPT的依赖以及如何应对ChatGPT的错误和幻觉

​ OpenAI的ChatGPT是第一个真正流行的生成式AI工具,但它可能不是最好的。现在是时候扩大你的AI视野了。 ChatGPT成为了基于大语言模型(LLM)的聊天机器人的同义词。但是现在是时候停止对ChatGPT的痴迷,开始发现这个新世界中强大的替代品了。 首先&a…

保姆级教程之SABO-VMD-SVM的西储大学轴承诊断

之前写过一篇优化核极限学习机的轴承诊断,今天再出一期基于SVM的轴承诊断。 依旧是包含了从数据处理,到减法优化器SABO算法优化VMD参数,再到支持向量机的故障诊断,实现故障诊断的全流程,其他类型的故障诊断均可参考此流…