【FPGA】VHDL:小型出勤系统设计

附源代码,一定能实现!

目录

EDA设计练习题:

实验要求如下:

思路分析: 

代码

99进制计数器

码转换

顶层文件

特别注意

测试

编译通过

结果展示

RTL视图

技术映射视图


软件:Quartus II 13.0 (64-bit)

语言:VHDL


EDA设计练习题

采用EDA技术设计一个人数小于100的出勤统计电路,用于小型公司或部门工作、会议、培训等的出勤人数统计,统计对应每个人签到出勤的单个正脉冲信号,统计结果在两位共阳极数码管上显示。


实验要求如下:

1、程序设计:编写考勤电路的完整程序;注明端口名称及意义;

2、仿真验证:程序编辑、编译、仿真;要求展示全部程序、编译成功界面、功能仿真结果波形图;注意仿真图需能够看出来工作过程及实现的功能


思路分析: 

我们的任务是设计小型出勤系统,统计出勤人数,每个人签到都会产生一个正脉冲信号,我们只需要记录下来有多少个正脉冲信号即可,不需要考虑这个正脉冲怎么产生的~这地方是关键!

每个人签到产生一个正脉冲这种情况,我想的是可以用单片机实现,比如说指纹或者人脸识别,对比系统已经存储的数据,如果对比通关,就产生一个多少ms的脉冲信号,然后这个信号交给我们来处理,做成芯片内部的电路,这个说法不一定正确,不要完全相信~~~小声BB……

设计人数小于100的出勤统计电路,那我们就根据输入的脉冲设计考勤电路,实际上就是一个99计数器,99计数器还可以拆分成两个十进制计数器;然后把99计数器的两份拆分开显示到数码管上,这里还需要一个码转换器(BCD到数码管八段码表)


代码

先看一下工程文件

上层文件是 ShiYan8.vhd,两个底层文件,分别是CNT99.vhd(99进制计数器)和code_switch.vhd(码转换器)

99进制计数器

