您现在的位置:首页 >> 物理 >> 内容

m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件

时间:2024/3/3 0:32:35 点击:

  核心提示:00_059m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZZubmJZp

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

      电子钟的核心是一个计时器,通常由振荡器、分频器和计数器组成。振荡器产生稳定的频率信号,分频器将频率降低到合适的水平以供计数器使用。计数器则根据分频后的信号进行累加,实现时间的计量。在电子钟设计中,通常需要多个计数器来分别计量小时、分钟和秒。这些计数器之间的关系可以通过模运算来描述。例如,秒计数器每累计到60就归零,并触发分钟计数器加1。

4.部分源码

`timescale 1ns / 1ps

module TEST();

 

reg i_clk;                 // 输入时钟

reg i_rst;                // 异步复位信号

 

reg i_time_set;            // 时间设置使能信号

reg [3:0] i_set_miao01;  // 设置的秒的个位

reg [3:0] i_set_miao10;  // 设置的秒的十位

reg [3:0] i_set_fen01;    // 设置的分的个位

reg [3:0] i_set_fen10;    // 设置的分的十位

reg [3:0] i_set_shi01;    // 设置的时的个位

reg [3:0] i_set_shi10;    // 设置的时的十位

 

reg i_set_clock;           // 闹钟设置使能信号  

reg [3:0] i_clock_fen01;  // 闹钟设置的分的个位

reg [3:0] i_clock_fen10;  // 闹钟设置的分的十位

reg [3:0] i_clock_shi01;  // 闹钟设置的时的个位

reg [3:0] i_clock_shi10;  // 闹钟设置的时的十位

wire o_clock_flager;    // 闹钟标志输出,当时间匹配时为高电平

 

wire [3:0] o_miao01;       // 输出的秒的个位

wire [3:0] o_miao10;       // 输出的秒的十位

wire [3:0] o_fen01;        // 输出的分的个位

wire [3:0] o_fen10;        // 输出的分的十位

wire [3:0] o_shi01;        // 输出的时的个位

wire [3:0] o_shi10;         // 输出的时的十位

 

 

tops tops_u(

.i_clk          (i_clk),                 // 输入时钟

.i_rst          (i_rst),                 // 异步复位信号

 

.i_time_set     (i_time_set),            // 时间设置使能信号

.i_set_miao01   (i_set_miao01),   // 设置的秒的个位

.i_set_miao10   (i_set_miao10),   // 设置的秒的十位

.i_set_fen01    (i_set_fen01),    // 设置的分的个位

.i_set_fen10    (i_set_fen10),    // 设置的分的十位

.i_set_shi01    (i_set_shi01),    // 设置的时的个位

.i_set_shi10    (i_set_shi10),    // 设置的时的十位

.i_set_clock    (i_set_clock),           // 闹钟设置使能信号  

.i_clock_fen01  (i_clock_fen01),  // 闹钟设置的分的个位

.i_clock_fen10  (i_clock_fen10),  // 闹钟设置的分的十位

.i_clock_shi01  (i_clock_shi01),  // 闹钟设置的时的个位

.i_clock_shi10  (i_clock_shi10),  // 闹钟设置的时的十位

.o_clock_flager (o_clock_flager),    // 闹钟标志输出,当时间匹配时为高电平

 

.o_miao01       (o_miao01),       // 输出的秒的个位

.o_miao10       (o_miao10),       // 输出的秒的十位

.o_fen01        (o_fen01),        // 输出的分的个位

.o_fen10        (o_fen10),        // 输出的分的十位

.o_shi01        (o_shi01),        // 输出的时的个位

.o_shi10        (o_shi10)        // 输出的时的十位

);

 

 

always #5 i_clk = !i_clk;

 

initial begin

    i_clk  = 1'b1;

i_rst = 1'b1;

#1000

i_rst = 1'b0;

end

initial begin

    i_time_set  = 1'b0;

    i_set_miao01 = 4'd0;

    i_set_miao10 = 4'd0;

    i_set_fen01 = 4'd0;

    i_set_fen10 = 4'd0;

    i_set_shi01 = 4'd0;

    i_set_shi10 = 4'd0;  

end

 

 

 

initial begin

    i_set_clock  = 1'b0;

    i_clock_fen01 = 4'd0;

    i_clock_fen10 = 4'd0;

    i_clock_shi01 = 4'd0;

    i_clock_shi10 = 4'd0;

    #1000

    i_set_clock   = 1'b1;//闹钟设置为15点40分

    i_clock_fen01 = 4'd0;

    i_clock_fen10 = 4'd4;

    i_clock_shi01 = 4'd5;

    i_clock_shi10 = 4'd1;

    

    

end

endmodule

00_059m

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168