数字秒表VHDL启动暂停清零,源码和视频

编程入门 行业动态 更新时间:2024-10-27 22:26:35

数字<a href=https://www.elefans.com/category/jswz/34/1716428.html style=秒表VHDL启动暂停清零,源码和视频"/>

数字秒表VHDL启动暂停清零,源码和视频

名称:数字秒表VHDL启动暂停清零(代码在文末付费下载)

软件:Quartus

语言:VHDL

代码功能:

数字秒表 

使用VHDL语言设置数字秒表。要求具有百分秒、秒和分钟显示,百分秒范围00-99,秒范围00-59,分钟范围00-59 

系统具有启动/暂停功能系统具有清零功能

本资源包含2个不同的代码工程,每个工程都可独立实现上述功能。具体可以下载下文中的设计文档阅读。

演示视频:数字秒表VHDL启动暂停清零_Verilog/VHDL资源下载

FPGA代码资源下载网:hdlcode

代码下载:数字秒表VHDL启动暂停清零_Verilog/VHDL资源下载名称:数字秒表VHDL启动暂停清零(代码在文末付费下载)软件:Quartus语言:VHDL代码功能:数字秒表 使用VHDL语言设置数字秒表。要求具有百分秒、秒和分钟显示,百分秒范围00-99,秒范围00-59,分钟范围00-59 系统具有启动/暂停功能系统具有清零功能本资源包含2个不同的代码工程,每个工程都可独立实现上述功能。具体可以下载下文中的设计文档阅读。演示视频:FPGA代码资源下载网:hd.php?m=home&c=View&a=index&aid=202

部分代码展示

LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;
--秒表控制模块
ENTITY miaobaio_ctrl ISPORT (clk_50M                : IN STD_LOGIC;clk_100Hz              : IN STD_LOGIC;--100Hz--对应10msstart              : IN STD_LOGIC;--启动stop               : IN STD_LOGIC;--暂停reset              : IN STD_LOGIC;--复位Millisecond  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--百分秒second       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--秒minute       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--分);
END miaobaio_ctrl;
ARCHITECTURE trans OF miaobaio_ctrl ISSIGNAL state           : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000";SIGNAL Millisecond_cnt : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";SIGNAL second_cnt      : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";SIGNAL minute_cnt      : STD_LOGIC_VECTOR(7 DOWNTO 0) := "00000000";
BEGIN
--计时状态机PROCESS (clk_50M)BEGINIF (clk_50M'EVENT AND clk_50M = '1') THENIF ((NOT(reset)) = '1') THENstate <= "011";--复位状态ELSECASE state ISWHEN "011" =>--复位状态state <= "000";WHEN "000" =>--空闲状态IF ((NOT(start)) = '1') THENstate <= "001";ELSEstate <= "000";END IF;WHEN "001" =>--计时状态IF ((NOT(stop)) = '1') THENstate <= "010";ELSEstate <= "001";END IF;WHEN "010" =>--暂停状态IF ((NOT(start)) = '1') THENstate <= "001";ELSEstate <= "010";END IF;WHEN OTHERS =>END CASE;END IF;END IF;END PROCESS;PROCESS (clk_50M)BEGINIF (clk_50M'EVENT AND clk_50M = '1') THENIF (state = "011") THENminute_cnt <= "00000000";ELSIF (state = "001" AND clk_100Hz = '1') THEN--计时状态IF (Millisecond_cnt = "01100011" AND second_cnt = "00111011") THEN--59秒99‘时向前记1分IF (minute_cnt < "00111011") THENminute_cnt <= minute_cnt + "00000001";--计时到990ms,下一次就到1秒了ELSEminute_cnt <= "00000000";END IF;ELSEminute_cnt <= minute_cnt;END IF;END IF;END IF;END PROCESS;PROCESS (clk_50M)BEGINIF (clk_50M'EVENT AND clk_50M = '1') THENIF (state = "011") THEN--复位状态second_cnt <= "00000000";ELSIF (state = "001" AND clk_100Hz = '1') THEN--计时状态IF (Millisecond_cnt = "01100011") THEN--990ms时向前记1秒IF (second_cnt < "00111011") THENsecond_cnt <= second_cnt + "00000001";--计时到990ms,下一次就到1秒了ELSEsecond_cnt <= "00000000";END IF;ELSEsecond_cnt <= second_cnt;END IF;END IF;END IF;END PROCESS;PROCESS (clk_50M)BEGINIF (clk_50M'EVENT AND clk_50M = '1') THENIF (state = "011") THEN--复位状态Millisecond_cnt <= "00000000";ELSIF (state = "001" AND clk_100Hz = '1') THEN--计时状态IF (Millisecond_cnt < "01100011") THEN--计时到990ms,下一次就到1秒了Millisecond_cnt <= Millisecond_cnt + "00000001";ELSEMillisecond_cnt <= "00000000";--计时到990ms,下一次就到1秒了END IF;END IF;END IF;END PROCESS;Millisecond <= Millisecond_cnt;second <= second_cnt;minute <= minute_cnt;END trans;

设计文档:

设计文档.doc

设计文档2.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

分频模块

控制模块

显示模块

更多推荐

数字秒表VHDL启动暂停清零,源码和视频

本文发布于:2023-12-06 16:48:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668198.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:秒表   源码   清零   数字   视频

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!