HDLbits练习12 -Exams/ece241 2014 q7b ( Counter 1000)

从一个1000 Hz的时钟信号中导出一个1 Hz的信号,称为OneHertz,该信号可以用来驱动一组小时/分钟/秒计数器,从而创建一个数字挂钟。由于我们希望时钟每秒钟计数一次,因此OneHertz信号必须每秒钟精确地在一个周期内有效。使用模10(BCD)计数器来构建频率分频器,并尽可能少地使用其他逻辑门。还需要输出你使用的每个BCD计数器的使能信号(c_enable[0]表示最快的计数器,c_enable[2]表示最慢的计数器)。

以下是提供给你的BCD计数器。使能信号必须为高电平时计数器才会运行。复位信号是同步的,并在高电平时将计数器强制归零。你电路中的所有计数器必须直接使用相同的1000 Hz信号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

① 题目要求由给出的 1000Hz 的时钟信号 ’ clk ’ 分频成一个1Hz的信号 ’ OneHertz ’ ,可以转换成一个计数器记满1000个数的问题,因为只提供了一个 BCD counter,即二进制编码十进制的计数器,从 0~9,所以要想计1000个数需要级联三个 BCD counter。题目提供的BCD counter的模块中的enable输入信号至关重要,第一级 BCD counter 每计满 9 要向第二级的 BCD counter 进 1,因此第二级 BCD counter 工作由第一级 BCD counter 决定,即它的使能输入信号 ’ enable ’ 只有在第一级 BCD counter 的输出为 9 时才被置 1;第二级的 BCD counter 计满 9 要向第三级的 BCD counter 进 1, 即第三级 BCD counter 的使能输入信号 ’ enable ’ 只有在第二级 BCD counter 的输出为 9 时才被置 1。这里需要注意的是,第三级 BCD counter 何时开始计数看似是由第二级 BCD 的决定,实际也由第一级 BCD 决定,因为第二级 BCD 开始计数是由第一级 BCD 决定的,因此在代码中需要用嵌套的 ’ if ’ 语句来实现。
② 最后在输出 ’ OneHertz ’ 信号时,只有在三级 BCD counter 的输出同时为 9 时才为1,也即计到了 999,否则如果像注释的那一行只判断第三级 BCD counter 的输出是否为 9 是不对的,比如如果是计到了 199,显然不满足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值