00:30
好了,有声音吗?有声音有画面吗?有的话跟我说一声。声音画面都有对吧。好啊,如果这个有声音啊,然后也有这个画面的话呢,咱们就呃准备这个呃开始上课啊,那么我们简单的先来说一下是吧,咱们这个呃叫做这个上一节课啊,咱们讲的哪些内容。
01:15
那么在咱们这个上一节课当中呢,讲什么呢?我们讲了一个叫做呃除法器啊,讲了一个叫做呃乘法器啊,但是呢,都是我讲的都是什么呃原理啊,然后呢,这个讲的是一个叫做四比特的乘法器和四比特的一个除法器啊,那么呃其实呢,呃对于啊,乘法也好,除法也好呢,我们只要呢,哎就是说我们怎么能把它做出来呢?就是说白了就是干什么,哎就是说去了解它的内部过程,比如说对于乘法级来说是什么,就是说白了就是什么,就是一位相加嘛。对吧,就是说哎,如果下边是一啊,就把圆波动拖下来啊,如果是零,拖下就是全是零啊就是说然后呢,好几个part,我们起了个名字叫part是吧,叫部分啊,好几个部分的一个相加,那么呃,对于这个这个除法器来说的话呢,其实呢,哎,首先就要看你余下来那一部分啊,余下来那一部分呢,是不是比除数大,哎如果比除数大啊,那么就要商一啊,比除数小啊就商零,那么你下边呢,还会再往下余一部分,那余什么呢?哎,余的就什么余的就是你刚上次余下来的值减去什么,减去商乘以余数嘛,那商乘以除数嘛,然后就可以得到结果了啊这就是个除法器,那么呃,大家呢,有问题啊,一定要及时说啊,然后呢,要把这个问题呢,要发给我啊,问题发给我啊,然后呢,有什么问题的话,你自己能解决就解决,决不了你就发给我啊呃,然后呢,呃,我们今天呢,呃。
02:53
来看一下是吧,今天下午啊,有个同学啊,呃呃,他呢,把他的这个出发器的四比特的这个代码发给我了啊然后呢,呃,咱们在这儿呢,那么就是公开的啊,咱们把它这个呢给大家呢来解决一下,看一看它这当中呢,呃有没有什么问题啊以及呢啊,我们遇到他这些问题时候,应该怎么来做啊做我们来做,我们来看一下啊,我们来打开它的这个工程。
03:34
啊,它这是也是一个叫做呃,四比特的一个除法器啊,四比特的一个除法器啊,我们简单的来去呃看一看啊,这个当中呢,有什么问题啊,然后呢,我们应该怎么来去找啊,首先的话呢,这是它的代码,那么在这个代码当中的话呢,呃应该是什么?应该是就是说应该是用我直接呃撇到咱们群里的一个什么呢?一个一个点位啊,然后去做的啊然后呢,这个呃关于这个下边这个也都注释掉了,无所谓,咱们只看它这一部分,就是说白了也是一样给我们定义了四个这个power的部分,对吧?然后呢,挨个往下去做的,那么呃,我们来了,首先第一件事儿呢,就是我就是看别人代码对吧?我看别人代码第一步干什么,就先综合分析一下对不对,看看你有没有什么,看你没有语法错误啊,看大家有没有语法错误,那么呃,对于我来说的话呢,有的时候呢,我就相对来说可能会关注一下什么呢,就是关于布局不限的警告啊我。
04:34
一般情况下呢,可能不去看,但是关于什么呢?关于这个综合分析的警告,我一般会看一下,因为在这个警告当中的话呢,我们可能呢,会发现很多问题,但是对于大家来说的话呢,大家刚开始啊分析不出来,那就不分析了,我们只是综合分析一下,看他会不会报错好了啊,他只要他保证语法啊,它保证这个语法啊,它没有任何的错误啊,保证语法没有任何的错误,那就OK了,好了,下面呢,它里边有没有仿真呢,我们来看一下。
05:04
啊,也是有TB的对吧,那么编译也没有错,我们看一下它设置了没有呢。啊,它是设置了这个TB了,对吧?哎,有这个TB好OKOK,那么下边的话,我们来进行一个仿真啊,我们在仿真当中来看一看啊,看看它这有没有什么问题。好了,那么呃,从这来看的话呢,我们会发现一个,它这有个什么问题呢?我们也可以说把这个呢,都改成什么,都改成这个叫做无符号位,我们来看一下啊呃,在最开始的时候呢,是四除以一啊,四除以一,然后呢,呃,结果是四啊,然后呢,TBQ呢也是四,余数是零,好OK,正确再看下这个第二个数,第二数什么呢?第二数是九除以三九除以三呢?商的是几呢?它商的是零,TBQ商的是三,余数呢,它余的是一,那么。
06:12
人家的余数呢,余的是零,所以证明什么,证明九除三就不对了,也就九除三,它怎么能商零呢?九除三应该商三啊,对吧,他怎么能商零呢?所以从这就看到了错误,那么看到了错误以后,我们怎么办呢?或者说他有错了我们怎么办呢?所以呢,不要着急啊,很多人说一旦出错了怎么办。第一个想法就是什么,打开代码,找到我的代码开始去对比,一个一个去做对比,一个对比看哪不一样,现在呢,代码还比较少啊,如果多的话呢,你去对比呢,就很费劲,那怎么办呢?哎,我们明白原理,明白什么原理呢?首先第一个啊,如果Q3啊,我们原理就是什么?就是如果说第一个数大于。它大于除数就商一,不大于除数就商零,哎,如果商的是零,那就这么就把原来的值留下来,如果商的是一,就要把什么就要减去余数,对不对,所以我们就来看一下PART0对不对,对吧?这个是很简单的,对吧?我们来看一下PART0对不对呢?我们首先做第一件事啊,选中SM,选中它找到objects,因为选中它以后呢,诶,我们的objects里边呢,就会出现所有的啊所有的信号,那么大家打开这个信号以后,你会发现一个很神奇的地方,什么神奇呢?就是ABQR是我们端口,但是你会发现呢,有PART0 part1 part2 part3,还有一个PART1。
07:39
你会发现多了一个,你仔细去看一下,你会发现什么问题呢?就是它这里边啊,它有了一个PORT0啊,有了个PORT1 port2 port3,它有了什么,它有了一个PARE1,那么这个呢,很明显就是个么书写错误啊书写错误,也就是说呢,它出现了一个未知变量,这个未知变量是啥呢?是它,那么也就意味着在代码当中呢,肯定有这样的一个未知变量,那么就是它。
08:03
啊parare就是它呢定义了一个这个玩意儿出来,那这个呢,很明显是没有用的,对不对,那它代替代替了part one对吧?所以你的part one呢,压根呢就没有定义啊,没有定义啊,没有定义会默认什么没有定义会默认呢,这个呢是一个非法节点啊,这是不对的,也就是你下边所有用到P1的地方全都是错的啊,全是错,因为你没有定义啊,没有定义啊,所以在这的话呢,我们通过这个当中就能看到它多定义错了一个,怎么办呢?我们呢,把它呢改成port one啊partt好啊,那么如果我们没改之前啊,它不是这样的吗?啊,如果说我说了是吧,如果说我去看一下什么呢,看一下综合分析当中的警告啊,我们今天也给大家来说一下啊啊,当初我看了一下警告呢,说它这里边呢,是有这个问题的啊,我们来看一下。所以呢,有问题之后呢,大家呢,不要着急干什么呢,不要着急去直接去对比代码啊,这是一种这不理智的一个行为啊,我们怎么办呢?我们一定要这个就是呃,制造方法啊,我刚才从哪从这个model当中呢,找到了它这里边多了一个变量,那就代码当中肯定会多了,那好了,在这儿的话呢,你看大家来看警告当中有一个什么警告呢。
09:22
报了一个什么警告呢?报了一个叫做就看第一个警告啊,就是说在206行的时候啊,它产生了一个我们可以认为就是一个非法的一个节点part one,但是呢,我们这个节点呢,我们这个网络是吧,Night已经定义了,那为什么还是产生了一个非法的呢?所以证明什么证明我们没有定义,我返回到上面一看,它果然没有定义啊,也就说我们从很多位置都可以发现好了,改完它之后呢,那是不是它所引起的啊,导致我们最终的结果的错误呢,也不好说啊,也不好说啊,所以说在这的话呢,我们找到一个,我们就修改一个,好找到以后呢,我们把这个Mo给关掉。
10:02
啊,注意啊,做所有的设计的时候都是,哎,就是什么,就是找到一个错误,修改一个错误,然后重新去仿真,因为呢,你也不知道后边的错误是不是由它来引起的,那你想port one都不对了对吧?Port都不对了,那肯定就是说会影响到后边的所有引用port one的位置对不对,那就报错了,对吧,一定要知道啊,下面我们再来放针,再来看一下。啊,一定要学会什么呢?一定要学会去啊,慢慢慢慢的去干什么,去定位啊,去定位这个错误啊,去定位这个错误啊,你要不学不会定位这个错误的话呢,那么永远啊,我们都是啊不知道该怎么去找这个错误啊,来看一下啊好,那么下边的话呢,我们把power已经改过来了,对吧?那么在这的话,我们先把它改成无符号位。啊,然后呢,我们把它名缩减一下啊,然后呢,我们来看一下msm啊,点一下它object,你看这里边呢,就只剩了PORT0PORT1PORT2PORT3,没有什么没有了,我们刚才那个那个变量啊,就没有了位置变量是吧?我们现在可以把它呢,这四个也添加过去,那也添加过去,然后呢就过来了,但是呢是no date对吧,我们给它。
11:17
运行一下好了,它就有值了,它有值了以后呢,我们来看一下,首先呢,看第一个数。啊,我们把Q和TPQ放到一起,R和TBR放到一起啊,然后就看到什么呢?四除以一啊等于四啊余零没问题,那下边我们就不看了,看这个九除以三啊,商的呢还是零,就就是他这个代码商的还是零,然后人家商的是三,然后他这余一,人家余零,那九除三很明显应该什么,应该是商三余零对不对,他这呢还是商零余一,那很明显还是不对,那不对怎么办呢?我们就要学着去找问题,首先呢,我们来看PART0。PORT0什么意思呢?啊,PORT0是什么意思呢?我们来想象一下我们的PORT0什么意思,零是不是这个意思啊,我们来画一个图出来。
12:08
什么意思呢?就是说首先呢,我这找一个数,比如我这是A3A2A10,然后这呢是BA2B1B0对不对?PD1是什么呢?啊PD0是什么呢?就是说首先先对比什么,对比A3是不是大于B2B1B0对不对,是不是大于B2B B0,如果大于好了,那么我们的port one等于什么呢?如果大于的话,我们的啊P0等于什么呢?它就应该等于A3减去B2B1B0,如果说它要是小于呢?那P0等于什么破零就等于A3呀。对不对,也就是说呢,只要A3大于它,那大于等于它,那么就要商一了,如商一的之后呢,那就A3就要减去它了,那如果是它A3没有人家大呢,那就余下来就是A3对不对?所以这就是PORT0的意义,对不对?那好了,很明显我们什么我们是。
13:09
九除三对吧?好,那我们来看一下,如果是九除三的话,来分析一下九是多少呢?九是1001,而三呢是0011,那很明显第一个幺大于人家这个三嘛,不大于,所以呢,这个幺就要被余下来了,因为呢,不大于就会伤零零的话,这结果就是零,所以一减零什么就是一对吧,所以呢,PORT0应该等于一,我们来看一下它这里面PART1等于PART0等于多少呢?到这。它还是等于零。啊,因为前面是四个零嘛,到这没有变,还是四个零,证明什么,就证明PORT0的值错了。啊,PORT0的值负值就负错了,那好了,所以呢,有的人说拿到波形之后不知道对还是不对,那问题就是问题,就是你可能根本就不知道你的设计的思路是什么,就是你可能是抄别人的对吧,你可能就不知道这个怎么出来的,那么当你知道这个是怎么出来的时候,那么你把主线信号调出来,PORT0 port0对不对呢?既然我们知道结果错了,那么来找,中间怎么找呢?从输入开始找啊,这第一步啊,应该先得到PORT0,那好,破零就错了,那破零怎么错了呢?此时PORT0怎么错了,我们就不知道了,怎么办呢?所以此时就精确定位到这一行错了。
14:23
啊,已经破的零就不对了嘛,精确定位到这一行错了,好了,这一行错了,我们来看一下啊,P的零啊,首先判断Q3,就商的是不是零,如果商的是零,那PORT0应该等于的是A3啊,如果商的是一,那应该是A3减B,那这写错了是吧?应该是A3对吧?也就是说余下来的什么,余下来的是被除数对吧?哎,余下来就是我们这应该余下的是这个一对不对,应该是A3对吧?也不能余Q0啊,也不能余Q3 Q3是零对不对?所以又找到一个问题是吧?这是第一个问题,就PART0,从这来看好像是没有什么问题了,好,我们来综合分析一下。
15:01
把这个关掉,然后我们再来去打开一下,然后看一看啊,这个九除三是不是就能算对了啊,九除三是不是算对了,因为呢,大家会发现什么呢?也就说你看我第一个是减一个是四,对不对,第一个应该是四除一等于四啊,余数是零,你会发现是对的,也就是说虽然这个代码是错了,但是我们还是得到对的结果,为什么呢?因为这就是在我们去做仿真的时候啊,我们去做仿真的时候啊,有很多时候什么会出现一个叫做什么叫做,哎仿真不全面啊,会出现这个问题啊,就是说我们去做测试也好啊,不比如说说最简单的问题,就比如说我们的这个去这个,呃,买个车啊,买个车啊,我测试了所有的东西啊,我觉得测试的所有东西都没问题了啊,我觉得测试的所么东西都都没问题了,比如说一档变二档,二档变三档,三档变四档,四档,四档变三档都没问题了,但是呢,有的东西你可能没测到,没测什么呢?就是从四档变一档,你没测,因为你测试不完整是吧,你没有。
16:01
测好了,真正在使用的时候,一旦出现四档变一档,这个车自动就锁死了,那可能不可能出现这个问题呢?那极有可能啊,那极有可能,也就是说我们测试不全面,所以说算四除一结果可能算对了,或者四除四可能算对了,但是呢,九除三呢,它不一定算对,对吧?好,我们下面呢再来。啊,去把我们的啊这几个呢给找出来。然后restart。让二。然后我们再来看一下啊,这个结果都改成这个五符号位看一下。看对不对啊,首先呢,我们现在还是不管下边的,我们先看这个结果啊,Q和TPQ在一起,R和TPR在一起好了,那么还是在这四除一等于四余零没问题,九除三。等于三。没问题,但是余的是二。
17:00
九除三等于三没问题了,但余数有问题,余数是二,那为什么余数能等于二呢?其实我也不知道为什么余数能等于二啊,那怎么办呢?那咱们就只能是什么一步一步的去看PORT0 port1 port2,那么在这儿的话呢,我就直接干什么,直接改成无符号位外,不是改成这个二进制,要把它改成啊这个二进制啊,改成二进制,那么改成二进制以后呢,我们来看一下是PORTT0 portd1 portt2portd3是哪个错了呢?我也不知道,那咱们怎么办呢?还是这只能咱们自己一步一步的去写了,那这个是没有办法的啊,我们来自己写一下,比如说九是1001除以0011,第一步商零,所以这个节这应该是零,所以得到的应该是幺。啊,得到应该是幺,那好了,得到幺之后呢,所以我们的PORT0就应该是幺,我们来看一下它的破零,果然是0001,这是没问题的啊,PORT0果然是幺,这是没问题的,那我们来再往下,然后幺零啊,因为再往下接一秒就幺零嘛,那么幺零除以0011呢还是商零,所以呢,这变什么变成还是零。
18:18
零余数余多少呢?余的是幺零,所以呢,我们的PORT1呢,就应该等于的是0010,来看一下,确实等于0010是没问题的,然后我们再往后再加一个,那么100是不是比它大呢?是比它大,所以要商一,商完一之后,这是什么呢?这应该是零零啊,不是,这应该是011,那因为就要减去B嘛,这结果应该什么结果应该是001啊,应该是001,那么应该是001的话呢,也没有问题啊,001也没有问题,所以呢,哎,PORT2应该是什么?应该是0001,好了,二是0001没问题,再往下看。
19:06
最后是001,然后把这个幺拿过来呢,把这个幺一拿过来,是不是就变成001了,这个是一样对不对,所以是幺,然后呢,一样的话就减去001,是不是结果应该是全零啊,所以呢,最后一个PORT3应该是全零,而port三正好是咱们余数对不对?所以就是说它的PORT3错了。啊,这是PORT3错了,从这来看的话,我们PORTD3的值是不对的啊,PORTD2的值好像还是对的是吧?等于它好,那么下面来看什么呢?从这我们定位到什么呢?PORTD3不对,它不应该是余二,它应该是于零,那好在这儿我们来看一下代码当中PORT3啊,三的结果应该什么?PORTD3的结果应该是判断Q0是不是等于零,如果是的话,应该是这个值啊,如果是等于零,这个值如果不等于零,应该是这个值减去B,那好。这写错了对吧?这应该是PORTT2对吧,也就是说应该是这个值对不对,应该是PORTT2拼上A0对吧?所以这应该是PORTT2对吧,所以这个位置呢,就写错了啊,这个位置就写错了,所以说呢,应该是POD2拼上最后一位,哎,然后呢,到底是POD2拼上最后一位还是PD2P量最后一位之后减去B啊这个都不好说对不对,因为我们也不知道到底到底等于多少,所以再次进行综合分析,然后给它关闭这个窗口,然后我们再来一次去仿真,所以呢,也就是说对于我们来说啊,对于我们来说做做什么呢?就做这样的一个整个的一个什么呢?做一个这样的一个整个的一个叫做啊设计啊,做咱们这样的一个整个的设计,那么对于我们来说啊,就是说你要学会什么,你要学会的就是说利用model,然后不断去干什么,不断的去找问题啊,利用model来找问题啊,Model来找问题。
20:54
啊,不要去单纯的只看什么,不要单纯的只去看这个代码啊,因为看代码的话呢,呃,很多人呢,就是说一旦出错,或者说连什么是错都不知道啊,咱们最起码还好一点是吧,就知道结果啊,知道结果哪错了哪对了还好一点,那么都不知道哪对哪错,那就更不要说了,咱们知道他错了好了,所以我再教你啊,如果错了以后我们应该怎么办,对吧?那么我现在呢,就不不去把那个party party调出来了啊,我记得应该就只有这几个错误,应该就没有其他错误了。
21:25
好,来看一下啊,四除一余零商四九除三余零商33除13余零商一五除二啊余一商二一除13啊余数是一,商零六除13,余数是六,商013除以12啊商是一,余数是一九除六啊余数是三,商是一五除15商零五除七啊也是余五商零二除15商二余零啊这个呃,不是二除15,是余二商零二除14,还余二商零八除五啊余三商一啊就是这个呢,基本上就对了啊,基本上都就对了啊所以呢,对于我们来说啊,希望大家一定要知道的一个问题什么呢?就是说啊,我们是怎么来去做呃找问题的啊,无论是组合逻辑也好,还是十去逻辑也好,我们都是这样找问题的,那么呃,如果说对于什么呢?如果说对于我们的这个16比特来说,那对于咱们的。
22:25
六比特来说,那么呃,大家一旦出错了怎么办呢?其实也没有什么好的办法啊,呃,你不要去对代码啊,不要对呢,因为呢,你现在对代码有什么好处呢?就是说因为我写完正确的了,你去跟我正确的对比没问题,但是以后你工作的时候呢,你开发的大多数都是肯定没有代码的,如果已经有代码了,还是让你开发干什么,所以你做的东西全都是未知的,也就是说呢,这个流程对不对,其实有的时候都不知道了,所以怎么办呢?你就只能是先验证你写的代码跟你的流程是不是一样的啊,跟你的流程一样了,然后最终结果是错了,就证明你的流程错了啊,如果说跟你的流程都不一样,那首先你先先统一一下这个问题吧,对不对,所以说呢,最重要在哪,最重要的呢,我觉得是在哪,是在设计上,就是说什么呢?你能不能够明白设计的原理,设计本身的一步一步,为什么要这么走啊,为什么要这么走,这是它的最难的一部分,当我们知道了,就这么描述,然后呢,我们就去仿真的。
23:25
就是也是根据什么,也是根据什么呢?就是说设计来去看仿真的,所以很多人就说,哎呀,我不会看仿真,我也不知道对不对,错不错,反正代码什不清了,对了错了也不知道。啊,如果错了,错哪儿了呀,也不知道,反正出图了对吧?希望大家一定要知道,出图了不代表正确啊,出图了仅仅代表没有语法错误,你可以仿真而已,但不代表你的逻辑正确啊,你的逻辑正确,所以希望大家呢,一定要知道这个问题啊,那么这个就是一个呃除法器,四比特除法器,那么关于比较呃更复杂一点的啊除法器啊就16位的,大家呢,可以自己去啊写一写,然后呢干什么,然后去做一下这个的叫做呃对比啊做一下对比啊,然后呢,去挨个的啊,如果有问题了,你可以自己去写一个什么呢?就比如说它自己产生的数是错了啊,结果错了那怎么办呢?我们可以把那个数直接抄出来,我们自己列出来,PORTD1等于多少?PORT2等于多少?P3等于多少?然后去看一个一个对比,当不一样了,哪个不一样的证明哪个出问题了。
24:34
啊,那个port出问题了啊,所以在这儿的话呢,希望大家呢,一定要啊知道这个问题啊好了,那么呃,下边的话呢,我们来呢。我们来去讲这个呃这个后边的问题啊,我们昨天呢,除了讲了这个叫做呃除法器啊和这个乘法器以外呢,我们还讲什么,我们还讲了一个叫做呃寄存器,对吧?我们今天呢,把这个寄存器呢再来打开啊,因为我们今天的话呢,还要再围绕这个寄存器啊,还要再折腾一会儿。
25:13
啊,那么对于我们的寄存器来说的话呢,它其实用什么?用的就是一个叫做always的语句啊,用的就是一个always语句啊,我们不能说用always语句来设计了一个寄存器吧,但我们只能说什么,就当然我最下可以说,哎,我通过这种方法啊,让他在ipg内部帮我实现了一个寄存器,其实呢,他也没有帮你实现,就是说它内部本身就有,它只是调用出来了而已,对不对啊,就是这样的一个啊,我们啊理所当然的这样的一个东西,对不对,那好了,那么我们来呢,一步一步呢,来去,哎往再往下看一下是吧,好了,那么我们来呢,去做一个布局布限,那我们来做一个布局不限,呃,就是来看一下芯片规划器当中啊有哪些东西,其实呢,我们在芯片规划器里边呢,呃,我们之前也是看过的,对吧,也就是说它的这个寄存器应该什么,应该是利用了L什么LT后边那个啊,就是说我们说的一个最小单位叫什么叫L对不对,L是由什么。
26:13
组成的L是由什么?是由前面的LT加上后边什么加上后边寄存器来构成的,那我们可以这么来认为,那么L组成什么?组成的就是一种叫做数码的转换啊,那么对于计算机来说就是存储一位啊,那么它的功能是什么?就是上升而来的时候,把D给过去,上升而不来的时候,D无论怎么变化,Q不变,所以我们就认为什么认为Q的值一定是等于什么,一定是等于上一个clock上升沿所采样的D的值,这就是我们的一个寄存器的一个,呃,它的一个功能是吧,包括我们也做了仿真,那么呃,在我们去做仿真的整个里边呢,我们也给大家讲了一个问题啊,什么呢,就是说这个寄存器呢,是不是上山沿一来,他就把D的值采用到Q了呢,是对的,是对的,没有任何问题,但是呢,希望大家一定要知道一个问题,什么问题呢?就是上升沿一来了,D的值不会立刻过去,而是干什么,而是等一会儿才能过去,为什么?因为这个里边也是有一堆电路构成,它也会有什么。
27:13
也会有延时啊,它也会有延时,那怎么办呢?哎,所以呢,对于我们来说一定要知道它也是有延时的,所以上升沿而来的时候呢,哎,把这个值给过去,所以给过去也得一段时间呀,哎,就会有一段延时,希望大家把这个延时一定要记住啊,把这延时一定要记住,OK,那么这就是我们昨天所讲了,那么今天我们再来往下看一下这个计算器的端口呢,我们只如果说我们只看标到寄存器的端口上呢,有什么?第一个是D,就是数据输入端,第二个什么呢?是Q。啊是Q,也就是说呢,Q是输出端,还有什么是CLK端,那么这个是什么呢?这个叫clock enable叫什么?就是时钟矢能端,什么叫时钟矢能端呢?就是说当这根线接幺的时候,这个上升沿来了,那么它就把这踩过去了,这个这个如果说它等于零呢,他就把时钟使能给屏蔽了,就是说把时钟给屏蔽,它等于零的时候,时钟无论来什么,它都不认为有上升沿啊,不允许上人,所以D就过不去了。那么这个信号呢,一般情况下啊,一般情况下我们不用啊,或者我们现在不去管它综合器,它在满足某些功能,它可以自动帮我们综合上,那么下面我们来讲这个功能就是a clear,那么a clear是什么意思呢?它就是一个清除除端,就是说当这个信号有效的时候啊,当这个信号有效的时候,这个输出端的Q就一定会为零,当这个信号有效时,这个信号就为零,那么这个信号有效。
28:46
的时候,它就为零了,那么时钟上升沿无论说假如说D等于一,好吧,D等于一,上升也来了,D的一一定能过得去吗?不一定,还要看谁,还要看这一个a clear啊,就是A啊,Clear AC lr,这个信号是什么呢?它是不是什么,它是不是啊有效,如果它有效,那么它就会直接等于零的啊,它就直接等于零的,所以在这的话呢,我们来看一下,怎么样把这个信号给它接上呢?首先第一个我们来说一下,那么这个。
29:18
A是啥意思呢?啊,A是啥意思呢?就比如说我们刚才看那个上面有一个这个A啊叫做CRRA一般代表什么意思,我们一般代表叫做异步,那么呃,什么是异步呢?今天呢,只是简单的给大家来说一下,后边会给大家解释很多,什么叫异步节目叫同步,那么现在的话呢,我们来说一下异步啊,什么是异步呢?就一定是什么说异步对吧,异步同步什么意思,就一定至少是有什么是有两根信号,然后这两个信号呢,诶同时变化,我们认为是同步的,哎,如果他要诶这个变化完了这个再变化,那么这就是异步的,因为它不同时了嘛,对不对,所以我们就是这样一个非常简单一个东西,那么我们现在呢,不考虑异步还是同步,我们考虑什么,我们考虑一个问题啊,这这个寄存器。
30:07
啊,这是一个是D端,这是一个CLK端,那么还有一个端,什么叫a clear端,什么clear端的话,我们就到这儿啊,我们就到下边,上面是一样的啊clear啊,我们就叫这个c l r c l re有效,这个变成么?这个就会变零了,那来想一下,如果上升也来了,D不能直接过去,因为他要考虑clear的感受,那么好了,那么大家就会发现啊,对于整个寄存器来说,假如说此时clear不清除啊,不清零的情况下,那么CRK上线一来把D过去,CR上一来把D过去,那CR上线一来,假如说D呢,过去了个一,这时就保一不变,那么此时上二没一来,D无论怎么变,这还是保持一不变,那好了,如果此时clear尔来了呢?如果它一有效的,它会立刻治腰对不对,立刻治零对不对?所以大家来看一下这个Q的变化呢,不仅仅是CLK上升而来了,Q才能改变,而C就是这个clear信号来了之后,Q也能改变,对不对?所以对于我们来说啊,这个信号敏感列表当中的话呢,就不能只有clock了,因为如果只有clock的话,那这个的默认的意思就是clock上线来了,D等于Q,那如果CLR来了呢,在这儿我们来写一下,比如说它有一个输入信号叫什么呢?叫CLR啊叫CR,叫clear,就是清除啊清除信号,那么然后呢,我们在这呢就会说or嘛,但是我最开始给大家讲了,写or和写逗号是一样的,对吧?所后写逗号,那么clear信号一般情况下呢,在我们的计算器当中啊,就是说在这个计算器当中,它是什么呢?它默认是低。
31:52
电瓶有效什么意思呢?就是说当它为低电瓶的时候,它会等于零啊,当它等于低电瓶等于零,那如果说我非要给它弄成高电瓶等于零,可不可以,当然也可以了,它会,它默认在这加一个反向器呗,就是说它自己默认还是低电平有效,只不过呢,他把你卖部的高电平有效通过反向器变成低平有效而已,所以我们干脆干什么呢?我们现在学习嘛,我们直接给一个低电瓶有效的clear clear那好了,既然是低电平有效的,可clear对吧?那就是干什么呢?给一个啊感恩啊,给一个感恩,也就是说它呢清除信号,那好了,在这的话呢,我们来写一下啊,那么清除信号我们用什么呢?注意来想一下,清除信号不来的时候,什么叫不来啊,它不来可不是没有啊,它是为幺对吧,低电平有效嘛,对不对,然后呢,如果它一变低就立刻清除了,所以这个是个什么呢?这个我们认为是一个下降沿啊,是个下降沿啊,在这的话呢,这个是上升沿,那下降沿呢,Neg啊就是。
32:52
交集的那个单词前三个字母再加上edge啊,就是啊,我们叫做CR clear-N啊,那么就这样,也就是说呢,当这个信号来的时候啊。
33:04
这个当上乘页来的时候,它也可以处罚下边啊,当它下下来的时候,也可以处罚下边,那么在这的话呢,我们就会写一个判断括号,CLR-N是不是等于一撇B0,如果它等于一撇B0怎么办呢?我们把Q就要制成一撇B0,那么L呢,我们就Q等于什么Q就等于D啊Q等于D,也就是说呢,哎,像这样的一种写法,也就是说呢,当CLR-N等于零的时候啊,那么Q就等于零了啊,那么当CR等于一的时候,那么就是D就正常给了Q,所以来的是不一定是CR现象,L也不一定是,那么呃,CLK上升眼对不对?那么但是一定要注意CRR-N啊,它等不等于零,优先级比较高,那么在这的话呢,我们来进行一个啊叫做综合分析,我们来看一下啊,我们来看一下。
34:09
我们来看一下,它这个叫做哎,综合分析呢,呃,以后啊,它呢,会给我们形成一个,因为我们多了个信号,对吧,我们来考虑一下,它会给我们干什么呢?会给我们做成一个什么样的一个叫做呃,电路模型。好OK啊,你看啊,由于它是DNA有效,所以它自动在这放了个圈啊,放了个圈,那好了,在这儿我们来看一下是不是就是我们所写的那个样子啊,所写的那个样子就是从这个位置啊CR-N然后过来就到这儿,然后呢,D clock接到这儿是一个Q啊,那么这是呢,综合出来的电路模型,那但是我们学了这么久,我们就发现什么呢?你综合出来电路模型呢,好像和你ipg内部的东西呢,有很大地方是不一样的,对不对,所以我们来看一下什么呢?布局布线以后,让我们来看一下ipg内部啊,加上这个clear杠恩以后,那么这一个信号啊,它到底是一个什么意思啊,在什么位置,在这儿对吧,这个位置啊,我们来把它放大。
35:15
啊,在这个位置我们把它放大啊,打开啊,打开以后大家会发现什么呢?哎,啊,Clear clear信号接哪了,写到这个上面了,对不对,也就是我们所写的这个信号写到这儿了啊,就写到这儿了啊这就是一个哎,我们所说的诶比较简单的啊,这样的一个信号写到这儿了,那么这个清除信号呢?呃,在哪儿呢?在我们的ipd里边的话呢,我们一般情况下很少有人叫清除信号,我们一般会叫个另外一个名字,叫什么叫reet,叫复位信号啊,叫复位信号,所以在这的话呢,我们可以干什么,我们可以给它个名字叫RST,感恩啊,叫reet啊,简写为啊reset是这么写的啊,Re set啊,Reset reet-N啊,简写为RST-N啊,也就是说,比如说换了个名字而已嘛,无所谓,对不对啊,无所谓,那么。
36:09
我们称这样的一种描述方法啊,称这样的一种描述方法,称为什么呢?叫做异步复位,什么叫异步复位呢?所以再一次重申,什么叫同步,什么叫异步呢?就是最起码是两个信号啊,两个信号它的变化是不是永远是对齐的,或者永远是同时的,那我么来看一下,说像这样的一种的话呢,会出现什么问题呢?就是说如果我们没有复位信号的时候呢,是不是Q的变化永远是上,那样一来Q变化一次,当然我所说的变化不一定真的是从高变成低,也就是他只是会刷新一遍,对不对,刷新一遍那好了,那由于你在这个当中的话呢,写了一个复位,是不是这个复位一来,复位来的时候就不管谁了,就不管上升也来不来了,上升也来也好,不来也好,我都会把它支成零,对不对,所以呢,这种复位呢,会造成什么结果,会造成Q和CRK的不同步,就是有可能会造成它的不同步,那怎么办呢?所以我们把这种复位称之为什么呢?叫做异不。
37:09
复位啊,就是E不复位,就是CRT的作用会导致Q和CRK不同步,也就是说C,也就是说RST拉低的,它拉低啊,那么Q就会立刻拉低,那么和CRK的生成员来不来都无所谓,那么真的像我说的这样吗?好了,那么下边的话呢,我们就直接呢,在咱们这个代码基础上去修改了,比如说在这的话呢,我再加一个RGRST-N。然后在这的话呢,我也加个端口对吧,RST杠杠NRST-N好了,那么在刚开始的时候呢,哎,我就直接给个RST-N等于一撇B0啊,在杠上给个零,然后呢,我在下边的话呢,随便找个位置啊,比如我们在这个位置好,我们给个RST-N等于一啊,然后呢,我们再再在这个这个这个这个位置吧,我们给个什么,我们给个呃延时二,然后呢,我们再给个RST杠等于啊一啊,那么在这的话呢,我把这个呢先制成一啊,我们先把它的上一个date先制成一啊,然后我们来去看一下它的效果啊,我们来综合分析一下。
38:26
也就是说呢,我为了验证什么呢?我为了给大家去验证一个这样的一个波形啊,什么波形呢,就是说呢,这是CRK对不对,然后呢,CRK的话呢,CLK,比如这是D信号,比如说D就D呢,一直是等于幺的,那么Q信号呢,也应该一直也是等于幺的,对不对,那好了,那么当我的复位信号平常是等于幺的,然后在这儿突然变成零了,那么你的Q信号是在上升沿的时候啊,你的Q信号是在上升沿的时候才拉低呢,还是说就在我的复位信号拉低的时候,你就直接就低了呢?
39:01
啊,那你可能就不知道对不对啊,就知道了,所以呢,Q信号呢,到底是怎么变化的呢?你不知道,那好了,如果说复位信号一直为幺,那就是它呢从来没有等于零过,那就是D为幺,Q一直也为幺,那么如果说F位信号突然为零了,那么Q到底是还是随上变化呢,还是说随这个线性直就下来了呢?那么来看一下啊,今天我就为了解决这个问题,所以在这的话呢,我在这个RST等于。RS啊,在这儿RST等于啊零啊RST等于零之前的话呢,我把这个D呢,首先制成幺了啊,把D制成幺了,把D制成幺以后呢,就是它的Q呢,会首先先等于幺啊,然后呢,我们再来看一看啊,它会不会立刻发生改变啊啊再综合分析一下吧,刚才好像又改了一个代码。
40:11
啊,对于咱们这些的话呢,大家呢,一定要干什么,一定要去啊,多练习啊,多做一做啊,我们来去仿真一下。啊,那么像这种的话呢,称之什么呢?称之为叫做这个叫做哎一个呃,叫做异步复位是吧,哎叫异步复位。好,我们来看一下啊。首先呢,这一段期间都是什么?哎,这段期间都是啊,都是这个D啊,把把复位放在上边啊,这一段期间呢,都是什么?哎,都是复位,那好了你会发现呢,在这个上升沿的时候啊,就是说在这个上升沿的时候啊,最上面是CRKR,在这个上升沿的时候,它采量的D信号是等于什么,是等于幺的,但是输出Q呢,还是等于零,为什么?因为在复位期间,所以就是说我复位有效的时候,你的D等于摇了,声音来了,踩了也被踩,输出还是零,那还是零好了,那么在这段时间之内呢,我的复位信号呢,虽然什么虽然拉高了,你的D信号再怎么变也是跟我没有关系,因为你再变再变跟我有什么关系呢?我又没有上上沿,对不对,好在这在这时候呢,你的地信号也拉高了,但是也没有作用好,再往后看到这的时候呢。
41:33
啊,到这时候呢,上升而来了,复位信号呢,也不复位了,所以呢,踩到的D为腰,所以输出为腰了,这是没有任何问题的,我们再往后,再往后边以后呢,走到这儿,当走到这儿的时候,发现什么发现了,也没有上成沿,上成沿在这儿对不对,那么也没有上成沿,但是Q呢,被拉低了,Q为什么被拉低了呢?就是因为复位的。有效了啊,复位有效了,所以复位有效了以后,Q呢,就会被什么呢?立刻拉低,也就是说呢,复位拉低Q就会同时拉低,为什么?因为复位是一个异步复位,是直接作用到谁身上呢?是直接作用到计存器身上呢,也就是说它拉低的时候呢,结果就会立刻被拉低啊,这就是叫叫异步复位,它导致什么?它导致了Q不与上升沿对齐了啊,不上对齐了,这叫E不复位,那么对于我们来说的话呢,哎,对于我们来说的话呢,那什么叫同步复位呢?同步复位就很简单了,就是说复位信号来了以后。
42:32
啊,这个Q的变化呢,还是随时终也发生改变,那么在这怎么办呢?其实呢,就把这一句话去掉就可以了,啊,就把这句话去掉就行了,就是这一句话去掉,也就说白了,哎,在这个当中就能看到什么,就是说只有CRK上来了,这个电路才会刷新,那么此时我们再去判断复位啊,那么好了,下边我来啊进行综合分析一下啊,然后呢,我们来看一下什么呢?看一下它的这个叫做呃,RTL视图,然后我们再看一下它的芯片规划器,然后再去做一下仿真啊,再做下仿真,也就是说这两种,一种是同步复位啊,一种是异步复位,那么对于我们来说,异步复位就有一件事儿,什么事儿呢?就是说它可能会导致Q的变化,或者它一定会导致Q的变化,不与CLK同步,所以它就异步复位啊,那么对于这种的话呢,啊,它的复位信号来了,Q的变化呢,也是随C2K发生改变的,那么我们来看一下在最开始的时候我们说的什么,我们说的叫做。
43:33
复位信号干什么了?就是清除信号,复位信号什么复位信号是截直接接到哪,直接接到寄存器身上了,对不对,也就是说C复位一来直接接到寄存器身上了,它寄到寄存器身上的话呢?那么也就是说它有效的时候,无不管CRK声音来不来,Q就直接变化了,但是你来看,如果我们写成同步复位以后,它变成什么了?也就是复位信号呢?它没有接到寄存器身上,而接到哪儿了,而是接到了一个D信号的加工上,那么我不管你这是怎么加工,我只想知道一件事儿,就是因为这上面没有去接任何信号的,那是只剩那个DCRK和Q,那导致的唯一的一种结果就是只有CRK上升线来的时候把D给过去,剩下的给不过去了,所以此时的话呢,哎,复位信号的话呢,它能不能导出复位呢?当然可以了,比如它等于零的时候,它就把这个零选过去,它等一的时候就是把D选过去嘛,只是二选一都是选择器嘛,大家都懂是吧?那么这样的话呢,就会说把它给到一个什么,哎,给到一个零上。
44:33
就把零选过去,但是零到这能过去吗?也过不去干什么,只有时钟生来了以后才能干什么,才能够把这个D啊,才能够把这个D啊,然后呢,给这个选过去啊,选过去这是什么?这是我们的RTL的视图啊,代不代表真正的呢啊,它并不代表任何真正的东西啊,它只是一种模型,那我们来干什么呢?我们来看一下我们的所谓的这个芯片规划器啊,因为芯片规划器里边呢,它才是一个啊,真真正正的一个电路啊。
45:06
们看一下啊,在芯面规化剂当中的话呢,我们来放大啊,我们找到它来放大一下,好再来看一下呢,它呢果然没有接到阿clear尔上,而接到哪儿了呢?这要接到这个位置上去了啊,就这两个信号,有一个信号什么呢?有一个信号是D信号,有个信号是什么?是一个叫做呃复位信号啊,这两个信号有一个是D信号,有一个是复位信号,那么在这大家就会发现一个什么问题呢?就是说如果大家要去写同步复位啊,如果大家要去写同步复位的话,那么。同步复位就会有一个什么问题呢?就是同步复位的话呢,它会占用一个,就是说你如果说你看假如举个例子啊,呃,你现在呃做的是这个设计,那么如果说我本身想做什么,我本身想做的一个是哎四输入语门,比如说我想做的一个是四输入的语门,然后我四叔的宇门语完的结果给了寄存器,然后做输出好了,那本身我们来想啊,四输入宇门啊,然后呢,用一个四叔查卡表,然后给了他,然后再做输出,那就很完美的,就是利用一个L就够了,因为一个四路查找表做一个呃四处的雨门,它做个寄存器不就够了吗?但是如果说你的寄存器写成什么,你的寄存器写成了同步复位啊,那对不起,不够了,为什么不够了呢?因为它会把什么,因为它会把这个叫做哎复位信号也当什么,也当成了一种,这个就是他们之间的这个,这个就是这个不是直接作用到计算机身上,而是作用。
46:41
到地身上的一个信号,所以它呢,就会形成谁去呢,它就会呃,变相的去形成我们前边这个叫做诶。啊在这儿啊,它会变相的去给我们形成什么,去形成这个叫做插曲,也就是说呢,它也变成了一个输入型号了啊当然它同它呢接到这儿啊,它就不是前面D信号,它就是直接接到计算器上的,如果它坐在这儿的话,就是一个前面的一个什么呢?一个叫做四输入查表的信号,那这样的话,它会带多占一个什么,多占一个输入就导致呢会多用一部分资源,那么从这目前来看的话呢,在pair尔里边啊,或者说我们在这个英特尔ipg当中的话呢,我们推荐大家用什么呢?推荐大家去用啊,就是我们的叫做啊异步复位啊,在特尔当中的话呢,我们推大呢去用这样的一个异步复位啊,异步复位的一个dnap有效的异步复位啊,推荐大家这么来去做啊,这么来做,因为这样的话呢,呃会呃相对来说减少一部分我们的呃器件的一部分应用,那么呃,我说那个呢,大家可以干什么,大家也可以去测试一下,那么包括同步复位的。
47:51
的话呢,它是不是啊,比如说现在我再把它改了,比如说它同步复位啊,进行一个综合分析,同步复位的话呢,是不是说复位信号来了以后,然后这个Q信号呢,它会不会在时钟上能源的时候再拉低呢?而我们异步位它就不会对吧?只只这个复位来了就立刻就拉低了,而同步复位的话呢,它应该按照我们的规则应该什么,应该是Q要与C2K还是什么,还是同步的对不对,那我们来看一下啊,我们来看完之后我们再来说啊,看完之后我们再来说啊,就是验证一下啊。
48:26
嗯,这个我们就芯片规划器我们就不看了啊。啊,我为什么总是给大家看芯片规划器呢?因为呃,还是啊,就是很多人在学的时候呢,还是在考虑啊,这个代码怎么执行啊,这个代码怎么执行,注意这个代码不执行啊,就全是电路对吧?全是电路啊兄,大家一定要知道,好,在这儿我们来看一下,我就只看这个位置了啊。什么呢?就是说啊,当什么呢?当在这个地方的时候,复位信号已经拉低了啊,复位信号已经拉低了,而复位信号拉低了以后,你会发现呢,Q呢,并没有立刻拉低啊,Q并没有立刻拉低,而什么?而是在这个上升的时候,Q才做了拉低啊,此时不是D的影响啊,D一直都是高电平啊,D一直都高电平,那么在这儿的话呢,来看到复位信号来了,但是呢,输出还是高,只有当上线来了以后,Q才会拉低,也就是说复位才有作用,对不对,也就是说如果大家真的要去理解代码,也就可以理,也就是说只有上来页来了之后,他才能动作嘛,上页不来它怎么动啊?那么如果说我们在这儿加上一个复位的向下眼以后呢,就是说复位一来向下眼,它就立刻动作了,就变成零了,对不对,所以这样的话呢,也可以解释的通,就是说在执行的角度,但是希望大家呢,一定要知道它不是啊,异步复位为什么可以做到,什么异步复位为什么可以做到,哎,复位一来。
50:00
它就变成零了,因为啊复位信号是什么,是直接作用到寄存器身上了,哎,就是说就是作用到你的这个,呃,用我们的这个学这个什么呢?学这个叫做呃,数字电路里边的话呢,我们也可以去啊,注意啊,我们往回翻就翻这一下啊,呃,就是说这些都是一个呃对应的啊,我们来看一下在我们的。在我们的这个叫做。呃,时序逻辑里边啊,应该在这儿。啊,然后呢,我们来看一下它接到哪去了啊,它应该就接到什么,它应该就集到这个位置上了啊,就是步至腰端或者异步轻零端,它集到这儿来了啊,它集到这儿来了,所以这样的话呢,你来看一下是不是CLK有效无效对他来说没影响对吧?啊没影响啊没影响啊,也就是说带有这个异步复位端的啊,异步复位端的啊,所以对于大家来说的话呢,大家一定要呃知道啊,你看带有异步复位端的啊,异步至位端和异步复位端的这样的一个地处挖器啊,其实就是我们现在做这个啊,那么这个我们就不太去研究了啊,我们知道它的功能就可以了,那在这的话呢,我们推荐大家干什么呢?推荐大家去写这样的一个叫做低电平有效的一个什么呢?啊亦不复位啊亦不复位,好了,当然了,这是什么,这是做了一个寄存器,对不对,这是做了一个寄存器,那如果说呢,我可以做几个寄存器呢?我可以做八个寄存器,那怎么做呢?在这非常简单,你直接写个七。
51:37
一到零就是输入呢,呃,有七个啊,输入呢有这个啊不有八个啊,然后呢,在这儿的话呢,我们来呢,输出呢也有八个,然后呢,这个地方写什么呢?这就直接写,就写成八撇D0啊,你直接写成八撇D0就可以啊,写成八撇D0就可以,然后这样的话呢,我们来呢进行综合分析一下,其实呢,你这种写法现在什么,现在就是把八个干什么,把八个这个分就是八个组合一起到齐了,那么你跟八个分开写是一样的啊,是一样的。
52:12
啊,这个一定要知道啊,这个一定要知道。啊,所以在这我们综合分析一下,然后呢,我们来看一看啊,我们来看一看什么呢?我们来看一看这个RTL模型啊,RTR的一个模型啊,然后呢,我们来一不限看一下啊,它的模型非常简单,就会还是一个,但是这会写这会写成七到零了,这它就变厚了,变成是一组,这什么这个叫有人叫触罚器组,称之为叫什么叫寄存器啊,其实我觉得呃,就是个名字的不一样吧,我们就是知道就OK了啊,知道就OK了。好,那么下边的话呢,我们来呢,呃,去再看一下新面积规化器里边它是啊,用到了几个,你看啊,你看它这有一个,这个这是第一个,这是第二个,这是第三个,第四个,第五个,第六个第七个啊,我们明明写了八个,为什么只有七个呢?所以这七个当中肯定有一个里边是俩,我们来放大看一下,这个里边是一个啊,这个里边是一个。
53:23
啊,这只有一个对不对,那么我们再来去找一找啊,这个里边呢,哎,这个里边是两啊,这个里边两个啊,也就是说呢,在这儿它有一个D啊,它有一个D信号啊,然后不是它有一个计算机信号,这个呢也有个计算机信号,对不对,也就是说呢,它这里边呢,就一个什么一个Le,或者叫一个Le里边它只有一个40查表和一个寄存器,所以对于我们来说的话呢,我们写了八个计存器干什么,它就会直接利用什么,它就会直接在这里边找八个出来,那么他至于找到什么位置了啊,我们先不去管它,这是它自动的去帮我们布局布线啊,自动的帮我们去适配,那么这个适配呢,规则或者适配的这个叫做这个约束,我们后边也可以去给大家去讲,但现在的话我们先不讲了啊,现在我们先不讲了,就是说呢,我们就是说呢,他呢,就是它自动的帮我们约束到这几个地方上去了啊,自动包说这几个地方,那么这是我的约束,那我的自自动布局不全,对于大家来说的话呢,大家。
54:24
它不一定会到哪去啊,大家可以自己去找一找啊,自己去找一找好了,那么这什么,这是一个叫做八个的一个寄存器的描述啊,非常的简单对吧?好了,那么呃,下边啊,当我们有了这个寄存器以后,我们真的就可以无所不能的去做各种各样的一些事情了吗?啊这个我们是来需要干什么,我们需要去做一个叫什么叫考虑的,那好了,下边的话呢,我们一起呢,来去做一个设计啊做个什么设计呢?我们再把我们刚才的这个数字电路逻辑给打开,我们打开之后我们来看一下啊,我们在这个当中的话呢,我们我记得给大家一种这样的一种说法,什么呢?比如说这儿就是这样的一种,这个叫什么,这个其实就是个,其实这个就是一个寄存器嘛,对不对,这就是个寄存器,然后这是一个加法器啊加法器,然后呢,就是我们说了,复位的时候,我让这个等于零,然后适出上来线一来啊,因为复位时候等于零嘛,这就等于对不对。
55:24
然后上车沿一来,然后这个值呢,嘟嘟嘟嘟加过来,它加一变成值变成一了,上升沿不来的时候,这就是一,这就是零,并且这种情况非常稳定,对不对?上车沿一来,这变什么?这儿呢,就会从一嘟嘟嘟嘟嘟过去了,变成一了啊过去了,也就是说注意上升沿一来,这不会立刻变成一,而是等一会儿变成一,因为我们说门是有延时的,对不对,它变成一,然后一呢,嘟嘟嘟嘟嘟再过来,然后一加一变成,变成了二,那这个地方就变成二了,所以呢,此时过去了个生成沿之后,这个地方是二,这个地方是一啊,并且十还是很稳定在上,再一来二过去了,就变成了,这就变成二了,然后嘟嘟嘟就变成三了,所以过去两个生弦就变成是就变成了一个二,所以我们把这种电路叫什么呢?叫做脉冲计数器,也是记录什么,记录我们的这个叫做什么记录我们这个CLK啊,它到底过去了几个上层沿,因为在我们的这当中呢,有几个上层啊,就是过去了几个脉冲,因为我们理解脉冲什么脉冲就是这样的啊。
56:24
就是端上去了,这就是这里有一个脉冲叭,如端上去一下,端又上去一下,这就是一个脉冲,两个脉冲就是过去了,因为因为我们是数字信号嘛,你不可能出现什么的,你数字信号是不可能出现阶梯的,数字信号是不可能出现这个问题的。啊,就是对于我们来说,目前来说,二进里边不能出现这样,你说零变成幺了,你这是啥二啊三啊,那不存在对不对,我们只能是一根线杆,就是零变幺幺只能变零对不对,然后再变幺对不对,所以这就是一个上传沿,认为什么认为就是一个脉冲,所以叫什么叫脉冲计数器啊,所以我们今天的话呢,我们先来去做一个啊,第一个我们现在做的这个电路就是脉冲计数器,我们怎么来实现,那我们怎么来实现,那么其实这就是个加法器嘛,这就是一个这个叫什么,这个计算器嘛,对不对,但是我们要知道啊,脉冲计数器呢,就是从数学上也好,或者从我们的理论上出发,什么?就是你过去一个生成R,那么我这就会等于观察下就会等于二,观察下就等于等于三,就是我是你的一个脉冲计数,但是呢,注意咱的技数能无限变大嘛,其实是做不到的啊,其实是做不到的,为什么呢?因为你想啊,因为我们要对应实际的电路对不对,我对应实际的电路的情况下呢,那么你这个就有什么,就你的处发就会什么计算机会什么会有位宽对不对。
57:44
比如你有五个寄存器,你有八个寄存器,你有十个寄存器,那么无论你有多少个寄存器,那么脉冲如果一直来的话,他一定会进满,对吧?就好像咱举个例子,什么比如说给你一个给一个什么给你一个这个口袋让你去地里去捡苹果,那么我告诉你,我给你捡一个就会多一个,捡一个就会多一个,这对不对,这句话说的是对的,但是你要想,你要想到一件事儿,你总有一天你的袋子无论有多大,你总有一天你会把整个袋子给捡满,那剪满了以后,你再往里塞就塞不进去了啊,再减往里塞就塞不进去了啊,再往里塞塞不进去了,所以的话呢,就会出了问题,也就是说呢,对于实际来说,我们不能无限大,也就是这个值呢,会有一个处罚器的值,比如说这个处罚器是四位的,那我们都知道,如果处罚器是四位的话,那么它的值应该什么?应该是零到15对不对,也就是说呢,哎,零来一个等于一来个等于二来个再等于三一直等于15的时候好了,那么再来就再来第16个,那很对不起,我们已经C。
58:44
下了我们就是15,但是对于我们这来说的话呢,它不会C不下,它会干什么,它会自动清零,因为它默认取第一位,对不对,16的第一位不就是零嘛,所以如果说我们这写了四位的情况下,如果我们这写了四位的情况下,那么上这个脉冲如果无限来的话,那么C2CT会得到什么?会得到一个呃,零到15的无限循环啊,零到15的一个无线循环,好了,那么下边我们来呢,就把这个电路来给大家来写一写。
59:20
好啊,脉冲啊脉冲单词怎么怎么写来着,等会儿啊。啊。它下划线,我们计数器CU tr啊叫脉冲计数器,我们给他一个这样的名字好叫doc。
60:08
叫QPRJ。叫RTL,好了,下面我们去建立工程。好,那么我们建立完工程以后呢,我们下面就来讲一讲这个电路应该怎么来做呢?首先我们来看一下这个电路呢,有两部分,一部分是个加法器,一部分是个什么,一部分是一个处罚器,对不对,或者叫寄存器对不对,然后了在这儿我们来啊去分成两部分来写就可以了啊。
61:24
好,那么我来写一下这个代码啊。输入复位的时候啊,输入有时中输入呢,有这个复位,然后呢,没有输入了,对吧?因为它是脉冲计数器,对不对啊,那么因为CLK就是什么,就是我们的脉冲对吧?所以说的话呢,输出有什么?输出有我们的一个叫做,比如我们就写四位吧,三到零的CT好了,那么在这儿的话呢,我们来写一下啊,在这个当中的话呢,一共有什么电路,一共有两部分,对不对,这是一个寄存器,这是个什么?这是一个加法器,对吧?那么来看一下,对于我们先说加法器,对于加法器来说,它是什么?它是不是就是CT。
62:13
加一得到这个值啊,比如说这个值我们起个名字啊,这个值起个名字,这个值起什么?比如说我们起个名字叫做呃,这个这个呃,CTN啊,NT-N啊,我们就起这个名字好了,那么在这的话呢,我们先描述加法器啊,先描述加法器好了,那么来先定义一个叫做where啊,三到零的啊,CT-N好ZCT-N就等于CT加上一撇be好了,这样的话先什么?现在不就是描述了一个这个寄算器嘛,就是输出是CNT嘛,所以CNT加一就等于CT-N那寄算器呢,是不是就是把CT-N给了CT啊,所以这就非常简单啊,那么我们来写一下always失中苏外。
63:14
判断复位等于零的时候,把CT要等于的是四撇D0,然后LCNT等于什么呢?就等于CNT-N啊,就等于CNT-N也就是说呢,这个这不就是描述个计算器吗?计算器不就是把D端给到Q端吗?它的D端不就是CNT-N吗?好,做完了CT应该什么?CT应该是reg类型的,好了,下边我们来进行综合分析一下,看看有没有错误,然后呢,我们去做一个仿真啊,来分析一下它啊到底啊怎么来做啊,到底怎么来做。啊,然后呢,我们来呢,我们今天的任务啊,呃没有太多,就是把整个计数器啊弄明白啊,弄得明明白白的,然后呢,我们就相当于呢,就任务就结束了啊,因为呃我们呃再往后边的大部分的实验呢,呃都是根据计数器来去做的啊,根据计数器来去做的。
64:19
好,你看这个RTL视图当中呢,就会看到什么呢?就是说这是一个寄存器,然后呢,它输出了,然后拉到前边啊,这个我们先不管啊,这个是一个cin,其实呢,如果大家呢,可以把这个什么,这个其实大家就可以理解为什么就列解为是我们之前做的一个全加器嘛,你全加器是不是有A加B,还要再加一个进位啊,我们又没有进位对吧,我们进位是零对不对,所以就是零,那么就是A加BB等于一,然后呢,加完结果给了他,他呢再给了他,给到3D信号给过来,上升沿一来把D信号给过去就是它,那么这个很明显就是什么,就是我们所做的这个电路嘛,对不对,那么这个电路有什么功能呢?还记不记得我们说了,上升沿来的时候,上升沿来的时候会把D信号什么呢?会把D信号给过去,然后呢,给到什么?给到这个这个CCNT上,然后CNT再返回来,再加一到这儿,然后上下上来的时候会把这只再给过去,就这样无限的循环,上升页一来这边就这这边呢就会多一个数上来,这边就会。
65:20
多一个数好了,那么下边的话呢,我们来去写一下这个代码啊,写一下这个仿真。好,那么下边的话呢,我来做一个绿化。
66:09
好,那么再往后边呢,是我们来定义一下reg c l k reg复位和外啊,这个叫做三到零的CT,来看一下C2K。RST-N和CT好,那么下边的话呢,我们来去写一下好,那么对于我们来说的话呢,注意啊,我们复位信号的话,有些人说我的电路不需要复位我的线路,我的线路我的电路就直接一直在工作就行了,就是不需要复位,就RSD一直就等于一就行了,因为我们等于零,复面一直等于一好了,那么C2K的话呢,我们直接复制成一撇B0,然后的话呢,延时一段时间,比如延时25吧,然后C2K就制成什么制成一撇B1,然后呢,再延时89,然后C2K制成一撇B0,然后再延时78,然后CLK制成一撇B1啊,然后再延时25啊,换一个数26,然后C2K等于一撇B0。
67:39
B撇B0,然后再延时,呃62啊写写错位置了62,然后C2K等于一撇B1,也就是我就一会等于零一会等于一嘛,然后的话呢,我在这儿呢,我就懒得去写了啊,我就直接复制粘贴了,好再往下再往下再往下再往下再往下,我就直接呢复制了一堆啊就是说让在不复位的情况下,就一直是置位情况下,然后呢,我来做什么呢?我来做了这样的一堆电路啊这样的一堆,就是说玻璃电路应该叫CRK一直从高低高低高低的变化,对吧?好,那么下边的话呢,我们来做一个呃设置,然后呢,我们去做一个仿真。
68:27
我们来看一看。我们会得到一个。什么样的一个结果啊,然后呢,我们来去呢,呃,分析一下啊,我点错了,我点成这个,呃,布局不限了,我也无所谓啊,他也会去进行最后分析的。因为我们的电路比较简单啊呃,综合分析和布局不限就布局不限非踌快啊,我们这个我就不再停止了,因为停止再开始可能也会耽误一段时间啊,那么我们下边呢,来去看一下啊,在这当中呢,我就直接做了一个在复位信号,一直等于幺,然后呢,这个C2K信号呢,就是不间断的拉高拉低拉高拉低拉高低啊。
69:18
好,我们去做这个仿真。好,那么在这来看的话呢,我们把名字点一下,就看到什么,就看到CT是一条红线。CNT是红的,CNT为什么是红的呢?我也不知道,那么反正就是红的,那么红线对还是不对呢?其实你不能说红线对还是不对,但是首先在这我们来看一个问题啊,就是按照我们的预期,上升沿来的时候,CD应该等于一,再来看应该等于二,再来看应该等于三,再来个应该等于四,再来该等于五,再来应该等于六,再来应该等于七,这是我们所想的,但是你等于叉,这就是你的部队了吧,那为啥等于呢?我也不知道呀,所以呢,我们来分析一个问题啊,什么呢?
70:20
在这带着大家一起去找问题啊,带着家一起去找问题,我们来分析一下,我们知道C是从哪来的,CNT是从CNT-N来的,对不对?如果CNT-N就是叉,那么CNT就会等于叉,注意叉什么叉叫不确定态啊,不确定态就是说我们去做这个电路的时候呢,我们说它呢,就是关于我们的数字电路里边它有什么,它有这个稳定的啊,高也有稳定的低,但是呢,有的时候呢,就是我也不知道它等于零,也不知道它等于幺,注意它不是中间啊,它不一定是中间,它就是说有可能是零,有可能是一,所以它就变成叉了啊,叫不确定态,那好了,不确定态啊,有的时候我经常说不确定态不是一种肽,而是它不确定是哪一种肽啊,希望大家一定要知道啊,他不是一个这个这个这个第三个,比如说举个例子啊,就是说就是人的性别有两种啊,有男和女,但是呢,有的时候呢,我不知道你是男的是女的,那问题来了,这是不知道你是男的还是女的,你说这是第三种性别。
71:20
啊,他不是啊,他就说你肯定是男的或者是女的,但是我不知道你这是哪一种啊,叫不确定啊,这个就不行,所以说我经常说不确定肽,他不是一种态而是么?而是我不知道你是哪一种态啊,是这样的啊,但是呢,我们做来说肯定是要希望,希望它是已知态,对吧,觉得肯定不对,那么好了,那我们来看一下CNT,既然是CNT-N过来的,那么就选中它找到objects,然后干什么去把CT-N给搞回来。出来了,但是我们再来一个。让二好了。啊,本身一个还不像,还不够红是吧,来了第二个CNT-N还是CT-N也是红的,那CNT-N又是谁呢?CNT-N原来是CT加一得来的,那好了无限循环了,也就是说呢,首先最简单的问题就是原来啊,CNT-N红的原因是因为CNT红了,CNNT红的原因是因为Cd-n红了,那这样你轮回转圈就没头了,对不对?所以我们干什么要从头开始分析,在最开始的情况下啊,在这个最开始的情况下,也就是说在没有时钟上升沿的情况下,C什么C的红线,但大家一定要注意啊,在没有上升沿,就一个上升沿都没有的情况下,跟CND刚开始没有关系的,因为你一个上沿都没来,CND刚开,你说D还没有更新到Q上,你的Q就红了,跟我有什么关系对不对,所以呢,意味着什么?就是说在没有时钟上升沿而来之前,CNT是红的,然后CNT红了以后呢,就导致红的。
72:57
的加一也是红的,那么导致呢,新上一二,再一来就会把这个红的再给过去,所以就一直就红了头了,所以这一个的综合区的原因就是什么,就是在上升银没来之前,CT应该有一个什么,它必须要有一个固定的已知值,那怎么给呢?怎么给呢?所以在这儿我们有复位吗?对不对,有复位,所以在这儿希望告诉大家一件事,什么事儿呢?就是说复位信号,你不要说我的电路一直不复位啊,必须要干什么,就必须要给一个零。
73:30
必须要给个零,然后呢,你等一会儿比说延时多久呢?比如延时个36,然后我把这个RSd-n呢,再制成一撇B1啊,我就制成一撇B0一会儿,然后我再制成一撇B1啊,然后我再制成一撇B1,也就是说呢,我制零了一会儿会,然后我就制成幺了,这有什么作用呢?就是说我复位了一下,就是说我给了一个RST一个已知值啊,我给了RST啊,不是不是给了一个叫做这个CT一个已知值,那好了,下边我们再来呢,进行一个啊RTL的一个仿真,我们来看一看,此时的CNT呢,是不是就已经有了什么,已经有了一个叫做哎正确的一个结果了。
74:21
好,我们来看一下啊,是不是就已经有了一个正确结果了,那么来看一下,比如我把C呢改成无符号位。好,你看一下上升1.1,就是说在这个期间之内,你看复位信号等于零,期间CT是等于零的,然后到这儿啊,复位信号拉高了,拉高以后呢,哎,当上升C2K上升线一来,它就立刻CT就变成一了,上升线一来变成二了,再一来变成三了,再一来变成四了啊然后呢,我们可以去缩小一下,我们来看一下啊,十五六七八九十十一十二十三十四,其实我们没有看到15清零的情况,对不对,所以没办法啊,我在这儿再去复制一下,因为我好像当初给的眼不够。
75:10
啊,我再给一堆烟啊,然后呢,我来呢,把它给关掉,然后重新再打开一遍。啊,就让大家看一下啊,如果说你是什么,如果说你是一个呃,四比特的一个寄存器的话,呃,你所能够表达的最大值就是15,如果你还想再加一,那么就会变成什么,变成零了啊,我们来看一下。好,我们来把它呢,再变成这个无符号位好。啊一二三四五六七八九十十一十二十三十四十五,你看再加一遍什么变成零了啊,它变成零了,然后零再加一变什么变成一了啊零再加一就变成一了,所以在这的话呢,15再加一呢,会变成零啊希望大家一定要知道这个问题啊,一定要知道这个问题,那好了,那么这就是一个非常简单的一个什么,就是脉冲计数器,你会发现来一个脉冲它就会加一,来一个脉冲就会加一,那下面呢,我们干什么?我们把这个呃叫做Cd-n也给拉进来。
76:22
啊,也给拉进来。啊,我们来这呢,来分析一下CT-N它的一个作用,我们看一下啊,放大看一下啊。有没有发现呢?当CNT等于零的时候,CT杠就会等于一,CNT等于一的时候,CT-N就会等于二,C等于二的时候,CT-N就等于三,对不对,也就是说呢,NT-N永远是和CNT对齐的,然后呢,并且要比它大一个,为什么呢?因为很简单嘛,我们就可以知道什么,因为在这儿吧,你的CNT等于几呢?永远我都会加一,在这儿反馈到这个位置上对不对,也就是这个位置永远会比这个位置大一,这是一定的啊,这是一定的,那好了,那么下面再来看一下,那么对于这个信号来说啊,对于这些信号来说,那么CNT和CTN中间是差了什么?差了一个组合逻辑的加法器,所以CNT-N和CNT永远是什么对的非常齐,因为是同时变化对不对?因为组合逻辑嘛,跟任何的时钟啊,跟任何的延啊,就是跟任何的时钟没有关系,它呢只是说输入发生改变,输出立刻跟着变,所以输入是三得到。
77:33
结果就是四,输入结果是四,得到结果就是五,输入就是五,得到就是六,因为它就是个加法器,对不对啊加法器好了,那么这是第一个问题,第二个我们来看一下寄存器。对于寄存器来说的话呢,对于寄存器来说就是什么?上升沿一来踩到几输出几,踩到几输出几对不对?那好了,对于我们写的这个代码来说,上升1R一来会踩谁呢?其实会把CNT-N给到CT上,对不对?好,那么在这我来看一下上升一一来,比如说在这儿上升一一来CNT等于几呢?其实大家会发现呢,上升A一来的时候,其实CNT呢,正好是处于二三的时刻,正好是处于二变三的时刻,就是说它正好踩到了一个变化上,那你说我踩到的前是前面的二呢?还是踩到后面三呢?还是踩到不对不对的值呢?我们先从结果论的角度来分析,就是说这个上升一过后,结果是几呢?结果是二,就是很明显什么呢?很明显的上升踩到几呢?踩到的是这个变化的前面那个值,也就是踩到的二,那也就是踩到的二,那么这个踩到的二到底对还是不对呢?来说结果是对的,但是呢,很多人看始不理解,你比踩到。
78:44
变化的时候,那踩到前边还是后边呢,我也不知道对不对,所以怎么办呢?所以在这儿我先说一个问题,第一个我在哪儿呢?我再给大家去讲解,呃,最开始的时候就是说我在讲第一笔就是一个比特计动器的时候,给大家讲过一个问题,说输入信号在TB里边千万不要出现一个问题什么呢?就是千万不要出现你的D信号的变化和你的CRK的上升沿的变化是对齐的,如果一旦对齐了,就会踩到变化,一变化你也不知道踩到零还是一对不对。
79:14
好了,那么我们永远不变,我们永远就是不会去跟它对齐了,这是第一个,第二个你会发现当内部信号的时候呢,它也会有对齐,因为它内部信号呢,上升沿一触发的时候变化了,因为又经过组合逻辑在变的话,那就还是对齐的,那么这种情况,我们材料到底是前面还是后边呢?注意这个时候呢,就要告诉你一种理论,什么理论呢?踩到的是前面,有人说为什么会踩到前边呢?那么今天的话呢,我来给大家来解释一下为什么会踩到前边啊,要不然的话呢,很多人就理解不了了。首先我们来说一个问题啊,这是一个。上生涯。好,我们来画真,我们首先来画什么来画仿真的情况,如果是仿真的情况呢,就是上升一下对齐的时候,比如这个呢是CTCNT等于二,那么下边的CT-N它就等于几呢?它就会等于三。
80:07
然后呢,这个上的话呢,这会等于几呢,这就会等于三。这个呢,就会等于几呢?比如说我们就分析这个上升沿,比如说我们就分析这个上沿,那这个上沿的话呢,一踩都变成了,变成了四对吧,就是它都是对齐的,那好了,那我来说这个上升沿的时候呢,比如说二这为什么是三呢?啊就是这个这变成三,这为什么是四呢?为什么这边对这么齐呢?注意这个上升沿没关系,因为什么因为三这等到四的结果是为是因为三加一变成四,中间是只有一个加法器,而加法器我们在考虑RT阿尔法,那什么不考虑什么不考虑延时,如果不考虑延时的话,是不是什么是不是三就会立刻得到四啊,所以它就会对齐,这跟上升沿没关系啊,上没关系好了,那么在第二个问题就是,那这个三哪来的呢?我们都知道上升沿会踩谁呢?会踩D信号,而D是谁呢?D就是这个信号啊,D就是这边这个信号,那它正好上一点踩到了。
81:05
三变四的中间,那到底踩到是三还是四呢?我们刚才说了,从结果论的角度来说,它采到的是三,为什么?因为上升一值过后以后C就等于三了,对吧?踩到是三,那为什么会踩到三呢?这不是对齐了吗?为踩到是三呢?注意因为此时的话呢,我们没有去考虑任何的延时,对吧?当你不考虑延时的情况下,那么你踩到什么,你踩到的就一定啊是对齐的,如果你考虑延时的会怎么办呢?我们来统一来画一下,如果大家考虑延时会出现什么问题呢?首先我们先分析第一个问题啊。就是假如说前面是几我不操心好,假如是几我们不操心啊,那好了,那么比如说我们前面的这个位置呢,我们这个位置上这一来。这输出几了?这输出的应该是二对不对,假如就是二好了,那么下边有一个问题啊,它能够在上升沿对齐的时候,前面是一,这输出二吗?他做不到,我们知道真实的情况应该是什么,真实的情况应该是上升沿输出会有什么,会有延时对不对?所以真正的信号前面是一,这边变成二的时候呢,应该会从上升沿的这个位置它才能变成二,也就是说上升一过一会儿之后,结果才能变成二,对不对?好了,比如这是CT。
82:35
由于呢,CT要变成CNT-N中间会经过什么?中间会经过一个加法器对不对,加法器有没有延时啊,当然也有了,对不对,所以在这儿得到二,在这个值之后他得不到三,他会在这儿这个结果之后才能得到三。比如说这一段时间上升也是到这段时间乘出来就是计算机的输出延时,而这有二了,到这才能得到CT-N的三是么?这叫加法器的延时好了,那么这个上升沿会踩谁呢?这个上升沿呢会踩谁呢?它会踩CT-N此时CN等于几呢?此时CT-N呢?会等于什么?会等于三对不对?它会等于三,所以它踩到几呢?它就踩到三,就输输出三,所以在这它会输出它变成三。
83:23
然后它变成三以后呢,在这儿呢,等一会儿就会变什么变成四,所以当你考虑延时以后,你会发现什么呢?上升沿踩到什么,踩到的是一个非常稳定的一个什么稳定的一个三的值,而当大家不考虑延时的时候是什么呢?因为不考虑延时了嘛,所以计算器输出延时没了,加法器的延时也没了,所以就会得到一个什么结果呢?就会得到一个这样的一个结果就是上升,而一来。然后对的非常齐。这是二,这是三。这是二,这个上车沿一来对的非常齐,这边变成了三,这就变成了四,但其实是这样的吗?不是啊,上升沿踩不到这个变化的位置,为什么呢?因为会有延时的啊,因为会有延时的对不对啊,所以说呢,我们知道真正延时的话呢,就是三哪来四哪来的呢?43给的三哪来的呢?三是这个上升沿给的,那这个上升沿呢,就本身会有延时对不对?所以加法器呢,本身也有延时对不对?所以四本身在这才能得到,那前面几呢?前面就是三对吧?所以这个上升沿踩到的Cd-n就是三,所以才能产生三三才能产生四,所以踩到三产生四,这是对的啊,踩到三产生三啊C就是这个CNT会变成三,然后CNT再加一变成CNT-N会等于四,所以这是一个啊,它的一个对论关系啊,所以在这儿希大家一定要知道上身踩到什么,上升也踩到的确实是哎,这个CT-N的一个,哎CT-N呢,不是变化位置,应该是前边啊。但是如果我们。
84:59
直接看确实是变化的位置了,对吧?啊,我们来呢,只要注意踩到是前边,所以踩到二输出二,我们是从结果论的角度来说啊,踩到二输出二啊,这一定是对的啊,一定是对的,好了,那么呃,当我们明白了这个以后呢,有些人说我不明白你这个延时对吧?那怎么办呢?大家也可以去做一件事儿啊,什么事呢,就是我们去做一个后仿真嘛,后仿真不就有延时了嘛,对不对,我们来进行一个eda网表的一个,呃,这个这个这个编写啊,然后呢,我们来呢,去做一个什么,做一个后仿真,然后我们来看一下在后仿真当中啊,在后半当中是不是我所说的,哎,这个叫做呃,上面沿来了之后,等一会儿才能产生CT,然后CT。
85:42
等一会儿制动,它产生CT-N啊,它产生CT-N啊,然后呢,它产生了CT-N以后,它就会保持不变了,那保持不变了,然后呢,上这一踩到C-N等一会儿就能产生CT,所以呢,它是一个什么,它是一个互相有延时的结果,而如果大家的这个什么呢,就是RTL的这个视图啊,啊不是这个RTL仿真的话,因为没有延时嘛,所以就会干什么,所以就会啊全部都会干什么啊,对齐啊,全部都会对齐,那下面我们来get get level一下。
86:12
好,我们get level,仿真一下。好,我们刚才LEVEL1仿真的话呢,我们来呢,我们不我们先不去找CNT-N啊,我们先来看一下CNT,你看CNT的所有的变化,是不是已经不和上升沿对齐了,也就是说呢,它已经在上沿之后再做输出了,对不对啊,那从这儿我觉得大家就已经能理解了,比如说它功能反定的时候,它是在这儿对齐的,在现在的话,它不对齐了,他就跑到跑到后边去了,对不对,那跑到后边的话呢,那就有一个非常简单的一件事儿,什么事呢?就是说因为你的。
87:02
这个叫做我改成五负二位吧,因为你的这个七在这才产生的,那那个八在那产生你的C-N的八,哪八只能在七的后边才能产生八,对不对啊,才能产生八,那这样的话呢。你的上山沿怎么可能踩到这个漆产生的八呢?不存在对吧,那不存在啊,所以在这儿的话呢,我们来呢,呃,但是由于是功能仿真,所以大家就能看到,但是这个后仿真的话呢,如果说大家想要把这个CNT-N呢,呃,CNT-N去给找出来,呃,其实还是蛮费劲的啊,蛮费劲的,那么在这儿我来硬性的给大家找一下吧,这个不不建议大家去找啊。3210。然后呢,我把这个先组成一个组合信号。叫CNT-N。
88:03
好,然后呢,我再把这个删掉,不要了,变成CD感恩了,然后再一下。好让二一下。好,那么这样的话呢,我们再来看一下啊,我们把CT也改成这个无符号位啊,随便找个上层沿啊,我们来分析一下啊,诶这个值是不是不对劲啊。嗯,我看一下啊。这为什么是等于五了呢?呃,它有一个取反,嗯,这样就不太对了。等会儿啊。Q。
89:02
嗯,他在这儿呢,找不到这个信号,这个信号它给了一个取反,那么呃,我们现在就不讨论数值了,我们来看一下它这个信号的话。呃,确实在这儿搞了一个类似有点像取反的情况,那我们不看了,我们就呃根据我们刚才那个分析吧,也就是说呢,呃,上升牙来了之后呢,等一会儿才能有这个变化,十,那你十你的CD杆会等于什么?会等于11对不对,你的十一会干什么,你的十一会更靠后对吧?所以上一页踩到什么,踩到的肯定是什么前面对不对,因为我们来真实情况会往后推,但是呢,真实情况下我们会往后推,在产生11,所以在这个地方踩到是十,而如果说我们不考虑延时的情况下呢,它是都往前推,都对齐了,那对齐以后面踩在哪呢?踩的是前边啊,踩的是前边,希望大家一定要知道这个问题好了,那么。这就是我们今天要讲的一个计数器,那么在计数器当中的话呢,我们给大家说什么呢?给大家说了一个就是这个位置,就是啊最前面这个位置一定要干什么,一定要复位一下子,那告诉大家干什么作用呢?就是说在以后写TB的时候,我们都会先写一段复位,然后再去写什么呢?再去写我们啊正常的逻辑,因为如果你不给复位的话呢,很多寄存器拿不到正确的值,他拿不到正确的值的话呢,你直接呢去做任何的操作,那就我们可以认为就是不对的啊,我们认为就是不对的啊,所以啊,经过这种情况的话呢,我们需要知道啊,就要先给复位好了,那么这就是一个什么呢?非常简单的一个什么呢?叫做脉冲计数器,那么这个脉冲计数器的话呢,我们来看一下它的RTL视图啊,这个我们之前也看过了是吧,就跟我们画的一样啊。
90:51
啊,就是一个呃寄存器,然后前面一个加法器啊,那么在很多时候的话呢,我其实呢,并不想这么来描述,因为这么来描述的就是现传么,现在把这个呃呃去这个设计的时候呢,这叫什么,这叫合逻辑,这叫什么,这叫寄存器,就是把组合逻辑和寄存器完全分开来设计了,那在这的话呢,我可以做这样一件事,就是我不要CT-N我就直接在这写一个CT,就等于CT加上一撇B啊,我CNT就等于CNT加上一撇BE1啊CNT就等于CNT加上一撇BE1,那么这个会有什么效果呢?其实啊和我们刚才那个做出来电路呢是一模一样的啊,是一模一样的,所以在很多时候呢,我推荐大家去写这种设计的时候呢,就不要去把这个,呃,就是组合逻辑啊,和我们的后边寄存器分开来写啊,呃,之前我也见过有一部分人这么写的,但是我觉得那么。
91:52
写的代码比较多,诶啰里吧嗦的,呃,有的时候分析的时候可能也不太好分析啊,所以干脆啊就写到一起,我就得会比较方便啊,我们来看一下这个RTL视图啊啊它呢也是啊,也是这样的,比如这儿呢,还是CNG拉过去加一到这个值,然后这个值上下来的时候给过来,所以这还是这样一个道理,那么呃,在这儿的话呢,就会出现另外一个矛盾,那就是矛盾体,为什么呢?比如说我们在最开始候有个有个CND杠,恩,对不对,我们分析什么上升沿来的时候啊,上升沿来的时候啊,我们踩到CNT-N等于几,然后给到CT就出现了,那现在有个问题,什么就不是CNT-N等于几变成什么?变成CNT加一等于几了,而CNT加一等于几呢,又不好说,我们不要加一,我们比如CT就说上升下以来踩到的CT等于几,然后呢,踩到那个CT加一之后会给到新的CT上,那这个。
92:44
这个很明显的一个问题是什么?就是说你踩到的是三,所以加一产生四,这是对的,踩到的是四,产到的是五是对的,踩到的是五,产生是六是对的,所以呢,也就是说呢,上升沿以来踩到CT等于几呢?它还是等于对齐的前面那个值啊,踩到前量T还是前面那个值,所以这个呢,希望大家一定要知道这个问题啊,那么这个我们就不再仿真了啊,不再仿真了,这两种电路是完全等效的啊,完全等效的就比如下面定一个C-n az c-N等于C加一,和这种写法是完完全全一模一样的,因为呢,它都是在给CNT的D端上啊一个信号,这个就是我们的这个叫做CNT寄存器的D端信号,那不就是CT加一吗?是一样的啊,是一样的写法,那这两种是一样的,我推荐这种写法好了,那么呃,当我们讲到这的时候呢,我们下边就要讲一个问题了,就是我们做了什么,我们做了是不是一做了一个叫做脉冲计数器,就是CRK上升沿一来就加一,CRK上升沿一来就加一,这是我们做了什么?做了一个叫做脉冲计数器,我们做完了。
93:44
但是呢,我们脉冲计数器有没有作用呢?当然有了,脉冲一来就加一,脉冲一来就加一,脉冲一来就加一,对吧,这叫什么叫计数器,没有问题,那么下边我们来做个什么呢?我们来做一个有意义的一件事儿,什么叫有意义的一件事儿呢?就比如说我现在呢,还是脉冲计数器,但是呢,我告诉你我这个脉冲啊很好,好在哪呢?我一秒钟来个脉冲,我一秒钟来一个上升沿,一秒钟来个上升沿,大家来想象一下,比如说我问你,我说过去了几个上升沿了,你过去50个了,好,我是不是就立刻知道其实过去什么,其实过去的是50秒了,对吧。
94:23
也就是说呢,如果当我的啊,这个脉冲它是非常精确,也非常有规律的这么样的一个脉冲的话,那么对于我们来说,我们是不是就可以把它当成把计数器当成什么,当成计时器了啊,比如说你是一秒钟来一个,那记了五个数,这就认为什么过去了五秒钟嘛。对不对,所以呢,我们从计数器就变什么变成了叫做计时器,其实计时器呢,就是计数器,但是呢,计时器它记了多少时间呢,其实其实就是什么,其实就是记得数字乘以什么,哎,乘以多久来一个CRK啊,多久来个C2K上成R,那么在这儿的话呢,我们来说一下,有没有这样的一些稳定的啊,就是说多久来个CLK,多久来个CLK这样的一些器件呢,是有的啊,那么是什么呢?其实呢,这就是什么,就是我们所说的叫什么叫经振。
95:24
啊,就是我们所说的惊振,惊振是什么呢?其实你就理为理解为就是一种石英啊,就是它那固有自己的晶振啊,震动频率通完电以后呢,是吧,它可以干什么,它可以自动就震动了,那怎么震动呢?其实就是震动成这样。那就振动一个高一对低,对高对低,那么这个高高低高低高什么它就分成的稳定,比如说它从这儿到这儿啊,这是一,这是一个周期,所以我们把这个称之为叫做周期啊,这个到这儿也是一个周期,那么这两个T呢,我画的不一样长的,其实它是它是一样长的,我们现在先认为它是一样长的啊,这就是一个经振,那么这样的晶振的话呢,哎,非常的多,或者说我们现在用的大部分的所有电路板上都是有晶振的,那么晶振什么,就是说有一个T,那么我们开发板的晶振多少呢?我们开发版的震是50兆赫兹。
96:18
啊,50兆赫兹,那么50兆赫兹的话呢,哎,50兆赫兹的话呢,那么它的这是频率对吧?那么它的周期是多少呢?哎,周期就是20纳秒,大家到时候大家可以自己去换算一下啊,是20纳秒,所以那这样的话呢,对于我们来说的话呢,就是说一个周期是20纳秒,十个周期就是200纳秒,对不对,所以说我们在这儿的话呢,就是说哎还是计数器,但是呢,我们的CLK是非常规律的,就是说十个高,十个低,十个高,因为我们占空比呢,要做成50%,也就是拜占股50%呢,就是高低一样多呗,就是十十个高,十个低,十个高,十个低,那么这样的话呢,我们来看一下啊,我们来做一下啊,那么CRK如果是十个高,十个低,十个高,十个低啊,那么怎么写呢?注意,如果你要还在这儿写的话,那你这个复位就的时候比较碍事儿,那怎么办呢?我们不这么写了啊,我们不在这儿写了。
97:15
把这个全删了。啊,全删了啊,我们CRK可以怎么写呢?我们CRK可以这么写,这么写就比较简单什么呢?还用我们之前学过的一个叫repeat,比如说REPEAT10BEGIN end,然后呢,CRK先等于一撇B0,然后延时十,然后C2K再等于一撇B1,然后再延时十,啊这样的话是不是就可以变成就是零延制十变成一,再延制十变成零,再制十变成一,再延制十变成零,就无限的十个高十个低,十个高十个低,十个高十个低,是不是变成十一直就它对不对,那么这样的话呢,我们怎么办呢?这写完了,我看下写复位对不对,那么复位的话呢,我们是不是在这儿直接写个复位等于一撇B0对不对,那下边干什么就延时一段时间对吧,延时多久呢?我们延时,比如延时101啊,为什么延时101呢?其实也很简单啊,因为说你的。
98:17
C2K都是在十上变化对不对,比如说你是十变化,20变化,30变化,40变化,50变化,那么你的所有的变化都是在个位是零的情况下,那我给你个位是幺,我去变化一个复位的话,那肯定是什么,肯定是不和你的上升沿对齐的,对不对啊,那就完事了呀,所以我们现在来把这个来去做一个综合分析,然后呢,我们去做个仿真,就是我们来看一看CRK呢,已经变什么,已经变成了一个,哎,我们所谓的什么叫做经振,就是说它的振动啊,非常的有规律,十个高十个低,十个高十个低啊这样的一种写法啊,我们来看一下啊,当然了,这边的话呢,我们经振的话呢,只给了十个模拟这样的一个经阵啊,只给了十个,那么一会我们可以给多一些啊,一会儿我们可以给多一些。
99:29
好,我们来看一下是不是这个CLK呢,看着就什么,看着就是一段高一段低,一段高一段低,但是你会发现呢,在这段线间阵的CT都等于什么,都等于零啊,它都等于零,为什么?因为一直在复位嘛,对不对,然后在这的话呢,好不容易不复位了,所以来到第一个生人变成了一,变成了二,变成了三,变成了四,变成了五,那么当然了,你后边肯定也就意味什么,意味着我们这个repeat写少了,对吧,就是我们还看不到这个零到15再变成零是吧,写写少了,那写多少个呢?我们给它加上100个吧,加多一点。
100:02
我们做个仿真,然后再来看一下。好啊,就会变成这样的一种形式啊,变成这样的一种形式,然后呢,我们把这个CNT呢,设置成这个五复二位,大家来看一下啊。就是二,就是非常简单,1234567891直到十五十五,再上下一来就变成变成零,然后123是不是变成什么,是不是就变成了,就是呃,非常有规律的一个计数了啊非常也就是说一个上来人来记个一嘛,这叫脉冲计数器,但是如果我的脉冲非常有规律,那这个叫什么,这个我们就可以认为是个什么,是个计时器,什么意思,大家来看一下,如果说呢,我去判断它是不是等于15,只要判断它等于15,比如说后边是零到15的循环,对不对,都是零到15的循环,那我就什么就如果它等于15了,我就干一件事儿,如果等于15了,我就干一件事儿,如果等于15了,我干一件事儿,那好了,大家来想一下,我干那一件事儿的频率是多久呢?是不是现在就是16个周期啊,16个周期我会干一件事儿,那这16个周期是多久呢?16个周期是不是就是320纳秒啊,因为我们所谓的一个周期是多少,一个周期是不是正好是这个。
101:32
这个20纳秒,因为十个高十个低嘛,对不对,所以这样的话呢,干什么,我就相当于做了一个计时器,但是大家就会发现一个问题,什么问题呢?就是因为我们的计时器是什么,比如说我们现在想做什么,就是说你在做了一个四位的脉冲计数器,它会无限的零到15循环,然后呢,对于我来说的话呢,我每次等于15的时候做一件事儿,那现在什么,现在就是每320纳秒做了一件事,因为16个周期一个循环,如果说我每次九的时候做做一件事呢,其实呢,还是320纳秒,为什么呢?因为你是无限的零到15循环嘛,你从第一个九到第二个九,中间还是经历了16个,对不对,还是经历了16个周期,所以你还是320纳秒,所以那这样的话呢,就意味着什么,意味着我们每次都是经过320纳秒去做什么,去做了一件事儿,那么这样的话呢,我们有问题啊,比如说呢,我不想320纳秒了,我想200纳秒行不行?
102:28
我每200纳秒做一件事儿,那行不行,这个应该怎么做,这是第一件事儿,第二件事儿,我们来分析一下,它为什么每次都是320纳秒做一件事儿呢?所以我们现在就不考虑为什么三百二了,我们来考虑什么,因为它是16个周期做一件事儿,所以是320,那为什么是16个周期呢?因为我们的脉冲计数器是用的四位,而这四位的话呢,而这四位的话呢,它是怎么做呢?它是无限的从全零到全一,从全零到全一,所以呢,这样的话呢,就是说它是16个周期,那么对于我们来说的话呢,我们啊,诶不想让他每次都是用全量到权一,因为呢,如果你每次到全量到全一的话,你永远都是16个周期一循环,我又不想说你320纳秒干一件事儿,比如我现在想什么,我现在想,呃,200纳秒做一件事儿,我现在想200纳秒做一件事儿,那怎么办呢?所以你就要给我写一个200纳秒的计数器,那200纳秒的计数器应该怎么写呢?是不是来想首先第一个问题,200纳秒的计数器是不是?
103:27
对于我们来说,我们是20纳秒一个周期,你要让你要让我给你写一个200纳米的计数器,是不是现在什么,是不是现在要写一个十个周期的无限循环呀,那如果是十个周期的无限循环的话。啊,如果是十个周期的无限循环的话,大家来考虑个问题,十个周期无限循环,那就是说计数器会什么,计数器是不是从零到九无限循环呀?那我们怎么来写一个计数器是零到九无限循环呢?首先考虑第一个问题,就是九用几位可以表示的下呢?我们知道应该用四位对吧?要用四位那好了,那么怎么能到九让它变成零呢?注意在这的话呢,你就不能这么写了,应该怎么写呢?在这个位置加上一句话,就是判断括号CNT是不是小于四撇第九,如果是的话就加一,否则就让CNT干什么去给等于四撇D0了。也就是说呢,我们这儿呢,加了一个功能性的语句,这个功能性的语句有什么作用呢?就是当CD等于零的时候,零小于九吗?小于,所以零加一变成了一一小于吗?小于一加一变成二五小于吗?我就变成六八小于吗?八是不是小于九的八小于九?
104:42
然后呢,八加一变成减1/8变成九了,九小于九嘛,不小于,所以九就会清零零了之后呢,零小于九嘛,就会小于就加一,所以它就会得到什么,得到一个零到九的一个无限循环,注意零到九的无限循环是几个周期呢?注意零到九的无限循环是十个周期,因为呢,会有零会有九嘛,对不对,所以你想要十个周期的无限循环,这个地方应该写九。
105:09
啊,应该写九啊,应该写小于九啊,有的人会写小于等于,不要写小于等于啊,写于等于就会出,就会多一个啊,我们讲的就是小于的问题,好了,那么下边的话呢,我们来干什么,我们把它给关掉,然后我们再来呢,进行一个综合分析,我们来看一下啊,它是不是小于九,就加一等于九的时候,它就清零了,然后清零了以后,它就会不会出现十啊,这边还还是四位,但是它呢,不会出现十啊,它只会出现什么呢?就零到九,然后呢,就变成了九,完之后就变成零,那么这样的话呢,我每次在等于九的时候做一件事儿,是不是现什么,现在就是200纳秒,我做了一件事儿,200纳秒我做了件事啊,所以就什么就引入了时间上的一个概念啊,我点错了,我好像点了一个state machine啊,等会啊。
106:01
点一下RTL视图。在RTL视图当中会引入什么呢?会引入一个寄存器,会引入一个二选一的选择器,会引入一个小于比较器,会引入一个全加器,而这几个器件我们都讲过啊,前都讲过啊,也就是说呢,首先复位的时候它等于零,然后零小于九吗?小于,所以这呢就会产生一个一,这个信号就产生个一,然后一呢,就会零加一就变成一,所以把一给过去了,比如说这是555加一变成六,这是六,那六小于九嘛,小于,所以就把六选过去了,比如这等于,比如说这等于八。好,八拿过来,八小于九吗?小于,所以这是一八加一呢,这是九对不对,九的话就会被选过去,然后这就变成九了,九拿过来九加一变成小变成十,注意这个地方,这这根线会出十啊,这根线会出十的,九加一变成变成十嘛,但是九小于九嘛,不小于,所以干什么,所以这就这根线就变成零了对不对,零的话什么就会把零选过去对不对,随时变成零了,这虽然会有十,但是没有用,因为它会选成零过去,所以变成零了,然后下上一来就变成零了,零再过来零加一就变成一了,所以呢,在这个当中呢,会出现这样一个结果,那么下边的话呢,我们来去仿真一下啊,因为呢,这是我们的理论分析,那么下面面来看一下啊,零到。
107:26
啊九啊,它会不会实现我们所谓的这样的一个功能。好,那么下面的话呢,我们来把这个CT呢,改成这个无符号位。改错了,改成无号位,好了,来看一下是不是从这来开始啊,一二三四五六七八九九变什么,九变成零了对不对,九就变成零了,然后零完之后呢,012345678就开始往后走了,所以对于我们来说的话呢,啊,对于我们来说的话呢,就非常的方便啊,非常的方便,也就是说呢,我们通过一个加了一个功能性的限制条件,我们得到什么,我们得到了一个。
108:25
非常简单的一个就是想先记录,我们可以说记录任何时间长度了,我想记录多久就记录多久,为什么?比如我想记录20纳秒,那就是每次都记到零,外外记录300纳秒,那每次都记录到15,哦不是记录到14,因为是300纳秒,是15个周期,15个周期从零开始记,应该是零到14,对不对,是这样的,那么下边的话呢,我来给大家讲一个例子,我们讲完这个例子以后啊,我们讲完这个例子以后,我们今天就结束了啊,什么例子呢?这个呢,我们明天会让大家去做一个实验,但是今天的话,我先讲一个例子,什么例子呢?比如说现在我让大家去给我写一个五微秒的计数器。
109:06
怎么写?五微秒的记录器,就是说我要你五微秒这个这个这个就是就是说它记录一次,五微秒记录一次,五秒记录一次,那么这个怎么来写呢?首先呢,大家呢,一定要注意一个问题啊,五微秒是多少呢?所以大家要首先第一个你要对时间要有一定的了解,比如说我们说的一秒钟,一秒等于什么?一秒钟要等于十的三次幂毫秒。要等于十的六次幂微秒,要等于十的九次幂纳秒,要等于十的12次幂皮秒,这是我们的啊单位,那好再来看一下微秒于纳秒之间的进位是多少,就是一微秒会等于多少会等于,其实就是1000纳秒对不对?所以我现在要干什么?所以我现在要约的是五微秒的计数器,对不对,所以它等啥就是5000纳秒对吧。
110:12
而5000纳百计数器的话呢,因为我们是不是5000纳百计时,因为我们没有计时器,我们只有计数器,对不对?所以我们要考虑记一个数需要多久呢?我们用的是50兆赫兹的时钟,所以呢,我们记一个数需要的是20纳秒,所以呢,5000除以20纳秒该多少?应该等于250,也就是说呢,我需要记录250个周期,而我每次记是从零开始记的,所以怎么办?所以我只需要记录到249,而249这个数字要想表示的下的话,那么我们的CNT的位宽就应该是八位,因为八位的话可以表示的是255,而七位的话表示的是127,所以249和它们之间,所以我们要用八位,所以此时我要把CN。
111:12
T改成八位,也就是七到零,而这个地方的话呢,应该写的是八撇D0,而这个地方应该小于多少八撇D249,而这个地方应该写的是八撇D0,所以就会得到一个什么呢?就是说零到249的无限循环,那当然了,我这给的clock的周期肯定不够,比如我这给个500吧,啊,给个1000吧,然后我们进行综合分析一下,然后我来进行一个什么呢?进行一个仿真,也就是说呢,我们来看一看这clock是不是零到249循环了,零到249,有些人说,那我这儿比如我就写成四到零了,我就写成三到零了,那它能不能小于二百二百四十九呢?注意你无论怎么加,它也不可能大于249啊,比如说你是一个四位的,你四位的再加也只能加到15,再加一变成零了,所以呢,这个位宽一定要够啊,不够的话就会出现各种各样的一些问题啊。
112:11
我们来仿真一下,然后来看一看啊,它会不会啊,等于到249啊,会不会等于到249。呃,报错了,我看一下啊。呃,检查一些错误,哪错了呢?嗯,等会儿啊,我把它关掉,重新启动一下啊,兴许是bug了。嗯,我们来综合分析一下。啊,也有可能是bug了啊,然后呢,我来这个重新打开一下试一试啊,如果还是不行的话,我来看一看是不是哪出了什么问题啊,在这儿有可能出问题了啊呃,我们的这个里边我改成八到零了,对吧,但是我这个TB里边呢,我还没有把CNT改成这个八到零啊,就是说这个连接线啊,CT还是连接的是个三到零的啊,这个一定要改啊,这个一定要改成八到零的,要不然的话呢,可能就会报错。
113:10
好,再来打开一下啊。好,OK了啊。好,那么下面的话呢,我们来看一下这个很长对吧,然后呢,我们把这个CT呢,改成这个无符号位。然后呢,我们来去放大一下啊,1234567891直往后递增,要多定到多久呢?我们来看一下到这个200。啊,二百四二百四十一二百四十二二百四十三一直到249,到249以后变成什么,它变成了零二百四十九变成了零,所以这样的话呢,我每次只需要判断它是不是等于249,如果它等于249了,我就做一件事儿,等于249就成,现在什么相当于我是五微秒做了一件事儿,五微秒做了一件事对不对?好了,那么这就是我们今天啊讲课的一个目的,让大家去认识到啊,我们简单总结下今天内容啊,首先我们讲了什么?好像我们讲了一个叫做,呃,这个最开始给大家解决了一个就是多比特的除法器,乘法器的一些概念,然后呢,最主要讲什么?最主要讲了一个就是出错了以后应该怎么样去找,这是第一个问题啊,第二个问题我们讲什么,我们就讲了丹比特的寄存器给大家讲什么,给大家讲了一个叫做哎,这个,呃,什么叫同步复位,什么叫异步复位,他们。
114:48
之间呢,有什么样的一些区别啊,有什么样的一些区别啊,然后呢,我们又讲了什么呢?我们又讲了一个叫做脉冲计数器啊脉冲计数器,那么在脉冲计数器当中的话呢,我们给大家讲什么呢?就是说哎,可以把脉冲计数器写成组合逻辑和时序逻辑啊,组合逻辑和时序逻辑,然后呢,我们又在这儿分析了上升沿到底应该踩到的是前边还是后边,为什么我们解释了很久,这一定要知道,因为这个呢是我们后边实际分析的一个,呃,最基本的东西,如果说这个不明白,后边很多东西你都考虑不懂了啊,考虑不明白了啊,但是希望大家一定要记住一件事儿啊,它自己内部产生的时候,它会干什么,它的所有信号,大多数信号都会,什么都会以声对齐,但是我们写TB的时候一定不要对齐啊,因为你在TB当中和声对齐了,就会产生一个截然相反的一个问一个一个结果,所以不要那样做,那样做我们就分析不明白了,我们不分析那种结果啊,我们不分那种结果。
115:48
好了,那么呃,我们做完那个之后呢,哎,我们就知道了,哎,脉冲计数器就上升,这一来它就会加一,上升一来就会加一,好那么最终我们说如果我的脉冲非常稳定呢,比如说20纳秒来一个,20纳秒来一个呢,所们讲的什么就是脉冲计时器,进而变成什么叫做计时器,对不对,计时器当然了,计时器的话呢,我就想记录的时间就不一样长,我不能每次呢,比如说你是四位的对吧,那我每次都记录16个周期对吧?如果你是八位的,我不能每次都记录250个周期,对不对,因为我想。
116:22
这个不同,不同的时间去做不同的事儿,对吧?所以你不能说总是让我记满,比如说你永远是20,这个256个周期,或永远是128个周期,或永远是32个周期,就永远是二的N次米克周期,那你这样的肯定不好玩,比如说我就想要规定是,比如我就想要500微秒,那你应该记录多少呢?所以我给大家举了个例子,对不对?所以我想首先第一个例子我举的是200纳秒,那么这个呢,正好是在四位能表示的下,所以我没做没没没怎么动是吧,直接就小于四撇第九了,但是如果说我是不是举了个例子,另外一个例子叫什么,如果说我想五微秒变化一次呢?所以在这儿的话呢,我得到什么,得到了一个这样的结果,就是说它思维放不下,必须要八位对吧?好了,那么给大家留一个问题,而这个问题也是我明天要讲的一个问题,就是今就是我们啊,做了这么久了,我们要做下板的第一个实验,就是时序逻辑的下板第一个实验,什么实验呢?就是说考虑一下如何来做出来,就是让开发板上的一个led灯。
117:23
啊,进行亮一秒灭一秒,亮一秒灭一秒这样的一个功能啊,这是我们今天呢留的一个任务啊,今天留的个任务就是亮一秒灭一秒,亮一秒灭一秒应该怎么做啊,当然了,呃,一定要把今天讲的所有东西一定要都理解透了,理解透了以后啊,那么对于做下边这个就简单多了,那么一旦咱们能够实现亮一秒灭一秒这个操作,我会无限的把这个应用到各种场合,然后呢,我们就可以进而驱动起来各种各样的一些外设,包括我们的数码管,包括我们的流水灯,包括我们的这个各种各样的一些啊,微接或者一些其他的接口都可以了,这是一个最基本的就是计数器,那么当然了,也就是计时器,注意其实本质上是没有计时器的,只有计数器,而只不过你计数的间隔非常的稳定,所以也就变成了时间啊,所以当我们一和时间挂钩的话,那么就和现实的所有东西它就挂上钩了,因为呢,有了时间了嘛,对不对,好了,那么。
118:23
呃,以上呢,就是咱们这个今天讲的所有的内容啊,大家看一看有没有问题啊,有问题的话可以呃说一下啊,然后呢,没有问题的话呢,咱们就呃这个这个这个就这样啊,因为这个这几天的话呢,可能大家呢事儿都比较多是吧,然后呢,就是呃一定要把这个呃录下来视频,然后好好分析分析,然后有问题发给我啊,有问题或者没问题的也可以发给我,就让我看一下,对还是不对,对吧?然后呢,呃对于前期来说还是比较重要的,比较重要的好了。看看有没有问题啊,有没有问题,有问题就提啊,没有问题咱就就这样好吧。
119:11
没有是吧,没有那咱就这样就是呃,前面这个东西啊,我估计呢,呃比较简单,前面可能学过的或者自学过的可能都知道,但是呢,咱们讲的跟其他人讲的肯定不一样啊,就是说不仅仅是让你直接写一下出来,这样咱们要分析到原理好了,那没有问题的,咱就这样好吧。
我来说两句