【verilog】 FPGA倒计时器设计

您所在的位置:网站首页 百分计时器篮球下载 【verilog】 FPGA倒计时器设计

【verilog】 FPGA倒计时器设计

2024-05-24 09:09| 来源: 网络整理| 查看: 265

思路CODE顶层CODE

思路

将时间拆分为6个参数:

second_1 -> 秒个位 second_10 -> 秒十位 minute_1 -> 分个位 minute_10 -> 分十位 hour_1; -> 时个位 hour_10; -> 时十位

在异步复位的时候为上述六个参数赋初始值。 然后对50Mhz系统时钟进行计数,计数50M次(即为1s)。然后对六个参数的当前值做出判断,并在下一个clk做出改变。

当计满一秒,且秒的个位大于0时,——》秒的个位减1 当计满一秒,且秒的个位等于0,秒的十位大于0时,——》秒的十位减1,秒的个位变9 当计满一秒,且秒为00,并且分的个位大于0时,——》分的个位减1,秒由00变为59 当计满一秒,且秒为00,并且分的个位等于0,分的十位大于0时,——》分的十位减1,个位变为9,秒由00变为59 当计满一秒,且秒为00,分也为00,时的个位大于0时,——》时的个位减1,分由00变为59,秒也由00变为59 当计满一秒,且秒为00,分也为00,时的个位等于0,时的十位大于0时,——》时的十位减1,个位变9,分由00变为59,秒也由00变为59 当计满一秒,且时分秒为:00 00 00时,——》还原为预设值

仅当【suspend】状态值为1的时候才会对50Mhz系统时钟进行计数,为0时暂停计数,这样就实现了计数器的暂停。

CODE module down_cnt( clk, rst, suspend, second_1, second_10, minute_1, minute_10, hour_1, hour_10 ); input clk; input rst; input suspend; //当suspend为状态量,为0时计时暂停,为1时计时继续。 output reg [3:0] second_1; //秒个位 output reg [2:0] second_10;//秒十位 output reg [3:0] minute_1; //分个位 output reg [2:0] minute_10;//分十位 output reg [3:0] hour_1; //时个位 output reg [1:0] hour_10; //时十位 reg [31:0] cnt;//50M -> 1s (50M时钟进行50M次计数得到一秒,) always@(posedge clk or negedge rst) begin if(!rst)//复位时设置倒计时初始值 begin cnt 4'd0) begin second_1 3'd0 ) begin second_10 4'd0 ) begin minute_1 3'd0) begin minute_10 4'd0) begin hour_1 2'd0 && hour_10< 2'd2 ) begin hour_10


【本文地址】


今日新闻


推荐新闻


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