数字电子钟 |
您所在的位置:网站首页 › 孕晚期吃菠萝会上火吗还是降火 › 数字电子钟 |
FPGA数字电子钟—VHDL 设计
1、设计任务及要求:2、设计原理3、方案设计4、系统时序仿真与分析5、硬件下载与测试
1、设计任务及要求:
设计任务:设计一台能显示时、分、秒的数字钟。 具体要求如下: (1) 由实验箱上的时钟信号经分频产生秒脉冲; (2) 计时计数器用 24 进制计时电路; (3) 可手动校时,能分别进行时、分的校正; (4) 整点报时; 设计要求: (1) 采用 VHDL 语言描述系统功能,并在 QUARTUS II 工具软件中进行仿真,下 载到 EDA 实验箱进行验证。 (2) 编写设计报告,要求包括方案选择、程序代码清单、调试过程、测试结果 及心得体会。 2、设计原理
3.1、 系统RTL图设计 1.分频模块 分频模块的输入信号为实验箱上的时钟信号,输出信号为秒计数器脉冲、按键扫描时钟、数码管扫描时钟。 2.按键处理模块 按键处理模块的输入信号为实验箱上的按键和分频模块输出的按键扫描时钟,输出信号为延时消抖之后的按键信号。 3.计数器模块 计数器模块分为秒计数器、分计数器和时计数器,秒计数器的输入信号为分频模块输出的秒脉冲,分计数器的输入信号为秒进位信号和按键信号,时计数器的输入信号为分进位信号和按键信号,计数器模块输出时、分、秒的个位和十位的BCD码。 4.整点报时模块 整点报时模块的输入信号为秒钟和分钟的BCD码,输出分蜂鸣器控制信号。系统RTL图如下图所示。 1、主程序: ----------------------------------------------------- --主程序 CLOCK.vhdl ----------------------------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CLOCK IS PORT( CLK_IN,KEY_MIN,KEY_HOUR : IN STD_LOGIC; -- 1Hz时钟信号输入 --SEL_OUT : OUT STD_LOGIC_VECTOR(5 DOWNTO 0); --SEG_OUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SPEAKER_OUT : OUT STD_LOGIC; C_H_SHI , C_H_GE , C_M_SHI , C_M_GE , C_S_SHI , C_S_GE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END CLOCK; ARCHITECTURE BHV OF CLOCK IS -- 调用秒钟计数模块声明 COMPONENT SEC_BCD_COUNT PORT(clk_to_sec: IN STD_LOGIC; DATOUT_SHI,DATOUT_GE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); C: OUT STD_LOGIC); END COMPONENT; -- 调用分钟计数模块声明 COMPONENT MIN_BCD_COUNT PORT(clk_to_min, ADD_MIN: IN STD_LOGIC; DATOUT_SHI,DATOUT_GE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); C: OUT STD_LOGIC); END COMPONENT; -- 调用小时计数模块声明 COMPONENT HOUR_BCD_COUNT PORT(clk_to_hour, ADD_HOUR: IN STD_LOGIC; DATOUT_SHI,DATOUT_GE : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END COMPONENT; COMPONENT xiaodou --按键消抖 PORT( key: IN STD_LOGIC; clk_i:IN STD_LOGIC; DLY_OUT:OUT STD_LOGIC); END COMPONENT; COMPONENT DEV PORT( CLK_20MHz : IN STD_LOGIC; CLK_1Hz, CLK_250Hz : OUT STD_LOGIC); END COMPONENT; COMPONENT buzz --整点报时 PORT(CLK: IN STD_LOGIC; M_SHI,M_GE,S_SHI,S_GE:IN STD_LOGIC_VECTOR(3 DOWNTO 0); speaker:OUT STD_LOGIC); END COMPONENT; SIGNAL S_CO, M_CO : STD_LOGIC; -- 计数进位 SIGNAL S_M_SHI,S_M_GE,S_S_SHI,S_S_GE,S_H_SHI,S_H_GE : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S_SET_MIN,S_SET_HOUR : STD_LOGIC; SIGNAL CLK_BUZZ, CLK_SCAN, CLK_SEC : STD_LOGIC; --SIGNAL N_BUZZ : STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000010"; --蜂鸣器分频系数 --SIGNAL N_KEY : STD_LOGIC_VECTOR(9 DOWNTO 0):="0000000100"; --按键扫描分频系数 --SIGNAL N_LED_DISP : STD_LOGIC_VECTOR(9 DOWNTO 0):="0000001000"; --数码管扫描分频系数 --SIGNAL N_SEC : STD_LOGIC_VECTOR(9 DOWNTO 0):="0000010000"; --1HZ分频系数 BEGIN --u_buzz_clk : ClkDiv PORT MAP(CLK_IN,N_BUZZ,CLK_BUZZ); --u_key_clk : ClkDiv PORT MAP(CLK_IN,N_KEY,CLK_KEY); -- u_led_disp_clk : ClkDiv PORT MAP(CLK_IN,N_LED_DISP,CLK_LED_DISP); --u_sec_clk : ClkDiv PORT MAP(CLK_IN,N_SEC,CLK_SEC); u_div : DEV PORT MAP(CLK_IN, CLK_SEC, CLK_SCAN); u_xiaodou_m : xiaodou PORT MAP(KEY_MIN, CLK_SCAN, S_SET_MIN); u_xiaodou_h : xiaodou PORT MAP(KEY_HOUR, CLK_SCAN, S_SET_HOUR); u_clock_sec : SEC_BCD_COUNT PORT MAP(CLK_SEC, S_S_SHI,S_S_GE,S_CO); -- 秒钟 u_clock_min : MIN_BCD_COUNT PORT MAP(S_CO, S_SET_MIN, S_M_SHI,S_M_GE,M_CO); -- 分钟 u_clock_hour : HOUR_BCD_COUNT PORT MAP(M_CO, S_SET_HOUR, S_H_SHI,S_H_GE); -- 小时 --u_led_disp : LED_DISP PORT MAP(CLK_SCAN, S_H_SHI, S_H_GE, S_M_SHI, S_M_GE, S_S_SHI, S_S_GE, SEL_OUT, SEG_OUT); u_buzz : buzz PORT MAP( CLK_SCAN,S_M_SHI, S_M_GE, S_S_SHI, S_S_GE,SPEAKER_OUT); --u4 : buzz PORT MAP(buzz_CLK,S_M_SHI, S_M_GE,S_S_SHI,S_S_GE,speaker_out ); -- 小时 C_H_SHI |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |