00:01
好啦,现在有声音吗?声音画面都有吗?都有是吧?OK啊嗯,下面的话呢,我们来接着讲解,咱们这个算是咱们的一个,呃,月考的这个里边的这样一个东西啊,那么呃,咱们这个有同学是吧,提出来了一个问题啊,然后咱们把这个问题给大家来去。解决一下啊。在哪儿呢?在这儿啊,在咱们设计报告里边啊呃,昨天我没有发现啊,然后呢,咱今天有同学说这个咱们这里边有两个东西是一样的,是吧,瞅一眼去吧,啊在这啊,这个位置啊,这个位置是有一个问题的啊,这个位置是有一个问题的,因为这个位置也叫music啊,输出这个也叫music,然后这两个东西呢,叫的名字一样。
01:08
啊,这两个东西叫做名字一样,那么这个名字一样的很有可能就会有问题啊,咱们来去解决一下咱们这个代码里边的一些错误点啊。我们来看一下它一样之后,它这个叫做这个这个连接关系是不是都报错了啊,因为呢,你定义错了以后呢,它可能并不说,它可能并不会出现一些,就是你一编译的时候,它可能并不会出现一些警告,或者出现一些呃其他的东西,因为我们这里边还有很多很多东西都没连,还有很多很多都没做啊,所以的话呢,呃,对于我们来说的话呢,可能说看这些警告可能看不出来,那么在这儿的话呢,我来呃看一下这里边的连接关系啊,是不是跟我们所想的一样啊,然后呢,我们再往下做啊,首先最起码这个报告里边呢,这一部分肯定是不对了啊,这一部分肯定不对,因为这个呢叫这个名字叫music,这个地方也叫music,这两个叫同样一个名字啊,就会出错啊,我们可以认为就是会它就会出错了,那么下边的话呢,我们来去看一下,打开之后啊看一下呃,昨天电脑bug了,然后呢,我今天在这个直播之前。
02:20
前我重新启了一动,启动一下电脑,所以可能会稍微启动软件有点慢啊,嗯,在哪呢?在这个music bep里边啊,我们来这看一下啊里边啊。在music bep当中啊啊,我看一下啊,Music bep当中啊,呃,我的这个代码啊,和这个报告呢,是有一定的不一样的地方的啊,那个为什么呢?因为你看咱们的报告啊,咱们的这个报告的话呢,就是咱们这个报告做的其实是有问题的啊呃,咱们的报告做的时候呢,是什么呢?咱们这个报告做的时候呢,是说这个地方叫music过来是他,然后最终输出也是music,如果要这么写代码,肯定必错无疑啊,必错无疑,那么但是在我的music bep当中的话呢,其实我的最终输出是什么?最终输出叫bep去了,叫bep去了,并没有叫music啊,并没有叫music,所以在我这儿呢,可能没报错,但是对于大家来说的话,大家去做呢,可能就会出现这个问题啊,那么这个位置的话呢,我们可以改成叫什么叫BP,其实如果说我们改。
03:35
改成bep以后呢,好像也有点不对,为什么?因为改成be之后跟这个music be这个地方它也叫music,其实呢,就有点儿不太对应了啊,不太对应那怎么办呢?大家可以在这儿啊把这个music不行改一下啊,就把如果说啊我我是说啊,如果说咱们这个里边啊,要去都统一上的话,把这个改一下,改成多少呢?把这个music,呃改成这个叫做呃music什么呢。
04:08
比如我们就就就现在就不去慎研究他了啊,就只是说一句话,就比如改一个叫做这个MUSIC1啊,你就直接加一个一啊,就代表着这个和这个玩意儿不一样就可以啊,在这我们就我就不去深究了,大家可以换一个呃,类似于什么其他的一个什么名字啊,在这我就不再深究了啊,把它改成MUSIC1,这样就不跟他冲突了,那么不跟他冲突以后呢,那么在咱们这里边的话呢,也最好给它改成啊这个叫MUSIC1,好,那么这个地方也改成MUSIC1,这个地方也改成MUSIC1啊,这样就好了啊,因为我最终输出其实根本就不叫music,因为我是叫这个bep的,所以呢,本身我在这呢,就呃,就是可能报告里边是有一定的差别的,为什么呢?因为这个呢,我并不是按照报告写的,因为我是干什么,我是直接用之前的代码复制过来的,然后呢,我只是说端口能够对应上就好啊,我并没有直接去修改端口,所以呢,在这的话呢,呃,咱们同学说这。
05:08
很好,这个报告做的确实有问题啊,那么呃,但是呢,我来说一下报告确实是有问题了啊,这是第一个,第二个的话,咱们的报告当中呢,就在做的时候,可能是利用了以前的一些模块,那么以前在命名的时候,可能和现在在命名的时候呢,可能会有一定的冲突,可能会不一样,但是呢,有个问题什么,就是说你端口和你的命名不一样,比如说我在这叫bep,按照咱们的报告当中叫什么?应该叫这个music,对吧,但是我叫了bep,但是我叫bep以后能证明什么,证明这个模块输出的一个端口叫什么叫bep,但是这叫music,这个music我们可以理解为这它不是端口,它什么它是一个连线,所以我们来看一下在我们的。叫做顶层里边的时候啊,我的music bep啊,他说的bep的连接线还是叫music,也就是说大家只去看什么,只去看这个叫做顶层规划的时候呢,它的连接线都是对的,只不过这个端口呢,可能和连线的名字就发生不一样了,那么不一样原因在哪呢?不一样的原因就在我们不是从头开始设计的,因为我们有一部分用的是之前的,而之前的代码里边呢,呃,它的端口啊,和我们的端口是一样的多。
06:20
啊,一样的意义,但是呢,叫的名字可能会有一定的区别,就是端口名会有一定区别,但是在这儿的话呢,我们到最后去做的时候,把它连线的名字又给改过来了,所以在我这儿的话呢,呃,并没有出现什么,并没有出现咱们叫做这个,呃叫做这个逻辑性或者代码性的错误啊,但是大家如果要从头写的话,能遇到那个问题啊,那么肯定是过不去了啊,定会有错啊,呃,我记得昨天呢,我记得看这个二条视图的应该是没有问题的啊嗯,所以这个就给就给大家就这样来解释好吧。
07:00
赵雨生,懂了吗?知道吗?知道,知道这个问题了吗?知道为什么了吗?大家知道就好啊,呃,知道咱们这个叫做,呃,咱们所说的这个叫做这个所谓的这个问题啊,然后呢,呃,我们就能够。哎呀,点错了点这个啊,知道咱们这个所谓的这个问题存在在哪儿了,然后呢,一定要一定要记住这么写是呃,肯定不对啊,肯定不对,然后呢,呃,我看你截那个图啊,我总感觉你截你截那个图好像。做错了啊,我总感觉你截那个图好像做的有点不对劲啊呃,Wave产生的时候得到的应该什么,得到的应该是个频率,然后这个的话呢,输入输入应该是个得到应该是频率,这个应该在前面,这个应在后面才对啊。
08:02
啊,至于music在前边啊,因为musicq是通过music得到Q上fiq才得到的,是啊得到的是wave,所以的话呢,你这个图上是不是你自己做的,当初做反了。啊,OKOKOK,好啊,那就是你自己明白就好,好吧,好了啊,那么呃,我这个呢,并没有任何的这做这个叫做这个在咱们设计上的错误吧,只能说是咱们的这个这个这个设计报告上可能有一部分的名字啊,它这个和以前的名字可能会有一定的不相符,但是咱们知道啊,端口的名字可能不一样,但是连接线关系是一样的,它的这个功能是一样的啊,咱们现在就像这样往下讲啊,呃,好了,那么呃,下边的话呢,我们啊做到哪儿了呢?我们应该是做到了。啊,我们这个还没做是吧,我们我们昨啊,我们昨天应该是把这个这个叫做这个封鸣器,这个应该都写完了啊,我记得应该是写完了啊,包括这个music control啊对,我们应该是把这个都写完了,然后呢,呃,我们昨天呢,后半段的视频没录上啊,然后呢,给大家也来简单说一下,咱们没录上那个视频是从哪儿开始的,我昨天看了一下啊,没录上的话是从这儿开始的,也就是说我们画妆的转移图的时候开始的,那么这个转移图呢,现在我就不讲了,那么一会我再去写这个代码的时候,我再来讲啊,这是咱们第一个,那么第二个的话呢,后边就是写什么,就是说写代码的时候,呃,然后呢,后边没录上,而后边那个代码的话呢,主要写了哪一部分呢?呃,主要是第一个就写了一个这个啊,叫做按键消斗加变人检测这个啊,相信这个大家肯定录不录都明白是吧,都会这两个也是复制粘贴过来,只不过经过经过了一部分修改而已,那么第二部分呢,是这个封面器这一部分,也就是说一个代。
09:58
代码的一个什么呢?代码的一个修改啊,因为咱们没有创造什么新的东西,只不过在music bep里边呢,呃,简单的更子改了一个叫music的一个东西啊,所以呢,也没有去添加任何新的东西啊,所以呢,后边没录上的东西,基本上就是把这两个模块啊给解决了,加上一个这转移图啊好了,那么呃,今天的话,下面我讲什么呢?下面我们来讲这个叫做显示。
10:22
啊,就是我们来讲这个叫做drive的这个这个模块的编写啊,那么这个模块的编写的话呢,啊,我们来一步一步来啊,一步步来,首先呢,第一个。我们做这个二进制转BCD啊,二进制转BD,那么二进转BD多少位,这是这个七位啊,这是这个位转这个八位啊,六位转八位,五六位转八位,那对于咱们来说呢,咱们好像没有,但是咱们懂原理啊,那么如果重新写的话也比较费劲,那在这儿的话呢,我就给大家一个偷个懒啊,偷个懒,偷什么懒呢?咱们之前是不是做的什么,咱们之前是不是做的叫做是转的,是八位转12位的呀,对吧?所以在这的话呢,我们偷个懒啊,嗯,我们去把我们的bin To Bcd。
11:11
啊b to PCD啊,我们这个里边呢,是这个叫做嗯,八位转这个12位的啊,但是呢,我们现在呢,只用它的,呃,这个这个这个低位就可以了,我们高位都默认是零不就好了吗?对吧,所以这个呢也比较简单啊,我们现在在这儿。呃,也不再去新做一个几位转多少位的了啊。好,二进制转BD啊,那么然后我们把这个呢,进行一个复制粘贴复制啊,那么例化到哪去呢?应该例化到我们的叫做显示模块当中,对吧,所以显示粘贴。
12:01
好,那么在这呢,就叫H啊,这个由于比较短,我们可以直接就写成这个样子啊,就是有的时候我就会写成这种绿化,因为这种绿化写起来之后呢,呃,看着就没有那么长了啊,我觉得也舒服一点啊,因为端口不多的时候,有的时候我就喜欢写成一横排了啊好了,下面来看一下啊,对于H来说的话呢,它是什么?它是这个七位的,那么对于我们来说,我们这个数是几位的,是八位的对吧?所以在这的话,我们给它个一撇B0逗号七位的,然后转出来之后是多少位的呢?转出来之后其实是一个12位的对不对,其实是一个12位的值,但是呢,我们只要什么,我们只要这个12位的什么呢?后八位啊,我们只要这个12位的后八位啊,12位的后八位,所以在这怎么办呢?所以在这我们这么。
13:02
来定义啊,我们这么来定义,也就是说HBCD这不是七到零嘛,对不对,HPT这不是七到零嘛,在这的话,我们怎么做呢?我们这么做啊,就是我们去定义这个这个叫做这个这三个BD的时候啊,就比如说多少我们也给定义成12位啊,叫做HBCD啊,我们给它定义成12位啊,那么给它定义成12位有什么作用呢?就是说我们是12位的接口,我们用12位的去承接,然后呢,只不过我们去用的时候呢,只用它的第八位就好了,对不对。然后这个是M,这个是L,那么对于他们来说呢,他们都少,他们都是这个叫做呃六位的是吧,那前面呢,就要少了啊,就是二撇B002撇B00啊,然后这个呢,就变成了还需要再定义一下对吧。ML啊,这个是M,这个是L,好搞定啊,这就搞定了好了,那么再往下边什么呢?再往下边是我们的,呃,这个显示模块啊,就是show c这个模块,那么show control模块的话呢,我们没有,我们需要自己写,所以新建welo OK。
14:25
File另存为。RTL,我们叫受下划线,CTRL。好了,我们输入有适中,输入有复位啊,然后输入还有啥呢,记不住了啊,输入有这三个en对吧,那么这三个呢?呃,我们把BP都关掉啊,把这个二进BD也关掉啊,把这个打开啊,也就是说这三个对吧。
15:13
好粘贴,那么然后还有什么呢?还有的应该是这。还有是这三个BD码对不对,那么在这的话,我们把这三个BD码写一下,输入这个叫做七到零的H。BCD啊,输入有这个七到零的MBCD和输入有我们的七到零的。LBCD,好,那么输出什么?输出就是h datm dat和l dat都是八到零的对吧?好,那在这我们来去输出玩七到零的h dat。
16:16
M dat和l dat,最后一个是没有逗号的啊,好搞定,然后把它去做个。粘贴。
17:11
好,然后下边呢,是连的是适中。复位。嗯,然后是我们的。叫adjust。I'm just in。L en和HBCD在这一定要注意啊,我们只连接它的七到零啊,这个一定要知道。
18:05
MBCD是连接它的七到零,其实你不管它直接放到这也没事儿啊,也结果也是对的啊,因为呢什么呢,因为HBCDMBCDLBCD在这个连线中是12位,但是端口里边是八位的,所以还是会自动截取第八位,所以这个呢,我们呃可以不写,但是呢,我们说过啊,呃,当你知道的情况下呢,大家尽可能都给它写上啊,保证咱们做设计的一个严谨性啊,BAT。M dat和l dat。HDT。M dat和l dat好,那么在这的话呢,我们来啊,我们来对它进行一个呃,综合分析一下也可以啊,就是说我们来看一下这个这个连接关系对不对是吧?好了,那么第二个还有一个什么呢?就是说这个叫做数码管,那么这个数码管的话呢,我们也是有的,对吧,我们就直接去复制就可以了啊,但是呢,这个复制过来之后呢,要经过一定的修改,并且修改还不少啊。
19:13
数码管在我们的key number里边就有啊,在V6里边儿,在RT里边的。哪管?复制。好,那么数码管有了,那么这个数码管的话呢,我们要对它进行一定的修改啊,首先修改什么呢?首先修改端口对不对,第一个时钟复位不用动啊,输入24位不用动,输入有个多了一个什么,多了一个DP对不对啊,输了个多了个DP,输入WHERE5到零的第一批小姐DN。
20:16
DP音好了,那么根据什么呢?根据我们之前讲的东西啊,讲什么东西呢?根据我们所说的啊,对于什么,对于数码管来说啊,对于数码管来说,首先第一个问题就是啊,呃,我们的数字啊,比如说输入显示零到九,A到F,其实呢,跟小数点没有任何关系啊,跟小数点没有任何的关系啊,没有任何的关系啊,所以怎么办呢?所以对于我们来说,其实呢,对于收date来说,它是什么?它就是说把date的高四位,中间四位,再四位取出来,但是它呢,根本就不可能去控制什么呢?就是这个叫做呃,这个这个这个C格N的这个叫做它的第七位的,因为它控制不到,在这怎么办呢?所以我们要统一呢,把小数点给拿出来啊,把小数点给拿出来。
21:11
比如这儿的话呢,它呢只能控制,它只能控制什么呢?它只能控制它的六到零,它控制不了什么呢?它控制不了这个这个这个所谓的这个第七位啊,或者就是数码管的叫做什么呢?它的这个最高位啊,最高位啊是根本是不由你的收地的控制的,因为你只要控制七就可以了,对吧,就是后边七个就行,那么这个数有人说都是什么,都是这个这个这个这个八位的,你就直接给七会怎么样啊,这个呢,之前应该给大家讲过,如果我们写七撇B啊,七撇H后边是个八位的,它会干什么,它会自动截取第七位赋值过来,对吧?所以这个呢,我就不再修改了啊,这就不再修改了好了,那么第七位谁给赋值呢?注意第七位就是谁啊,第七位其实就是用它来复值就可以啊,就是说用上用音来值就可以了啊,那好在这我们来写一下。
22:11
Always a括号啊星begin end啊,然后case括号啊,谁呢就是我们的,其实就是把这一段代码啊,呃,类似的再抄一遍就可以了啊什么呢,就是这个就不能是它了,应该什么,应该是他的第七位。好,然后呢,这是对于什么?这对于第一个数码管来说,那么第一个数码管说小点亮不亮呢?如果说我们现在其实已经知道了,对吧,就是如果我小第一个不亮,那就给一撇B,第二小点亮不亮,第二小点亮亮给什么亮就给一撇B0对不对,然后第三个不亮,不亮就给一撇B,因为我们是高近平这个这个不亮对吧?所以在这的话呢,你亮的话就给零不亮,就什么不亮就给一对不对,一撇B0啊亮的话就给零,不亮就给一啊就可以了,但其实如果这么写的话,行不行呢?当然对于我们来说结果呢是可以的啊,但是呢,对于这种方式来说,我们现在什么,我们现在做了一个极度不通用的一个,为什么呢?因为你的小数点呢,只能在这改死值,不能够经过别人去改变,对吧,因为我们有DP音对吧,所以我们D拼音用来干嘛的,D拼音其实就是用来干什么,就是幺的时候它就点亮,零时候就不亮呗,所以如果它这一位是幺就点亮,如果是幺赋给幺就不亮了,所以这里要取一个。
23:47
反对不对。也就是说当它是幺的时候啊,当DP音是幺的时候,是不是就要点亮啊,点亮应该负零对不对,也就是说当它是幺的时候,它应该是零对不对,那当它是零的时候,是不是不想亮,不想亮是不是该负幺啊,所以应该负幺对不对?所以在这的话就是说各种就是反一下就可以了啊好,最终这个的我们给个一撇B1就可以了啊这就是我们的数码管修改,但是这个数码管修改结束了吗?其实还没有结束,为什么呢?这是首先第一个修改什么修改了小数点的问题,第二个问题就是什么?因为我们还要让他闪,它怎么能闪呢?因为我们又没有熄屏,其实呢,我在之前做的时候,还有一个输入,一个什么叫做,还有一个输入叫什么叫输入where,呃叫做五到零的一个什么呢?呃,显示就是show en什么意思,就是说这五到零就是什么,就是选择到底是哪个管点亮,哪个管不点亮啊,但是这个的话,呃后来我想了想,这么来做的话呢,难度好像比较有点大,没必要这么做,怎么做呢?因为有规定啊,规定什么。
24:52
因为现在这个A到F对我们来说呢,是没有任何作用的,我们也不显示对吧,所以怎么办呢,我就说我不亮的时候呢,我怎么办,我就给你F,所以说当你遇到是F的时候,你就别亮了,对不对,遇到F就别亮了,那好了,F的时候随着不要再亮这个了,就亮什么FF,那么这样的话呢,就是一旦遇到什么呢,15的时候,它就变成全腰,全腰对于咱们输码管来说,就是不亮啊,就是不亮就在这儿的话呢,我们对它呢,进行了一部分的什么修改啊修改,那么这个修改完以后呢,我们再把它利化到我们的这个当中,所以以后呢,我们可以认为什么以后我们可以认为现在我们修改这个数码管呢,是一个更通用的数码管,为什么呢?因为它呢,不仅仅能显示呃,六个或者叫做任意的24位数字,或者说就是六个四组的数字,它还可以干什么,它的六个小数点还可以灵活控制。
25:52
啊,就是我们的dpn啊,就是我们dpn。
26:01
好,适中。时钟。复位。啊,这个date呢,这个date就是个位拼接对吧,就是我们的这个叫什么h dat,逗号m dat,逗号l dat啊就是一个拼接嘛,对不对,所以在这的话呢,很多人可能说啊,你这个报告又不相符了,你这个报告里边这不输入了有是这个这个数码管输入有八维这个八维这个八维这个吗?你这个里边怎么没有,怎么变成了个24位啊,确实啊,有的时候这确实是跟报告不相符的地方,但是呢,我们在这儿啊,只要说明了就可以了,是它一个拼接,那么这个呢,没有人赋值就是个六撇B啊010100啊就是说第二个点亮,第四个点亮,最后一个不亮,因为没有分割了,对吧,那好了,剩下就是什么,剩下就是数码管的。
27:08
N和我们的cell n好搞定好,那么搞定了以后呢,我们对它进行一个综合分析。啊,那么呃,对于这个设计来说的话呢,它可能就会呃,编译的时间更长一点是吧,因为它的东西更多了。嗯,这怎么有这么多的这个缩减去匹配一个七位的呢,抽烟啊就是这个是吧,就是这个数啊,它是一个八位的值啊,它在这直接写了个七就变成七位的,也就是说呢,它会自动去缩减,但是呢,我们给大家讲过了,这个缩减呢,它。
28:04
不会有错的啊,不会有错的啊,所以在这儿的话,这个我们就不修改了。这也有一个啊,这个的话呢,是这个值啊,这个值的话呢,它也会缩减成二十四二十五位,这个值我们知道也可以放得下,这个我们就不再管它了,这还有一个值啊,这个也可以放得下,不再管它了啊,剩下的就OK啊,没有任何的其他问题,好,那么下边的话呢,我们来去。写我们的什么呢?就写我们的这个叫做呃show啊这个CTRL,那么在写之前呢,我们来看一下我们的就是显示模块的这个RTL,看对不对,显示模块就是这个喽啊看一下是啊啊在这的话呢,它呢,呃是这个六到零的拼一个零啊到这就变成七到零了,输出是12位的,他呢输出的是五到零的,拼两个零就变成七到零的,给出他啊一样的是吧,然后这是这个高位低位和这个中间位啊,然后呢,给出的都是七到零七到零七到零啊然后他去控制,然后给他,他的话你看这儿人家直接就显示了一个什么呢,就它是六撇H14是吧,就是一个固定死值啊固定值好了,然后呢,它呢数码管作为输出啊这个这个这个里边就不看了,太个太大了,我们只看这一部分啊,所以这一部分呢,对我们来说呢,就是一个正确的一个图啊,它都拼到一起去了,对吧,那下边我们来做这个啊,这个里边。
29:31
是全空的,那么这个里边有什么作用呢?还记不记得,也就是说。如果h adjust en等于零的时候,那么h dat就等于HBC,如果H加en等于一的时候,那h dat要等于0.5秒的HBCD要等于0.5秒的FF,是不是这就是我们所谓的这个控制它去闪对不对?那么如果说我们把。
30:03
根据HR加CN和HPCD做出来h dat了,剩下这两组我相信不用我说你也应该会了,对吧,因为他们是一样的对吧?在这我们来写一下啊,那怎么做呢?啊怎么做呢?所以首先在这儿的话,我们先一个什么呢?先写一个叫做0.5秒钟的一个计数器啊计数器,比如我们在这写一下啊premature啊,我们叫T下划线,呃,500毫秒啊,就是0.5秒啊等于多少呢?它不就等于二五_123456嘛,这个记住啊,然RG等于多少位呢?啊所以在这要算是吧,十位,十位三十二三十二是五位,所以就25位对吧?CT好,那么这样的话呢,我们来想,那什么时候开始计数呢?其实呢,一上店就开始计数行不行,其实也可以啊,其实也可以,但是呢,在这的话呢,我们就别一上店练技术了。
31:03
我们做的严谨一些,比如在这的话,我们来定义一个where叫什么呢?叫做这个CNT,就是CNT的一个计数器,那么cnnt en等于什么呢?也就是说Z谁呢?CNT的en等于谁呢?就等于它或者。他或者他就是无论他们三个谁等于一了,我的C都应该记数对不对,但是也要知道啊,这三个值绝对不可能同时唯一的啊,就是在我们这设计的时候感觉可以,但是在我们的逻辑里边是肯定不可以的,你不可能同时调整两个三个位置对吧?或者两个位置对不对?好,CT就等于25撇D0,然后呢,Else,然判断CNTN是不是等于一撇BE1,且与上CNT是不是小于T_500毫秒减去一撇B,是的话,CT就等于CT加上加上一撇B1,然后else。
32:25
然后CT就等于25撇D0好了,那么这样的话呢,我们是不是就可以呃得到一个结果啊,什么结果就是说只要CNT等于一,就是只要他们三个无论谁调整了,这个计数器就会计数,如果他们一直在调整的话,那么这个CT呢,就会一直从从零增长到最大,从零增长最大无限循环对吧,无限循环,那好了,那么下边我们怎么做呢?在这我们再来定义一个。比如说RG什么呢?我们叫做这个Y6值啊,或者叫做一个标志flag,当然我们一般flag用脉冲来表示,我们这里给一个叫做Y6值,Y6值有什么作用呢?我们这么写啊,Always eight括号时钟复位,嗯,它是干嘛的呢?它等于一撇B0,然后呢,Else判断啊,当cn t en等于一撇B1。
33:35
且CT等于T_500毫秒减去一撇B的时候,好,然后干什么呢?然后我们让他。等于它的取反,否则它就保持不变啊,那大家来想一想,大家来想想,如果是这样来做的话,是不是就是说。
34:05
只要是500毫秒,只要是这个叫什么,只要是这个叫做这个500毫秒,只要到了啊,只要是500毫秒到了这个我里的是不是就会取反,只要500毫秒到了我里是不是就取反,那是不是这个我的这个信号呢?是不是就变成什么,就是500毫秒的高,500毫秒的低,500毫米的500毫米的低啊。对不对,是不是就是500毫秒的高,500毫秒的低呀,好了,那么如果说我们知道500毫秒的低,五百五百毫秒高的话,但是呢,我这样来写就有一个非常错误的地方,错到哪儿了呢?也就是说呢,你不知道他调整到什么时候它就结束了,所以你也不知道什么,你也不知道这个wall里在,呃,这个你想啊,如果他第一次调整的时候,Wallli是初始日零,然后你就开始010101就开始不断翻转,但是呢,他突然间切走了,他切走了以后,那么再下一次开始的时候,我等于多少呢?其实你也不知道,其实你也不知道啊,其实也不知道,所以这样的话呢,可能就会有一定的问题,那怎么办呢?就在这儿啊,我们给大家进行一部分修改啊,大家就是在给大家讲这个里边怎么来做,比如说当CN等于一,也就是说开始计数的时候,我们才让它取反,然后呢,在其他地方不动,然后在else,如果说CN等于零了,那我直接就让干什么呢?直接就让wall里等于多少呢?一撇B0。
35:28
啊,直接就让它等于零。啊,其实就等于零,那么这样的话呢,是不是每次开始多少呢?每次开始是不是都等于零啊,是不是每次开始都等于零对不对啊,这个是毫无疑问的啊,每次开始它都会等于零,每次开始都会等于零啊也就是说先会500毫秒的零,然后才能变成一,然后才能变成零,然后才能变成一啊这样我们就知道它这个呃是一种什么情况了,对吧?好了,那么下边我们怎么做呢?下边呢就简单了,对吧?我来看一下啊,那么按照我们的写法,我们来写,然后我们可以写谁呢?我们来比如写这个好吧,Datat首先判断,判断谁呢?首先我们先判断这个h adjust en啊,如果h adjust en要是等于一撇B0,那就说不调整它,所以呢谁呢?所以h dat就会等于谁呢?
36:34
HBC。对吧,好了,那I代表什么?Else是不是就代表着它已经在调整了,那T在调整的话怎么办?是不是量0.5秒灭0.5秒,量0.5秒面0.5秒对不对,咱怎么做呢?也就是判断括号玻璃子是不是等于一撇B0,如果等于零的时候,H h dat就等于八撇HFF,否则h dat就等于HBCD,是不是这样的话呢,就变成了就是说只要just en等于一的时候啊,就看往里等于多少wall里等于一半的值的时候,等于FF等于另外一半值就方原值输出,那这样的话是不是就造成了一闪一闪的,因为我们说了FF什么FF的时候,它应该什么,它应该是熄灭的,对吧?应该是熄灭的。好,那么这个出来以后呢,这个其实也可以写成时序逻辑啊,因为它里边也没有什么反馈,好在这我们把它修改一下,它呢就是。
37:36
LLL。下边的就是这个叫MMMMMM,好,那么在这的话,他们都应该在always模块当中被复制了,所以都应该定义成reg的类型,好搞定。
38:14
啊,综合分析一下。啊,那么呃,其实这样来做的话呢,我们这个设计的话呢,就是显示部分呢,相当于也做完了啊,就剩了什么,就剩了中间的一个最复杂的模块就是它了。其实这个的话呢。呃,其实也不能说复杂吧,就只能说什么,只能说这个里边的信号太多太多了啊,太多太多了,到时候我们来挨个去做的时候,可能也比较费劲。面积里边这么多,没有一个是现成的啊,所以在这我们来从头开始做吧,先做架构啊,先做架构什么呢?首先先做这个。
39:03
我们先把这个关掉,我们去做的是在这,然后我们做第一个模块是。新建marlo file另存为叫。RTL叫CC_CTRL好,那么这个clock control这个模块的话呢,那么它其实是输入的最复杂,因为它这个控制器嘛,它谁都要控制啊,所以的话呢,它就比较的复杂。啊,然后呢,输入什么,输入应该还有这个叫做。四个脉冲对吧,哎,四个脉冲,那么这四个脉冲的输入的话呢,和谁是一样的呢?和这个叫做这个是一样的,我就给它复制一下啊。
40:12
好,那么然后呢,输入写完之后呢,就开始什么写这个输出啊,那么这个输出的话呢,咱们就从从最上。啊,往下一步步写啊,这输入还有还有还有还有这这这三个啊,这四个忘写了这四个,那就是输入这个。啥来着,五到零的。啊,四到零的小时和五到零的分钟是吧?呃,四到零的小时t hour和五到零的分钟和五到零的分钟分钟TTTMN,好,然后呢是呃,他们成对出现的是这个叫做a alarm的是吧,好搞定。
41:11
好,再往这边看啊,这边有什么啊,先把这个出了。好,这是第一个输出再往下。呃,再往下就是他忙啊,我们把这个输出了,呃,Time啊好,然后再往下呢,是呃flag,呃分钟的加小时的加加减啊,然后呢,呃日的加减,月的加减啊,他的加减他的减就是这么多加减,加减一起的,这个加加一起的,我们就一起写啊,因为这样会比较快一些啊。输出啊,然后叫flag_a min啊不是时间叫t min的ADD,然后呢,输出有flag的下划线,Tin的sub,好,我们下面就开始复制粘贴了。
42:16
小时的。日的,月的,年的。闹钟的分钟的,闹钟的小时的,好了,开始改。呃,小时小时日日期,月份月份年年,呃,闹钟闹钟闹钟啊,闹钟的小时,闹钟的小时啊,搞定啊。
43:05
呃,然后再往下是。这个MA1-零啊和这个三个。输出找一到零的max和三个adjust音。ML好了没了?好,这就是我们的一个控制器的这样的一个代码啊,控器的这样一个不用代码控制器这样的一个接口啊,这么多,然后我们把它做个化。绿化呢,绿化到这个当中啊粘贴。
44:11
啊,所以呢,我们是分开写的,分了这么多模块啊,难度呢是有一定的降低啊,但是呢,对于咱们来说呢,如果说比较清楚的话呢,写到一起的话啊,那么它的这个例化可能会少很多啊,但是呢,那样的话,一旦出错呢,可能就不太好找啊,并且呢,有的时候啊,我去写代码的时候,有的时候我在这个一个点位里边写的超过了两三千行以后,有的时候我想命名个计数器,我都不知道应该叫啥CT,为什么?因为上面用的计数器太多了,但凡自己能想到的都用过了啊,所以呢,有的时候那样也不太好啊。
45:15
好多呀。好,那么下面我们来做这个连接关系。
46:29
好,适中。复位。Flag Switch。Adjust。A。UB。好了,那剩下的这些都是一些中间信号,对吧,所以咱们呢,还要定义这个中间信号啊,这个五到啊这样吧,简单一点啊,我就去复制粘贴吧,这样的话会快一点啊,也就是说从这个位置开始啊,一直到。
47:14
Macel结束。好,好过来了啊。呃,当操作过多的时候,这个电脑可能也不太好的时候就容易卡啊,记得改这个分号啊。
48:11
好,那么在这儿的话呢,今天我们就可以做一个大家比较喜欢的事情,什么呢?就是因为我们在做的时候是直接把这个端口里边的东西复制过来,当什么当这个连接线的,所以呢,这个关系肯定是一模一样的,不存在不一样的地方,所以这个的话你要意复制可以复制。因为我们上面连接线就是把端口复制过来的,对吧?呃,那么其他时候如果不是这么干的话呢,坚决不要这样干啊,因为这样干的话呢,就有可能会出错。
49:17
好搞定,搞定以后呢,我们进行一个综合分析啊,就证明我们这个连接关系啊,没有报错就行,那么下边的话呢,我们来做,我们现在这个CCTRL模块里边代码先不写啊,我们先去做后边的做什么呢?先去做这个,呃,Time SEC,就是我们从上边一步一步做到最下边,然后做一个例化一个,做一个化一个,做一个例化一个啊一直做到这个咱们的这个这个最后啊做做到咱们最后,然后都做完之后,我们再来一步步去写代码啊,这个代码我准备放到最后去写啊,我到时候会先写简单的啊,哎,报错了。看一下。啊,Flag alarm啊,这个不用定义啊,因为这个已经作为输出了。
50:03
啊,Flag alarm是已经输出的值啊,所以它不用定义。好,一般情况走到这的时候,就一般情况就没有错了,好,下面我们来新建lo。File另存为。RTL。呃,叫什么名字呢?叫time_SEC time_SEC。
51:04
嗯,好像我点错了,我点了个粘贴。好,Time_SEC然后对于这个模块来说,输入呢有这个适中,输入呢有这个复位,然后输入呢还有。然后输出呢,有没记住。啊,时钟富贵太慢,输出是T。SEC和FLAG1分钟啊,输出的是五到零的TSEC以及还有输出的flag_一分钟好搞定。
52:18
啊,这不是这个应该复制到。这个当中。粘贴。好,那么这个的话呢,是这个叫做适中。
53:12
然后是复位。然后是time on。然后是tec跟一分钟都没有需要定义这个五到零的TSEC。和flag_一分钟好搞定TSEC。和这个叫做GO1分钟。好搞定啊,那么下边的话呢,我们就不编译了,编译时间太长了,我运用做这个啊,叫做这个TM的这个time m啊time的这个。
54:04
新建。Beo OK。Fire。另存为。RTL叫time的min好,对于这个模块来说,输入有适中。输入有铺位,然后输入有FLAG1分钟,然后还有啥嘞,时钟复位一分钟,哎呦flag t mn加TMN减是吧,腿输肉就。Flag_t min的A和flag的min的sub,呃,然后还有我们的输出,输出的话呢,是我们的t min5到零。
55:20
Ti和我们最终输出的下划线的一个小时。啊,没问题啊,来个一小时好了,下面我们就再做个利换。这个一秒的,我先关掉啊。
56:10
大家平常在打代码的时候啊,呃,切记一定不要眼高手低啊,什么呢,就是说这些代码我怎么可能不会打是吧?这就这么简单操作我也都知道啊,但是你要知道一个问题,就是时间其实就是金钱对吧?所以对于大家来说,大家一定要多练习啊,敲代码敲的快一点啊,又快又准啊,一定要多练啊,适中。复位啊,这个拉一分钟。这个。减啊,这有好处,你双击一个啊,上面一样的会高亮啊,就是说它一样的它会都亮起来是吧,这个呢,就没有定义,这个也没有定义对吧,所以说是一分啊,就是分钟的这个显示是这个五到零的TM和flag的ho。
57:15
TM。和flag的hour好,那么这个我们就写完了,写完之后呢,其实我把这个不是写完了嘛,大家来看一下这一个代,这一个接口是不是和这个接口很类似啊,是不是很类似,也是时钟复位,Flag变个名字,这个就变一个hour对吧,这就变个flag day是吧,很类似,那怎么办呢?所以我就为了方便起见,我就这么做了啊,就是把这个打开,什么都不要动,直接点file s就另存为。然后叫什么呢?直接就叫个名字就可以了,就叫做。哎,不是ho u啊,Ho u好保存啊,这样的话,它就变成了这个timem ho u的这个模块了啊,就变成这个模块,注意是另存位啊,所以说那个模块还在啊,然后呢,把它给换个名字对不对,这个位置呢,就反正输入什么输入的就是这个叫做小时的对吧,所以就ho u那么个地方呢,也就变成了ho u r,那么这个地方也就变成了U。
58:22
好,那么下边输出的话呢,就是这个th ho啊,只不过那个th ho的这个位宽的是个四到零的,我们这是五到零,这个远成四到零的,那么下边输入什么?输入叫flag day是吧?啊应输入的是就flag day是吧,所以这样的话呢,这个我们就做完了对吧?然后去做绿化,其实绿化的话呢,我也感觉是一样的对吧?所以感觉这个给它去做一个,呃,就是做一个复制粘贴,因为这样的话呢,会比较快一点,那么下边的话,我们也统一用这种方式来去修改啊就好完事了是吧?然后这个里边什么呢?这个应该是timem的啊啊这个呢,应该是叫做ho u是不是,然后这个地方呢也是啊ho u啊这一部分呢也是ho u啊,这个地方呢也是ho。
59:17
然后呢,往前挪一下啊。然后这个地方呢,是ho。这个呢也是ho啊,这个地方呢是th ho啊,这个后边呢也是th ho啊,这个就是flag day是day,然后这个呢也是flag day,好了这个我们就改完了,对吧,那么改完以后下有什么呢?下边就是有这个,呃,这两个没有定义是吧?因为这两个都是从这个当中来的啊,然后呢,这flag这个how是从这个当中来,所以就说这两个没有定义对吧?所以我们在这去定义一下。
60:00
说白了呢,也就是说这个没有定义呗,对不对,然后它呢,是这个叫做四到零的啊,它就叫做th ho啊这个呢叫做flag day是吧,Day好搞定好,那么再往下边我们有了是不是有了小时这个了,那么小时这个和谁一样呢?小时这个其实和这个dat day是一样的啊,其实他们三个长得都一样啊,长得都一样,那么这样的话呢,我们利用刚才的方法呢,我们再把这个time Howard这改成改成datat day这个模块啊一样啊file另存为,然后改个名字叫什么呢?叫做data_dayy,然后把这个呢进行复制一下,然后把它改个名字好,那么这样的话,它就输入什么,输入就是day,这个就是Y,然这个呢,就是其实就Y啊。
61:00
但是D是多少位的呢?我就不知道了,看一下啊,四到零的啊,四到零的下边的输出的是一个月对吧?所以四到零的,然后flag是一个月mon好搞定,所以这个呢要去做例化,所以呢,我们还是不去例化,对吧,我们还是去把它进行修改好修改那么呃,然后在这儿的话呢,其实有没有解决方法呢?大家也有啊,你比如你选中这一部分是吧,你去按个CTRL加H啊,CTRL加H的话呢,呃,CTRL加H的话,它应该什么?它就是查找与替换,查找什么呢?查找ho ho,诶叫做ho,替换成什么呢?嗯,直接替换成这个叫做这个呃,这个这个这个这个呃。Dayy对吧,把ho替换成dayy就可以了,对吧?所然后呢,就在这儿啊,点这个替换啊,他呢,呃,会其实呢,他会干什么,他会从这儿开始啊,其实他会从这儿开始,怎么办呢?我们可以看一下啊,他会th ho这个没动是吧?然后我们把这个光标放到这个位置啊,它应该会。
62:10
这个变化啊,所以在这儿变了是吧,我们直接就点这个替换啊,然后替换,然后替换,然后替换,然后换换换这个地,我们换这个地我不换。好,然后去做一个简单的修整就可以了啊,因为这个地方它是没有的,对吧,他也没有对吧,然后呢,这个地方也没有对吧。啊,这个地方也是没有了,对吧,这个地方也没有它对吧,这个地方也没有,这是一个月是吧?On啊,这个地方也是。Mon啊然后呢,这个地方呢,就是人家人家不叫这个名字是吧?人家叫data是吧?Data啊,这个地方叫data啊搞定了是吧?啊flag day是吧?Flag day啊这是没问题的是吧?啊一天啊输入的都是一天啊flag day啊然后呢,呃,产生的都是一天一天的啊递增是吧?然后呢,这个地方呢,产生的是一个月份啊那么同样的这个呢,我们这个DA的这个呢,没写错吧,Dat的,然后这个呢,我们再file另存为一下,然后改成什么呢?改成就是data的on,然后再去保存一下,然后把它给粘贴一下mon啊那么这个的话变成了,变成了就是mon的家是不是,然后这个呢,变成了on啊这个呢也变成了on。
63:44
On啊,然后呢,On的输入是几到零的呢,输出也是四到零的对吧,所以在这的话呢,我们把它改成on啊,那么这个输入输入就是一年了,对吧?好,那么这个的话呢,也是一样的对吧,我们对这呢再一次进行一个呃复制粘贴。
64:08
好粘贴,粘贴完了之后呢,我们还是把光标放到这是吧,查找情况查找谁呢?查找更改成谁呢?更改成这个on是吧,然后呢,就是替换替换啊替换替换替换替换替换替换。替换替换,然后替换,这就不要替换了,这替换不错了,是后这该一年啊,然后呢,一年啊搞定,那么其实这些东西我们上面都还没定义啊,所以一会儿的话呢,我会把这个呃都写完之后,我再去定义啊,再写完之后再去定义,要不然这样的话再定义就比较乱啊好,那么这个呢,什么都不要动,再file啊另存为一下,叫谁呢?叫做data_AR就是年嘛,对不对,然保存。
65:05
和年啊,这个呢,就是flag年啊,然后呢,这个就是输入的就是。这个呢就是Y1AR啊,这个呢输出的就是年啊,年的话应该是这个七到零的啊,因为年挪到99啊六到零的啊,然后最终呢,它没有这个分flag了,因为我们年是不往上进位的,对吧?所以这个的话呢,我们就可以去对它进行一个绿化,那么绿化的话呢,我们还是同样选择这个啊粘贴啊,然后呢,去做一个呃,这个光源放到这到替换,把这个on啊替换成year啊替换替换替换替换替换替换替换替换替换替换。替换好不用替换是吧,最后一个呢,是没有了对吧,所以直接删掉就可以了,好到这了啊,就是这这一部到这了,到这以后呢,在下面还有什么,下面还有这个就是alarm的是吧,首先第一个呢,Alarm这个呢,就比较简单是吧,就只有输出一个还是全零啊,其实还是全零啊,就这个模块你愿意写就写,如果你要不愿意写的话呢,你都可以直接写一卷Z啊ASEC5到零等于六撇G0啊,但是在这我们有了时,我们就给它写上啊呃,那么这样的话,我们就新建VR log OK file另存为。
66:30
叫RTL的am的ec好,那么这个模块的话呢,这个模块的话就只有一个输出,输出一个是几到零呢。呃,我们给的是五到零,那就五到零吧,五到零的aec好搞定这个模块就就这样啊,就这么简单。
67:08
真甜。括号啊,这个地方呢,我们就直接写了啊,Asec啊,一会我还没定义啊,因为一会我会把这边的线全部定义一遍,因为现在我只好像只定义到这个位置了啊,就t how的位置了,Flag day的位置,也就是说从下面的day啊,Flag月应该都没有定义,我看一下就只定到这个下面都没有定义。好,那么再往下边呢,是什么呢?是这个叫做。这个呃,Alarm的分钟啊,Alarm的分钟呢,我们同样去用这个来改吧,File另存为啊叫什么的线的,那么就是没有入有入没有增加了,那么这个地方就是这个做A和什么和我们的做。
68:20
A mn an啊,它是一个五到零的好,那么这样的话呢,我们把它进行做一个绿化,那这个绿化的话呢,我们就直接去拿这个就以了啊。粘贴啊,那么这个的话呢,就是这个叫做呃,这个alarm的这个ala。2M的。看啊,这个就没有了啊,那么这个呢,就是这个叫做A啊,这一部分呢,也是A慢啊,这一部分呢是A慢慢。
69:03
啊,这一部分也是A。A那么和A那么好了,那么对于我们最后一个是吧,最后一个叫做呢,这个小时,那么这个小时这个呢,和我们的这个是一模一样,对吧,所以非要另存为叫做。Ho。HOU。Ho和ho,那这地方呢,是一个四到零的好,那么下边的话呢,我们对它进行化的时候呢,这个就简单了,对吧,就是它对对粘贴,那么这一部分的我们就可以做修改了,对吧,放到这换,然后把所的in替换成所有的ho。
70:02
替换替换替换替换替换替换替换替换替换好搞定。好,那么我们现在的话就把这一排就写完了,这一排写完之后呢,我们这一排还没定义是吧,我们就定义句。因为不定义到时候都是错的,还必须要定义啊,定义到已经定义到小时了,对吧,该定义什么了,该定义这个这个天了,对吧。好,比如第一个day day的话应该是这个,呃,四到零啊,然后呢,Flag是一个月啊,然后呢,这个月份啊,也是四到零啊,月份是不是更少一点,月份我们给的也是四到零对吧,那就这样四到零不管它,然后是flag的年啊,然后呢是年,年的话就比较长对吧,年的话应该是六到零的年啊,但是年结束之后呢,就没有什么,就没有了这个这个这个叫做什么年的话就完事之后就没有了这个这个这个flag在世纪了,对吧,就没有了啊,然后下边什么,下边就是这个闹钟的闹钟的秒和闹钟的分钟小时对吧?呃,闹钟的秒是五到零的,所以我们叫做aec,其实呢,好像我记得上边的话呢,其实把这几个都定义了是吧,其实这几个的话。
71:38
我们完全可以都材料不要了。因为如果的没有的话,就这就跟他冲突了,对吧,所以干脆我就给它裁掉,我重新写啊,就是我们的都是。什么都是这个,它是五到零,它是四到零啊,就是五到零的AMN和五和四到零的小时,四到零的小时好搞定啊,写到这的时候,我们就可以去编一下啊,看一看写了这么多啊,有没有报错。
72:19
因为我还差一个三选一的一个多轮选择器啊,我们就做完了,所以在这的话呢,我再看一下这个这个这个叫做这个编译,看对不对。我们现在已经有这么多模块了,对吧。有了一个错误,抽烟,呃,在这个data。这个当中看一下有什么错误啊。请确认没有定义data这里边没有吗?
73:07
啊,是写错名字了。写成了datata啊,就改成data啊,但是我们的点位叫data啊,所以这样的话就有点不太好,怎么办呢?我一般情况建议大家把这个呢直接移除了,要把这个datata的直接移除了啊,移除之后呢,干什么呢?去找到这个叫做datata这个模块datata,然后右键给它改成datata啊,既然咱们设计报告上data就data,然后呢,再返到这儿,然后再把这个呃叫做这个DA。T这个再添加进来DA的它,呃,选中它,然后添加到本工程啊,然后点打开。就来这一下。
74:07
呃,所以咱们这个代码大家来看的话,就是说呃,写的时间呢会比较长啊,但是呢,呃,这个里边呢,大家也都看着的是吧,就是说我们我在写代码的时候一些习惯啊,我觉得这个其实也蛮重要的啊,其实也蛮重要的,再看一下啊。Ah ho,不存在这个里边。Ah ho不存在,在这个里边。这一个A,我们的这这个是一个。所以大家也看到,其实写代码的时间可能并不长,但调这个叫做,我们可以称之叫做B,对吧,调这个时间可能会很长啊。啊,因为写的东西比较多嘛,就是一不多的时候可能就呃不太小心啊,就可能会出了一些问题啊,或者说比较着急啊,写的比较快的时候可能就会出一些问题啊,所以今天大家在写代码的时候,还是要认认真真的去写啊。
75:16
好搞定完事了是吧,完事以后我们来看一下这个RTL视图,然后我们去看一下这个控制器这一部分的这个结构图。我在这。呃,然后呢,这个是一个中间的咱们所谓的那个控制器啊,然后呢,这一堆啊,就是我们挨个的控制的秒啊,分钟小时,然后日月年,它这么排那条顺序什么,因为它中间都有一个线是呃脉冲,就让它进行加一的这样的一个线嘛,对吧,所以它就变成这种形式了,那对于这个叫做闹钟,这个呢,它就派到前面了,因为闹钟这个会给到它这个时间嘛,对不对,给他时间,那么这个呢,就没有人用,就在这摆着是吧,摆到中间看着孤苦伶仃的是吧,好了,那么下边的话呢,我们来去写一下我们的这个叫做呃三输入,呃不是这个叫三选一的这个多选择器啊。
76:20
叫做MAX3-一,好,那么对于我们这个MAX3-一来说的话呢,其实就难度就比较大,输入很多是吧,输入的有秒分钟小时,这是一组是吧,Day月份年是一组是吧?呃,秒分钟小时又是一组是吧?所以在这的话,我们要输入这九九个信号,但是三组是吧,输入。的是五到零的TSEC,输入是我们的五到零的TMN啊,然后是输入是我们的是四零的th ho,好,这是第一组写完了,然后第一组写完就复制了,好那么第二组的话呢,第二组的话,第一个是日期day啊,Day的话呢,也就是说它呢,其实不用那么多四到零就够了啊呃,然后呢,月份也是四到零就够了,其实月份三到零就够了,但是我们写了四到零啊,然后呢,再有个是年,年的话得多一点啊,年啊也是四到零四到零六到零看一下啊。
77:50
呃,四到零四到零六到零对吧,下边是五到零五到零四到零啊五到零五到零四到零这没问题啊,那么这个就是AAA好搞定,那么输出的话呢,输出的话呢,就是这个叫做h date m date和到的是这个。
78:21
武道岭,武道岭。然后ML好还其实还有一个输出,还有一个输入啊,忘写了,就是maxcel嘛,就是选择哪一组作为输出嘛,对不对,MAX1到零的max maxcel好搞定,下面做个例换。粘贴。
79:20
好,那么下边的话呢,是时间的秒啊,时间的秒在哪儿呢。在这啊,Tec。然后呢,是T的分钟。
80:03
T的分钟啊,它高量就证明上面有这个变量啊,如果是没有的话,就证明我们可能是做错了,或者叫的名字不一样,你就需要去考虑一下啊,所以呢,不要直接去复制啊对。月份。免。然后呢,是这个闹的。闹钟的。分钟啊,闹钟的小时。Macel是控制器输出的。然后是这个最的下。
81:13
HLM。M date,诶m date和l date好,到这儿我们所有的终于把所有的架构呢,我们都给写完了啊到这我们所有的架构都写完了,那么下边的话呢,就剩把这个所有的代码进行去填完整了。我看一下有没有任何错误啊,我们搞完之后呢,我们再来去看一下那个RTL视图,看是不是还是我们刚才看那个样子啊,这个应该错误的几率不大啊。好,看一下RT时图。
82:00
嗯,这这儿,嗯,在这儿的话好像没什么变化是吧,好像还是这种,就是他们两个在前边啊,最终的话,这个位置的话呢,呃,它是这所有东西都给到他,然后他经过选择作为输出啊呃,是这个样子的啊好了,那么呃下边的话呢,我们来干什么呢?我们来去写这个代码吧,那么我们这个代码写的时候呢,我们这样写吧,我们选择一种这个老太太捡柿子的方法啊,我们先找软的写好吧,那个我这个这个因就是cel等于零的时候,或等于零零的时候啊,就把这个时间输出是吧,等于零一的时候,就把年月日输出等于这个,这个叫做这个幺零的时候,把这个闹钟输出,对吧,一共就分成三组对吧,就在这儿的话呢,就是我们就直接去写就可以了,Always eight。
83:00
Begin end,然后case括号max cell,呃,然后呢,End kiss,然后呢,我们在这的话直接就写h date等于啊,不是写错了啊,应该叫二撇B00,在200情况下呢,在这我们可以加个begin吧,这样的话会比较方便一些,H date就等于。Ho,然后呢,M date就等于TMN,嗯,然后l date就等于tec好搞定,如果是零幺的话呢,就输的就是高位,就是就是年,呃,中间就是月份,呃,第一位就是日期好嗯,对于这个幺零来说的话呢,就是要输闹钟了是吧,闹钟的话呢,是a hour啊和这个叫做an和aec,那么最后边这个呢,我们就默认吧,默认就是时间好吧,默认输出时间好吧啊。
84:29
搞定,那么这样的话呢,他们在O当中被赋值了,所以要定义成RG的类型,好搞定,第一个关掉,第二个我们去做这个。叫做aler的SEC吧,Ala姆的SEC好写啊,Z asec就等于六撇D0D0啊,因为什么呢?因为这个叫做闹钟的秒是从来不动的,对吧,所以这个呢,不用动,不用管,关掉。嗯,在写什么呢?在写什么好写呢?好像没有好写的了,没有好写的,那我们就一从头来吧,我们就开始考虑这一大数列里边一个一个来吧,首先第一个这个因为我们现在写了什么,写了就写了这个马克杠一和这个SEC对吧,所以这一行啊,Time SEC找一下。
85:17
Timeec在这好,那么ecec是干啥的呢?它就是一个秒的计数器,对不对?秒的计数器好,在这儿我们来首先写一个 prematuret1秒钟等于多少呢?等于50123456,然后always at括号啊,少写一个定义个记录器,定义25到零的CT啊,然后呢,我们来写是适中。复位判断复位的时候等于一撇B0的时候,CT要等于26撇B0,然后else要判断也是人家让不让咱走对吧,就是time on,哎,Time on,如果要等于一撇B1的时候啊,TIME2如果要等于一撇B1的时候,然后再判断CT是不是小于T_一秒钟减去一撇B1,如果是的话,CT就等于CT加上一撇B1,然后LCT呢,等于什么?CT就等于这个26片D0,然后如果说人家都不让走了,那么CT就等于CT保持不变啊,我们在这写这两种形式啊,就保持不变,那么呃,这样一种形式如果保持不变的话呢,有可能会出什么,有可能会出bug,有人说你暂停不住,这不正好就。
86:52
不会出bug嘛,下面我们来看一下啊,假如说呢,你看按照我们来说,就是不是该写这个秒了对吧?就是时间,然后复位N的判断,然后复位的话等于一撇B0,然后呢是tsec c等于六撇D0,这不就是秒吗?秒的话是不是就判断谁啊,是不是就判断这个叫做CT是不是等于T_一秒减去一撇B啊,如果是的话,再判断TSEC是不是小于六撇D59,如果是的话,那就是TSEC就等于TSEC加上一撇B啊,然后如果不是的话,TSEC就等于六撇D0,然后else,然后TSEC就等于TSEC好了,那么这么写。
87:52
说错我再来看一下,有人说这有什么错,这没什么错对吧,就是这不就是是这就是time慢来了,然后我们就让计数器进行加,然后这就判断到一秒钟了,我就让我秒动对吧?那我来问个问题啊,我说假如说正好这个CNT呢,加到这个最大值,比如加到这个T1秒减一加到最大值了,然后当他停了,他就他就调整了,他就不让你动了啊,他不让你动了,他不让你动了。
88:19
那你是最大值啊。你最大值这个是不是就满足,这个就一直满足,然后就是一直在哗啦啊一直在计数,所以这很明显这就不对了啊,没这不对,也就是说在这的话呢,就是当它等于最大,当它等于这个一的时候啊,它去基数那等于零的时候呢,如果他要万一停到最大值的上面呢,所以这个就直接就报报错了啊,这就结果就报错了,但是这种遇到的几率比较小,但是呢,也有可能会遇到,所以在这我们要改成这样,也就是说呢,只要你一去调整,那么这个秒啊,上一秒过去那些所有东西就不算了啊,从头开始记秒,这样就不会出现这个bug了啊好了,那么下边的话呢,我们来产生这个FLAG1分钟啊,什么叫FLAG1分钟呢?大家来想,什么是flag一分呢?是不是就是这样的flag一分等于什么?是不是就等于TSEC等等?
89:12
六撇第59,也就是说你的秒是不是等于59,也说秒等于59,是不是最后一是不是就已经开始到一分钟了,其实也不是,为什么呢?因为这一秒时间还老长了,对吧?所以呢,等于什么要等于T_一秒减去一撇B1,也就说呢,必须得什么,必须等一秒钟啊,必须等什么,必须等这个秒到59了,还要等到这59秒的最后那一个食盐的时候啊,然后呢,我们才能一撇B11撇B0,这样的话它才是什么,才是一个脉冲啊,才是一个脉冲好了,那么这样的话它呢,就变成了一个它对不对,它呢是在always模块当中被赋值了,而这个是在a than赋值的,所以他不用管好分钟好了,分钟好了之后呢,就开始写不是秒好了开始写分钟,分钟的话呢,要比秒要难,为什么要难呢?因为有加还有减对不对,有加还有减呢,但是呢,其实和那个也区别性也不大啊,区别性也不大,比如说在这我们来看一下啊。
90:12
Always eight括号位判断一撇B0好,那么在这的话呢,我们来看一下啊,对于啊,这个时间t mi来说,等于六撇D0好else,在这儿啊,我就我就不去考虑他俩同时来啊什么什么之类的问题了,我就说如果加来了分钟是不是应该加一,如果减来了分钟来是不是应该减一。所以对于我们来说的话呢,我们怎么做呢,我们在这儿啊,我们就这么做,就是说呃,我不考虑加减一起来啊,加减一起来这种情况我就默认是加来了,因为加减一起来,我先判断加肯定就认为是加来了,对吧,所以这样我们来做啊,叫做。
91:02
啊,Flag什么呢?Flag这个这个这个M就是一分钟到了,或者啊一分钟到了等于一撇B1,或者flag t mn,也就是说或者是人家秒就是秒那个到59秒最后一刻让你分成加一,还是也有可能是外边调整让你加一,这个我不管,反正是无论谁来了,你都要加一,那都要加一怎么办?所以就要判断t min是不是小于六撇D59,如果是的话呢,T min就要等于t minin加上一撇B1。一然后,否则,然后TM就要等于的是六撇D0,然后呢?Else干什么呢?就是判断,判断谁呢?判断flag,的减有没有来,如果减来的话怎么办呢?那就是判断括号t min是不是大于六撇D0,也就是如果它要大于零的话,那就是TM就等于TMN减去一撇B。
92:18
然后l t min就等于,那就等于零了呗,等于零的减一等于多少,等于六撇D59呗,对不对,然后L如果说加也没来,减也没来怎么办?TMN就等于TMN就可以了,不要不能清零啊,啊这个是不能清零的,你不能说加不来减不来就清零了,那自动的时候,就是说人家自动还加的时候怎么办,对吧?好了,那么这个就结束了,所以这个的话呢,TN那不是叫做flag。一个小时应该怎么办呢?一个小时的话呢,就是说要判断的就是t min,它必须要等于的是六撇D59,并且要与上谁呢?那就是flag的阿蛮啊,就是到一分钟了啊,就是这就这就是说这个叫一分钟到59,并且还要到一分钟啊,并且还要到一分啊的情况下。
93:14
啊,才能够这个去输出这个小时,就让人小时加一,其实呢,大家来想啊,呃,其实如果说我把这个flag mn啊和这个东西一起写到这儿,我把这个也写到这儿的情况下,大家想是不是这样的话,是不是就是说无论是下边加一加的,导致我的这个就这个这个小时去加了,那么是不是有可能我去做调整的时候,是不是也会能调到让小时去加一啊,但是这样我们不这么做啊,我给大家讲过,我们不这么做,为什么不这么做呢?我们说调分钟就是调分钟的啊,调分钟不影响小时,所以这样的话,只有自动来的时候会加,调的时候不会减啊,调的时候不会加,好那么这个就写完了啊,这个的话就是它是reg,好,那么下边就是这个小时,这个小时和那个呢,其实一模一样,其实跟这个代码是一模一样,所以要是觉得。
94:10
可以直接复制粘贴。粘贴啊,完全可以粘过来,粘过来之后去修改就完了呗,T他。啊,然后呢,它然后它因为原理都是一样的,所以我就先改这个值是一样的地方啊,然后呢,再去改其他的东西,好第二个啊,它是五位的是吧,所以是五到零啊,所以是五到零的,那么这样的话就不能是59,应该是23对吧,所以在这的话呢,就是。五到零,那这个地方呢,也是五到零,这个地方呢,就变成了五到23是吧,也就是说呢,你不能一直加是吧,零的时候再减变成23了对吧?那么这个呢,也是到23的时候呢,就OK了对吧?好了,那么再往下边的话呢,接着改是吧,改什么呢?改这个是吧,一分钟到了是不是一个小时到了是吧?那么一个小时到了是吧?然后呢,是小时的加是吧,所以小时的加啊,小时的减是吧,小时的减诶小时的减啊,最终是flag day。
95:20
这个这好搞定了啊,这样的话呢,我们就把这个就改完了啊,把这个就改完了啊,那么改完之后呢,我们去改什么呢?我们去改这个。呃,天啊,对于天来说的话呢。这是粘的。不要啊,我找到天的,天的叫这儿啊,这个其实跟这个也是一样的啊,也是一样的啊,就是跟这个分钟这个也是一样的啊。依然复制粘贴去啊,然后去修改就完事了啊CTRLC,然后呢,日期粘贴,那么这个日期粘贴的时候呢,就注意是吧,有几个问题day啊这就。
96:12
对对对对,好,那么这是第一个,第二个需在这day的话是五到零的,但是注意啊,你day的时候复位的时候别给零啊,哪有三月零号没有零号啊,只有一号,所以复位值应该等于一,这是第一个问题,第二个问题是如果我在加的过程当中。我的一个月有多少天呢?其实不同的有不同的天数,对不对,但是我们现在是不是规定一个月只有30天啊,所以在这一定要注意啊,我们这个相当于自己给自己变变相鉴定难度啊,叫五撇地啊30啊,五撇地30啊,也就是说呢,每个月都有30天,一到30号。啊一到30盒,然后这儿的话呢,是五到五五的30啊好,那么再往下呢,是这个flag day的递增,Flag day的递增啊flag day的递减,Flag day的递减,然后flag的月份,然后月份,那么这个地方呢,就是说当他等于30号的时候啊,并且是。
97:23
Flag day flag day啊看一下是一天来了或者是加天了,天数要在零到啊不是这就不能清零了啊,差点就忘了啊,应该是清的是一啊是不是一到30号循环,那么这个位置呢,来减的时候就不能是大于大于一啊,大于一的时候就减等于一的时候就变成30了是吧,然后呢,一个月然后搞定是吧?好月份搞定了,月份搞定之后该年了是吧。粘粘在这儿好粘的话呢,跟那个也是一样的,对吧,接着焯是吧。年哈,不超这个年超分钟啊,因为年是能等于零的是吧。
98:04
粘粘贴好,那么粘的话呢,就是改呗拉页。这个位置。没了。就是这个。递增就这一个,递减,递减就这一个,这是他然后就是来就是修改了是吧,那么年的话呢,是七到七七撇第零,那么这个值呢,就变成么?变成七撇第99啊这个可以倒成零,那么这个呢,就是可以调成七撇地九十九七撇的99。七本地零好搞定啊,这个就是粘的就搞定了好了,那么这个的话呢,我们一会儿再去检测就可以了啊,然后呢,还有这个就是我们的闹钟,呃,闹钟的话呢,闹钟的秒就是全零,不用管闹钟的分钟,在这儿闹钟的分钟其实和我们的年也差不多是吧?来复制粘贴。
99:25
闹钟的分钟,那么闹钟的分钟的话呢,我们来改一下是吧,就是加好,因为它呢不会自动加,所以这个要去掉啊,这个要去掉好了,然后呢是加就只有这一个,减也只有这一个,呃,然后就是他他他他。好,但是呢,这样的话呢,也能等于零是吧,应该是六撇D06撇D0,然后这个呢,是小于六撇D59,这个就是清零,这个就是大于六撇D0,这个就是59,这个就是啊六撇D啊五撇D就错了啊,一定要注意啊,不是说数对了,前面不对也不对啊六撇D06撇D0好搞定啊,这个我们就结束了,是这个应该是RG类型的啊好,那么呃,再往下边的话呢,我们还有什么,还有就是这个这个拉姆的小时,拉姆的小时的话呢,我们跟这个拉姆的分钟极像啊,复制粘贴复制。
100:43
粘贴啊,那么改一下啊,小时的递增,小时的递减和它。好,然后呢,第二个就是复位的时候,这个值应该等于是多少呢?应该是五撇D24啊注意啊,复位的时候闹钟负要是24啊,就是说它肯定不会闹钟肯定不会响是吧?然后这个地方呢,就是如果它要小于24的话呢,就递增,如果要等于二四的时候就清零,那么这页是五撇D是吧,五撇D写成六撇D报警告,但不会出错,六撇D写成五撇D就有可能会出错了啊大于的是五撇D0的时候呢,然后呢,它就变成五撇D24了啊所以说的话,闹钟是有24的啊好搞定好了,那么所有的都搞定了啊搞定以后呢,我们就剩了一个这个叫做这个中间控制器了,控制器等会儿来写啊,我现在先把这个里边的,哎,月份怎么没写,月份忘了写了是吗?跳过了是吗。
101:51
抄一下。粘贴。
102:02
呃,Flag月份月份月份呃,Flag加加flag尖那个尖,嗯,然后月份月份月份月份月份。月份好,呃,然后呢,是这个弗拉年年好改数,呃,月份的话呢,也是啊,月份也是没有零月的对吧,所以是这个是对的是吧?然后呢,月份的最大值是12啊,然后呢,清零的话就是一啊,然后呢,如果大于一的时候,减一减就是12啊。好,这个位置也是12好搞定好,那么下边的话呢,我们来进行一个综合分析啊,这个里边可能会有各种错啊,我们到时候来看一下啊。
103:02
原理都没啥错啊,只不过这个写的可能比较快,中间可能会出点小问题啊,编一下就能看出来了。报错了还不止一个。T类型不对,Day的类型不对啊,棉的类型不对。T的不对,Day的不对啊,T Howard的不对啊,然后还有day的不对,那就是这个不对。对的不对,就是他呃年的不对,年的不对,那就在哪儿呢。年的,在这有小时的。
104:06
嗯,还有最后一个说在MAX3-一里边的h date没有被宣布,没有定义,看一下h date啊,写错了。这都没有杠的,都加上杠了啊,这就是直播不好的情况,就是我写错了,然后你们可能有的人看到了,但是呢,这个不好提醒对吧。
105:03
好,敲定。比如说我们现在没有任何的这个这个这个这个这一部分,我们写的这个语法错误了,最起码是吧,好了,那么下边的话还有什么,下边就开始去做这个就是我们认为最大的一个工程啊,就是我们的一个控制器了。控制器在哪?这。不是这个。Digital clock control啊,就这个模块啊,那么这个模块其实做起来也很简单,因为给大家已经说过了啊,首先呢,我们把闹钟这一部分放进去了,可能就有点难度,但是其他东西就比较简单啊,什么呢,大家记不记得我们下边做这个专业转移图是吧?啊,也就是说一共就1234567。八九十十个状态,然后呢,根据flag adjust跟flag Switch就在这跳转,只要你把状态跳转完了就OK了,然后完事以后知道什么,这个状态是在调整中间,这个状态调整高的,这个状态调整低一位调整中间位,调整高位,调整低调整中间位调整高位,那就完事了,然后呢,在谁的状态里边啊,比如在time mn的里边摁加按键,所以呢,此时上叫flag的M的那个才能变成一啊,其他时候都不能变成一,所以呢,这个做写这个代码的时候呢,其实呢,也是啰里吧嗦一大堆,但其实呢,呃,有用的就那么一点点啊。
106:40
然后我们写一个叫做呃,我们已经定义了是吧,叫time是吧,下划线ID Le等于多少呢?等于十撇B啊,0000000000,我也不知道多不多啊,看吧。
107:05
啊,叫做time的mn time的ho。Time的in time的hour,呃,再往下边应该是我们的叫做日期data,呃,然后再往下边是。应该叫做DA的天年月,就是和我们的看一下啊,DA的day啊,这month和year是吧,没问题是吧,然后再往下边是这个叫做闹钟啊,闹钟应该是我们的叫alam。
108:02
后边就不要了,没了叫他的啊,这是在不动,这个呢,调整就调整分钟min和hour好搞定,那么这的话呢,来写一下啊一。好,然后呢,写一下reg,九到零的c state re,然后九到零的state,然后always括号。十周复位判断好,那么然后呢,C state等于TIMIM爱的状态对吧?然后呢,Else,啊,State等于的是n state,好,那么always eight星begin end case括号c state end case,然后在我们的TIME的idol状态下,好,那么在I状态下是干什么呢?大家都知道啊,如果在I状态切换就跑,就跑到这个data iol,如果是调整就跑到这个里边再调整,调到这。
109:47
再调整就回到第一个对吧,所以这样的一种情况,因为这个比较简单啊,就是说只要是调整就是横横向走,只要是切换就竖向走对不对,竖向走啊,所在这儿的话呢,我们来就在这写啊,就是先考虑,那如果说是右切换,就是说白了就调整和切换同时来怎么办?所以呢,有的人也会发现,就是说可能会出现这个问题,那怎么办呢?其实我们在摁的时候不会出现呢啊,但是如果我们在这出现怎么办啊,所以我们就是先判断谁呢?我们先判断切换啊,先判断切换就是Switch SW啊切换啊,如果是切换等于一了,那么n state等于什么呢?就等于我们的叫做日期的data的idol状态,然后else再判断flag的at调整,如果它调整的话呢,那么n state就等于什么?就等于的就是DA就等于这个。
110:47
你的min啊,然后else如果什么都不来呢,那就在本状态待着,那就是t I me的iol状态啊,所以呢,对于谁来说都是用这来考虑,就是来了切换怎么办,来了调整怎么办,来了切换怎么办,来了调整怎么办?也就是说把这个所有的十个状态都要呃考虑,因为只有这两个按键能干什么能够切换状态,其他的呢,都不能切换状态,对吧?加和减是不能切换状态的啊,在这的话呢,我们就直接对它进行复制粘贴吧,好修改啊,首先第二个呢,叫timem的min啊min,那么对于这个里边呢,它一切换呢,其实也是到data ID里边,然后呢,他呢一调整到哪到这个就不调分钟了,调小时去了是吧?那么他如果说什么都没来呢,就在本状态待着对不对,那么对。
111:47
对于小时来说的话呢,如果一切换呢,也是到I到这个日期的idol里边去,如果调整的话到哪呢?其实它就到这个叫做这个time idol啊,为什么?因为已经调整完分钟,调整小值再调整是不是就确定了,那如果谁都没来呢,它就在这个time里面就可以了,对吧,就可以了,好了,那么下边什么呢?下边就是这个date idol状态,如果在date idol状态的话呢,来了flag Switch应该去哪?应该去的是alarm对吧?Idol状态啊,那么如果来调整呢,就应该去哪啊去应该去的是data的day状态,如果什么都没来呢,就在date的idol状态就可以了,那好了,那如果在date的date呢?如果在date date状态,如果来切换呢?其实去哪去的是alarm的啊,就是说你在日期,在调整日期的这个日的时候来了切换也要去这个闹钟的这个这个爱豆状态。
112:48
那么切换呢,就要去哪儿呢?就要去的是它的月份,因为我们要调整月份了,对吧?那如果都不来呢,那就在日这个里边待着吧,好了,那如果是月份呢,如果一切换也要去谁呢?也要去的也是alarm的这个里边对不对?那如果来的是调整的,那就要去的是调整不调整月了,调整年对呗,好,那么如果什么都不来呢,你就接着调整月呗,对不对?好,那如果是在年里边呢?啊,如果在年里边呢?一切换去哪呢?去的也是闹钟啊,那么如果再按调整呢?其实什么其实就已经相当于调整完了对吧?哎,调整完了那在哪呢?Data的data的idol状态对吧?如果什么都不来呢,那就在这个data year对吧?那好了,那下边就是什么?下边就是说对于alarm的idol状态呢,那么如果一键切换就回到哪儿呢?回到的应该是这个叫做time对吧,Idol对不对?
113:48
好,那么呃,对于一切换呢,就到哪儿了,就到这个叫做alarm的分钟对吧?如果什么都不来呢,就还在idol就可以了,那如果是在alarm的分钟切换呢,就去time的idol对吧?那么一调整的应该去alarm的小时对吧?
114:12
好,那如果什么都不来呢,那就在alarm的分钟就可以了,然后下面呢,是alarm的小时呢,如果在小时来切换了呢,就要去他的idol对吧,如果说再来调整的话呢,就要去alarm的ID对吧?就是说切换完成了对吧?那如果是什么都没来呢,就在alarm的小时就可以了,对吧?所以最终呢,就结束了啊。所以呢,这个对于大家来说就是说,呃,我们要知道啊,这个Switch的时候就会换一项,都会换到idol flag的时候就会,就不是不是这个叫做这个这个adjust的时候都会什么都会横向调整啊,调整低位,再调整就是填整低位,中间位高位,或者直接调整中间位高位,然后就再摁的时候就回到idol了啊好了,那么这种情况下,我们是不是就把这个中间转移写完了,中间转移写完之后,其实就剩下就简单了,什么简单了来看一下,比如说呢,我们先对这个,先对这个time on吧,比如先对这个time来说,那么这个time on什么时候等于一,什么时候等于零呢?那这个就很明显了,对吧,所以当这几个状态出来以后,就太慢,就在这个里边和这个里边的时候太慢,应该等于零,因为在这两个里边的是不能计时的。
115:30
对不对,因为你调整时间嘛,所以时间什么时间是不能计时的,对不对,所以在这儿啊,我们就开始写这个time,妈,比如说我们复位的时候呢,我们就给这个time on,其实就可以给成一撇B,这是没问题的,然后else啊,判断括号c state是不是等于time time的分钟,或者c state等于。
116:10
Time的小时,只有在这两个状态下,Time on才会输出一撇B0,因为其他时间呢,Time on呢,都是要走的,也就只有说你是调整这个什么呢,只有你在调整这个叫做这个这个这个呃,这个呃分钟或者小时的时候,我们时间不让走,在其他时候都是让走了,对不对,那好了,还有什么,我们就可以一个一个往下推啊,这个flag alarm,这个先不做啊,这个先不做啊,因为这个之前也是我们后加的,再往后看,那么对于谁来说呢?对于比如说我们对于这个flag分钟的加,Flag分钟的减,那么什么时候会加,什么时候会减呢?大家来想,是不是只有在调整分钟这个状态下来了,加了就是flag分钟加来了,减了就flag分钟减啊,所以你会发现这一堆东西都是一模一样的。
117:05
啊,都是一模一样的什么呢?我们来这写一下啊,你比如说我们来对这个家来说always it适中复位begin end,然后判断第一撇B0,然后呢,比如我们的flag,的下划线T,呃,Min的ADD等于一撇b be,然后else,然后就是判断括号c state是不是等于多少呢?是不是等于time的分钟,也就是判断是不是当前在这个状态下,如果是的话,在判断外部的flag ADD DD是不是等于一,如果外部的flag ADD等于一,那么我们的flag t min的就要等于一撇B1,如果不是的,如果说人家等于零,那么咱们呢?
118:05
也得等于一撇B0,那好了,如果不在这个状态呢,那就想都不要想了,肯定是等于零的,因为你人家都不在咱们这个状态里边调整是吧,一撇B0好,这就搞定了,所以这个什么,所以这个对于我们来说就已经写完了啊,这个就是我们的分钟的加,那么分钟的剪呢,什么都不要动,直接就粘一遍就行了,粘完之后呢,就是flag的剪,Sub减,然后减的话呢,是一样的减嘛,那就是减呗减呗减呗,那这个地方就是flag什么呢?Sub好搞定了,那么这一堆啊,就是说在time min这个状态下来加了就是对应的时间加,来减了就是对应的减,那当然同理可得啊,剩下的这一组来说,这一组下面这一组一组的啊,它什么它。
119:05
其实都是一样的,也就是只有在对应的状态下,来了对应的值啊,来了对应的值,那他们才会干什么,才会出这个这个这个这个这个对应的这个这个结果对不对,只有在你想,只有在这个叫做这个date day这个状态下来加了他才会加来减才会减,对不对?所以这个的话呢,写起来之后呢,就是呃,有点啰里吧嗦了,但是呢,难度并不大啊,但是呢,就是大家做起来的时候,可能会看着会比较累。比如说这个部分是这个该写什么呢?这个该写这个对吧,加加加加,那么什么情况能加呢?也就是在time的ho情况下,只有在这个状态下来了,加它才能加,对不对,那么这个呢,也是照抄不误啊,在他状态下那就是减,那就是T的减,剪剪剪好了。
120:13
啊,这就完事了啊,再往下就是日期对吧,所以日期的话呢,再往下就还是负人体啊。啊还是粘贴,那么粘贴的话就是么,这就变成了就是日期嘛,Data的day在D的情况下,这个什么,这个就是day,然后它Y搞定它就是它,那么这个呢,就是一个dayy减然后减然后减然后减啊所以呢,那这个就完事了,那么再往下的话呢,大家我觉得大家应该也能够,呃,就直接就应该是能够这个理解这个设计了,对吧。我再粘一个是吧。
121:02
在粘完之后呢,这是day嘛,对不对,你在粘完之呢,就应该是这个就变成了,变成月份了对吧,On对吧,然后这个就变成mon对吧,Mon啊然后呢,就是月份月份啊然后呢,这个就是啊,这个就是月份啊,月份的减,然后月份的减,然月份的减,月份的减搞定啊就是该年了对吧。好,那么对于这个月份完事就是年是吧,年的话就是什么?就是这个叫做year啊,然后呢,这个是年是年y erarr的。YAR的减减减减好了,那剩下还有什么?剩下就是这个闹钟,闹钟的分钟加对吧?好闹钟叫什么?闹钟叫ala。
122:15
分钟啊,那么这个叫做A加是吧an。这个。这个A是不是减减减减啊AMN就搞定了,那么还有什么,还有这个闹钟的小时对吧?好闹钟的小时叫alarm的ho对吧。这个地方就是这个地就是小十是吧,然后这个地方就是a ho对吧,减吧,好这样的话就是说我们就写了什么呢?就写了非常多的,就是在每个状态下,只有在你的状态下来加了你的对应这个值才能加,只有在你状态来减了,你才能减,其他地方都。
123:25
都没有任何作用,所以在在这的话,我们就把所有的状态基本上都判断了两遍,因为我要判断这个是这个状态,然后判断加来没来,然后就要对应加,然后判断没来有没有减啊,所以是这样的,那么这个我们一相当于什么?相当于我们的一大堆的调整脉冲做完了,就是这一堆flag做完了,那么还有什么没做完呢?还有就是这个max,那么maxcel是什么呢?Macel就是选择哪个呃叫做这个哪一组作为输出是吧?这个简单是吧,这三个状态是吧?对,对于这个叫做timem来说,这三个状态都是选择第一组,对于这四个状态就选择第二组,对于这三个呢,就选择第三组吧。
124:05
所以这个的话呢,我们今天稍微拖一会儿堂啊,咱们尽量把这个能讲完,然后我可以不下版,我可以不仿真,到时候直接给大家啊,然后呢,大家可以自己去看一看啊,那么这个的话呢,我们直接就用组合逻辑来写了,比较简单什么呢?就是case括号。啊,然后呢,这个叫做c state啊n case啊,今天教大家一种新的写法,什么呢?比如说我们的前几个状态是不是都是选择第一组输出啊,所以呢,就是这个叫做TIM啊,开头的它逗号写逗号啊,Time的分钟。Time的小时一共这三个对吧?所以他们三个的输出是一样的,那就是什么叫做max cell统一等于二撇B00好搞定,那么data的idol data的天,Data的月,Data的年都是输出的第二组,那么第二组就是二撇B01好,那么第三个啊,就是我们的叫做alarm idol分钟小时输出的都是第三组,然default我们都让他输出第一组好搞定,那么还有什么呢?是不是还有这个调整啊,到底是调整的是这个叫做。
125:47
高位啊,这个中间位和低位,这个就很简单是吧,分钟是中间,小时是高位,日期是低位啊,月份是中间,年是高位,分钟是中间位啊,它是这个高位对吧?所以在这的话呢,我们只需要把这个给写出来就可以了啊,再往下接着写啊,括号啊这个的我们写成什么都可以写成持续逻辑判断复位一撇B0,然后h adjust en就等于的是一撇B0,然后else判断括号c state等不等于。
126:35
高位调整都有谁呢?高位调整的是有time的小时或者。呃,叫做日期的data的年,或者闹钟的小时啊,也就只有说等于这三种状态的时候,我们是在干什么呢?我们是在。
127:01
这个调整啊,这个高位对吧,等于一撇B1,然后L把just en等于一撇B0好搞定,那么对于中间位来说的话呢,也是一样的是吧。好,中间位置不就叫做M呗,MM好了,那么这样的话它就是什么?就是调整这个时间的就是分钟,调整的就是日期的月份啊,调整的小闹钟的就是分钟好,那么对于低位来也是一样的,对吧,但是对低位来说其实就少了很多的状态,为什么呢?因为低位来说,对于对于这个时间来说,低位的秒不调整,对于闹钟来说,低位也不调整,其实就剩了个什么,其实就剩了一个。
128:03
日期的是吧,就是说这个这个调整。好,这就结束了啊,这就是如果在这个状态下就调整低位,剩下都不调整地位对不对,还有什么没输出呢,看一下。好,这都写完了,这也写完,这也写完了,这也写完了,就就就这个没写了,那么这个的话呢,这个的话也简单是吧,我们给大家说了是吧,也就是说只有当他们当他等于他,当他等于它,也就是说闹钟要响了,但是呢,如果正处于调整期间的话啊,正处于调整期间的话,我们是不让响的啊,因为你正在调整小时,正在调整时间,或者正在调整闹钟,它正好相等了,那你要想嘛,调整期间是不让想的,对不对,在这的话呢,我们来去写一下。
129:01
比如说在这我们先写一个,呃,这个。Where啊,先定义,其实不应该在这定,应该定到上边,我就先定义到这儿了啊,比如where啊叫做是叫做这个闹钟该响了,比如我们叫EQ ual就相等嘛,对不对,所以Z,呃,Equal等于什么呢?就等于括号与上括号,好吧,就是我们的t ho等不等于a orur和我们的呃,T min等不等于AMN,就是如果它们相等了,那好了,就它就会出现这样的一个情况,对不对,诶,然后呢,我们啊,然后我们干什么呢?然后我们再去这个,它等于会等于一分钟的,对吧,它会等于一分钟的啊,还会等于一分钟的,那好了,然后呢,怎么做呢?然后呢,我们在这再写一个always eight括号啊或者我们在这啊先定义吧,Reg,再定一个E。
130:06
A-R好,在这我们来写一下always时中,然后E-R就等于e Qu它好,然后呢,在这的话呢,其实呢,我们就会有一个什么,就会有一个脉冲出现啊,有个脉冲出现,比如在这的话呢,我们定义一个脉冲啊,这个脉冲叫叫呃。AG啊,叫eqal,就是说他们俩相等的一个脉冲then,然后flag_EQUA等于什么呢?注意啊,它不是一等于会等于一分钟嘛,但是呢,我们又呃不让它去,就是他俩相等了之后,我们又在这个这个响的时候只给一个脉冲就可以了,你不要给一分钟的值,所以怎么办?我们说了它等一分钟,但是呢,我只要它前面一个什么上升沿对不对?所以上升沿什么上升沿是过去等于零,现在等于一,对吧,所以是过去等于零,过去eqqu等于零,然后现在等于一,是吧,Eqqu a好了,那么这就是我们这个闹钟的脉冲,但是这个的脉冲并不对,因为它不能在任何时候都响,所以在这儿我们要注意。
131:30
一撇B0,然后呢,是我们的flag alarm等于一撇B0,然后else判断什么情况下flag alarm能响呢?也只有说在这个状态不能响,这个状态不能响,这个状态不能响,这个状态不能响,其他地方都可以响,所以是我们一共十个状态,四个不能想的,六个能想的,那当我们写什么?当然我们写四个不能想的了,然后else能想对不对?所以呢,C state等于。
132:11
的他或上state等不等于time的man或者C等不等于alarm的小时,或者或者state等不等不等于alarm的分钟。好了,搞定了。啊,就是说把这四个态都写下来啊,四状态都写下来之后,只要在这四个状态当中,Flag Fla都等于一撇B0永远不会响啊,那么不在这四个状态当中呢?那如果不在这四个状态当中呢?那么flag alarm是可以想的,根据谁呢?就根据这个就可以了,只要他响了,我们就让他响就可以了,好了,那么最终啊,我们把这个闹钟啊也给写完了啊,闹钟也给写完了,好了,那么这个就是最后的设计吧,然后呢,就是比较多是吧,我们来把它统一都改一下啊,因为他们应该都是在always模块当中,值的这一堆应该都是。
133:23
这样吧。好,OK,搞定了啊,那么我们重新编译一下,看有没有错啊,呃,这个就是我们今天的这个设计啊,大家也看到了,就是包括我来做这个设计的话呢,可能我也做了将近得有几个小时了,如果按照上周周五咱们开始算的话,上周周五,然后包括周一今天周二已经做了满满当当的六个小时加设计,然后再加这个写代码,然后中间呢,还夹杂了很多很多用以前的代码啊,然后呢,我还写了六个小时,所以大家呢,呃,对于一个复杂的设计来说啊,对于一个复杂设计来说,可能要写时间可能会很长很长,这是很正常的啊,代码多也是很正常的啊,所以大家呢,一定要静下心来啊,不要说觉得多或什么之类的比较复杂啊,在这我们来看一下我们整个设计啊,就写完之前很多的警告错误,但是我们写完之后呢,你就可以自己去分。
134:40
分析了啊,这个是我们的没有去指定这个什么呢?没有去指定这个这个处理器的个数,这个是我们这个叫做呃数码管里边的,因为我们给的是八位,现在变成七位了,这一个缩减值,这个不用管,然后这个的话呢,是一个呃把这个t bep他认为是32位的值,然后呢,它缩减到一个24位上,我们知道可以放得下,这个我们就得管,这个是把一个26位的缩减啊,不是把一个32位缩减成26位的,为什么?因为我们知道它肯定也够,然后再往下就没有了,就没有任何警告了,就是我们现在做的这个相对来说还是比较呃严谨的啊,然后我们看看做了这么大个工程,我们用了多少用,虽然呢,用了一共有1000。
135:23
366个,有些人说哇,做了这么多东西,一共才用了1366个资源,大家还记不记得,我们当初就写那个除法求鱼做那个,呃,就二进转BD的时候,就写三句代码,就用了169个,然后我们现在写了这么多,这里边也有出这个,这个叫做这个二进转BD,然后我们一共才用了1366个资源啊,一共用了这么多,然后大家干什么呢?大家就可以说把这个代码呢,进行一个,呃,到时候测试啊测试,大家都可以说对它进行部分测试,看它对不对啊,这个这样吧,我就今天就不再讲了,明天我们可以拿出来。
136:00
大概再拿出来,呃,这样吧,我一会儿把这个代码我直接发给大家,然后大家可以帮我去试一下,然后呢,我们明天把这个里边的问题再给大家用一个小时到半个小时解决一下吧,然后呢,我们前一个月的考核到此就结束了,然后我们从明天的后半段开始,然后我们就开始讲我们明天的内容要讲IP核了,因为我们要进入到下一个月的,呃,一个相对来说,呃。不能说更复杂,只能说再给大家引入一些新的概念,让大家能够了解更多,好吧,这个就这样吧,我不试了啊,大家可以帮我去试一下,然后分配管角的话,大家自己看着办吧,里边除了时钟和复位,呃,还有这个数码管,然后四个按键,然后呢,一个蜂鸣器就完了,所以这个大家都会是吧,大家自己去分配就可以了啊。好了,大家看看有什么问题,有问题可以说一下,然后呢,给大家来解决解决好吧。
137:05
咱们这个里边一共用了多少个点位啊,123。四五六七八九十十一十二十三十四十五十六十七十八十九二十二十一二十二二三二四二十五二十六二十七二十八二十九三十一共30个,30个,平均一个100行吧,你肯定应该得有100行啊,呃,这个40行是吧,但是你不能和这个平均是吧,这个直接就400行了是吧,呃,大概平均一个100行吧,30个3000行了,也就是说如果大家到时候写,如果有的人想去做毕业设计写个论文是吧,把这个3000多行直接复制到你的这个,你的这个这个叫什么?3000多行直接复制到你的这个附录上,光你打这个3000多行的代码,你的这个打印得打印好多好多张啊,一张估计100行打不下吧,一张A4纸100行也打不下吧,应该只能打印个五六十行,可能说多了吧。
138:02
所以呢,然后就打印这么多行,可能需要五六五五六十页纸啊,所以呢,这个还是蛮多的啊,包括咱们这个很多人来说,这个这么复杂怎么仿真啊,其实对于这么复杂来说,一般情况下啊,我很少去仿真整体的,因为这个整体太复杂了,怎么办呢?一般像我只仿真局部的,就是说哪一部分不对了,我去仿真哪部分,哪一部分不对了就仿真哪一部分,然后呢,保证自己的连接关系就可以了。啊,一般情况下哪一部分不对了,我们去放针啊,不对去放针好了,大家看看有没有什么问题,有问题说一下,然后给大家解决一下好吧。都没有问题是吗?还是说都已经睡着了?呃,看一下啊,丁那个为什么不减一是吧,瞅一眼啊丁这。
139:04
哪哪哪不建议了。不是啊,这个是十毫米是吧。呃,我看一下啊,这个是产生一个10K的。产生了一个啊,这是5K的啊,当初应该写的是这是个5K的方波。呃,5K的方波这减一了是吧,然后这取反啊,这个没问题是吧?啊,这个位置没减一是啊,这个位置没减一的原因是什么?没减一的原因其实也很简单啊,给大家说之前好像讲过为什么没减一呢?呃,比如让举个例子啊,现在呢,我让你拉高十个周期,比如我让你拉高十个周期啊,我说你拉高十个周期,你怎么拉高呢?你是不是就会在零到九拉高啊,就比如说你拉高零到九拉高就可以了,但是呢,我又没让你一直拉高对不对,我让你只让你拉高十个周期对吧。那么你怎么办?你是不是除了零到九以外,是不是还得有一个数啊,是不是还得有那个数,那个数干什么?那个数就是在那停着,然后布拉高对不对?那正常记中方干什么?我们技数是零到十,然后呢,平常的时候在十待着,然后呢,零到九拉高,是不是这样的话呢,零到九是不是正好就十个呀?那对于我们来说的话,有人说这个TBP多久呢?正好是0.1秒钟对吧?啊,是0.2秒钟对吧?0.2秒钟,那如果0.2秒钟的话呢,那我记数干什么?我是我要记录到零到0.2秒钟,减一的话,那是不是就相当于我的所有的旗间都得拉高啊,那我平常停在哪儿啊?我没地方停了,对不对?所以我不减一了,我不减一的话,是不是就正好多一个,然后我平常正好停在多那个位置上。
140:41
能听懂了吗?就我刚才举那个例子,就是我想拉高十个周期,但我计数记多久呢?我不能记零到九,我得记零到十,为什么呢?因为你要记零到九,所有东西都是有效的,对吧?我得平常的停在一个无效的地方,无效地方在哪,在十嘛。对吧,所以这要多一个啊多一个。
141:00
OK啊,呃,再看一看有没有什么其他的问题啊,其实我觉得大家对于这个来说。大家多去做,多思考啊,然后呢,什么什么东西大家都可以去考虑考虑去做,一做就锻炼自己脑子的逻辑思维能力,其实我觉得对大家来说可能。这个叫什么,就是写代码的能力,可能慢慢慢能练习上来,然后关于这个写逻辑这个能力,这个就比较费劲,就我现在就玩脑子了嘛,对吧,大家就是说这个就没有什么规律可循,就只能说大家做的比较多,见的比较多,别人这么写过,我也这么写啊,然后呢,理解了就可以了,所以一定要见多识广嘛,对吧,活久见嘛是。好了,再再再看看还有没有其他问题。没了是吧,其他人呢。其他人是不是都睡着了,好了啊,那那什么啊,现在的话,我把这个工程直接打包一下,然后呢,我给大家呃发到群里,然后呢,大家就直接去看一下啊,然后我昨呃上一次我是不是发过一回了。
142:17
啊,我把那个删了。呃,我把咱们这个群文件里边这个玩意儿也给删了。没下载就不要下载了,我我准备给他删掉不要了,然后我今天的话呢,我再来给大家把这个再来压缩一遍,然后我再来这个穿一遍。好了,我已经传传上去了,大家可以到时候看一看,然后呢,呃,大家可以帮我去下板测试一下啊,测试一下,然后呢,看一看这个里边有没有什么错误,如果是什么现象不对了,明天告诉我,我来解决啊,通过仿真也好,通过什么方式也好,我给大家解决,然后呢,大家自己去写的过程当中出现什么问题也可以找我,然后呢,我来给大家解决,好吧,那就这样,今天就这样好吧。
我来说两句