Countbcd

Build a 4-digit BCD (binary-coded decimal) counter. Each decimal digit is encoded using 4 bits: q[3:0] is the ones digit, q[7:4] is the tens digit, etc. For digits [3:1], also output an enable signal indicating when each of the upper three digits should be incremented.

You may want to instantiate or modify some one-digit decade counters.

生成 4 位 BCD(二进制编码十进制)计数器。每个十进制数字使用 4 位进行编码:q[3:0] 是 7 位,q[4:3] 是十位,依此类推。对于数字 [1:<>],还要输出一个使能信号,指示何时应递增前三位数字中的每一个。

您可能需要实例化或修改一些一位数的十进制计数器

module top_module (
    input clk,
    input reset,   // Synchronous active-high reset
    output [3:1] ena,
    output [15:0] q);
    
    wire [3:0]c;
    
    assign ena = {c[0] & c[1]& c[2], c[1]& c[0], c[0]};
    
    ten one (
        .clk  (clk),
        .reset (reset),
        .count (q[3:0]),
        .ena (c[0]),
        .val(1'b1)
    );
    ten ten_inst (
        .clk  (clk),
        .reset (reset),
        .count (q[7:4]),
        .ena (c[1]),
        .val(c[0])
    );
    ten hud (
        .clk  (clk),
        .reset (reset),
        .count (q[11:8]),
        .ena (c[2]),
        .val(c[0] & c[1])
    );
    ten thou (
        .clk  (clk),
        .reset (reset),
        .count (q[15:12]),
        .ena (c[3]),
        .val(c[0] & c[1] & c[2])
    );

endmodule

module ten(
    input clk,
    input reset, 
    input val,
    output wire ena,
    output reg [3:0] count
);
    
    assign ena = count == 4'd9 ? 1'b1 : 1'b0;
    
    
	always@ (posedge clk)
        if(reset)
            count <= 4'd0;
    else if (count == 4'd9 && val)
        count <= 4'd0;
    else if(val)
        count <= count + 1;
    
    
    
endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eachanm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值