lcytms
发表于 2017-8-14 00:18:42
1356
新建divider_fsm2s_moore_tb.v。
同样,我从原来两段的米利的testbench,没做成的,它迭代受限的,复制过来。
名字换过来。
做仿真设置。
两段摩尔的Testbench。
lcytms
发表于 2017-8-14 00:20:28
1357
仍然是高7低5。
做一次检查。
然后运行仿真。
高7。
低5。
这就做成了。
它是两段摩尔。
lcytms
发表于 2017-8-14 00:21:30
1358
在这种情况之下,我们还没有向大家介绍如何来评价它的速度指标。
以后的课程我们会有。
你会看得到,两者差别大着呢。
虽然我们功能上都是一样,但是速度性能上摩尔要优越得多。
下面呢,我们来说,我们今天下午做什么?
今天下午呢,我考虑了一下,流水灯我们放一放吧,我们主要还是今天,把这个状态机有一个认识,能够写一个简单的状态机即可。
所以说我们只要写一个键盘去抖,我们状态机来写。
关于流水灯,它也不难。
但是流水灯呢,摩尔是非常难。
所以说我们放到后续的课程吧。
lcytms
发表于 2017-8-14 00:22:08
1359
现在我们来讨论,如何用状态机来写键盘的去抖。
我们首先讨论一下,为什么我昨天做单键的驱动的时候,它会跳字?
为什么会发生键盘的毛刺?
今天呢,我们就用状态机,学到的这些方法来设计一个键盘去抖的逻辑。
之前电路去抖也分布在不同的电路模型之中。
比如说计算器,比如说我要做一个单独控制,我要写一个非常简短的一段代码来去抖。
lcytms
发表于 2017-8-14 00:22:48
1400
我们也强调了EDA要把它写成一个专门的、完善的电路,应用的时候直接调用。
Intellectual Property,IP。
这个键盘的去抖,我们首先要来讨论,为什么会导致跳字的那种现象?
有的时候跳一个字,两个、三个,有的时候跳更多。
我们首先看电路上是怎么做的,在印制板上。
用上拉电阻连接到Vcc,VCC我们现在接3.3V。
VCC下面呢接一个开关,我们看到这个开关是不带锁的。
所谓不带锁,是按下去,接触闭合了,抬起手来它就弹起来了。
还有带锁的,我们知道按下去滴答锁住了,再按下滴答弹起来了。
lcytms
发表于 2017-8-14 00:23:29
1401
我们用的是不带锁的。
也就是按下去就闭合了,没按下去它就自动地弹起来了。
这个键是正逻辑还是负逻辑呢?
什么时候是真的呢?
低电平是真的,0它就是真值,所以它是个负逻辑。
1是假的,没有按下去。
按下去是0,抬起来是1。
没按下去就是1。
这是它的逻辑状况。
但是这两个触点之间它有一个现象。
lcytms
发表于 2017-8-14 00:23:55
1402
按下去以后呢,这两个触点之间原本有空气间隙,空气间隙是绝缘的。
当你用外力作用于它,把它按下去了以后,两个触点粘合在一起,它就由原来的open状态,变成了闭合状态,closed。
lcytms
发表于 2017-8-14 00:24:27
1403
但是,你有没有用时间的放大镜来看一看呢?
也就是说,在这两个触点的表面,可能会有很多很多的毛刺,在空间的放大镜下面,看它的触点,上面有很多毛刺。
间隙会有微弱的变化。
另外我们知道,微弱的空气间隙会放电。
然后时间的放大镜呢,当我们用手按下去的时候,你只会感觉到是一瞬间的动作。
lcytms
发表于 2017-8-14 00:24:51
1404
在时间的放大镜下,这个间隙的变化,它是一个缓慢的过程。
按下去的这个瞬间,可能是数十毫秒,最快的时候也是数毫秒。
lcytms
发表于 2017-8-14 00:25:13
1405
这个过程中会形成放电,放电的过程中,它一会为0,一会为1。
中间有间歇的放电。