我感觉傻乎乎的
thedairygame
2021.01.03 星期日 晴
最近被车撞了后,感觉整个人变笨了,难道我被车撞傻了?难道噩运还未走远?我……他们为什么还不放过我?
最近在研究一个计数器,发现如果cout为时序逻辑,cout总会在条件满足后的下一个时钟脉冲被触发,为什么会这样呢?我的理解是当cin为1时,且计数到9之后,到cout输出会有一段延迟,导致cout必须在下一个时钟上升沿才能输出。因而导致cout输出时计数器恰好为0。单纯的看这个计数器似乎没有什么问题,但在级联时,却会产生大的问题。因为进位输出的延迟会导致进位输入不能及时的响应。就是级联时由于cout输出时计数器为0,但由于此时后级计数器读取的cin仍是先前的cin,所以计数值并未加1,这样,本应该输出10的,却输出为00。
那我将cout改为计数值为8时输出会怎么样呢?这个看起来不错,似乎没问题,但如果为三个计数器级联,还是有问题,因为计数器为8时输出cout,延迟1个时钟,cout实际是cnt等于9时才输出,然后后级计数器会在cnt重新变为0时加1,这没问题。一直加到890,本应该下一个应该变成891,没想到却一下子变成了991,第二级计数器为8时输出cout,实际是cnt为9时,这样第三级计数器本应该是8,接收到进位信号后,会自加1,恰好变成991,出问题了。
那怎么办才好呢?由于时序逻辑有延迟,那用组合逻辑呢?组合逻辑直接用assign输出,计数器会在cnt为9时,cin为1时,直接输出,与时钟无直接关系,仿真没有大问题,就是在cnt为0时,cout为1时出现毛刺,应该是cnt和cout由于高低电平转换出现的。但这似乎不影响使用,因为级联后的效果是很不错的。
[WhereIn Android] (http://www.wherein.io)









看完第一句话,感觉有坏人跟踪,呵呵
[WhereIn Android] (http://www.wherein.io)
😬
[WhereIn Android] (http://www.wherein.io)
This post has been rewarded by the Steem Community Curation Project #wherein 我是谁?你又是谁?!我为什么会在这里?你加了cnsteem 没?!