• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

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

09/11 08:34
745
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2410111KF1R0.doc

共1个文件

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

软件:Quartus

语言:VHDL

代码功能:

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

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

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

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

DE2-115开发板.png

演示视频:

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

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1183

  • 2-2410111KF1R0.doc
    下载

相关推荐