Hdlbits练习13 - 4-digit decimal counter ( Countbcd )

构建一个 4 位数的 BCD(二进制编码的十进制)计数器。每个十进制数字使用 4 位编码:q[3:0] 表示个位数字,q[7:4] 表示十位数字,依此类推。对于 [3:1] 位数字,还需要输出一个使能信号,用于指示何时应增加这三个高位数字中的每一个。

你可能需要实例化或修改一些一位的十进制计数器。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

错了很多次,现在来分析一下原因。
①当没有加上第13行时,出错,报错信息如下:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当 q = 16’h9999 时,ena = 3’b111,等到 clk 信号的下一个上升沿到来时,q = 16’h0000,但 ena 依然为 3’b111,所以 q[3:0]、q[7:4]、q[11:8] 和 q[15:12]会在 q[3:0]增加到 3’d9 之前同时递增,即图上这种错误的情况

②若在 20~21 行添加对 ena信号的清零操作,出错,报错信息如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由提供的时序图可知,本该对 ’ ena ’ 清零的地方, ’ ena ’ 没有被清零。为什么要对 ’ ena ’ 清零,因为只有(最低位称之为第一位)第一位计到 9 , ’ ena[1] ’ 才能置 1,相应的只有第二位计到 9 , ’ ena[2] ’ 才能置 1,只有第三位计到 9, ’ ena[3] ’ 才能置 1,所以在第一位没有计到 9之前 ’ ena ’ 都要被清零。因此对 ’ ena ’ 清零的操作应该放在每一次对 ’ ena ’ 赋值之前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值