HDLbits 4位BCD计数器

module top_module ( input clk, input reset, // Synchronous active-high reset output [3:1] ena, output [15:0] q); decade_cont decade_cont0(clk,reset, 1'b1,q[3:0]); decade_cont decade_cont1(clk,reset, ena[1],q[7:4]); decade_con...
摘要由CSDN通过智能技术生成

实现一个4位BCD计数器,clk是时钟,reset是同步复位端,reset为1时复位,ena为进位输出标志,低位向高位进位时为1。

先写一个BCD计数器模块。

在这个计数器中,需要主要的是,使能端=0时,输出信号保持不变,使能端为1时,输出信号增加。复位信号优先级大于使能信号大于时钟信号。

module decade_cont(
    input clk,
    input reset,   // Synchronous active-high reset
    input  enable,
    output [3:0] q
);
    always@(posedge clk)begin
        q <= 4'b0;
        if(reset)
            q <= 4'b0;
        else if(!enable)
            q <= q;           
        else  if(q == 4'h9)
            q <= 4'b0;
        else 
            q <= q + 1'b1;
    end
            
    
endmodule

 顶层模块用到4个子模块,cont0的使能端始终为1,则4位十进制数的个位一直为0~9循环,ena[1]=1标志着计数从个位进到十位,所以个位为9时,ena[1]输出为1;ena[2]=1标志着计数从十位进到百位,所以个位十位均为9时,ena[2]=1;ena[3] 同样如此。

module top_module (
    input c
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值