--99进制计数器library IEEE;
USE IEEE.STD_logic_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_logic_unsigned.ALL;ENTITY CNT99 IS PORT( clk		: IN		std_logic; clear   	: IN     std_logic; en		   : IN		std_logic; cout    	: out 	std_logic; qh			: buffer 	 std_logic_vector(3 downto 0); ql	   	: buffer 	 std_logic_vector(3 downto 0) );	 
END CNT99;ARCHITECTURE behave OF CNT99 ISBEGINcout<='1' when (qh="1001" and ql="1001" and en='1') else '0';PROCESS (clk,clear)BEGINIF(clear='0') THEN    --异步清零信号qh<="0000";ql<="0000";ELSIF (clk'EVENT AND clk = '1') THENif(en='1') thenif (ql=9)  then			ql<="0000";if(qh=9) thenqh<="0000";elseqh<=qh+1;end if;elseql<=ql+1;end if;end if;  --end if(en)END IF; --end if clear	END PROCESS;
END behave; 

码转换

8421BCD码到八段码转换电路(以共阴极数码管为例)

CASE-WHEN语句编写码转换电路比较方便,对比C语言中switch-case语句

参考上一篇文章:【FPGA】VHDL:八段码到8421BCD码转换电路

-- 8421BCD码到八段码转换电路(以共阳极数码管为例)
library IEEE;
USE IEEE.STD_logic_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_logic_unsigned.ALL;-- 实体声明
ENTITY code_switch IS PORT( Input_8421BCD : IN		STD_logic_vector(3 downto 0); Output_Yang	 : OUT		STD_logic_vector(7 downto 0));	 
END code_switch;--结构体说明
ARCHITECTURE behave OF code_switch ISBEGINPROCESS (Input_8421BCD)BEGIN--5、8421BCD码到八段码转换电路(以共阴极数码管为例)CASE Input_8421BCD ISWHEN "0000" => Output_Yang <= "11000000";WHEN "0001" => Output_Yang <= "11111001";WHEN "0010" => Output_Yang <= "10100100";			WHEN "0011" => Output_Yang <= "10110000";WHEN "0100" => Output_Yang <= "10011001"; 				WHEN "0101" => Output_Yang <= "10010010";WHEN "0110" => Output_Yang <= "10000010";WHEN "0111" => Output_Yang <= "11111000";WHEN "1000" => Output_Yang <= "10000000";WHEN "1001" => Output_Yang <= "10010000";when others => Output_Yang <= "10111111";	--slkdjfkalfEND CASE;END PROCESS;
END behave; 

顶层文件

这里我采用元件例化的方式写这个代码,就把整体拆成了三个文件,也可以合并起来写,但是不好看,代码比较臃肿,不方便移植~

-- 实验8 2023年11月21日09:02:17
-- 小型出勤统计系统设计程序 
--ShiYan8.VHD
library IEEE;
USE IEEE.STD_logic_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_logic_unsigned.ALL;ENTITY ShiYan8 ISPORT(CLR: IN STD_LOGIC;CLK: IN STD_LOGIC;ENA: IN STD_LOGIC;		  DOUT: OUT std_logic;qh			: buffer 	 std_logic_vector(3 downto 0); ql	   	: buffer 	 std_logic_vector(3 downto 0);SEG_high, SEG_low: OUT STD_logic_vector(7 downto 0));
END ENTITY ShiYan8;
ARCHITECTURE ART OF ShiYan8 ISCOMPONENT CNT99 ISPORT(clk		: IN		std_logic; clear   	: IN     std_logic; en		   : IN		std_logic; cout    	: out 	std_logic; qh			: buffer 	 std_logic_vector(3 downto 0); ql	   	: buffer 	 std_logic_vector(3 downto 0) );END COMPONENT CNT99;COMPONENT code_switch IS PORT( Input_8421BCD : IN		STD_logic_vector(3 downto 0); Output_Yang	 : OUT		STD_logic_vector(7 downto 0));	 END COMPONENT code_switch;BEGIN--元件例化U0:CNT99 PORT MAP (CLK, CLR, ENA, DOUT, qh, ql);U1:code_switch PORT MAP (qh(3 downto 0), SEG_high(7 downto 0));U2:code_switch PORT MAP (ql(3 downto 0),  SEG_low(7 downto 0));
END ARCHITECTURE ART; 

特别注意

工程名要和实体名相同


测试

编译通过

结果展示

看不太清,放大点 

再大点 

这里可以看到99之后变成了00,说明我们设计的99进制计数器是对的 

最下面是数码管8段码展示, 可以对照上面输出的数据,看一下,对比我们写入的码转换语句,数据能对应的上~~~这里也没有问题。

RTL视图

技术映射视图


本代码纯自己手敲,拒绝白嫖!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BERT学习笔记

论文&#xff1a;《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》&#xff0c;2019 代码&#xff1a;[tensorflow]&#xff0c;[pytorch] 来源&#xff1a;李沐精度BERT 0、摘要 与之前模型的区别&#xff1a; GPT考虑的是一个单向…

公司中常用的系统有哪些--制造业篇

摘要 本系列博客主要介绍不同行业中使用的常见系统&#xff0c;本文介绍在制造业或是智能制造方向的常见系统。 智能制造发展史 1973年美国约瑟夫哈林顿&#xff08;Joseph Harrington&#xff09;博士在《Computer Integrated Manufacturing》一书中首次提出 CIM&#xff08…

C# 本地方法和lambda实现

概念&#xff1a; 本地函数是一种嵌套在另一成员中的类型的方法。 仅能从其包含成员中调用它们。 下面是本地方法最简单的一个demo: public static int Show(){int c NewMethod(); return c;static int NewMethod(){#region 测试int a 3;int b 9;int c a b;#endregionre…

python opencv实现车牌识别

目录 一:实现步骤: 二:实现车牌检测 一:实现步骤: 使用Python和OpenCV实现车牌识别的步骤大致可以分为以下两部分: 车牌检测: 读取需要进行车牌识别的图片。 对图像进行灰度化处理,可能还包括高斯模糊和灰度拉伸。 进行开运算,消除图像中的噪声。 将灰度拉伸后的图…

培养纳税筹划思维方式,企业税务筹划实务操作

一、教程描述 本套税务筹划教程&#xff0c;大小447.87M&#xff0c;共有6个文件。 二、教程目录 前言.mp4 培养纳税筹划思维方式.mp4 增值税的税务筹划.mp4 企业所得税的税务筹划.mp4 个人所得税的税务筹划.mp4 企业税务筹划实务操作&#xff08;课件&#xff09;.pdf…

MDST150-16-ASEMI三相可控整流模块MDST150-16

编辑&#xff1a;ll MDST150-16-ASEMI三相可控整流模块MDST150-16 型号&#xff1a;MDST150-16 品牌&#xff1a;ASEMI 正向电流&#xff08;Id&#xff09;&#xff1a;150A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1600V 正向浪涌电流&#xff1a;1200A 正…

大数据揭秘:Hadoop短视频流量分析实战

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

PyTorch概述(一)---图像变换和增强

TorchVision torchvision 包由流行的数据集、模型架构以及用于计算机视觉的通用图片转换工具组成 TorchVision 包构成 图像变换和增强TVTensors模型和预训练的权重数据集工具操作图像和视频的编/解码用于模型检测的特征提取 图像变换和增强 torchvision支持通用的计算机视…

基于springboot+vue的车辆管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

获取淘宝商品详情API、商品主图、图片搜索api

获取淘宝详情API的方式有以下几种&#xff1a; 使用淘宝开放平台提供的接口&#xff1a;淘宝开放平台提供了多个API接口&#xff0c;让开发者可以通过接口获取商品详情信息。你可以到淘宝开放平台官网申请开发者账号&#xff0c;并查看相关接口文档&#xff0c;了解如何使用接…

C语言翻译环境:预编译+编译+汇编+链接详解

目录 翻译环境和运行环境 翻译环境 预处理&#xff08;预编译&#xff09; 编译 词法分析 语法分析 语义分析 汇编 链接 运行环境 ⭐翻译环境和运行环境 在ANSI C的任何⼀种实现中&#xff0c;存在两个不同的环境。 第1种是翻译环境&#xff0c;在这个环境中源代码被…

H桥逆变方式介绍(单极性)

H桥逆变电路实现的就是一个从DC——AC的过程 这个电路有两个时序&#xff0c;Q6Q4是一个导通时序&#xff0c;Q5Q7是一个导通时序 左边两个是高频20KHZ的、互补的sPWM波&#xff0c;右边是低频的50HZ的PWM波 三角波一般叫载波&#xff0c;正弦波叫调制波&#xff08;单片机内…

Hbase和Clickhouse对比简单总结

Hbase和Clickhouse是两种不同的数据库系统&#xff0c;它们各自适用于不同的场景。以下是两者之间的对比&#xff1a; 数据模型&#xff1a; HBase 是一种基于列的存储系统&#xff0c;它适合处理大规模的数据集&#xff0c;特别是那些需要快速随机访问的场景。ClickHouse 则是…

对“绝地求生“源码调节

调整了一些界面和降低游戏难度 #include "c.h" using namespace std; ExMessage msg; struct ME {int x 100; int y 100; int life 1000; int knapsack[18]; int Maximum_ammunition_capacity 0;int Ammunition_capacity 0; int primary_weapon 0; int moveme…

springboot/ssm仓库管理系统Java货物出入库管理系统wms系统web

springboot/ssm仓库管理系统Java货物出入库管理系统wms系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a…

Vi/Vim 使用小窍门,如何消除搜索后的关键字高亮

Vim/Vi 基本上是 *nix 世界最受欢迎的编辑器了&#xff0c;不知道为什么&#xff0c;一直以来觉得和 Emacs 比起来&#xff0c;Vim 更加有亲和力。用起来很舒服。 今天就记录一个困扰了我很久的问题。 大家应该都知道&#xff0c;在 Vi 里面如果要搜索某个关键字&#xff0c;…

C语言开发教程

C语言开发教程 电子书下载 下载地址 第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入/输出 1.6 数组 1.7 函数 1.8 参数--传值调用 1.9 字符数组 1.10 外部变量与作用域 第二章 类型、运算符与表达式 2.1 变量名 2.2 数据类型及长度 2.3 常…

汽车会撞死人,应不应该限制汽车?

激进派表示事故率很低&#xff0c;损失相比汽车带来的收益不值一提&#xff0c;不能限制汽车 保守派表示行人什么也没有做错&#xff0c;却飞来横祸&#xff0c;只要发生一起事故&#xff0c;可能对一个家庭就是灭顶之灾&#xff0c;应该严格限制汽车 两边都有道理&#xff0c…

Python-pdfplumber读取PDF内容

文章目录 前言一、pdfplumber模块1.1 pdfplumber的特点1.2 pdfplumber.PDF类1.3pdfplumber.Page类 二 pdfplumber的使用2.1 加载PDF2.2 pdfplumber.PDF 类2.3 pdfplumber.Page 类2.4 读取PDF2.5 读取PDF文档信息2.6 查看总页数2.7 查看总页数读取第一页的宽度&#xff0c;页高等…

263集成客服系统:提升电商平台用户体验

{连接&#xff1a;无缝整合客服渠道} 在电子商务领域&#xff0c;客服是保持客户满意度和忠诚度的关键因素。263集成客服系统允许电商平台无缝连接到各种客服通道&#xff0c;包括在线聊天、电子邮件和社交媒体等。这种无代码开发方式不仅消除了传统API开发的复杂性&#xff…