实验内容
第一种方法:异步高电平复位
手工绘制的电路结构RTL设计图
- 思路:本题计数器需要用到的RTL符号有2个4位寄存器、2个双路选择器、2个加法器、2个比较器
- 异步高电平复位:复位信号只要变高电平就立即执行复位操作。CNT(计数值)预置初值为零;CNT_VAL_MAX(计数最大值)预置初值4’b0110(即CNT_VAL_min)。
- 判断CNT与CNT_VAL大小,若CNT>=CNT_VAL,则双路选择器选通输出4’h0给CNT寄存器的输入端;否则CNT计数+1再将其通过双路选择器选通输出送入CNT寄存器的输入端。如下图框内①
- 此外,当CNT>=CNT_VAL时,CNT_VAL计数+1并与9(即CNT_VAL_MAX)比较:若CNT_VAL>=9,则双路选择器选通输出4’h6给CNT_VAL寄存器的输入端;否则再将CNT_VAL原值送回CNT_VAL寄存器的输入端。如下图框内②
手工绘制RTL图:
Quartus扫描生成的电路RTL图
计数器的波形仿真截图
计数器在电路复位后会循环的从0值递增计数到最大值,计数最大值是一个循环变化的过程,计数器复位之后,第一次计数最大值是6,然后是7、8、9,然后计数最大值又变成6,如此往复循环,计数过程如下图所示。
异步高电平复位:复位信号只要变成高电平就执行复位操作,如下图所示。
计数器代码
module cnt_circle_0to9(
CLK , // clock
RST , //reset
CNT); // output
input CLK;//clock
input RST;//reset,
output [