数字秒表设计VHDL代码Quartus仿真

名称:数字秒表设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

数字秒表设计

(1)要求计时精度为10ms,计时范围59.99

(2)设置复位、暂停、继续等控制键;

(3)采用数码管显示秒读数


FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com


演示视频:

设计文档:

设计文档.doc

1. 工程文件

Quartus9.0版本

2. 程序文件




3. 程序编译


4. RTL图


5. 仿真文件


6. 仿真图








部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
ENTITY stopwatch IS
   PORT (
      clk_50M                : IN STD_LOGIC;
      clk_100Hz              : IN STD_LOGIC;--100Hz--对应10ms
      
      start_key              : IN STD_LOGIC;--启动
      stop_key               : IN STD_LOGIC;--暂停
      reset_key              : IN STD_LOGIC;--复位
      
      stopwatch_Millisecond  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--10毫秒
      stopwatch_second       : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--秒
   );
END stopwatch;
ARCHITECTURE trans OF stopwatch IS
   
   SIGNAL 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";
BEGIN
--计时状态机
   PROCESS (clk_50M)
   BEGIN
      IF (clk_50M'EVENT AND clk_50M = '1') THEN
         IF ((NOT(reset_key)) = '1') THEN
            state --复位状态
                  state --空闲状态
                  IF ((NOT(start_key)) = '1') THEN
                     state <= "001";
                  ELSE
                     state --计时状态
                  IF ((NOT(stop_key)) = '1') THEN
                     state <= "010";
                  ELSE
                     state --暂停状态
                  IF ((NOT(start_key)) = '1') THEN
                     state <= "001";
                  ELSE
                     state 
            END CASE;
         END IF;
      END IF;
   END PROCESS;
   PROCESS (clk_50M)
   BEGIN
      IF (clk_50M'EVENT AND clk_50M = '1') THEN
         IF (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") THEN
                  second_cnt <= second_cnt + "00000001";--计时到990ms,下一次就到1秒了
               ELSE
                  second_cnt <= "00000000";
               END IF;
            ELSE
               second_cnt <= second_cnt;
            END IF;
         END IF;
      END IF;
   END PROCESS;

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字秒表设计VHDL代码Quartus仿真

发表评论

模板文件不存在: ./template/plugins/comment/pc/index.htm

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员