赞
踩
名称:基于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;
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。