My title page contents

数字钟设计VHDL代码Quartus 实验箱

名称:数字钟设计VHDL代码Quartus  实验箱

软件:Quartus

语言:VHDL

代码功能:数字钟


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

本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:实验箱 (1).jpg

演示视频:

设计文档:

设计文档.doc

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 实验箱

发表评论

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

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

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