电子时钟设计(verilog实现)

您所在的位置:网站首页 有时钟的软件下载 电子时钟设计(verilog实现)

电子时钟设计(verilog实现)

2023-12-12 22:18| 来源: 网络整理| 查看: 265

Quartus编程实现时钟,具有基本的时间显示功能(00:00:00~23:59:59),以及其他附加功能:调整时间,设置闹铃,或者其它与时钟相关的功能。Modelsim实现仿真。

设计代码:

module clock( clk, //时钟信号 rst_n, //复位信号 en, //控制时间的暂停 dout, //定时闹钟的输出 sel1, //更改定时闹钟的分的个位 sel2, //更改定时闹钟的分的十位 sel3, //更改定时闹钟的时的个位 sel4, //更改定时闹钟的时的十位 led_SG, //秒的个位 led_SS, //秒的十位 led_CG, //分的个位 led_CS, //分的十位 led_HG, //时的个位 led_HS //时的十位 ); input clk; input rst_n; input en; input sel1; input sel2; input sel3; input sel4; output dout; //秒 output led_SG; output led_SS; //分 output led_CG; output led_CS; //时 output led_HG; output led_HS; parameter CNT=50; //计数一秒需要的次数 parameter IDLE=3'b000; parameter S1=3'b001; parameter S2=3'b010; parameter S3=3'b011; parameter S4=3'b100; //S4为输出态 reg [8-1:0] led_SG ; reg [8-1:0] led_SS ; reg [8-1:0] led_CG ; reg [8-1:0] led_CS ; reg [8-1:0] led_HG ; reg [8-1:0] led_HS ; /*计数1秒的相关计数变量*/ reg [26-1:0] cnt0 ; wire add_cnt0 ; wire end_cnt0 ; /*秒计数的相关变量,cnt1为秒的个位,cnt2为秒的十位*/ reg [4-1:0] cnt1 ; wire add_cnt1 ; wire end_cnt1 ; reg [4-1:0] cnt2 ; wire add_cnt2 ; wire end_cnt2 ; /*分计数的相关变量,cnt3为分的个位,cnt4为分的十位*/ reg [4-1:0] cnt3 ; wire add_cnt3 ; wire end_cnt3 ; reg [4-1:0] cnt4 ; wire add_cnt4 ; wire end_cnt4 ; /*时计数的相关变量,cnt5为时的个位,cnt6为时的十位*/ reg [4-1:0] cnt5 ; wire add_cnt5 ; wire end_cnt5 ; reg [4-1:0] cnt6 ; wire add_cnt6 ; wire end_cnt6 ; /*x用来确定时的个位cnt5计数的次数为10次还是4次, 当时的十位cnt6为0和1时,时的个位计数10次, 当时的十位cnt6为2时,时的个位计数4次*/ reg [3:0] x ; wire [3:0] sel1; wire [3:0] sel2; wire [3:0] sel3; wire [3:0] sel4; wire [3:0] key; reg [3:0] setup; reg dout; reg [2:0] state_c; //状态机的现态 reg [2:0] state_n; //状态机的次态 wire [2:0] idle2s1_start; //状态机初态转S1态的条件 wire [2:0] s12s2_start; //状态机S1态转S2态的条件 wire [2:0] s22s3_start; //状态机S2态转S3态的条件 wire [2:0] s32s4_start; //状态机S3态转S4态的条件 wire [2:0] s42idle; //状态机S4态转初态的条件 /********************************************************************************************** **********************************************时钟********************************************* **********************************************************************************************/ /********************************* *************秒计数器************** *********************************/ //计数1秒 always @(posedge clk or negedge rst_n)begin if(!rst_n) begin cnt0


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3