哪一个计数器才会出现9呢?

摘要
一个很简单的题目,考验你的观念清不清楚…
介绍
废话不多说,直接看代码吧,哪个计数器才会数到9呢?
counter9_v1.v/verilog
1/*
2 (c) oomusou 2008年
3
4文件名 : counter9_v1.v
5编译器 : quartus ii 7.2 sp3
6描述: 计数到9 ?
7发行 : 07/18/2008 1.0
8 *
9模块counter9_v1 (
10输入的clk,
11输入的rst_n,
12输出的reg [3 :0] q
13);
14
15 reg [3 :0] p;
16
17 always@ (posedge clk或negedge rst_n)开始
18,如果(! rst_n)
19 p <= 0;
20
21 p <= p + 1;
22末端
23
24 always@(p)开始
25,如果(p == 9)
26 q = 0;
27
28 q = p;
29末端
30 endmodule
counter9_v2.v/verilog
1/*
2 (c) oomusou 2008年
3
4文件名 : counter9_v2.v
5编译器 : quartus ii 7.2 sp3
6描述: 计数到9 ?
7发行 : 07/18/2008 1.0
8 *
9模块counter9_v2 (
10输入的clk,
11输入的rst_n,
输出的12 [3 :0] q
13);
14
15 reg [3 :0] p;
16
17分配q = p;
18
19 always@ (posedge clk或negedge rst_n)开始
20,如果(! rst_n)
21 p <= 0;
22,如果(p == 9)
23 p <= 0;
24
25 p <= p + 1;
26末端
27
28 endmodule
结论
由模拟的波形图得知, counter_v2才会数到9,你答对了吗?
从结构图中,可以发现两者合成出来的电路是差异甚大, v1的reg q后面接了一个组合电路,经过一个比较器与多任务器后‘马上’输出结果,所以还没数到9就被‘拦胡’了, v2是个典型的循序电路,由比较器判断的p,是从d-ff所提供的p,而这个p早已经输出到q了,要拦也拦不下来,且9已经存在于d-ff中1个时钟,要让p = 0也是下一个时钟的事情,所以在下一个时钟出现q = 0。
多多观察rtl观察者所合成的电路与modelsim仿真结果是增加verilog功力的不二法门,共勉之。

springcloud的网关是什么
大数据时代经济学有什么创新
抢先看!用区块链共享汽车数据的惠普企业 将构建智能汽车平台
元器件的涨价热度只增不减?一个季度涨价两回?
微控制器如何来实现内部可编程逻辑
哪一个计数器才会出现9呢?
MiniLED电视玩游戏有神秘加持?一起来探究看看
深度学习机器将可以创作各种曲风的音乐
魅族Pro7最新消息:魅族Pro7骁龙821终于摆脱联发科!狙击小米6
银川比亚迪新能源汽车基地首车下线!看看新车什么样?
分享Accuon技术RGB/视频并行处理技术
2020年第四季度全球前十大晶圆代工厂营收排名
节卡机器人JAKA C系列协作机器人重磅发布
威纶通HMI+KNX:先进且稳定的HMI人机界面解决方案分析
第二届"Factory Tour"精彩继续,热浪来袭! 来一场全新的暑期少年游!
什么是上拉电阻
PCI设备两种底层访问方法的实现及比较分析
眼科与AI,让技术服务于临床
iOS10.3最新消息:iOS10.3耗电怎么办?iOS10.3.2第四个测试版更新,重大改变的是电池
“数字”赋能农业生产,打造新疆多个数字化高标农田示范基地