【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…

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

一、教程描述 本套税务筹划教程&#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实战 |…

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

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

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

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

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

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

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

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

VsCode编译wxWidgets的HelloWorld

wxWidgets 环境搭建 在wxWidgets 官网下载页面点击Download Windows Binaries选择TDM-GCC 10.3和MinGW-w64 8.1下的头文件和开发包进行下载。这儿我们会用两种 gcc 编译器进行对比&#xff0c;所以下载 2 个种编译器对应的库文件。正常只需根据自己安装的编译器下载对应的 1 种…

[每周一更]-(第88期):Nginx 之 proxy_pass使用详解

proxy_pass 指令用于指定后端服务器的地址&#xff0c;可以采用以下不同的格式&#xff1a; 直接指定地址和端口&#xff1a; location / {proxy_pass http://backend_server:8080; }这将请求代理到 http://backend_server:8080。 使用变量&#xff1a; location / {set $ba…

petalinux_zynq7 驱动DAC以及ADC模块之五:nodejs+vue3实现web网页波形显示

前文&#xff1a; petalinux_zynq7 C语言驱动DAC以及ADC模块之一&#xff1a;建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二&#xff1a;petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件

flutter开发实战-手势Gesture与ListView滚动竞技场的可滑动关闭组件 最近看到了一个插件&#xff0c;实现一个可滑动关闭组件。滑动关闭组件即手指向下滑动&#xff0c;组件随手指移动&#xff0c;当移动一定位置时候&#xff0c;手指抬起后组件滑出屏幕。 一、GestureDetect…

大保司保费贵,是否物有所值?

《大保司保费贵&#xff0c;是否物有所值》 这是罗师兄的原创文章 预计8-9分钟读完 作者&#xff1a;罗师兄 微信号&#xff1a;luoyun515 当我们想要买一份重疾险、储蓄险等长期险时&#xff0c; 我们会发现&#xff0c;同样的保障责任和保额&#xff0c; 不同保险公司的…

基于AdaBoost算法的情感分析研究-微博情感分析-文本分类

基于AdaBoost算法的情感分析研究 摘 要 随着互联网的快速发展&#xff0c;各类社交媒体平台如微信、QQ等也与日俱增&#xff0c;而微博更是集成了传统网站、论坛、博客等的优点&#xff0c;并加上了人与人之间的互动性、关系亲密程度等多种智能算法&#xff0c;并以简练的形式…

python安装与配置2024最新版

对python不熟悉的可以去看看这篇文章python介绍 pytho安装 来到Python官网&#xff1a;https://www.python.org/ 然后 选着download列表下的windows , 然后加进入python各个版本的下载界面 可以看到截止2024年2月22日,最新版是3.12.2 但是我们一般下载稳定版 如下,点击连接进…

解决两个MySQL5.7报错

目录 1.启动不了MySQL&#xff0c;报错缺少MSVCR120.dll去官网下载vcredist_x64.exe运行安装进入管理员CMD 2.本地计算机 上的 mysql 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止&#xff0c;Fatal error: Can‘t open and lock privilege tables: Table ‘…

实习日志28

1.医院账套系统换新&#xff0c;卡片数据转移 1.1.修改旧导出的Excel 1.2.尝试导入新系统 1.3.修改导入数据再次导入即可 这个系统做的限制条件比较多&#xff0c;代码健壮性不错。 先在Excel表格里改好批量的&#xff0c;再导入检查&#xff0c;改一些细节的比较快捷。 2.…

ChatGPT回答模式

你发现了吗&#xff0c;ChatGPT的回答总是遵循这些类型方式。 目录 1.解释模式 2.类比模式 3.列举模式 4.限制模式 5.转换模式 6.增改模式 7.对比模式 8.翻译模式 9.模拟模式 10.推理模式 1.解释模式 ChatGPT 在回答问题或提供信息时&#xff0c;不仅仅给出…