数字秒表VHDL实验箱精度毫秒可回看,视频/代码

news2024/11/28 23:36:01

名称:数字秒表VHDL精度毫秒可回看

软件:Quartus

语言:VHDL

代码功能:

    数字秒表的VHDL设计,可以显示秒和毫秒。可以启动、停止、复位。要求可以存储6组时间,可以回看存储的时间

    本资源内含2个工程文件,两个工程文件功能相同,均能实现上述数字秒表功能,但是代码实现方式不同,详见下述设计文档_1和设计文档_2.

    本代码已在实验箱验证,实验箱资料:

实验电路结构图及芯片引脚对应表(1).doc

演示视频:数字秒表VHDL实验箱验证精度毫秒可回看_Verilog/VHDL资源下载

FPGA代码资源下载网:hdlcode.com

代码下载:

数字秒表VHDL实验箱验证精度毫秒可回看_Verilog/VHDL资源下载名称:数字秒表VHDL精度毫秒可回看(代码在文末付费下载)软件:Quartus语言:VHDL代码功能: 数字秒表的VHDL设计,可以显示秒和毫秒。可以启动、停止、复位。要求可以存储6组时间,可以回看存储的时间 本资源内含2个工程文件,两个工程文件功能相同,均能实现上述数字秒表功能,但是代码实现方式不同,详见下述设计文档_1和设计文档_2. 本代码已在实验箱验证,实验箱资料:实验电icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=199

部分代码展示

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--秒表控制模块
ENTITY control IS
   PORT (
      clk_in          : IN STD_LOGIC;--1KHz
      reset_p           : IN STD_LOGIC;--复位
      key_1           : IN STD_LOGIC;--启动
      key_2           : IN STD_LOGIC;--停止
  current_state: OUT STD_LOGIC_VECTOR(1 DOWNTO 0);--当前状态
      Millisecond  : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);--毫秒
      Second       : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)--秒
   );
END control;
ARCHITECTURE RTL OF control IS
   SIGNAL state : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";    -- 创建信号   
   constant S0: STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";
   constant S1: STD_LOGIC_VECTOR(1 DOWNTO 0) := "01";
   constant S2: STD_LOGIC_VECTOR(1 DOWNTO 0) := "10";
   constant S3: STD_LOGIC_VECTOR(1 DOWNTO 0) := "11";
   SIGNAL num1     : STD_LOGIC_VECTOR(3 DOWNTO 0):= "0000";
   SIGNAL num2     : STD_LOGIC_VECTOR(3 DOWNTO 0):= "0000";
   SIGNAL num3     : STD_LOGIC_VECTOR(3 DOWNTO 0):= "0000";
   SIGNAL num4     : STD_LOGIC_VECTOR(3 DOWNTO 0):= "0000";
   SIGNAL num5     : STD_LOGIC_VECTOR(3 DOWNTO 0):= "0000";
   SIGNAL num6     : STD_LOGIC_VECTOR(3 DOWNTO 0):= "0000";
   
   SIGNAL haomiao_cnt: STD_LOGIC_VECTOR(11 DOWNTO 0) := "000000000000";
   SIGNAL miao_cnt: STD_LOGIC_VECTOR(11 DOWNTO 0) := "000000000000";
