数电实验(七)——简易频率计

2023-11-11 18:10
文章标签 实验 简易 频率计 数电

本文主要是介绍数电实验(七)——简易频率计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

写在前面的话

很开心大家能够持续关注我这个CSDN小透明,上一周比较忙,就少更了一期的数电实验,结果,好多小伙伴都私信问我,还有小伙伴跑去爬虫系列文章评论区去蹲第七次数电实验,感觉受宠若惊。哈哈哈哈哈,这不来了嘛,第七次数电实验来了~这就安排上
往期文章:
数电实验(四)——四位乘法器
数电实验(五)——ROM设计
数电实验(六)——信号发生器

简易频率计

本次实验依旧不会一步一步地展示怎么做,不会的小伙伴请自行参考往期文章(其实就是我懒~ 略略略)
以下是关键步骤:
一.明确本次实验的实验要求:
1.通过信号发生器产生信号
2.通过AD模块将信号转为数字信号传入FPGA
3.通过VHDL语言进行信号频率的判断,将结果输出到七段数码管

二.实验步骤
1.信号发生器的使用不多赘述(那不是有手就行嘛[坏笑ing]),记着CH1还是CH2,一定要Output
2.新建五个VHDL文件,要生成五个器件,分别是两个分频器,一个计数器,一个锁存器,一个译码器
两个分频器:

在这里插入图片描述
一共五个~
下面是代码部分:
分频器1:
在这里插入图片描述
分频器2:
在这里插入图片描述

