欢迎光临散文网 会员登陆 & 注册

HDLbits 刷题答案 3.2.2 Counters

2021-03-24 12:48 作者:专心当一个坑  | 我要投稿

3.2.2 Counters

3.2.2.1 Count15

创建一个计数器,当同步复位信号reset1时,清零

3.2.2.2 Decade counter

模10计数器

3.2.2.3 Decade counter again

从1-10计数


3.2.2.3 Slow decade counter

带使能端和复位端的模10计数器


3.2.2.4 Counter1-12

根据以下输入输出信号设计一个计算1~12的计数器

Reset:同步复位信号,高复位,将计数器复位为1.

Enable:使能信号高有效

Clk:时钟上升沿触发计数器工作

Q[3:0]:计数器输出

c_enable, c_load, c_d[3:0]:题目中给我们提供了一个4-bit的计数器,这三个信号是用于该4-bit计数器的控制信号。

题目提供给我们4-bit计数器

  1. 有enable信号,带复位和置位的计数器,将该计数器例化至我们的代码中。

  2. 再用一些其他的逻辑门来完成本题

这个我没看懂,从网上找的代码

3.2.2.5 Counter1000

用4bit的BCD码实现个、十、百的计数,当计数1000次后,OneHertz输出为1

通过例化如下`module`实现该功能

当个位计数10次,十位计数1次

当十位计数10次,百位计数1次


3.2.2.6 4-digital decimal counter

同步复位信号
ena[3:0]代表进位输出信号
q16-bit数据输出,用BCD的形式表示


总的来说,就是设计一个从0能计数到9999的计数器,从代码中可以看出,我用来4个`always`块来计数,分别代表个位、十位、百位和千位,在`one``always`块中,当`one`计数到`9`,就将`one`清零,在`ten` `always`块中,当`one``ten`都计数到`9`时,将其清零;在`one`计数到`9`时,`ten`才计数一次,同理,`hundred``thousand`都是如此计数的,最后,将千位、百位、十位和个位,用连续赋值语句`assign`传递给`q`,对于进位输出信号`ena`,我也用连续赋值语句`assign`进行赋值,当`one``9`的时候,`ena[1]`条件为真,输出为`1`,同理,`ena[2]` `ena[3]`处理方法类似


3.2.2.7 12-hour clock

创建一个带PM和AM的12小时制的时钟,要求

  • reset时,时间为12:00:00 AM

  • ena有效时候,开始计时

  • pm=0是AM,pm=1是PM

  • 若11:59:59是AM,下一时刻12:00:00为PM



HDLbits 刷题答案 3.2.2 Counters的评论 (共 条)

分享到微博请遵守国家法律