基于FPGA的简单数字钟设计VHDL代码Quartus仿真

名称:基于FPGA的简单数字钟设计VHDL代码Quartus仿真(文末获取)

软件:Quartus

语言:VHDL

代码功能:

简单数字钟设计

1、设计24进制计数器,可以通过按键调整计数值

2、设计60进制计数器,可以通过按键调整计数值

3、设计显示模块

4、将上述模块组成时、分、秒数字钟,可以调时,并显示在数码管

1. 工程文件

2. 程序文件

框图

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

60进制模块仿真图

24进制模块仿真图

显示模块仿真

部分代码展示:

LIBRARY ieee;
   USE ieee.std_logic_1164.all;
   USE ieee.std_logic_unsigned.all;
--小时模块--24进制
ENTITY wy_counter_24 IS
   PORT (
      clk      : IN STD_LOGIC;
      set_key  : IN STD_LOGIC;--校时
      cnt_ten  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--计数值十位
      cnt_one  : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)--计数值个位
   );
END wy_counter_24;
ARCHITECTURE behave OF wy_counter_24 IS
   SIGNAL clk_cnt      :  STD_LOGIC:='0';
   SIGNAL cnt_ten_buf : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计数值十位
   SIGNAL cnt_one_buf : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000";--计数值个位
BEGIN
   --输出
   cnt_ten <= cnt_ten_buf;
   cnt_one <= cnt_one_buf;
clk_cnt<=clk OR set_key;--校时和时钟或运算,即校时也可以控制时间
   
   PROCESS (clk_cnt)
begin
IF (clk_cnt'EVENT AND clk_cnt = '1') THEN--正常计时
         IF (cnt_ten_buf = "0010" AND cnt_one_buf = "0011") THEN--23时后变为00
            cnt_ten_buf <= "0000";
            cnt_one_buf <= "0000";
         ELSIF (cnt_ten_buf = "0000" AND cnt_one_buf = "1001") THEN--09变为10
            cnt_ten_buf <= "0001";
            cnt_one_buf <= "0000";
         ELSIF (cnt_ten_buf = "0001" AND cnt_one_buf = "1001") THEN--19变为20
            cnt_ten_buf <= "0010";
            cnt_one_buf <= "0000";
         ELSE--个位累加
            cnt_ten_buf <= cnt_ten_buf;
            cnt_one_buf <= cnt_one_buf + "0001";
         END IF;
      END IF;
   END PROCESS;
   
   
END behave;

源代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值