计数器:
(真不忍心你们自己手敲了~,我直接贴源码吧)
(这还不来一波点赞评论?喜欢我就关注哦)
不过CSDN不支持VHDL代码格式好像,我给你们放Python代码模块里面,可以直接复制粘贴

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY jishuqi ISPORT (RST,clk:IN STD_LOGIC;DW:OUT STD_LOGIC_VECTOR(1 DOWNTO 0);D2,D1,D0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END jishuqi;
ARCHITECTURE fwm OF jishuqi IS
BEGINPROCESS(RST,clk)VARIABLE T8,T7,T6,T5,T4,T3,T2,T1,T0:STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";BEGINIF RST='0' THENT8:="0000";T7:="0000";T6:="0000";T5:="0000";T4:="0000";T3:="0000";T2:="0000";T1:="0000";T0:="0000";ELSIF clk' EVENT AND clk='1' THENIF T0<"1001" THEN T0:=T0+1;ELSIF T1<"1001" THEN T1:=T1+1;T0:="0000";ELSIF T2<"1001" THEN T2:=T2+1;T1:="0000";T0:="0000";ELSIF T3<"1001" THEN T3:=T3+1;T2:="0000";T1:="0000";T0:="0000";ELSIF T4<"1001" THEN T4:=T4+1;T3:="0000";T2:="0000";T1:="0000";T0:="0000";ELSIF T5<"1001" THEN T5:=T5+1;T4:="0000";T3:="0000";T2:="0000";T1:="0000";T0:="0000";ELSIF T6<"1001" THEN T6:=T6+1;T5:="0000";T4:="0000";T3:="0000";T2:="0000";T1:="0000";T0:="0000";ELSIF T7<"1001" THEN T7:=T7+1;T6:="0000";T5:="0000";T4:="0000";T3:="0000";T2:="0000";T1:="0000";T0:="0000";ELSIF T8<"1001" THEN T8:=T8+1;T7:="0000";T6:="0000";T5:="0000";T4:="0000";T3:="0000";T2:="0000";T1:="0000";T0:="0000";END IF;END IF;IF T8/="0000" OR T7/="0000" OR T6/="0000" THENDW<="10";D2<=T8;D1<=T7;D0<=T6;ELSIF T5/="0000" OR T4/="0000" OR T3/="0000" THENDW<="01";D2<=T5;D1<=T4;D0<=T3;ELSEDW<="00";D2<=T2;D1<=T1;D0<=T0;END IF;END PROCESS;END fwm;

锁存器:
在这里插入图片描述
译码器:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY yimaqi IS
PORT(QW:IN STD_LOGIC_VECTOR(1 DOWNTO 0);Q2,Q1,Q0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);dis_out3,dis_out2,dis_out1,dis_out0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END yimaqi;
ARCHITECTURE fwm OF yimaqi IS
BEGIN
PROCESS(QW,Q2,Q1,Q0)
BEGIN
CASE QW IS
WHEN "00"=>dis_out0<="0001001";
WHEN "01"=>dis_out0<="1000110";
WHEN "10"=>dis_out0<="1001000";
WHEN OTHERS=>dis_out0<="1111111";
END CASE;CASE Q2 IS
WHEN"0000"=>dis_out3<="1000000";
WHEN"0001"=>dis_out3<="1111001";
WHEN"0010"=>dis_out3<="0100100";
WHEN"0011"=>dis_out3<="0110000";
WHEN"0100"=>dis_out3<="0011001";
WHEN"0101"=>dis_out3<="0010010";
WHEN"0110"=>dis_out3<="0000010";
WHEN"0111"=>dis_out3<="1111000";
WHEN"1000"=>dis_out3<="0000000";
WHEN"1001"=>dis_out3<="0010000";
WHEN OTHERS=>dis_out3<="1111111";
END CASE;CASE Q1 IS
WHEN"0000"=>dis_out2<="1000000";
WHEN"0001"=>dis_out2<="1111001";
WHEN"0010"=>dis_out2<="0100100";
WHEN"0011"=>dis_out2<="0110000";
WHEN"0100"=>dis_out2<="0011001";
WHEN"0101"=>dis_out2<="0010010";
WHEN"0110"=>dis_out2<="0000010";
WHEN"0111"=>dis_out2<="1111000";
WHEN"1000"=>dis_out2<="0000000";
WHEN"1001"=>dis_out2<="0010000";
WHEN OTHERS=>dis_out2<="1111111";
END CASE;CASE Q0 IS
WHEN"0000"=>dis_out1<="1000000";
WHEN"0001"=>dis_out1<="1111001";
WHEN"0010"=>dis_out1<="0100100";
WHEN"0011"=>dis_out1<="0110000";
WHEN"0100"=>dis_out1<="0011001";
WHEN"0101"=>dis_out1<="0010010";
WHEN"0110"=>dis_out1<="0000010";
WHEN"0111"=>dis_out1<="1111000";
WHEN"1000"=>dis_out1<="0000000";
WHEN"1001"=>dis_out1<="0010000";
WHEN OTHERS=>dis_out1<="1111111";
END CASE;
END PROCESS;
END fwm;

五个VHDL文件,按照我的拼音命名法,不要命名错误
在这里插入图片描述
这样,然后对每一个的VHDL文件创建零器件。
放到原理图文件中,连线,如图
在这里插入图片描述
然后配置引脚,
两个input引脚,clk那个接G21,另一个接AB17
五个output引脚,与分频器连的那个接T16,最后四个分别与数码管相连,数码管引脚图如图:
在这里插入图片描述
在这里插入图片描述
需要注意的是,数码管配置引脚的时候,需要反着来
什么叫反着来,自己体会
在这里插入图片描述
配置完引脚就连线了~
这里给你们自己发挥,怎么连?提示一下,四根线就好了
去充分发挥自己的主观能动性[坏笑ing]
实在不会的私信或者评论区问我

写在后面的话

数电实验系列文章可能就此结束了,不太确定会不会更新前几次实验的,有时间再更吧
欢迎大家继续关注我!以后还会逐步更新其他的文章的!!!
附其他系列文章:
爬虫与数据分析系列:
爬虫与数据分析(一)
爬虫与数据分析(二)
爬虫与数据分析(三)
数据挖掘系列:
数据挖掘(一)——K-means均值聚类算法
数据挖掘(二)——K-medoids中心聚类算法
数据挖掘(三)——层次聚类
欢迎大家一起学习交流~

这篇关于数电实验(七)——简易频率计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用PyQt实现简易文本编辑器

《使用PyQt实现简易文本编辑器》这篇文章主要为大家详细介绍了如何使用PyQt5框架构建一个简单的文本编辑器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录分析主窗口类 (MyWindow)菜单操作语法高亮 (SyntaxHighlighter)运行程序主要组件代码图示分析实现

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服