百日倒计时控制器设计VHDL代码Quartus DE2-115开发板

名称:百日倒计时控制器设计VHDL代码Quartus  DE2-115开发板

软件:Quartus

语言:VHDL

代码功能:

   用EDA软件工具,VHDL语言,在 Quartus II10.0设计平台上完成百日倒计时控制器设计通过编译、适配和仿真,最终下载到DE2-115开发装置上运行。要求最大倒计时为100天,时分秒和日8位数码显示,任意时间可调,到时报警。主要内容包括:标准时间计数器、调日调时调分及控制电路等

   本课题可培养学生综合运用现代电子设计技术,包括软件技术、可编程逻辑器件、硬件描述语言,解决IC控制芯片在硬软件设计方面的复杂工程问题

要求.jpg

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

本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:DE2-115开发板.png

演示视频:

设计文档:

设计报告.doc

设计文档.doc

1. 系统设计

本设计的系统框图如下:

分为按键下降沿检测模块、计时控制模块、数码管显示模块三大部分,按键下降沿检测模块检测调时、调日、调分、启动按键的下降沿,计时控制模块控制初始时间及倒计时,数码管显示模块用于显示。


2. 模块设计

按键下降沿检测模块,因为DE2-115的按键是已经硬件消抖的,故不需写要按键消抖代码,然后按键是按下低电平,所以需要检测下降沿。先用2个触发器将key_in信号打2拍,然后再将两个信号取反相与即可得到按键下降沿。

   --打两拍

   PROCESS (clk_50M)

   BEGIN

      IF (clk_50M'EVENT AND clk_50M = '1') THEN

         key_in_buf0 <= key_in;

         key_in_buf1 <= key_in_buf0;

      END IF;

   END PROCESS;

   

   

   key_down <= NOT(key_in_buf0) AND key_in_buf1;--按键下降沿检测

计时控制模块:

模块主要使用状态机控制,状态分为3个,空闲状态、倒计时状态、结束状态。复位后在控制状态,按下启动键后进入倒计时状态,倒计时结束后进入结束状态。在空闲状态下可以通过按键设置起始时间,日按键控制天数加1,加到99回0,时按键控制小时加1,加到23回0,分按键控制分钟加1,加到59回0.在倒计时状态下,时间在1Hz的脉冲信号下按秒递减,直至倒计时到0天0时0分0秒后进入结束状态。结束状态时led指示灯会亮,若要返回重新倒计时则按复位按键。

数码管显示模块:

数码管用于显示倒计时时间,首先将计时控制模块的日、时、分、秒通过Conv_Integer()函数转换为int类型,然后分别求得日、时、分、秒的十位和个位。再通过case语句,将日、时、分、秒的十位和个位对应的8个数码管进行段选赋值,即可使数码管显示数字。

1. 工程文件


2. 程序文件


3. 程序编译


4. RTL图


5. Testbench


6. 仿真图








部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
USE ieee.std_logic_arith.all;
--数码管显示模块
ENTITY display IS
   PORT (
      clk         : IN STD_LOGIC;
      
      day_num     : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
      hour_num    : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
      minute_num  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
      second_num  : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
      
      HEX0        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX1        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX2        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX3        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX4        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX5        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX6        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
      HEX7        : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
   );
END display;
ARCHITECTURE behave OF display IS
   SIGNAL second_time_one : INTEGER := 0;
   SIGNAL second_time_ten : INTEGER := 0;
   SIGNAL minute_time_one : INTEGER := 0;
   SIGNAL minute_time_ten : INTEGER := 0;
   SIGNAL hour_time_one   : INTEGER := 0;
   SIGNAL hour_time_ten   : INTEGER := 0;
   SIGNAL day_num_one     : INTEGER := 0;
   SIGNAL day_num_ten     : INTEGER := 0;
BEGIN

代码文件(付费下载):



1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 百日倒计时控制器设计VHDL代码Quartus DE2-115开发板

发表评论

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

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

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