数字钟设计VHDL代码Quartus 实验箱
名称:数字钟设计VHDL代码Quartus 实验箱
软件:Quartus
语言:VHDL
代码功能:数字钟
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1、工程文件

2、程序文件



3、程序编译

4、RTL图

5、管脚分配

6、仿真图
整体仿真图



分频模块


计时模块




显示模块



部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; -- 显示模块实体声明 ENTITY display IS PORT ( clk : IN STD_LOGIC; -- 时钟信号 hour_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 小时时间输入 minute_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 分钟时间输入 second_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 秒时间输入 bit_select : OUT STD_LOGIC_VECTOR(5 DOWNTO 0); -- 位选择输出,用于选择显示的位数 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -- 段选择输出,用于选择七段显示器的段 ); END display; -- 显示模块的行为描述 ARCHITECTURE bahave OF display IS -- BCD转换组件声明 COMPONENT BCD IS PORT ( clk : IN STD_LOGIC; binary : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- 二进制数输入 Tens : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- 十位输出 Ones : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -- 个位输出 ); END COMPONENT; -- 信号声明 SIGNAL second_time_one : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 秒的个位 SIGNAL second_time_ten : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 秒的十位 SIGNAL minute_time_one : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 分的个位 SIGNAL minute_time_ten : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 分的十位 SIGNAL hour_time_one : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 小时的个位 SIGNAL hour_time_ten : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 小时的十位 SIGNAL display_num : STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; -- 当前显示的数字 SIGNAL select_bit : STD_LOGIC_VECTOR(15 DOWNTO 0) := "0000000000000000"; -- 位选择计数器 SIGNAL number : STD_LOGIC_VECTOR(2 DOWNTO 0) := "000"; -- 数字选择计数器 SIGNAL time_count : STD_LOGIC_VECTOR(31 DOWNTO 0) := "00000000000000000000000000000000"; -- 未使用的信号 BEGIN -- 将时间转换为十位和个位 U1_BCD: BCD PORT MAP( clk => clk, binary => second_time, Tens => second_time_ten, Ones => second_time_one ); U2_BCD: BCD PORT MAP( clk => clk, binary => minute_time, Tens => minute_time_ten, Ones => minute_time_one ); U3_BCD: BCD PORT MAP( clk => clk, binary => hour_time, Tens => hour_time_ten, Ones => hour_time_one ); -- 位选择过程 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (select_bit = "1111111111111111") THEN -- 当计数器达到8时重置 select_bit <= "0000000000000000"; ELSE select_bit <= select_bit + "0000000000000001"; -- 计数器加1 END IF; END IF; END PROCESS; -- 数字选择过程 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (select_bit = "1111111111111111") THEN IF (number = "101") THEN -- 当数字达到5时重置 number <= "000"; ELSE number <= number + "001"; -- 数字加1 END IF; END IF; END IF; END PROCESS;
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字钟设计VHDL代码Quartus 实验箱
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 数字钟设计VHDL代码Quartus 实验箱
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm