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

名称:数字秒表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. 本代码已在实验箱验证,实验箱资料:实验电http://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. 工程文件
  1. 程序文件
  1. 程序编译
  1. RTL图
  1. 管脚分配
  1. 仿真图
相关推荐
上理考研周导师3 小时前
第二章 虚拟仪器及其构成原理
fpga开发
FPGA技术实战4 小时前
《探索Zynq MPSoC》学习笔记(二)
fpga开发·mpsoc
bigbig猩猩15 小时前
FPGA(现场可编程门阵列)的时序分析
fpga开发
Terasic友晶科技20 小时前
第2篇 使用Intel FPGA Monitor Program创建基于ARM处理器的汇编或C语言工程<二>
fpga开发·汇编语言和c语言
码农阿豪21 小时前
基于Zynq FPGA对雷龙SD NAND的测试
fpga开发·sd nand·spi nand·spi nand flash·工业级tf卡·嵌入式tf卡
江山如画,佳人北望21 小时前
EDA技术简介
fpga开发
淘晶驰AK21 小时前
电子设计竞赛准备经历分享
嵌入式硬件·fpga开发
最好有梦想~21 小时前
FPGA时序分析和约束学习笔记(4、IO传输模型)
笔记·学习·fpga开发
檀越剑指大厂1 天前
【基于Zynq FPGA对雷龙SD NAND的测试】
fpga开发
9527华安2 天前
FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持
fpga开发·音视频·pcie·gth·xdma·pcie3.0