HDLBits刷题Day13,3.2.2.1 Four-bit binary counter - 3.2.2.4 Slow decade counter

3.2.2.1 Four-bit binary counter

问题描述

构建一个从 0 到 15(含)计数的 4 位二进制计数器,周期为 16。复位输入是同步的,复位将计数器复位为 0。

代码:

module top_module (
    input clk,
    input reset,      // Synchronous active-high reset
    output [3:0] q);
    always @(posedge clk) begin
        if(reset)
            q<=0;
        else if(q==4'd15)
            q<=0;
        else
            q<=q+4'd1;
    end
endmodule

 

3.2.2.2 Decade counter

问题描述

构建一个从 0 到 9(含)计数的十进制计数器,周期为 10。复位输入是同步的,应将计数器复位为 0。 

代码:

module top_module (
    input clk,
    input reset,        // Synchronous active-high reset
    output [3:0] q);
    always @(posedge clk) begin
        if(reset)
            q<=0;
        else if(q==4'd9)
            q<=0;
        else
            q<=q+4'd1;
    end
endmodule

 

3.2.2.3 Decade counter again

 问题描述

制作一个从 1 到 10 的十进制计数器,包括 1 到 10。复位输入是同步的,应将计数器复位为 1。 

代码:

module top_module (
    input clk,
    input reset,
    output [3:0] q);
    always @(posedge clk) begin
        if(reset)
            q<=4'd1;
        else if(q==4'd10)
            q<=4'd1;
        else
            q<=q+4'd1;
    end
endmodule

 

3.2.2.4 Slow decade counter

 问题描述

构建一个从 0 到 9 计数的十进制计数器,周期为 10。复位输入是同步的,应该将计数器复位为 0。我们希望能够暂停计数器,而不是总是在每个时钟周期递增,所以slowena输入指示计数器何时应该增加。

提示:这是一个带有启用控制信号的常规十进制计数器

 代码:

module top_module (
    input clk,
    input slowena,
    input reset,
    output [3:0] q);
    always @(posedge clk) begin
        if(reset)
            q<=0;
        else if(slowena) begin
            if(q==4'd9)
                q<=0;
            else
                q<=q+4'd1;
        end
    end
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值