增强秒表 basys-3 实现

该代码段展示了使用Verilog语言编写的时钟转换模块CLK_to_clk,停止表stopwatch以及显示模块display_stopwatch。CLK_to_clk产生一个周期为T1MS的时钟。stopwatch模块处理倒计时功能,根据输入的go和up信号更新分钟(M),天(D)和秒(SS)。display_stopwatch模块则负责将时间显示出来,通过内部计数器切换显示不同的时间单位。约束文件指定了引脚分配和时钟属性。

在这里插入图片描述


module CLK_to_clk
#(parameter T1MS = 7500000) 
(
    input CLK,rst,
    output clk
);
    reg [32:0]count;
    always @(posedge CLK,posedge rst)
    begin
        if(rst)
            count<=0;
        else 
        begin 
            if(count < T1MS)
                count<= count+1 ;
            else count <= 0;
        end
    end
    assign clk = (count==T1MS)?1:0;
endmodule

module stopwatch(
    input CLK,rst,
    input go,up, // up信号 =1 则 倒计时
    output reg [3:0]M,D,
    output reg [5:0]SS
    );
    wire clk;
    CLK_to_clk C(CLK,rst,clk);
    reg [3:0]M_next,D_next;
    reg [5:0]SS_next;
always@(posedge CLK,posedge rst)
    begin
        if(rst)
            begin
                M <= 4'b0;
                D <= 4'b0;
                SS <= 6'b0;
            end
        else 
           if(go == 1)
           begin 
             M <= M_next;
             D <= D_next;
             SS <= SS_next;
           end
end



always @(posedge clk,posedge rst)
begin
    if(rst)
        begin
            D_next <= 0;
            SS_next <=0;
            M_next <=0;
        end
    else begin
        if(up==1)
            begin 
                if(D != 9)
                    D_next = D + 1; 
                else 
                    begin
                    D_next = 4'd0;
                    if(SS 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值