BEGIN
   --计时状态机
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN
         IF (reset_p = '1') THEN--按下复位
            state <= S3;--复位状态
         ELSE
            CASE state IS
               WHEN S3 =>--复位状态
                  state <= S0;
               WHEN S0 =>--空闲状态
                  IF (key_1 = '1') THEN--按下启动
                     state <= S1;
                  ELSE
                     state <= S0;
                  END IF;
               WHEN S1 =>--计时状态
                  IF (key_2 = '1') THEN--按下停止
                     state <= S2;
                  ELSE
                     state <= S1;
                  END IF;
               WHEN S2 =>--停止状态
                  state <= S2;
               WHEN OTHERS =>
            END CASE;
         END IF;
      END IF;
   END PROCESS;
   
   PROCESS (clk_in)
   BEGIN
      IF (clk_in'EVENT AND clk_in = '1') THEN
    IF (reset_p = '1') THEN--复位
            num1 <= "0000";
num2 <= "0000";
num3 <= "0000";
num4 <= "0000";
num5 <= "0000";
num6 <= "0000";
         ELSIF (state = S1) THEN--计时状态
if(num6="0010" and num5="0100" and num4="0000" and num3="0000" and num2="0000" and num1="0000")then
num1 <= num1;
num2 <= num2;
num3 <= num3;
num4 <= num4;
num5 <= num5;
num6 <= num6; 
            elsif num1="1001" then 
num1<="0000"; --此IF语句完成个位十进制计数
if num2="1001" then 
num2<="0000"; --此IF语句完成十位十进制计数
if num3="1001" then 
num3<="0000"; --此IF语句完成百位十进制计数
if num4="1001" then 
num4<="0000"; --此IF语句完成千位十进制计数
if num5="1001" then 
num5<="0000"; --此IF语句完成万位十进制计数
if num6="1001" then 
num6<="0000"; --此IF语句完成十万位十进制计数
else
num6<=num6+"0001";
end if;
else
num5<=num5+"0001";
end if;
else 
num4<=num4+"0001";
end if;
 else 
num3<=num3+"0001";
 end if;
else 
num2<=num2+"0001";
end if;
else 
num1<=num1+"0001";
end if;
end if;
end if;
--end if;
   END PROCESS;
   
haomiao_cnt<=num3 & num2 & num1;--毫秒百十个位
miao_cnt<=num6 & num5 & num4;--秒百十个位
   --信号输出
   Millisecond <= haomiao_cnt;
   Second <= miao_cnt;
   current_state<=state;
   
END RTL;

设计文档:

设计文档_1.doc

设计文档_2.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. 仿真图

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

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

相关文章

Systemverilog断言介绍(二)

3.2 IMMEDIATE ASSERTIONS 即时断言是最简单的断言语句类型。它们通常被认为是SystemVerilog过程代码的一部分&#xff0c;并在代码评估期间访问时进行评估。它们没有时钟或复位的概念&#xff08;除非有时钟/复位控制其封闭的过程块&#xff09;&#xff0c;因此无法验证跨越时…

【无标题】光伏逆变器的IEC62109测试,逆变器IEC62109测试项目

光伏逆变器的IEC62109测试&#xff0c;逆变器IEC62109测试项目 逆变器又称电源调整器&#xff0c;根据逆变器在光伏发电系统中的用途可分为独立型电源用和并网用二种。根据波形调制方式又可分为方波逆变器、阶梯波逆变器、正弦波逆变器和组合式三相逆变器。对于用于并网系统的…

基于springboot汽车租赁系统

功能如下图所示 摘要 Spring Boot汽车租赁系统的设计旨在满足不断增长的租车市场需求&#xff0c;并通过简化开发和部署流程来提供方便的租车解决方案。系统采用了现代化的架构&#xff0c;主要基于以下技术栈&#xff1a; Spring Boot&#xff1a;作为后端的核心框架&#xff…

VMware——VMware17安装WindowServer2012R2环境(图解版)

目录 一、WindowServer2012R2镜像百度云下载二、安装 一、WindowServer2012R2镜像百度云下载 下载链接&#xff1a;https://pan.baidu.com/s/1TWnSRJTk0ruGNn4YinzIgA 提取码&#xff1a;e7u0 二、安装 打开虚拟机&#xff0c;点击【创建新的虚拟机】&#xff0c;如下图&…

【Java基础面试二十六】、说一说String和StringBuffer有什么区别

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说String和StringBu…

C++项目——云备份-①-项目介绍环境搭建

文章目录 专栏导读1.什么是云备份2.实现目标3.服务端程序负责功能4.服务端功能模块划分5.客户端程序负责功能6.客户端功能模块划分开发环境环境搭建1. gcc 升级7.3版本2.安装 jsoncpp 库3.下载bundle数据压缩库4.下载 httplib 库 专栏导读 &#x1f338;作者简介&#xff1a;花…

【Solution】商品秒杀之Redis缓存与MQ异步优化以及超卖一人一单等问题的解决

目录 一、Demo开始前准备 1、数据库准备 2、项目准备 3、全局唯一id生成器 二、秒杀业务基本实现 1、秒杀基本业务逻辑 2、秒杀接口设计 3、秒杀业务代码实现 4、超卖问题产生 三、保证线程安全解决超卖少卖问题 1、超卖产生的原因 2、加锁方案&#xff1a;乐观锁 …

Go 函数的健壮性、panic异常处理、defer 机制

Go 函数的健壮性、panic异常处理、defer 机制 文章目录 Go 函数的健壮性、panic异常处理、defer 机制一、函数健壮性的“三不要”原则1.1 原则一&#xff1a;不要相信任何外部输入的参数1.2 原则二&#xff1a;不要忽略任何一个错误1.3 原则三&#xff1a;不要假定异常不会发生…

【Linux】如何判断RS-232串口是否能正常使用

1.RS-232串口短接 使用RS-232协议的串口引脚一般如图下所示 为了让串口能够接收到自己发出的串口数据&#xff0c;需要将输出端和输入端&#xff08;RXD和TXD&#xff09;进行短接操作&#xff1a; 短接完成后&#xff0c;才能实现自发自收的功能&#xff08;走其他协议的串口清…

开发者职场“生存状态”大调研报告分析 - 第四版

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

Swift使用Embassy库进行数据采集:热点新闻自动生成器

概述 爬虫程序是一种可以自动从网页上抓取数据的软件。爬虫程序可以用于各种目的&#xff0c;例如搜索引擎、数据分析、内容聚合等。本文将介绍如何使用Swift语言和Embassy库编写一个简单的爬虫程序&#xff0c;该程序可以从新闻网站上采集热点信息&#xff0c;并生成一个简单…

【MyBatis】MyBatis日志信息配置

目录 什么是MyBatis相关的日志&#xff1f; 标准日志信息配置&#xff1a; 配置logback日志信息&#xff1a; 什么是MyBatis相关的日志&#xff1f; 首先什么叫做与MyBatis相关的日志呢&#xff1f;就是我们在执行sql语句的时候&#xff0c;如果没有MyBatis相关的日志&…

SpringBoot项目访问后端页面404

检查项目的路径和mapper映射路径没问题后&#xff0c;发现本级pom文件没有加入web启动模块的pom文件中 maven做项目控制时&#xff0c;要注意将maven模块加入到web启动模块中

IDEA项目import报错清理缓存

1、清理maven缓存 2、整个项目清理缓存

易点易动上线招标管理模块:提升企业高效招标管理的解决方案

在当今竞争激烈的商业环境下&#xff0c;招标管理对于企业的成功至关重要。为了帮助企业实现高效的招标管理&#xff0c;易点易动固定资产管理系统上线了全新的招标管理模块。该模块涵盖了供应商资质审核、采购询价单、重新报价单、招标结果单、招标作废单等功能&#xff0c;为…

【动态规划】583. 两个字符串的删除操作、72. 编辑距离

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 583. 两个字符串的删除操作&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 72. 编辑距离&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&…

知识分享:如何制作一个电子名片二维码?

参加国际展会、寻找合作商、线下客户拜访、渠道开发、商务对接、行业交流大会……在这些场合中&#xff0c;商务名片都是必不可少的。随着二维码应用的流行&#xff0c;名片上使用二维码已经非常普遍了。你也可以在商务名片上使用一个自己设计的电子名片二维码&#xff0c;扫描…

基于 KubeSphere 部署 KubeBlocks 实现数据库自由

作者&#xff1a;尹珉&#xff0c; KubeSphere Contributor & Ambassador&#xff0c;KubeSphere 社区用户委员会杭州站站长。 KubeSphere 是什么&#xff1f; KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统&#xff0c;完全开源&#xff0c;支持…

使用HTML制作一个摊煎饼小游戏

铁打的行业流水的人&#xff0c;与其被动等待35岁的到来&#xff0c;不如主动出击探索副业&#xff0c;实现一个HTML摊煎饼小游戏&#xff0c;结合传统方法和现代技术&#xff0c;致力于制作出既美味又有创意的煎饼。 目录 引言简介游戏背景 所需材料和工具HTML基础知识CSS样式…

python作图

最重要的一张图了&#xff0c;有助于了解一下图的各个组成部分。最重要的一句话就是 Figure包含至少一个Axes&#xff0c;每个Axes可以被认为是一个模块&#xff08;包含坐标轴&#xff0c;标题&#xff0c;图像内容等&#xff09;。因此&#xff0c;创建单图的时候就是在Figur…