00:15
现在有声音有画面吗?都有是吧,OK啊,因为我这儿不像那个,我那个我可以看到我自己有没有在直播,这个我自己看不到啊,所以就。看一下大家这有没有问题啊,好了,那个其他人的话呢,我们就讲点这个我们昨天讲过的东西啊,回顾一下啊,然后呢,我们来去也等一下他们是吧?呃,首先呢,我们昨天讲的什么呢?呃,我们昨天呢,其实我们应该说这几天吧,我们讲的都是一个呃类似有点像一个系列的一个东西,对吧,也就是说呢,我们呃要对这个案件进行做一部分处理啊,那么我们是以什么为开端呢?我们是以这个叫做呃这个案件技术是吧,我们是以案件技术这个为这个我们设计的一个,呃这个这个叫做呃要求或者说一个目的吧,然后呢,我们去做了这个设计啊,那么在这设计报告当中的话呢,我们呃在最开始的时候呢,就在一步一步的再去探讨啊,然后呢,探讨一直到最后探到哪儿呢?哎,探讨到我们这个叫做啊。
01:33
这个位置的,也就是说呢,这个record number这个模块呢,干什么?哎,他是负责这个负责什么,他是负责这个去记录数字的,那么在这个record number当中的话呢,也有了消导,有了变压检测,那当然了也有了去计数,也就是说呢,我们能够保证啊,外界摁一次会加一啊,也就是说呢,无论你按多久也好呀,呃,无论你是怎么抖动也好呀,那么它呢,都是只加一了,那么现在的话呢,我们问题就是说这个number呢,七到零给过来之后呢,显示到数码管,什么显示数码管是按照这个16进制去显示的,对啊,一定要注意啊,数码管其实是按照16进制去显示的,那么呃,我们来说的话,那样的话呢,就不太符合什么呢?不太符合我们的这个叫做呃要求啊,不太符合我们的要求,那我们为什么呢?因为呢,我们要显示的,比如我要显示N完九之后显示个显示十对不对,但是呢,如果按照这个每四位去显示输盘管会显示什么会。
02:33
产生A对吧,所以呢,经过我们昨天探讨啊,叫什么呢?就是说我们这儿呢,要记的是BCD啊,我们前面的是二进制,也就是说呢,什么BCD呢,用四位的二进制来表示一个,呃,十进制当中的某一位的这种方式叫做BD啊,所以呢,我们今天啊要讲的第一个叫做二进制转BCD啊,那么昨天已经给大家这个方法了,什么用除法求的方式啊,用除法求余的方式啊,去做这个二进转BD,所以今天的话呢,我们来呢,先去啊做一个这个什么呢,先去做,我们先不在这里边做了啊,我们就在外边直接新建一个这个模块啊,比如说我们叫做bin To Bcd啊bin two bcd,好,那么这个b two BD呢,其实呢,也是相对来说比较简单,对吧?
03:27
然后我们今天呢,我们讲一部分这个其他的内容啊。好,那么下边我们来启动这个。
04:24
好了啊,那么当我们建立完这个工程以后,是吧,我们就该去写一个叫做这个我们的那几句代码是吧,来新建vrlo OK。存,然后呢RT,那么在这的话呢,我们来下这个代码。好啊,那么输入的话呢,有一个叫做呃,这个八位的一个bin啊,输出呢,有几位呢?哎,输出应该有这个叫做呃,因为你的bin是八位的,对吧,你的八位的bin的话呢,也就是说呢,你能够表示的数字的范围应该什么?应该是零到255。
05:20
呃,那么如果你要表示零到255的话,应该有什么?应该有这个叫做三个数码啊,应该有这个三个数码,那么三个数码每一个数码呢,就是一个BD码呗,一个BD码需要四位啊,需要四位啊,所以在这儿的话呢,我们需要几位呢?啊,我们一共呢,哎,需要这个呃,三个BD码一个四位,所以需要12位对不对?所以在这儿呢,是11到零的,嗯,一个叫做BCD好了,那么根据我们这个这个这个这个昨天所讲的是不是啊,BCD的三到零,也就是它的最低三位啊,应该是它的个位对吧?那么我们的个位什么呢?应该是bin的百分号啊十,也就是说呢,Bin的对十求余就是个位对不对?那么再按照我们的BD的七到四,应该是它的十位对吧?应该是什么?应该是边N除以十之后再对十求余。所以有的时候。
06:20
真的我也不知道这个除号和求余号那个优先级高啊,那我不知道就不知道吧,因为咱这个不是考试啊,咱这个不是考试,不是说这个你这个考试选项啊,问你哪个业级高,这两个玩意我也不知道选哪个了,那不知道就不知道呗,我不知道,但是我在做设计的时候呢,很多时候呢,就变成了什么我不知道,是因为应该,但是我知道括号高对不对,我加个括号呗,对吧,不影响什么东西啊,然后呢,BCD的这个11到八呢,应该是什么?应该是这个百位对不对,就是bin啊,然后呢,除以啊100啊,然后呢,对十求余啊,这个咱昨天已经讲了,对吧,也就是怎么能拿出个位呢?对十求余啊,就是十除以十的余数呗,对不对,那么既然我能够把个位拿出来了,那就很简单了,那怎么能把十位也变到个位上呢?那就是让这个数除以十呗,那除以十之后是有余数的,对吧?哎,那在这的话呢,我们给大家说了啊,在ipg里边呢,一除。
07:20
除呢,哎,都是什么,都是整数啊,都是整数,所以不会有小数了,所以除以十之后呢,就已经123,除以十就等于12,没有点三啊,没有点三,所以呢,你除以十呢,就把这个十位就弄到个位上了,那么再对十求余呢,就出来了,就是十位啊,当然了,除以100也是同样的道理啊,同样的道理好了,那么在这儿的话呢,我们来呢,呃,编译一下是吧,综合分析一下,那么这个综合分析一下的话呢,呃,让大家去看一个东西啊,这个这个呢,对不对呢?呃,肯定是对的啊,那么一会儿我们也仿真一下,让大家来看一下。
08:00
那么我们首先呢,先来看几个。呃呃,几个东西啊,首先我们先来看几个东西啊。好了,那么呃,首先呢,第一个问题啊,就是说我们来解决大家,大家里边的一些警告啊,大家都觉得会有警告是吧?比如第一个什么呢,说在八九十行,八九十行啊,缩减了一个32位的数字啊,去匹配了一个四位的什么意思,也就是说呢,他认为BN对十求余啊,得出来的结果呢,它默认是个32位的,但是呢,我们只取得了第四位,当然了,我们先我们说它为什么32位,这是人家的规定,咱不管,那么我就来考虑一个问题,说人家得到的是个32位,而你只取后四位,会不会出错呢?这是我们所关心的,对不对?那我们来想一个数啊,对十求余,它的余数呢,最大就等于九对不对?
09:01
所以呢,九的话呢,零到九嘛,零到九的话呢,是可以用四维表示的,对不对,虽然它能等于30,虽然它等于32位,但是很明显啊,很明显什么呢?很明显它的这个这个高的这个28位呢,全是等于零的对不对,那对同理可得这个也是一样的对不对,同理可得这个也是一样的对不对,所以这个就不操心了啊,这三个就不操心了,再往下边还有一个。说什么呢?说输出管角一直接电源或者接D了,你看他说的BCD的十和BD的十一一直接D了,也就是说呢,他认为什么,他认为BCD的第11位和第十位永远接地了,那么一般情况下遇到这种情况,我们都觉得有可能会出错了,你比如说我们的BCD应该在时刻在变化,对吧,我给不同的B它应该在变化,那好了,我们来看一下BCD的11和BD的十分别对应什么呢?啊,BD的十和BD的11分就是什么,应该是我们的百位的,也就是说能够表示百位这个BCD码的这这这四个数啊绊示百位的比项是四个数,那么我们来去啊分析一下,你比如说呢,我们的百位对吧?我们的百位呢,应该有这个四个数码来构成啊四个数码来构成,但是呢,由于什么?哎,由于我们的BDBN码等于多少,等于2000到255对吧?那也就意味着说我们的百位其实只能等于什么,其实只能等于零,等于一等于二是不就没了。
10:30
它不能等于三对吧,因为你的数最大就等于255嘛,所以那也就意味着说呢,它呢,要不然等于四个全零,要不然等于三个零一个幺,要不然等于两个零一个幺零,也就是这是零嘛,这是一嘛,这是二嘛,对不对,它就只能等于这三种情况,那么来看来看,在这三种情况当中,它的高两位是不是始终都等于零啊,就是没变过对不对,所以呢,人家综合计会综综合报告,就是说这两位从来都是等于零的,接地就是零是吧,从来都是等于零的,你是不是做错了,注意一下,我注意了没错,所以呢,呃,在这儿给大家来把这个警告啊,也都给大家来说了,就是呃,我在做的时候呢,一般情况下我会关注,就是说如果所有的代码都是我写的情况下啊,我会重点去关注这个警告啊,然后呢,去防止看我有没有做错啊,你比如咱们昨天啊,由于我的一个失误是吧,然后呢,我这个失误呢,还比较不明显啊,然后呢,去这个去这个。
11:30
叫做这个,呃,仿真的时候呢,也没有发现,因为仿真它恰巧呢能够实现这个功能,那么如果要下版的时候,肯定是实现不了的,那么通过哪儿啊,就通过这个报告啊,就通过这个仿真啊,不是通过这个下边的警告,我始终觉得它是有问题的啊,他果然是有问题的啊,咱们最终的找到它的问题,那么这也是呢,就是说把这些里边能够学着去分析一种错误的,呃这个地方或者分析知道你自己做的不对啊,那么呃,这是这些警告啊,之前给大家说了,有些警告是可以忽略的,比如说你自己看一看,这是不是做错了,我看了没有做错,那我那那这个怎么说,他还是有立美字典,它还是有对不对,所以说这个警告呢,呃,有些人说我们可以解决所有警告啊,这很明显是不对的啊,这明显是这句话说的就有问题啊,我就想等于零啊,我就一直输入为零,不输入为告了,那么他一定会报警告,你说这个你应该怎么解决,你说你把它拉高拉低就就就不报警告了,那你不就做错了吗?对不对,所以呢,这个警警告。
12:31
放的,我们有很多东西是无公害的,对吧,我们不需要去给它解决啊,不需要解决,只需要知道对我们无害就好了,好了,那么下面我们对它进行做一个仿真。我们叫这个BN呢,To Bcd的一个TB。
13:36
好,然后在这儿呢,是这个七到零的这个边啊,还有的是这个是11到零的这个叫做BCD。好,那么这个B啊BCD好,那么下边的话呢,就是说去给这个呃,B值就可以了,那么B值怎么给呢?我们在这儿呢,就用随机数来给就可以了啊,比如repeat,我们给50个好吧啊然后的话呢,我们来给这个边啊就等于啊Dollar r100分号256啊,然后呢,延时20啊,其实很多人比如说我写习惯之后呢,我会在这儿呢,写一个延时200,写个Dollar stop,其实呢,也不用写啊,不用写啊。
14:37
呃,习惯性写上就写上,其实也不用写,为什么呢?我们知道啊,在这个之前给大家在讲这个Dollar stop就给大家说了啊干什么是挺仿真的,那么我们在最开始讲组合逻辑的时候,我们从来没讲过do stop,为什么它能自动停呢?它就是对它就是呢,基于一个原理叫什么叫做对于我们的电路来说,如果输入不发生改变了,输出就不变了,所以呢,我们在做的时候呢,输入不都不变了,输出也不变了,那你在这儿循环50遍之后就不变了,不变,所以它自动就停了。那么为什么我们后边讲会讲到多少stop呢?因为我们老去写那个时终是无限循环,对吧,它一无限循环,那这就爆,那那这肯定就有变化了,对吧,所以要用停机,那这个就不需要啊。
15:22
好,那么下面我们来做一个设置。好,我们来做一个,这个叫做分析综合。
16:04
啊,这个分析综合的时间可能要比咱们做其他的分析综合的时间可能都要长一些。嗯。下面做个仿真。好,那么这个结果对不对呢?所以在这需要大家一定的去评判,比如你把这个B呢,改成这个无符号位36啊,一百二十九九九十九,那么按照我们来想的话,是应个比如三十六三十六的话,它的百位应该是零,对不对?所以它的下边这个数的高四位应该是零,然后中间四位应该是三,后边四位应该是六一百二十九,高四位应该是一,中间四位应该是二,后边四位应该是九,那这么看太麻烦,怎么办呢?要把它改成什么呢?把它改成16进制,因为16进制正好是四个A组,四个A组对不对?所以很多人要把这个也改成无二,那就那就直接就错了啊,所以这个是你要对设计要了解,就是你是四个A组,而四个A组,四个A组恰巧就是16进制。
17:26
所以来看吧,36就是036啊,129就是一百二十九九就是00999就是09913就是0131411011811311861啊237啊都是对的啊,这是没有任何问题的啊,没有任何问题的对吧?啊那么这个呢,就是我们所说的一个,呃比较简单的啊,这样的一个,呃叫做这个设计比较简单这样一个设计,那么呃,在这个当中的话呢,它这个这个就是说白了就是什么,就是BD码,就是什么BD码,其实呢,它就是一个。
18:04
这个叫做一个呃设计的呃或者叫做bdma,就什么bdma就是这个用四位的这个二进制啊去展示什么哎,去展示一个这个呃二进制当中的一个呃,个位或者十位或者百位上的一个数,那么呃一定要注意,切记啊,只要是机器和人之间的沟通啊,我们先不说人和机器的沟通,我们说机器和人的沟通,就是机器把数发出来给人看,那么一定要做的一件事就是什么,就是B转基地,否则我看不懂啊,否则人就看不懂了,对吧?啊那么所以这段电路呢,还是很有作用的啊,那么这个就是原理性啊给大家在这儿呃说了一下是吧,来说了一下好了,那么在这儿我们来看下这个报告啊,看这报告,那么这个报告当时用了多少资源呢?用了这个164个资源是吧,我们也可以布局不限一下啊,布局不限以后呢,这个可能会变成其他数啊,但是呃,可能性并不大啊,也就是说在前面是综合数报了164个资源。
19:05
这个之后呢,可能会有变化,但是它的变化可能不太大啊,164还是那么在这儿呢,呃,所以我们通过这个概念的时候,要想给大家讲明白一个什么问题呢,也就是说在这我一共就写了三句代码。啊,我一共就写了三句代码,它呢,用了164个逻辑资源,啊,164个轮资源,那好了,那么我们来啊,我们来简单的看一下,我们还做过什么呢?我们做了这么多对吧。比如说我们找一个我们相对来说做的复杂一点的。我们的封面器是不是做的很复杂?啊,我们的分配器,这个音乐分辨器是不是做的很复杂,音乐分配器里边有好多好多模块,用了好多好多资源是吧?来我们来看一下,比如说我们现在呢,把这个分辨器这个工程呢,我们给它打开。啊,把封鸣器的工程给打开,那么我们把这个工程打开以后呢,我们来看一下这个封鸣器的这个工程的音乐分鸣器是吧?呃,里边用了好多模块啊,等到打开之后我们也可以看一下啊,它里边用了哪些东西,然后呢,我们来分析一下啊,它呢,用了多少资源啊,我们来去评判一下啊,来评判一下。
20:19
啊,我的电脑可能开的东西比较多啊,可能还在直播,所以这个相对来说可能。稍微有点卡,稍等一会儿啊好了,在这的话我们来看一下是吧,在我们的这个音乐风行器里边呢,有这个地址控制对吧?然后呢,还有这个音乐的一个存储啊,然后呢,还有还有这个这个是音乐的存储是吧?这个是把存储的音符改成对应的频率,然后这个呢,还要去算出来这个值,然后最终还要输出好多好麻烦对吧?那么下边的话呢,我们来看一下他一共用了多少资源呢?注意看资源点哪个呢?点报告,哪个是报告呢。
21:00
呃,这个是报告。啊,这个叫编译报告,编译报告你可以点一下啊,出来个报告啊,这用了多少个资源呢?这用了这个叫做600啊,689个资源啊,就是说我们做了这些东西,用了689个资源啊,我们做这个呢,用了多少资源呢?我们用了164个资源啊,那么这个有人说那这个写写这么多,当然用的多了,对吧,那么这个。我们现在呢,哎,我们用了写了这么多代码,我们这里边代码这么多啊,写了这么多东西啊,写这么东西一共用多少呢?一共用了这个600多个资源,而你这个呢啊,一共写了三行代码,用了多少个呢?用了这个164个。那么很明显呢,呃,我们用资源的多与少啊,跟写代码的行数呢,没有太直接的关系啊,你比如现在的话呢,可能说这个呃叫做音乐分辨器,这个呢,可能就是例子可能不太好,咱们来换一个啊。咱们来换一个例子,比如说呢,这个我们哪个还写的比较多呢?比如说我们加法器啊,我们16比特的加法器啊,我们16比特的这个加法器的话呢,好像这个写的也蛮多的是吧,里边有这个都是用这个半加器全加器组成的是吧?然后呢,这个还有套各种是吧?有两个八位的,一个八位,有两个四位的,一个四位的,还有这个两个一两个两位的,一个两位的,还有两个一位的,两个一位一一位的,还是有两个半价棋子组成一个他啊有这么多,我们来看一下一共多少资源,他一共用了32个资源。
22:35
啊,拥有了32个资源啊,那么下面我们再来看。我们还做过什么呢?我们还做过是不是关于也比较复杂的,比如说我们的这个叫做呃,呼吸灯啊,我们的呼吸灯好像也蛮复杂对吧,里边有三个计数器啊,然后去对比,然后呢,还有模板啊,然后代码也是一大堆,那我们来看一下他呢,一共用了多少个资源呢?好,我们来看一下啊啊,他才用了54个资源,也就是说呢,我们从这写写了这么多代码啊,一共才用了54个资源,而这个呢,一共就写了三行啊,一共就写了三行,用了164个资源啊,那么呃,其实呢,这就是很简单一个问题,就是说啊,这个代码的多与少啊,代码的多与少啊,只能说什么,只能说这个编的这个编写代码这个人呢啊,它省劲不省劲啊,但是对于电路来说的话呢,或者对于综合器来说的话呢,你写的少了,它费劲儿也挺多的啊,或者在真正电路当中,它费的劲儿也挺多的啊,所以呢,一定要注意啊。
23:38
不代表你写的代码少了,就你的用的逻辑资源就一定是少啊,也不代表你写的多了,用的逻辑资源就一定会多啊,这个要看具体的我们的这个电路的综合,但是说大家可以写C不一样啊,如果你去写C的话,你写的代码越少越电用那个循环,那么你所占用的这个程程序的这个就指令这个存储空间啊,真的就会越小,而且越多就会占得越多,这是一定的啊,但是咱们这个不是啊,因为咱们这个不是,因为咱们这个不是指令,不是写的代码少了,就里边运行电路就少,不是啊,它会把你描述这个干什么,哎,做成电路的。
24:13
啊,这种电路的啊,那么在这儿的话呢,这个除法和球鱼啊,这个所占用的这个电路资源呢,是出奇的多啊,是出奇的多啊,所以在这儿的话呢,这个呢,我们先啊放一放啊,我们先放一放啊这个是这样的,那么呃,希望大家知道它用的资源呢,相对来说比较的多,那在这比较多就OK了啊下在比较多就OK了,好了,那么呃,下边的话,我们来讲第二个就是关于仿真的一个东西。比如说这个什么,这个是BN转BCD对不对?那么我们有了BN转BD以后,下边我怎么办呢?我来给大家讲一个什么,讲一个叫做这个BCD转bin啊,什么叫BD转bin呢?对于大家来说,是不是说这个BD的这这三位,我说这四位是吧?这四位是不是就是个位啊,这四位是不是就是十位啊,这四位是不是就是百位啊,那么我们来想一下,如何把这个BD转成bin呢?在这儿在哪转呢?我在这个里边转,比如说这个B对不对?好,我在这写一下啊,比如说啊,叫做这个七到零的,七到零的TB啊B,那我们Z啊TB啊B就等于BCD的B3到零加上BCD的七到四,然后乘以十加上BCD的11到八。
25:45
然后乘以100,其实呢,这一句话其实就给大家讲明白了什么叫BCD转二进制。啊,也就是说当你给了我一个12位的BCD,也就是说你有三个BD码的时候,你给了我之后呢,我怎么办?我就很简单嘛,你这不是最低四位对应的是个位嘛,再高四位不是对应十位吗?再高四位不是对应的是百位吗?那我就给你乘起来,加起来不就可以了吗?随时不做了一个TB呐,哎,就做了一个TB好了,那么大家来想一下啊,就这个什么,这个是BCD转二进制啊,这个是什么?这个是二进制转BD啊,二进转BD,那么按照我们正常来去说的话呢,这个TBB和这个B应该什么?应该是完全相等的。
26:30
啊,应该是完全相等的啊,一模一样的啊,它不能发生不一样啊,如果要不一样,就证明这个当中某一个过程呢是坏的,对某一个过程是不对的啊,某个过程不对的,那么呃,在这儿的话呢,我们也可以呢,给大家呢去说一种就是就是类似有点像这个设计思想啊,这个呢是很简单的一个问题啊。好,呃,比如什么呢?比如现在的话呢,我们是不是给大家这个讲课的时候讲了什么,我们给大家讲课的时候讲了这个叫做这个呃边啊,呃转成什么,转成这个BCD啊,刚才我们讲了,我们又讲了这个叫做BCD啊,又转成了这个啊,那么现在我们是不是可以认为就是这样一件事,什么事呢?比如说我们在这个叫做通信系统当中啊。
27:26
啊,在这个通信系统当中是吧,在通信系统当中有什么呢?我们经常会涉及到叫做编码。啊和解码。啊,这个我们一般称之什么呢?叫做编解码对吧?那么我们也可以认为什么呢?现在就是说比如编变成BCD,我们认为就是编码,编到BD到边就是解码对不对,那按道理这两个呢,应该是一致一样的对不对啊,应该是一样的啊,应该是一样的,那么呃,有的时候呢,我们去做仿真的话呢,啊,我们去做仿真呢,我们的方法有很多啊,方法有很多啊,你比如说呢,我们经常去做什么呢?比如说我想把bin啊转成BCD啊,我也不知道转完这个BC就对不对,我不知道,或者说我不知道这个bin往BCD转的时候,我通过了A变换,比如说就是咱们那个除法求一那种方式,我称之为叫A变换,我不知道这个A变换对不对,我想求一下A变换对不对啊,我想验证一下这个A变换对不对啊,那怎么办呢?我们有一种特殊的验证方法什么呢?比如说我用另外一种方法,就是说把BCD。
28:31
再经过一个变换是B,然后再变成B,而这个B变换呢?什么B变换是我确认已知正确的。啊,注意啊,是确认已知正确的啊,然后呢,变成BN,那怎么我现在就不去看这个BD对不对了,我看什么,我就看我所发的B和人家在解回来的边是不是一样的啊,这就是一种呃特殊的呃验证方法吧,也就是说呢,我们要知道这个B变化是正确的情况下啊,我们可以利用这种方法去验证A是不是正确的,那是不是正确的,那么呃,这种方法呢,我在这个做这个仿真呢,或者说我们再去做这个设计的时候呢,是经常会用到的啊,经常会用到,就是现在的话呢,我说啊像这种呢,就称之为叫做B变换,B变换,那么这个B变换呢,肯定是对的啊,比如说呢,我们就说啊,这个B变换肯定是对的,但是呢,这个变换呢,我不知道对不对啊,我不知道对不对,那怎么办呢?啊,我就去做一件事儿啊,什么事儿呢,就是说呢,把不知道对不对的产生的结果,利用一个肯定对的给他返回去,看这两个数是不是相等。
29:40
啊,这是一种方法,那么还有一种方法是什么呢?还有一种方法是这样的。比如说呢,呃,B。通过A变换变成BCD了啊,变成BCD了啊,这是一种方法,但是这个A方法呢,我不知道对不对,但是呢,我还有另外一种方法,就是把B再转成BCD,有一种B方法,这个B的方法呢,也会产生个BCD,但是这个B方法呢,是肯定正确的啊,是肯定正确的啊,然后呢,我就对比这两个BD是不是一样。
30:11
啊,B对比这两个BD是不是一样啊,如果它俩一样,就证明A变化是对的啊,有的时候呢,我们也会这么来做啊,也会这么来做啊这个呢,是常用的两种方法吧,啊常用两种方法吧,那么现在的话呢,我们在这儿呢,来看一下是吧,就利用这种方法,比如说呢,啊,我们现在要把b To Bd,我只学了一种方法,但这种方法对不对我不知道,那怎么办呢?但是我知道肯定有一种方法是对的,就是BCD转B,就是这种转法,那好了,那我就采用就是A啊,就是说B通过A变换转转成BCD了,A对不对不知道,但是呢,我可以通过BCD,通过B变换再转成TPB,而B变换肯定是对的,所以呢,这样的话呢,我们就验证这两个B边是不是一样,这两个边一样,我们认为呢,结果就是一样的,那结果就是对的,好了,那么下面我们来综合分析一下。啊,综合分析一下,然后呢,我们来呃去看一看啊,这两个边呢,呃是不是一样的啊,是不是一样的。
31:30
好,那么下面的话呢,我们来去仿真一下。那我们来看这个TPBN和这个BN啊,它是不是这个,呃,就是叫做这个完全呢,就是这两个值啊,是不是都是永远是一模一样的。
32:02
好,那么在这的话呢,我们来是吧,把这个BN变成这个无符号位啊,把这个TBBN呢也变成这个无符号位,好,我们来看一下啊,这两个数是不是永远,因为BD我们不看了,对吧?是不是远一样,三十六一百二十九九九十九十三一百四十一百零一十八幺一百三十三啊幺幺八六十一二三七幺四零,那么在这儿的话呢,我们只我们只是给了50个数,大家看了是不是都是相同的对吧?啊看着都是相同的,那么呃,这能不能证明我们都是对的呢?或者说你看一下这才50,或者这50个数你有没有全对呢?好像也没有,咱们也没有挨个去对,对吧,也是只是看了前几个,那么中间万一有某一个是错了怎么办?啊,万一有某一个错了怎么办,你没有发现怎么办,因为做设计的有的人就会出现什么呢,比如说我们做了一批,或者我们做了一个算法,然后这个算法呢,只对某些数据有效,对于另外一些数据呢,可能会产生一些副作用或者无效结果,那么此时你测试的时候呢,很有可能就会测试出一些偶然情况,那么像这种的话呢,就比如说你看到这儿是对的,这地方你没看到,那么他要是错了呢,你也不知道对吧,在这儿怎么办呢?我再来教大家的一种啊方法啊,就是我们的方法有很多。
33:20
什么方法呢?就是我们在呃,方便我们去做验证的时候呢,就是我们之前讲的方法都已经用完了啊,都是说都是正常的这个方法,那么下边讲的都是一些相对来说比较特殊的一些方法啊,比如现在我们说啊,因为我们也不知道这几个数对不对,比如在这呢,我改成我改成500啊500,或者我改成5000啊,我改成5000,那么如果我改成5000的话呢,也就意味着我会仿真5000个数,那么而这5000个数的话呢,让你去挨个对一下TBBN,挨个对一下这个TB这个BN和TB这个这个这不是TBN和BN是不是一样,挨个去对,那太难了,对不对,那太难了,那怎么办呢?所以在这儿啊,我教给大家另外用一种方法,什么方法呢?比如在这儿我们来写一个啊,写一个东西啊叫什么呢?啊叫做这个wi啊什么呢,我们就称之为叫做这个,呃,叫做A啊E。
34:20
啊叫errorrrow,叫错误啊,但是这个是一个关键字,其实大家不要这么写,不要这么写啊,那怎么做呢?在这的话呢,我们就写一个,比如说我们就写一个叫做这个bin啊,或者叫做这个我们就写个叫B,好吧,就写这个名字啊,那么这个名什么呢?这个名字我们在就写一句话啊that啊什么呢?哎bin啊L就等于啊括号的什么呢?Bin是不是等于TBB好了,它俩相等的时候,是不是它俩相等的时候我们就输出为一撇B0,它俩不相等的时候,我们就输出一撇B1,那么这样的话,你再来看一下这个b arrow,如果按照我们所做的方法就是BN,如果说转成BCD,然后呢,再转回来,按道理说这两个值应该是永远相等的,那么如果它俩永远相等的话,那就是说BN arow会一直等于什么?会一直等于零的啊,会一直等于零的,而。
35:20
它永远不会等于一一旦BA等于一了,是不是就证明什么,是不是就证明中间出错了,对吧,这个毫无疑问吧,对不对啊,也就是说呢,我们的B一旦等于一了,证明什么,就证明它俩不相等了,因为它俩相等负的是零嘛,不相等负的是一嘛,就证明它俩不相等了,它俩一旦不相等,那就出问题了,就证明什么,就证明我们做的不对了。那就证明我们做的不对了。好,那么呃,下边的话呢,我们来不着急啊,我们来再来一步一步的再往后去,呃,往后再往后接着这个看一看它呢,是不是会出现啊,就是我说的这种情况啊。
36:34
好,那么现在的话呢,我也不去看什么,我也不去看这个,呃,就是关于这个什么呢,就关于这个叫做呃这个呃这个这个这个这个这个BNN啊BCD啊TBN我就该看什么,就看这个BN arrow是等于几的啊,那么在这我们来看有没有报错啊。呃,TB啊,应该没有报错啊,它这个好像是不是卡了没显示出来。
37:03
啊,看一下啊,它应该全是等于零的对吧?啊,它应该全是等于零的啊,就在这的话,它可能没显示出来啊,这个它就可能是这个显示的一个有问题啊,那么在这的话,你看全是等于零的啊,全是等于零的啊,全是等于零的啊,那么在这我们可以选中它找到下一个这个变化,那么或者说在这的话,我们点到这儿找什么,找到下一个这个上升沿。啊,找到下个上肠沿啊,它是找不到这个啊,它是找不到下个上肠沿的,它找不到下个上沿证明什么,就证明我们当中没有上肠沿啊,没有上肠沿啊,那么这个是这样的啊,那么在这儿的话呢,它有一个问题,什么问题呢?你比如说呢,我刚才点到这儿是吧?或者说呢,它有个什么,就是说现在我一缩小它看不到了是吧?看不到是因为什么呢?看不到它可能因为这个,因为我们呢,在这个位置的时候呢,就是这个边呢,在这个时候这个边它有变化,就他们是不是同时发生改变的呢?这个地方它可能会有一个小的一个bug显示不出来,那么在这儿的话,我们怎么办呢?我们把这个来解,把这个给大家呢来去这个解决一下,就是现在怎么做呢,我不这么来写了啊,我给它写成一个,呃,我也写成一个什么呢,我给写成一个,换一种这个方法来去写。
38:20
啊换成什么呢?换成这个always啊eight啊,然后呢括号,比如说B发生改变了啊,然后呢,我在延时二,把这个延时个二呢,这个情况应该就消失了啊延时二啊,延时二之后再判断啊,Bin是不是等于啊,这个叫做TB的bin啊,如果是的话呢,那么bin的L啊就要等于一撇B0啊如果它俩不相等的话呢,那么BNL就要等于一撇B1啊也就是说在这儿当BN发生改变之后,两纳秒之后再去做判断啊这个应该就应该就全局缩放的时候,应该就能出现,要不然这个的话,他永远认为什么认为这个B呢,在变化这时刻的时候呢,他终究认为中间好像有一个断点似的,就是你选中这儿,就是它找到下一个变化,它会突然到断点这一部分,再找一个还会到这个断点这个部分,所以这个呢是一个问题啊,我们之前我。
39:21
先没注意啊,那么这样的话呢,我们就改成这种,就是说当边变化了以后啊,延时二之后再说啊,现在的话我们来去做一个,呃,诶这样的话是不是这个位置应该要定义成rag类型的啊,因为b arrow是在always当中被赋值的。我们来把这个TB呢重新编一下。好OK啊,然后呢,换到这儿。啊,这样的话呢,我们再来看啊,全局缩放一下啊,这个值就出现了是吧,这个这个绿线就出现了,然后呢,选中它啊,再找到下一个变化啊,你是找不到的啊,你是找不到下一个变化,它是不动的啊,有人说是不是缩太小了,所以一直不动学生它啊找是它也是不走的啊,它是不会像这对其他的啊,那么这样的话就什么就是说他他们呢,会一直什么啊,会一直等于这个零的啊,一直会等于零的,也就是说用这种方法的话呢,我就不再去看了,这样的话,我测试了,我测试了5000个数据,或者测试了5万个数据,对不对,那么这个BN arrow呢,它就一直干什么,它会一直等于的,就是什么等于零,那它会一直等于零的啊,它会一直等于零的啊,那么这样的话呢,有什么好处呢?哎,就是说呢,我们就可以知道啊,我们是没有什么没有任何的错误。
40:43
啊,没有任何的一个错误,那么还有一种方法什么呢?就是说呢,我这种的还要干什么,我这种还要去从这到这。我还要去看这个b arrow,然后有的时候呢,这个波形啊,又比较复比较长,我还要等它全球缩放,跟毛毛虫似的往这边爬又贼费劲,那怎么办呢?我们还可以用一种方法啊,叫什么方法呢?再来看一下,比如说啊到这儿我在这儿呢,写一句话,写个什么呢?我写一个叫做Dollar display。
41:15
啊,Dollar display,那么Dollar display,呃,什么意思呢?啊,什么意思,是不是不是这么写的play啊,Play好了,那么Dollar display有什么作用呢?之前是不是讲过叫做Dollar什么Dollar stop,对不对?Dollar stop是什么?是停止仿真,而Dollar display什么意思呢?就是display显示,就是它会打出一句话来啊,比如说我们在这儿啊,写一个什么,写一个双引号啊,打印一句话,打印什么呢?比如说测试正确,我们叫什么?我们叫test right。GT啊,Test right好了,那么我们打印这一句话,然后呢,我们在这干什么呢?然后我们在这个位置,比如说它俩一旦不相等了,我们把BN arrow制成一,制成一的同时我们再打印一句话叫什么叫test arrow啊,只要在中间发现了它俩不相等,我就直接就打印出什么,打印出test arrow好了,那么这种情况下的话呢,我们来啊,把它呢,再一次啊,打到这个当中啊,然后再来啊去这个重新编译一下。
42:29
啊,然后呢,还是没有错误是吧,我们再来啊restart,然后呢让啊运行此时呢,就连它都不用看了,直接看什么,直接看这个,这有什么,这会打出一个test right啊这会打出一个test right,那如果什么呢?那如果说呢,我们这做的不对,会打什么,他就会打印出出来。啊就会打印出test error出来啊,就是说呢,哎,这个BN呢,它等于一了就会打出test error,那么如果说一直测试完成了啊,就会打出打成test right啊那么我们来在这儿的话呢,诶这种方法也比较常用,就是说用Dollar的display的这样的一个命令啊,去打印一些信息啊打印些信息,那么这个呢,就是一种啊能够测试像我们这种啊比较方便啊比较方便,也就是说呢,我在这直接测试了5000个数据啊,都是一样的啊都是一样的,就证明了它没有test irrow啊是test right啊这个呢,还是非常呃简单的啊常简单的好了,那么呃,这是我们的一个打印,这就是我们的一个打印,比较的简单,比较简单好了,那么呃,下边的话呢,我们再来讲一个问题啊,再来讲个什么问题呢?
43:46
就是说呢,呃,我们经常的话呢,会学,或者说经常我们会用到一个东西什么呢?就比如说我们用MATLAB产生了一堆数据啊,比如说我们用MATLAB产生了一堆数据,那么当我们用MATLAB产生了一堆数据的时候呢,我们我就想干什么,我们malab产生数据的话是干啥呢?哎,肯定是让ipg来处理的啊,让ipg来处理的,也就是说呢,比如说图像也好,或者通信数据也好,哎我们干什么,我们用这个IP处理的时候,那么数据源从哪来呢?大部分都是由一些MATLAB的来产生的这样一些数据源,那么产生什么呢?我们大部分产生一些tit的一些文件啊,产生一些T的文件啊,那比如说呢,现在的话呢,我就给大家来造一个T啊,然后呢,我们想干什么,然后我们想把T,就是说用MATLAB产生了一堆BN,就现在我不想说是我自己随机产生的了,而是说呢,而是由MATLAB来产生一些测试数据啊,那么我们如何来去读这样的一些测试数据呢?你比如说在这。
44:47
啊,我们,呃,在我们的这个叫做二进制转BD当中,比如在这的话,我们给这个仿真里边,我们新建一个叫做TST,后缀是点TXT的啊,然后呢,我们给它起一个名字,比如说叫B_date。
45:07
那么这个的话呢,我们给它这个用这个记事本,或者用什么把它打开就可以了啊,然后把它打开以后呢,啊,把它打开以后呢,我们来说,那么这个里边我们MATLAB一般会怎么写呢?MATLAB我们会写成,比如说我们写成二进制啊这个呃,MATLAB写成16进制也可以,写成二进制也可以,写成十进制也可以,那么对于这个vlo来说,他最好写成16进制或写成什么,或写成这个呃二进制比较好,比如他写成16进制也可以啊,其实16进制比如说他就是这个AF。FB12呃三六啊7896,注意啊,不要写,不要写多了啊,因为我们现在做什么,我们做的这边是八位的对不对,也就是八位的话呢,对于二进制来说呢,对于16进制来说,就是两个数对吧,然后呢是八五是吧,然后呢一七,然后呢是A4啊,然后呢是B6啊这都可以啊在这的话写了几个呢?在这我们写了是不是写了这个十个数对吧?有十个数,比如说malab产生了16进制的这样的十个数,那么我们要干什么,我们要把它转什么,要把它转成BD啊,我要把它转成BCD,那我把它转转转成BCD怎么转呢?比如说这是测试数据嘛,对不对啊,Malab产生的一些测试数据,那么我们怎么转它呢?所以在这儿首先呢,要做这样一件事啊,什么事呢,就是说呢,我们啊,在我们的这个TB当中啊,就不要去自己产生这个数值了,因为这就已经不对了,是就已。
46:40
全不对了,所以那怎么做呢?所以首先啊,咱们要去呃做一件事就是什么,就是说把TXT当中的啊,把这个TXT当中的这个数啊,先读到我们的vload当中,怎么读呢?注意啊,首先第一件事儿要先定义一个呃,关于呃,这个跟存储文件啊大小啊相同的这样的一个就叫做存储容器,比如说叫做RG啊,那么对于我们这个来说,它的宽度是多少呢?它的宽度也就是它的每一个数的宽度是八位的啊,每个数宽度是八位,我们是按照二进制来说啊,是八位的,所以在这的话呢,我们定义一个叫做七到零的啊数据,比如我们叫b date,然后呢,它呢,一共有几个这样的八位呢?在这儿我们有几个,在这我们有十个对吧?
47:40
是不是有十个呀,所以在这的话怎么办呢?我们要定义十个这样的,那么这个定义十个怎么写呢?注意啊,就要写成九到零啊,写成九到零啊,写成九到零,也就是说呢,会有十个啊它啊十个它九到零,那么怎么样把这个叫做TAT当中的数据读到这个b data里边呢?啊其实呢,在这儿的话呢,啊,我给大家讲一个,另外一个叫做这个呃,命令嘛,就是读T命令啊,Initial啊,然后什么呢?叫做Dollar啊,Dollar啊read啊读嘛me啊H啊,Read是独me me是memory啊,我们就认为那个T是一个memory h是16进制啊,然后他啊,然后是它,那么读谁呢?双引号啊,读的是谁呢?啊,我们读的是一个叫做T,对不对啊,读的是个T啊,那么。
48:40
这个T的话呢,呃,那么这个T的话呢,我们怎么做呢?我们给它一个呃,叫做地址,而T在哪呢?T在这个位置,是不是在这个位置啊,我们把这个复制一下。路径嘛,对不对,然后粘贴,那么对于VR lo来说啊,或者对于叫做这个这个moral来说啊,它认为的路径的反折线是这样的反折线啊,他不认为他认为那个是不对的啊,要反过来,然后反过来之后叫什么呢?我们的T叫什么名字呢?T应该叫做是bin date.tit对不对,就应该是叫做bin date.txt啊然后呢,读到哪儿呢?就读到我们的编data里边,就这一句话就做了一件事,什么事呢?就是说把这个tit里边的这十个啊,十个八位的。
49:37
这个数据啊,我说的八位是二进制来说啊,八个,那不十个八位的二进制数据,哎,这不是读到哪儿呢?读到了我们的b date里边去啊,读到了我们b date里边去好了,那么下边的话呢,怎么做呢。我们在这儿啊,就要再一次去定义一个什么呢?比如说我们定义一个叫做reg的什么呢?Reg的一个叫做三到零的一个地址啊,然后呢,我们来写exam啊,Bin等于什么,BN等于bin date的地址啊,也就是说BND现在有多少个,现在有十个对不对?那我想拿出其中的某一个给了BN,那么BN呢,变成什么?BN就变成Y了啊,BN就变成因为在已经赋值了对不对啊,BN就变成where了,那么这个a drr呢?我们肯定什么从零开始吧,从零一直到来一遍是不是就可以了啊,这样的话就会把BI date的零到九,就是这十个八位都拿出来给B一遍好了,那么这我们接着往下写啊,那么在这啊,我们就initial begin end啊,在这我们也可以写个repeat啊,当然了,在这也注意啊,要先给个ADR一个值。
50:55
第二等于四撇D0好,那么repeat等于几呢?啊repeat完事之后,我们要等于这个九嘛,就等于九就可以了,因为一共有九个对吧,也就是说等于到九,那么首先先延时20,那么你延时20的话呢,也就说a drr会等于这个零,会等于20,然后呢,A drr会等于a drr加上一撇B1,那好了,那么你这样来写的话呢,就是重复九遍嘛,就是加了九次呗,所以加完一第一次的时候等于一,加完第二次等于二,加完第三等于三,等于四等于五等于九,要等于九之后呢,它还没有结束,因为等于九之后呢,对吧,等于九你不不能立刻停啊,等于九之后也要再延时20啊,然后再Dollar这stop好,那么这样的话呢,就干什么,就已经把这个TXT里的数据读出来给到BN date,而这种方式是什么呢?就把BN date里边根据它的这个地址啊,又搞出来给到BN,所以这样的一种方法。
51:55
啊,这样的一种方法就会干什么,就可以说我们就可以啊,轻而易举的读到TXT里面的数据,啊TT里边数据好了,那么下面我们来试一下看可不可以好吧。
52:20
我综合分析一下。啊,那么这个当中的话呢,我们到时候就来好好来看一看是吧,这种啊这种方法啊,一定要记得啊,给你手啊读了一个数据啊,读到这个当中的里边,然后再把它里边再复制出来啊,其实说白了就是先把外界的呃一一堆数据先读到我们内部的一个庞大容器里,然后呢,再根据某些规律把这个容器的数一个一个的给搞出来,是吧,或者按照某些规律给它搞出来就可以了。好,下面我们再来仿真一下啊,看一看啊,这个里边我们写的数是AFFB啊,这数等于多少我也不知道。
53:24
好,下面我们来看一下啊。那么在这的话呢,我们来看一下是吧,那么比如说呢,我们的这个呃,BN我们先不看了,比如我们先看这个BN啊,因为这个BN什么BN是我们读出来数吧,那么BN我们在这给多少呢?我们先给个16进制啊,我们先给16进制,比如说AFFB123678968517A4B6啊这和我们的写的这个数是一样的啊,你看AFFB123678968517A4B6,也就是说你看正好对应的地址对不对,也就是说零地址里边啊,我们把地址也改成,我把地址改成无符号位对不对。
54:05
所以正好零里边是AF,然后它它它一直往后走对不对,一直到这个B6,也就是说呢,现在我们通过这种方法啊,就把这个数,就把TT里的数弄到了TB里啊,然后呢,并且我们还给出来了啊给出来了好了,那么这个是读对了是吧?那么来看一下这个B的话呢,我们也改成这个BI,现在就不要16进制了,为什么?因为这个tit里写16进制的话呢?呃,是因为这个VR log去读tit的时候,只能按照二进制,或者只能按照这个16进制来读,所以我们在这呢,我就没写二进制,我写了一个16进制,那么这样的话呢,我为了验证我输出的时候跟这个文件里边是不是一样,所以改成16进制,但其实呢,它应该改成无负2V才对啊。175对吧,那么这个PG呢,应该改成的是16进制啊,175啊TBN呢,也改成的是无符号位对吧?那么这个这样的话呢,我们就看到啊,这三个数完全一样,并且这个这个BN arrow这个信号呢,永远是低电平,从来没有拉高过,这就证明什么,这也就证明了啊,我们的这个设计啊,是没有任何的问题的啊,也就是我们现在可以读什么,可以读这个叫做啊tit了啊,可以读这个T了,那么我们读这个T呢?呃,有什么好处呢?所以这就方便我们后边什么呢?方便我们后边去做有很多的事情啊,比如说呢,我们到时候用IP来处理图像,或者我们用IP来处理这个通信啊,用这个各种波形啊,或者各种数据啊,我们都可以用MATLAB把它干什么,把它给生成出来,然后呢生成T的形式,然后呢,我们用这个malo的方式把它给读到这里边,然后呢在这里边进行处理,那么处理完事之后呢。
55:48
那处理完事之后呢,这个数据在哪呢?这个数据就会在啊,我们想要的啊这样的一些地方啊,就是说比如说啊这个BCD就是我处理完之后的啊,就处理完之后,那么今天的话呢,我们先不讲啊,今天我们先不讲什么呢,今天我们先不讲这个。
56:05
这个如何啊,这个如何是这个这个这个这个这个就是比如说啊,MATLAB已经产生TXT啊,我们welob已经能读里边啊,然后呢,并且经过一些呃这个处理,然后呢,也显示到波形上了,那么这个我们先不讲,我们放到明天讲吧,就是说如何呢,把这个就是vrlo啊这个仿真呢,所产生的一些数据呢,能够也弄成一个类似于文件的形式,或者说我怎么样把这些数据呢给保存下来,然后呢,保存下来以后干什么?哎,送给谁呢?送给这个MATLAB去做处理。啊去做处理啊,比如说后边我后边的话呢,我们会有专门的来讲图像的时候,我们怎么做呢?我们会这么来做,比如说呢,我给大家用MATLAB来生成一副什么呢?来生成一幅,就是带有很多噪点啊,带有很多这个这个这个不好的这样的一些点的一些图片,然后这个图片的话呢,我会把它生成这个数据啊,然后呢,用vlo来处理,然后处理完事之后呢,就是一堆数据,然后我把这数据呢,再读到MATLAB里边呢,再恢复成什么,哎,再恢复成这个这个这个图片来看一下的效果,那么这样的话就证明什么,就证明我们IP这些中间呢,哎,是起到了这样的一个叫做这个作用的啊作用好了,那么呃,这个是什么呢?这个是一个,呃这个这个这个方法啊,今天随这什么,今天就只讲了一个Dollar,就是Dollar display,就是说它能够去呃打印一些东西,打在哪呢?它就打印到这个地方了啊,打印到这个地方上来了,好了,那么这是第一个打。
57:43
A,那么第二个的话呢,就给大家讲了几种叫做测试方法是吧,比如说呢,呃,A变换是吧,比如说从前边到后边是A变换,那么这个变换不知道对不对,那么有两种方法,第一种法就逆变换回来,那么看这两个元数据一不一样,那么还有一种方法什么呢?就是说再找另外一个变换,再变换过去,看这两个结果一不一样,当然了,这种测试方法呢,都可以去用,但是有个前提就是你一定要确保另外一个变换是完全正确的啊,另外另外变完全正确,要不然的话呢,呃,这个你就测试不出来了,那就测试不出来了,那那么在这我们还讲什么呢?还讲了这样的一种测试方法,比如说呢,数据比较多的时候呢,我们也不能够一个一个去对,对吧,不能够一个对,那怎么办呢?用这种方法啊,就是说它俩相等啊,就是为零啊,它俩不相等啊,就为什么就为幺,那么这种方法的话,就是只要出现它为幺就证明什么,就证明已经是错了。
58:33
就这明听错了啊,它为零啊,一直为零就证明它俩一直相等,所以呢,呃,用这种方法有什么好处呢?我在这儿测试5000个,5万个,我测试多少个,我只需要看一件事就是什么,就是这根线有没有拉高,那看起来也不太方便,那怎么办呢?所以我在这根线拉高的位置啊,给了一个Dollar,就display test arrow,什么作用呢?就是说只要我一仿真之后,这个波形是啥我都不带看的,我直接放到这儿,只要这儿打出来test就证明我做错了,只要它打出来test right就证明我做对了啊就是这样的一种方式,那么再往后边呢,就是说以这样的一个叫什么,就是读写文件啊,今天我们只叫了读文件啊,就是说如何啊,从外部的tit的文件啊,把tit文件的形式给读起来,那么在这来说一下啊,Tit文件的格式啊格式啊,像这种写啊,从上到下啊,一步步这样来写就可以了,那么这个是零地址,一地址一直到九地址啊,那么在写的时候呢,我们只能要求用16进制来写和用二进制来写,不能用别的写啊,那么在这儿的位宽一定要能够确保,比如在这儿的是十个。
59:43
八位的,所以你这里边呢,一定要有十个八位的啊,叫一一对应一下啊,一一对应一下啊,这都是八位,因为16进制的数法就是八位的啊都是八位的,好了,那么这是我们所做的,呃,就是说呢,因为这个二转VD比较简单对吧?所以在这儿我给大家来加了一部分的这样的一个叫做呃呃新的内容吧,啊主要是什么?主要是关于TB的啊,主要是关于TB的好了,那么呃,我们今天的第二个任务是什么呢?
60:13
大家还记不记得我们在最开始的时候呢,我们给大家讲了这个东西之后呢,我们带大家看什么,看了很多的这个其他的工程,就是说用的这个叫做呃,逻辑量的多与少,对不对啊,叫逻辑量的多与少啊,那么呃,一共这三行代码啊,用了164个资源,那那但是呢,呃,你不管说他用了多少资源吧,反正呢,他完成了一件让我们觉得比较牛逼的事情,就是说啊,这个外部的数字啊,这个数字啊,就是说二进制数字可以转成什么,可以转成这个bdma显示了,那么这种啊,它的作用啊在哪儿呢?就是说能够和人机交互了啊,就是说它能够把机器的代码搞出来了,那好了,下边的话怎么做呢?我们再一次啊,需要把它给关掉。
61:05
啊,然后干什么去呢?然后我们去做一个,呃,另外一件事啊,因为我们现在不是做了这种二进制软BD了嘛,对不对,那怎么做呢?我们就去看一看啊,我们就去看一看啊,就是我们所做的第三版的这个按键计数啊,它可不可以摁到九之后再摁一下就变成什么就变成。这个十了,而不是变成什么,而不是变成这个A了啊,而不是变成A了,我们来看一下。呃,第三版。在这儿,那么这个第三版的话呢,我们还是老规矩啊,就把第二版的RT全都偷过来。好,复制一下。
62:13
好,那么下面呢,我们来新建这个工程啊,所以大家一定要明白啊,这个最耗费时间呢,最费劲在哪?最费劲就是说你不知道这个东西该怎么做。啊,以及呢,你知道怎么做了之后老是手残,或者写错啊,或者出了错之后啊,找不到问题在哪,这个是最耗费时间的啊,多写几行代码的话呢,这个到无关紧要啊,用不了多长时间啊,或者说新建好几遍工程,不要这个也浪费不了多长时间啊,所以说大家呢,不需要这个是在一个里的。啊,应该是256。
63:10
啊,这个的话呢,我好像就没有说像做之前似的给他添加添加进来对吧,所以今天我们现在先做第一件事给你添加进来。好,我们添加进来以后什么都不要变啊,直接就可以综合分析啊。我们这就可以综合分析一下啊,然后来看一下这个这个结果啊,是个什么样子的。
64:08
我们来看一下是吧,这个是个计数器对不对,这个计完数之后是一个八位的,直接给到数码管的这个八位上了啊,然后呢,这边有16个零接进来了啊,那么这个呢,它肯定是不对的是吧?因为按照我们来说,这个地方呢,应该是七到零中间加个模块,然后呢,给到11到零应该给到他对不对,也就是说呢,这个地方是不对了,那这个我们也见证过了啊,如果这样来做的话呢,就是说它会只控制后边两个数码管啊,会变成这个NY9轴再加一变成什么变成是A对吧?那怎么做呢?所以说在这我们要修改代码了。啊,第一件事儿。就是这个name从这个模块出来,输出来,不要直接再给这个数码管了,那怎么办呢?中间应该多一个模块,都怪谁呢?其实多的就是我们刚才做那个二进转D啊,所以呢,在这儿我们需要去返回到我们刚才做的R进转BD的RTL的b two pd复制一下找到k number3RTL。
65:15
粘贴啊粘进来啊,然后呢,我们再把我们的b To Bd这个模块呢。啊,也添加进来。好,那么添加进来以后,我们给它打开对吧,就是它,然后呢,把它给它复制一下。就站到这儿呗,对不对。好,那么BN什么呢?BN其实就是这个number,那么这个BD呢,其实就是什么?就是我们所谓的叫做哎,11位的啊,叫12位的啊,11到零的,比如我们叫做BCD。
66:10
两板对不对,这个才是最终应该显示的一个12位的数,对吧?所以呢,这个值应该怎么办?这个值应该是放到这个位置的,当然了这个地方就变成什么不能是16位的,应该是12位对吧?那应是12位的啊,也就说呢,按照我们的这个,我们先给大综合一下啊,按照我们的报告呢,应该是什么,这应该是变成12位的零,因为我给你就是12位了,这样的话呢,干什么,我就会控制这个第12位,也就是说第三个数码管啊,第三个数码管啊,那么这样的话呢,就不会出现什么,诶,就不会出现我们所谓的这个按完九之后呢是A,然后呢,F完之后呢,才是这个120啊,所以呢,这样的话呢,就方便我们去看了,对吧,我们去看了。我们来看一下它综合啊,综合结束以后呢,我们来看一下它的RTL视图。
67:04
很明显的中间多了什么,中间多了一个,呃,这样的一个叫做边转PD这样的一个模块啊,这样的一个模块好了,那么下边的话呢,我们把它呢,去分配个管角啊,去做个下板。好,那么这个分配管角呢,我去找一下啊。我们好像应该是把这个放大,然后把这个缩小。好,我们来看一下啊,适中适中是E1按键是M16啊,复位是M15啊,然后关于数码管的分配啊,数码管的分配在。
68:05
这。这个这个七是A5呃然后是B8呃然后是A7呃然后是B6呃然后是B5呃然后是A6,然后是A8啊然是B7呃五的话是这个啊,这个是五的话是A4啊,一定要切记,一定要注意啊,五的话是A4呃,这个的话是B4呃然后是A3。然后是B3啊,然后是A2啊,然后是B1,好了,那么这就完事了,其实呢,这个分配管角啊,我们后边会讲啊,我们后边会讲这个一种叫做高级的一种分配方式啊,就比这个要快得多啊,也准确的多啊,但是呢,现在我们先不讲啊,这个我们就先这么用着啊,也无所谓啊,管角多了少了都呃,多了就多分配会,少了就少分配会啊,这个还是可以接受的。
69:22
我们后边再讲这个其他的这个方式。好,那么完成以后呢,我们去做一个下板。嗯,那这这应该是掉了。
70:01
好,我们来做一个下板。好,那么呃,我们下板之后呢,我们来去把它关掉是吧,我们来去看一下啊。那我们来去看一下这个,呃,这个数码管是吧,我们来挡一下啊。呃,然后呢,大家来去按这个按键,变成一二啊3456789啊,那么之前的en变成变成了A对吧,现在呢,En呢变成了10111213141516171819,之前呢,再就变成了1A对吧,再样呢,就变成了二零啊,变成了二零啊呃,所以的话呢,大家就可以干什么,大家就可以这个呃非常简单的能够哦知道啊就是它的一个作用啊,就是说呢,呃什么是BCD啊,为什么要做成BCD啊,就是说它呢和什么它需要你去做这个人机交互的时候呢,因为人呢,你给出一堆二进制数,其实我也不知道等于几啊,那么呃方面显示什么,确实显示的时候,除非你给我显示101010,那我其实我也不知道等几,那么如果你四个一组来显示,就16进制,你显示出来之后,我也不知道等于几,这是一样的,对吧?那么对于我们来。
71:26
怎么做呢?就是说你最好干什么,你最好能够用四个二进制啊,用四个二进制写什么去把这个个位百位给我显示出来,比如前面的四位就是百位,后边四位就是十位,再或者就是个位,这么一看我就懂了,对不对,但是呢,这种呢,是怎么做的呢?所以我们今天就是么,就是说把它的个位,十位百位就干什么都求出来,然后呢,给了某四位,那当然数码管呢,正好是显示四位,四位四位的对不对,所以呢,它干什么,所以它呢,就比较,哎容易的啊,能够做出来这样的一个设计啊,能够做出这样的设计好了,那么呃,下边的话呢,我们来去,呃接着啊写什么呢,接着去写我们的这个,呃,这个这个这个这个呃另外一个啊,就现在我们已经做对了,对吧,也就是说呢,我们的按键技术其实到这就已经做对了,但是呢,我们现在的话呢,还差很多啊,还差我后边的一部分要求,但是我们先不着急啊,我们先来讲第二个问题啊,就是我们今天的这个第二个问题,那么。
72:26
那下面这一部分呢,可能会相对来说,可能会就是有涉及到一部分小的,呃,类似于有点像这个小的算法上的一些东西吧,所以大家很有可能会听着会比较费劲啊,那么在这儿我们来给大家来去讲解一下,嗯,什么呢?首先我们先来说这个叫做第一个问题啊,就是说我们刚才啊用这个叫做法啊,用这个叫做除法求鱼的方式啊,就是我们用这个叫做呃除法对吧?呃和这个求余的方式实现了什么,实现了这个B呢?To这个BD,这个是我们做出来了啊,用了除法和求余的方式,也就是把它的某四位四位啊,就是把它的个位,十位,百位都拿出来啊,然后干什么,然后去做了一个这样的一个,呃,这个叫做这个这个呃。
73:22
转换啊,就说把这个二进制呢,转成了这个BD,然后呢,这个BD码呢,正好呢是四个A组,然后给到谁呢?给到数码管之后呢,也正好是四个A组,大可以显示了,那么呃,但是呢,这个除法求鱼有一个非常不好的地方是什么?就是它利用的这个什么呢?就做资源,就是我们所谓的叫做Le特别多,还占用资源特别多,那么战略资源多呢?呃,是不是什么坏事呢?其实占用资源多与少并不是什么坏事啊,也就是说它能完成这部分功能就很厉害啊,完成功,但是呢,如果说我们有一种方法跟他完成的功能是一模一样的,利用的资源比它还少,那么这样的话也是我们所需要的啊,需要的。那么其实现在的话呢,我们没有去给大家去讲实际分析啊,那么后边我们会讲实际分析的时候呢,我们也会提到这一点,就是这个去做实际分析啊,他呢是过不去的啊,这种出法求欲的方式做实际分析是过不去的,那么这个我们后边来讲啊,这后边讲现在我们就只要说只要知道啊他用的资源。
74:23
比较多,然后我们跟他讲另外一种实验方法,那么另外一种实验方法怎么做呢?那么现在呢,我在这儿给大家来说一下,其实这个呢,呃,原理讲不讲都无所谓啊,但是说呢,呃,我来给大家呢,来去讲一下,大家能够知道啊,就是说不光知道结果吧,也知道什么,也知道中间的这样一个过程啊,那么呃,首先呢,第一个问题就是什么?就是说呃,两个BGD码相加啊,在这个数字路当中是怎么加的呢?比如说呢,我们来算一个啊,就算一个这个132啊加上呃。
75:00
236啊,怎么加呢?啊,这是我们所写一百三十二百三十六对不对,那么对于什么,对于BD码来说是不是这样的,是不是就是0001啊,00110010,这就是132,然后236呢,236是001000116呢就是0110,这没问题,然后它俩相加呢,穿什么就是它相它加变什么变成了1000啊胎相加呢就变成了0110 T相加呢就变成了0011,这加标多少变成了368,也就是说132加236等于368,那这是没问题的,是对的对吧?那这个就很正常对吧?那好了,下面来说一下还有一种什么情况呢?还有一种就是有可能会进位对吧,你比如说呢,137加上138。啊,你比如这种情况啊,你这种情况等于多少呢?我们来算一下是吧,137等于137就是0001啊013就是00117呢就是0111,然后这个呢就是什么?就是0001,然后三呢就是00118呢是1000,好,这相加等于多少呢?这等于1111,这等于多少呢?0110,这个等于0010等于多少呢?等于260。
76:28
这个。等于15吗?二百六十十五吗?所以这很明显不对啊,啊,这很明显是不对的啊,这很明显不对啊,那怎么做呢?那那怎么做呢?所以这个啊,我们就需要啊去考虑一个问题了,那怎么做呢?那为什么会出现这个问题呢?首先第一个问题就是在我们的BCD码当中啊,在我们的BCD码当中的话呢,是它的用四位的二进制去表示的一个十进制数啊,表示十进数,但是呢,当你这两个数相加的值大于九的时候呢。
77:07
如果在十进制当中,一加呢,大于九了,是不是应该进一了,但是在二进,但是在二进制计算当中,比如说我们BD码,BD码呢,它也是二进制计算,那么按照二进制计算,它俩相加的话呢,如果他的爱久了之后会进位呢,它其实并不会进位啊,它并不会进位,那么他不会进位呢,其实这就做错了啊,其实这就做错了,那怎么办呢?就在这儿希望大家一定要知道一个问题,你比如说它俩相加应该等于几呢?啊,就是如果按照正确值来说,它应该等于几呢?诶七加八应该等于几,应该等于15是没问题,因为这个地方它确实也等于15也没问题啊啊但是呢,对于我们BD码来说就不对了啊,那怎么做呢?所以在这儿啊,我们给大家来讲一种方法叫什么,其实在单片机当中就会讲过叫什么叫,对于BCD码。啊,我们知道了相加啊,在BD码啊,相加时啊,如果出现的结果啊,就如果说无论是哪两个BD码的结果,相加大于多少呢?大于九了。
78:12
啊,大于九了怎么办,我们就用调整叫加六调整。啊,叫做加六调整啊,加六调整啊,那为什么要加六呢?其实大家也很容易理解啊,你比如说因为呢,我们四位的二进制,什么四位二进能够表示的一圈就16个数,而对于我们第一来说呢,就是十个数是零到九,对不对?那么当你要当当你要等于十的时候,啊,当你要等于十的时候,那就是说呢,我就要等于什么,我就要等于16。啊,当你要等于11的时候,我要给等多少,我要等于就是17,就是往前进一个,我自己还剩一个啊这种啊是加六调整啊,这个希望大家一定要知道啊,就是加完六之后会得到一个正确的值,比如说呢,你的五加六应该等于11对不对啊,我加六应该等于11啊,但是呢,11什么11应该是1011,对吧?但是呢,我的BD面中怎么可能有11呢?所以怎么办?你给它再加上六,就是加上0110加上六之后等于多少呢?就等于幺,这个等于零,这个等于零,这个等于零,这个等于幺,就等于这个数等于17嘛,而这个幺呢,是进出去了,我们只看最后边个位啊,就是什么是0001。
79:21
也就是说呢,它会等于个位会等于一,所以五加六的个位是不是等于一,是等于一的,这没问题啊,也就是说呢,只要它大于九之后怎么办,我们就给它加六调整,只要大于九就加六调整,只要大于九就加六调整啊,这是在BCD码当中的一种非常常用的一种方式啊,非常常用的一种方式就是加六调整,因为你俩相加只要大于九。啊,只要你大于九就证明什么,就证明你已经是诶加到16进制,或者加到十进制当中不常用的里边数去了,我给你加个六啊干什么呢?让你再变到我的常用的里边去啊,就是这样的一种方法啊,叫加六调整,那么这个加六调整对我们来说有什么作用吗?所以在这儿啊,我们就需要给大家来去讲解啊,这个数啊,我们现在再举个例子啊,让大家再明白一下,交流调整的意思,比如说呢,我们算这个139加上234啊,这在怎么算呢?139应该是000100119是1001,那么二呢是00103是00114呢是0100,这一相加。
80:32
当然了,大家还记不记得啊,如果要相加的话,加法器怎么做?加法器不是先算低位,然后嘛高位进位对吧?那怎么做呢?1011就会出现什么,就会出现1101这数什么,这数是不是大于九了。是不是大于九了啊,大于九怎么办?大于九要加六调整,所以加六加六就是加上0110加完之后等幺幺,这个呢零这个呢零就会进一,就会进一对不对啊,就会进一,所以最终结果就等于这个数啊,就等于这个,那么这这呢,这不等,这就等于啊,这个叫做0110,但是它会后边还会进一个一,所以就最终就会等于0111,前面不进了,对吧,所以就得0011,所以最终会应该这个,这是是373啊,139加234等于373,这是对的啊,这是对的,也就是说的话呢,它会往前会进位啊,只要说诶加六之后,它就因为它已经大于九了对不对,你想啊,最终结果如果要大于九的话,如果最终结果大于九的话,那么它加六一定会大于多少,一定会大于16,而最终后边四位最大的表示数就是15,所以它只要大于16呢啊,大于16呢,或者大于等于16对吧,应该说这大于九,这一定会大于15啊。
81:46
大于15的话,就是说只要大于15最少就是16对吧,那只要大于16的话呢,大于等于十的度就进位对不对,这就出现一个进位对吧?有了个进位好了,那么这就是我们一个叫做什么叫做BCD码当中加六调整的这样的一个呃措施啊,这样的一个措施啊,或者是这样的一个呃,一个设计啊,那么我们今天啊要讲的这个设计跟这个有什么关系呢?其实是这样的。
82:13
我们下面再来去分析另外一种BD码相加的一种特殊运算,我们刚才举的什么,我们刚才举的所有的例子啊,我这举的所有的例子是什么,是不是全部都是什么,是不是全部都是139加234,也就是说他俩什么他俩不一样。就这两个数是不一样的,对吧?那好下边举个例,什么例子呢?我举个数就什么就是说假如说这两个数呢,是一模一样的,那我们举个比如是一模一样,比如说呢,这个234加上234啊,我举这个例子就是说认为这个数呢是一模一样的,一模一样,那么会出现什么问题呢?我们来看一下234就是什么?就是00100011和什么和这个0100加上什么加上就是00100011和0100,就这两数一模一样,那么这两个数如果要是一模一样,加完结果是什么?加完结果就是你看啊就是0001,然后呢就是0110,然后呢是0100。
83:23
那么这个结果是个什么呢?这个结果和这个有什么区别呢?啊,这结果是有什么区别呢?是在这儿啊,就是大家去做设计的时候一定要去明白,比如说在我们的二进制当中啊,就是如果是这个是BD码上加对不对?那如果在我们的普通的二进制,像这样的话,比如说两个数X加X啊,这两个数先加N数,它就等于一个2X对吧?那么如果说我们去做的时候怎么做呢?我们经常会一位。也就是说呢,把这个数它俩一样的,一模一样的下干什么,就是往左进行移位一下就可以实现了啊,往左移位一下就可以实现了,大家来看一下,是不是往左移位一下就实现了,比如这个数往左移位一下啊,就往这边推一下啊,往左推一下是不是什么,是不是就变成了这个数就变成了这个零就挤到这来了,这个零就挤到这边来了,这个零就被挤出去了,是不是就是这样值是不是就是01000110,是不是这个数0110,然后这个呢是100,是不是实现这个功能了,那么这种的话,这等于多少,哎这个这是468对不对,是不是468,那么只要你乘二的话,那么最后一位肯定是零,因为一进来肯定是零,那么你相加两个一要相加不就相当于乘二嘛,对不对,乘二就是左一一位嘛,对不对,哎,乘二就是左一一位啊,乘二就是左移移位,那么这就出现了这个结果啊,就是两个B力数相加就直接左移,但是呢,这个也有一个错误的地方啊,什么错误的地方呢?就是直接左移对吗?
84:52
比如来举个例子,现在什么现在是234加234,就是说当他们俩加的结果不用去进位的时候是可以的啊,不用去进位的时候,这个结果是对的,那好了,下面来看什么呢?下面来看如果用进位呢,就是如果说用进位的话,那么会出现什么问题呢?我们来看一下,比如说呢,360。
85:14
呃,五啊,加上365。比如这个结果啊,比如这个结果,那么他呢,再来意外对不对,比如三百六十九三零零幺幺六零幺幺零啊,50101。是五好了,那么首先我们先按照正常来算啊,00110110和0101这个一算结果这个么,这等于是五加五等于十,就1010,那么1010干什么?1010已经大于了九了,就是十了,所以需要加六调整,那么一加六调整之后就变成加110,加六调整变成多少了,就变成了一个,就是最终结果就是什么,最终结果就是零。
86:00
啊,因为他加完之后等于16嘛。对不对,等于16啊,是等于16啊呃,所以的话呢,就等于全零,全零之后呢,就会进一嘛,这个进一之后结果等于多少,那这个进一之后结果等于多少,结果就等于这个幺,然后这边呢,它就会等于零幺,然后这边呢也是幺,就是1101嘛,那么1101这个数呢,也是大于九的,所以它呢,还得再加六加0110,那么结果等于多少呢?啊,结果结果哪多,结果就等于幺。这个结果也等于幺,这个结果等于零,这个结果也等于零,就是还会进位,还会再进个位啊,那么再进位的话呢,前面那容前面就等于最终结果,这是等于幺啊,那么这个结果也等于幺,这个结果也等于幺,等于三个幺啊,那么在这这个是七嘛,七不大于九嘛,所以就是111,所以最终结果等于多少?等于是730啊,当然了,三百六十五一加呢,就等于两个三百七十五三百六十五一加就于730,这是毫无疑问的,对吧?那么好了,那么我们再来看,那那么如果说呢,这三个数直接去往这边移位啊,去移位一次推一,推一位等于什么呢?来看一下推位等于什么?推一位就先先是后边等于1010。
87:15
对不对,1010,然后呢,前这块呢,等于什么?就等于1100啊,再往前面呢,就等于10110等于这个,那这个数等于多少了,这个数会等于六,这等于多少,这个数等于12就是12,就是它这个数等于这等于十好了,这这数就等于六十二十,这个数也不等于七百三对吧。所以呢,如果说呢,如果说这两个BD板相加,就两个一样的BD板相加啊,那如果他加完的结果当中不存在有任何的进位的情况下。啊,不存在有任何进位,也就是他加完之后不大于九的情况下,那么我们的结果就是往左移位一次就结束了。
88:02
啊,往左移位一次就结束了,那么如果说呢?那么如果什么,如果说呢?你加完的这个结果啊,加完的结果是大于九的啊大于九的,那么要干什么,你就要干什么,就要做加六的调整。啊,加完六之后啊,做个调整啊是这样的,那这六做调整那好了,现在的话呢,我们来这样来做。现在我们来,只要大家明白这个道理了,那么下面我们就开始接着往后去讲,那么呃,我们怎么来去评判最终的结果大不大于九呢?有的人说那你就看加完之后最终结果是不是大于九不就行了吗?啊,最终结果是不是大于九,如果大于九就就加六呗,那好,现在我们来看一下,那么我想知道什么?我想知道在加之前我能不能知道结果大不大于九呢?啊,写错了,大于九应该这样写的,我能不能够知道这个在加之前能不能知道大于九呢?其实就有一个非常简单一个方法就是什么,因为你是两个数相加对不对,你不是两个数相加嘛,毕竟这两个数还是一模一样,对不对,两个数是不是一模一样,那好了,那就很简单一个问题就是什么,就是说你只要看他加之前的数是不是大于四就好了。
89:17
如果它要是大于四,那大于四就是56789 Y只要大于四,那么它俩相加就一定会大于九,如果要小于等于四,加完之后最多等于八对不对?所以就是什么在加之前先判断这个数啊,加之前先判断这个数是不是是不是什么,是不是大于九的。如果加之前这个数啊,不是看加之前是不是大于四的,如果加之前是大于四的,那么结果就一定会大于九,那么如果在加之前它不大于四,那么加完之后呢,一定不会大于九。啊,一定不会大于九啊,那么有了这样的一个前提之后,那么会有什么样的一个作用呢?会有什么样的好处呢?其实呢,下边我们就来了啊,我们来想一个问题啊,也就是说假如说呢,假如说哎,你的几个BD码,然后相加,就是两个BD码是一模一样的,比如说它俩相加,它俩相加它俩它俩都是它们上面和下面都是一样的,那么如果说这一位这一位这一位这三个BD码它都是小于四的情况下,或者都是小于等于四的情况下,那么结果呢,是不会有大于九的存在的,所以那怎么办呢?所以直接干什么?直接把这组成的这个12位数是吧,组成的这个这个12位数是干什么?直接向左移动一位就可以了,因为向左移动一位就相当于就乘二对不对,也就是它每个数都不大于九啊,不大于四,那么你向左移位也不会发生进位啊,最大就等于八嘛,对不对,所以这样的话呢,就是说直接向左移动移位。
90:56
就可以了啊,就是说判断这三个数是不是每一个都小于等于四。
91:02
啊,那好了,那如果要大于四了呢,如果要大于四的话呢,啊,如果这某一个数要大于四呢,它大于四怎么办?它大于四,它加完的结果就一定会大于九,那么大于九怎么办?就是加六调整对不办,那好了,那我还想用一位的方式,那怎么办?所以很简单,就是如果说这个数它要大于四怎么办?我先给它加上三,就是在它没有两个数心加值线先加上三,加上三之后再去做移位。啊,有什么作用呢?其实很简单一个问题,就是你加上三之后再去做一位,那最终的结果是不是相当于是加的是六啊,因为你加了一个三的一位嘛。对不对,现在就是加了一个三的一位啊,加了三了个一位,因为三一位就是六,所以呢,我们最终的结果加六就是大于九的时候,最终结果加六和什么和在一位之前啊,或者说在相加之前,它大于四就加三是一样的啊,是一样的,那在这我们来举个例子来看一下。
92:05
比如说啊这个啊,我们这样这个是这个365加365是两个进位的啊,我们这个太麻烦了,我们举个简单的,比如三百二十四三百二十五加上325,我们来看这个例子,我们来看这个例子,那么如果是这个例子的情况下呢,325加325,我们来看一下,正常算是吧,呃,就是一个00110010和什么和这个叫做这个0101。那就是这样的对不对啊,然后呢,我们再算00110010和0101,然后一加啊,一加干什么呢?一加就会出问题了,出了问题呢,因为后边加位置加成等于多少呢?它等于1010,这个数是大于九的,所以怎么办?所以要加六一加六就变成加1101加变成什么变成了0000,然后呢,前面的加完之后呢,等于什么,就会进个一,这个一呢,就变什么变成正好是0101,然后前面呢,就是这个0110,因为这个呢不大于,所以最多少等于这个六百五十六五零嘛,这个数是对的对吧?也就是也就是说什么呢,也就是说呢,呃,在这最后边呢,它是什么?它是最终的结果,加完之后是干什么?最终结果是加完之后干什么?加完之后是大于九了,所以要加六对吧,那好了,现在我这么做啊,这么做啊,我怎么做呢,我就直接不加六了,对不对,因为它已经大于四了,对不对,所以我在这个数的基础。
93:37
之上我直接给个什么,我把这个数直接给他加一个。三啊,我把这数直接加三啊,因为你最终反正你要加六嘛,我这个数给你加三,下边数加三,那么最终结果是不是还是加六啊,是一样的结果啊,也就是说他就是说说白这个数是A,这个数是A啊,然后呢,最终一算A加A,结果算完之后还要再加上个六,那我还不如直接算个A,先算A加三,然后再算A加三,然后让这两个A加三,加上A加三,其实结果是一样的,对不对。
94:05
那其实结果是一样的,那好了,那么A加三变成什么了?变成了这个,这不是五嘛,A加九变成了八嘛,变成了这个1000,就这个数会变成啊0111。0010和它,然后这个数干什么,我把这个数直接去做一个移位,我把这个数直接做个移位,那么这个数移位移出来等于多少呢?看一下啊,等于0110和零。零。啊和这个这个0010嘛,0010,这接一位等于多少,等于应该是010,后边还多一位什么呢?就是这个低位移进来的啊,这个低位移过来的,因为是移位嘛,这个位会往前进后进到这儿,然后最后呢,剩了一个三个零,然后再移进来一个就是四个零啊那么最终结果就多少,最终结果就等于650就出现了啊所以呢,我们啊去呃做两个BCD码相加的时候,我们可以干什么,我们可以第一种方法就是什么,就是直接硬算。
95:10
啊,直接硬算,然后算完之后干什么,然后算完之后呢,就看这个某一位的这个最终结果有没有大于九啊,如果有大于九的话怎么办呢?就给它加六啊,然后呢,往前该进位进位,该干嘛干嘛就结束了,那么在这的话呢,我们把这个给淡化就是什么?因为我们现在做什么,我们现在做的两个数是一模一样相加啊,就是说我们就要做这个这个这个三就是A加A嘛,我们就要做A加A这个数了,那这个这两个数是一模一样对吧,所以我们就开始往前倒,因为我们知道A加A这两个数如果一样的话,我们可以直接用一位就可以了,我们就不用加了,那么这样用一位是比较简单的。但是的话呢,我们发现什么呢?我们发现说,呃,如果说呢,这两个数呢,加完之后没有大于九的话,直接一位是对的,那如果这两个数加完之后结果是大于九的一位就错了,那我们就来做调整,那就是说就分成两种情况呗,加完之后不大于九的一种情况,加完之后大于九一种情况,那加完之后不大于九的什么,那两个数加完之后。
96:12
不大于九,那就证明什么?证明它本身是不大于四的。啊,整个本身是不大于四的,所以呢,我们说哎,对于BD板来说,如果它某一位不大于四啊,那么就不用动,就是它就这样,如果它这一位要大于四了,怎么办呢?它大于四结果什么呢?它结果一定会大于九,大于九怎么办,就要加六了,对不对?所以呢,我既然算它俩相加,加完之后再加六,那我是不是就可以认为我先给它加上三,然后再去相加呀。所以这样的话呢,就有什么好处,我其实可以加三,加完三之后干什么,加完三之后就直接可以移位了啊,我加完三之后直接就可以做移位了啊,加完三直接就可以移位了啊,这就是我们啊给大家所说的啊,这样的一个啊过程啊,这样的过程啊,也就是说两个数相加,一模一样的BD码相加啊,那么我可以怎么办呢?我们可以直接判断某三某四位是不是大于四的,大于四的就加三,不大于四的就不动,然后最终组成一个结果,然后把这九个什么,把这个结果进行一个移位。
97:14
那就是往左推一位就可以了啊,往左推一位就可以了,这就是一个两个相同的BC啊,BD数相加的一种方法啊,那么这个什么,这个来于哪呢?这个就来源于我们之前所的加六调整,就是说你两个不一样的数加完结果之后是不是大于九,大于九就加六调整,那么现在我两个一样的数,那么我就看什么,就是加之前的数是不是大于四,大于四就加三啊,不大于四就不动,然后呢,直接去做一位。啊,这个做个移位啊,这样就可以出现最终的结果的BD了,那最终结果的BD了,那好了,这是我们今天给大家讲到什么呢?讲的第一个第一件事儿啊,希望大家把这个理解了啊,把这个理解了好,那么下面我们来讲什么呢?第二个问题。
98:01
什么第二个问题呢?现在我们算的什么,现在我们是不是算的,就是说这个叫做什么叫做这个,呃,比如说这个有个BD数是X3X2X1,然后呢,这个呢是也是X3X2X1,也就是说这是一个BD码,这是个BD码,就是说三个BD码相加,加完之后怎么加的,刚才规矩还记不记得判断X1是不是大于四,大于四就加三,X2是不是大于,大于四就加三,X3是不是大于四,大于四就加三,然后干什么?哎,然后干什么?哎,然后呢,加完之后调整完事以后干什么?进行左移移位是不是就得到最终结果了啊,这个是很简单的啊,这个就是刚才讲的这么多,就说这一件事儿,那好了,第二件事儿就是什么?就是说啊,我们只看,如果只看X1所对应的这四个BD码的时候,因为什么,因为是左移一位,或者是两个数相加对不对,那么这两个一样的数相加,那么也就是什么,就是说它的个位肯定是等于零的对吧?就是什么,也就是不能说个位,应该说它的最后一位肯定是等于零的,比如说你看我们来看一下,比如说呢,比如说四位数相加零零。
99:08
幺零或者加20010,或者什么0011加20011,就因为是两个数是一模一样相加,所以最后这两个数啊,最后这两个数相加,要不然就是零零加0000加零等于零,要不然就是幺加幺等于零,所以最终结果一定等于零啊,最终结果一定会等于零的啊,就是最后最后这一位啊,最后这一位一定会等于零的啊,最后这一位一定会等于零的啊,那么呃,从哪也可以体现出来,就从我们刚才讲的规则来说,就是它的是这什么直接左移的对不对,如果你直接左移的话。那么最后一位呢,就是由外面人给你补进来对吧?补零呢还是补一呢,肯定是补零了对吧?一进来就我们说的是补零啊,那么也就最后一位一定是零啊,最后位一定是零,那好了,现在的话呢,我再来说,现在我不算三不算两个一模一样的BD面相加了,我算什么?就是说这两个一模一样的BCD码相加了以后。
100:08
我再加一个数,加谁呢?我加一个数就只有一位。我这个数只有一位啊,就只有一位,比如说这个数是一,或者这个数是零,只有一位,好,那么最终结果应该怎么算呢?有人说把这个BD码,呃,把这两数相加,然后呢,按照你那种方法先做出BD码,然后呢再再去加个一呗,这个一不就是前面全是零吗?那再按照那种大四加三方法去算不就可以了吗?注意啊,就我们去想一种方法,其实呢,这个并不对,为什么?因为很简单一个问题,就是你这么来算太麻烦了,有一种比较简单的方法什么呢?因为说你两个一模一样的BD面相加的话呢,你的个位或者你的最低,为什么最低位一定是零,对不对,而我这边不是加一就是加零。我加零,咱们加完之后还是零,我加一呢。你的高位其实我都不变,为什么?因为你的低位是零嘛,你的低位是零,你加上我的一,最后咱就等于一吧,也不会发生进位对不对,所以呢,这个就比较简单了啊,就加一就是一啊,加一就是个位就变成一加零,个位就是零,高倍都不带动的啊,高倍都不带动的啊,就好比说什么意思,好比是这个意思,比如说你的三百五加上350,然后再再加上八,就是说你就是什么,就能够确保这两个数相加,个位都等于零了,然后呢,你这边又加了一个个位的值,那干脆你就别加了,就告诉你,你就前面两个数算完之后,直接把个位,比如人家算完之后就等于说就等于700,然后呢,你这个就不算,直接把这个就改成八就完事了。
101:39
就这么简单,就不用算了,不用算再700加八了啊,直接就把个位写上去就可以了,因为呢,因为我的个位就一定是等于零的,或者我的最低位已经等于零的,再加上一个你的这一位,你的这位等于几,咱们结果就等于几就行了,那么这样的话呢,就做了一件什么事,做了这样一件事,就是说当两个一模一样的BD码相加的时候。
102:02
然后呢,我再加上另外一个数,然后这个数呢,这个数就只有移位的情况下啊,只有移位的情况下,我就直接左移,那么左移的时候呢,我的个位是不是移成零了,所以现在呢,我个位我就就是最低位不移零了,移什么呢?我就直接相当于把这一位给直接移进去就行了。啊,把这一位直接移进去就行了,啊,直接就移进去就行了,就变成变成三个数相加了,把三个数相加的结果是什么?三个数相加的结果就是他们两个去做大四加三啊就是T大就加三,加完三之后做个一位就行了,那么移万位之后的结果一定是等于最终就是最后边那一位一定是等于零的,但是呢,最后我还要再加上一位,那怎么办呢?所以我往里移位的时候,最后一位就不要移零了,移谁呢?就直接就移最后加那个数,移的是一就是一是零就是就以零就可以了。啊,就这么简单是吧,这么简单好了,那么当讲到这儿的时候呢?啊,当讲到这儿的时候,那么下边我们就来啊去说一下二进制转BD,那么很多人可能会觉得讲了这么多和二进转BD没关系是吧?那好了,下面我来给大家再一步一步的来去写一下啊这个最终结果。
103:16
现在啊,假如说呢,我们有八位的二进制,八位的二进制,编八位的二进制,然后呢,这个八位二进制,我分别用X7 X6 X5 X4X3x2。X1和X0来表示啊,然后呢,它呢,是不是到最后呢,一定会转什么,一定会转成三个BD码对不对,三个BD码,那三个BD码分别什么?就是11到零,不是11到八七到四和三到零对不对。那么首先第一件事干什么呢?我把这都是成零。好,都设置成零,如果我都是置成零的情况下呢,那么我就来举个例子啊,都是成零的情况下,然后干什么,我就做一次运算,什么运算呢?就是说判断它们这三个当中有没有大于四的,就是说把它当成个BD码,就把它当成一个BD码啊,就三个BD码组成的一个大的BD码,就是有三个BD码是吧?然后呢,组成了一个12位的这样一个BD码,那么这个BD码然后呢,我让他干什么,我让他自己加自己。
104:27
我让他自己加自己,他自己加自己,然后再干什么,然后再加上这边有个X7啊,再加上这边有个X7。啊,那么这个加完之后的结果是什么?这个加完之后结果应该就是00000000000X7,为什么呢?因为首先第一个问题就是他们三个都等于什么?他们三个都等于零。那么有大四的吗?没有,那怎么办?直接移位,移完位之后再加谁再加X7,那么我们说了移完位之后加X,因为X1就是除了一就是零对不对,所以呢,干脆就不用加了,直接往里移位就行了,就这样好了,那么现在的话呢,是不是说我前面的B密码就已经变成什么,就已经变成了这种,就是000000000X7对不对。
105:12
然后干什么,然后我把它当成一个新的BT吗。再去做运算。啊,再去做运算,那么我一去做运算,也就是说呢,再判断它它它是不是都大于四,如果大于四就加三,如果不大于四就不动。好了,然后再干什么,然后再次移位,再次一一去移位,移成什么了,因为这个数是零,这个数是零,这个数呢,其实也是零对不对,也不是它一个数应该就是最后一位,不是要就是零对吧,它也不能大于四对吧,因为它除了零就是一对不对,所以在一个位置上变成了0000000000X7X6,就是我把这个X6开始往里移了,变成这种情况了。那么这样一做的话变成什么?就是说你每移动一次,你X7的值就会被扩大二倍,每移动一次,X7就扩大二倍,那么这样的话呢,它是X7,再往它是X6,那再往后就会以X5,再往后就以X,那么也就是说你每移动一次,X7的这个叫做什么?就是它的这个这个这个这个这个数值就会被扩大二倍,每移动一次就会扩大二倍,每移动一次就会扩大二倍。那么当我把。
106:20
一进来第一次的时候,它对应的次幂是2.0次幂,放到最低位了吗?那么当我把这八位都移完了,它对应的次幂多少?对应次幂就是2.7次幂?而正对的它列当中也是2.7次幂,那么分别对应的就是2.62.52.4是一样的,那么我每次去移动的时候呢,出的结果什么?它出的结果就是已经是BD码了,它出的结果就已经是BD码了,也就是什么?也就是说你每次往里移动一次,移动完事之后就会自动换成bdma,移动一次就会换成bdma,每移动一次就换成bdma,也就说你这换完之后,这不bdma还是这样的吗?那我再往后再换另外一个,比如说是00000000,然后呢,是0X7X6X5,好了,到这种情况下,这个数字就有可能会大于四了,万一它是全幺呢,111呢,它大于四了,大于怎么办?它大于四以后。
107:17
那就干什么,它就会直接去干什么,去加三,也就是这个数会加三,加完三之后干什么,加完三之后去再往里移动的时候就变什么,就变成X7 X6 X5这三个数所对应的BD码就算出来了,也就是说呢,你每往里添一位,每往里添一位,它会立刻把添的那一位以及前面那一位的BD码就会算出来,那么我们不断的往里添位,也就是说不断给前面去加它的权重。啊,那么这样的话呢,就是说到最后我们填完正好是结束啊,正好是对的啊,这就是它的一个原理,那么呃,这个的话呢,可能很多人都想不明白吧,然后呢,课下时大家仔细去想一下,那么在这儿啊,这个就是给大家讲了这样一堆的原理啊,那么这个原理如果不太清楚,课下再分析,那么在这儿啊,我来直接给大家说一下这个,呃,如果要是去做,应该怎么来做啊,就在这我们来举个例子啊,根据我们刚才所讲的是吧,我们来举个例子,什么例子,比如现在的话,我们写一个BD嘛,比如BCD的第11到零。
108:27
啊B啊11到八,然后呢是BCD的D7到四啊,然后呢是BCD的三到零,然后是B啊B是七到零,比如什么呢?比如我们边边什么,比如我们边的给我给我给个值啊给个什么呢。比如说给个值是11011101,这个数是多少我也不知道,我就给了1101101,那好了,下面的话呢,这是我随便写的是吧,我他一个初值,然后他们呢,都给零。
109:00
那他们的都给领。好了,那如果他们都给零的话,那我们来看一下啊。啊,他们都给零,首先第一件事什么事呢?我们先把这个结果算一下吧,0101101等于多少呢?我也不知道,找个计算器算一下。呃,程序员。二进制幺幺零幺幺幺零幺十十进制等于221对吧?所以我只要算出来这个数等于二,这个数等于二,这个数等于一,我就成功了,对吧?好了,那好了,下面我来算一下啊,比如说按照我们来说的第一件事干什么?就是第一件事就是说它大于四吗?不大于,它大于四吗?不大于它大于四吗?不大于号,所以统一左移一位,所以这个结果就是00000000000,这个数是幺,对吧?所以要把这个幺移进来,那么这边呢,设了一个1011101,最后移出一位,这边我们用叉来表示。
110:10
好了,那么这样的话干什么?这样的话就证明我已经把第一个幺所对应的X码值算出来了,就是0001吗?对不对,没问题吧,好了,那么下面再我看,那么这个数大于四吗?这个数大于四吗?这个数大于四吗?不大于,所以再往这边移,所以就是。000000000011,这边呢,011101叉好了两个好,大家来看呢,就用这种方法干什么,就相当于已经把高两位幺幺啊,高两位的幺幺已经变成BCD码了。啊,高两位的幺幺已经变成BD面了啊,那么莫名其妙的低一个腰呢,已经变成这个腰了,已经已经变成,已经变成不是这个一了,而是前面这个所对应的这个二了,为什么?因为它的移动一次就加二嘛,那么当然了,你多一位它的权重就会升二倍嘛,所以你往这移动一下也是会多二倍的,那么这个对应的BD码也就出来了啊,对应B码也出来了,好了,那么再往下它大于四吗?它大于四吗?它大于四吗?都不大于,然后再怎么办,再移动零零。
111:19
000000011,这个是零,这个呢是11110叉叉叉好了。做到这了,当做到这儿以后,大家来看是不是高三位的六啊,高三位是不是六啊,好了,我在这儿是不是已经算出来的是006。所以我现在已经把高三位所对应的B记码算出来了啊,高三位的B码算出来了,然后再干什么,然后我下边需要再次做计算,因为我后边还有几位呢?对不对?我需要把所有的B方全算出来,对吧?然后再往后算,再往后算就是这个数等于零,这时候等于这数等于零,这时等于六,那么六大于四呢,它是大于四的,所以怎么办?所以我们叫00000000,它呢,要加什么?要加三对吧?加三等于多少?加三就是1001。
112:09
啊加三就变成这个数啊,1001,然后呢,后边呢,变成11101啊不变啊就是说因为它呢,加了个三嘛,就调整好了之后啊加三点,然后干什么,然后做一位。一变成变成0000000,这边移过来个幺,对不对,是不是幺这边呢,是001,这边再移过来个幺,这边1101叉叉叉好了1101。啊,现在也就是说我们现在把最高位的1101都移进去了,那么我把1101进去之后呢,发现有没有发现我这个131101就是13,也就是说呢,我往里移动了多少位,我前边最终算出来结果就已经是你移动进去那几位的什么BT码了。就说你移动一位,我给你算出来一位,移动一位,我给你算了BD码,所以说你移动了多少位,我就会把你多少位的BD码都给你算出来啊,都给你算出来好了,再往下啊,这个我就不再叙述了,是吧?这是零,这是一,这是三,都不大于四,所以不动好的,然后就直接一位就行了,00000010011,这个呢是幺啊,这边101叉叉叉好了,那么再往后,再往后什么再往后就变成了,就是说11011,就说我现在已经要把这个数变成BD码了,这个数是多少?是27,这数是27吗?
113:30
啊,这数啊,这个数是27吗?就说我把这个高五位吗?高五位都已经转成B密码,那么这个1101是27吗?大家算一下是27啊,它没错,好,再往后呢,这个数就是00000010,这个数呢,由于是七嘛,它大于三对不对,而不是大于四对不对,大于四怎么办?敲三对吧,所以就是1010后边的101叉叉叉不变吗?就是只是把它先调整一下,然后再做一位对吧?没做一位的时候,后边凭什么变对吧?没做,因为它不变啊,它只是说它大于四了,所以要加个三而已。
114:04
啊大加个321好了,然后呢,就是移动嘛,一移动变成000001。零幺,然后这边变成了0101。这边变成了零幺叉叉叉好了,那么现在什么现在现在就是已经把前面的六位都变成了rbd码了,前面六位,什么前面六位是110111,就这个数,这个数是多少呢?这个数是不是我们所谓的55呢?大家可以算一下,这个数应该是55啊。啊,应该是55,应该没错啊。呃,对,是55没错啊,这个数是55啊,是没错的啊,所以的话呢,对于大家来说的话呢,呃一定要知道是吧?那么再往后接着算是吧,再往后呢,就是如果说你只有这五位啊,就是如果说只有这呃这个这个六位,你把这六位移完就结束了,这不就是55算出来对不对,50算出来,但是呢,后边还有零幺还没移完对吧?再移个零,当然了,你移零之前你要知道啊,这个数已经是五了,对不对,五是大于四的对吧?所以要干什么,先加三对吧?对,0000加三。
115:14
加三,然后零幺叉叉叉,然后呢是00010001,然后0000,然后11234567啊然后呢,就还剩最后一幺对不对?最后幺怎么办?最后要再移动办一移动变成了00100010,然后呢0001,然后叉叉叉叉叉叉就是八个叉,所以最终结果等于多少呢?等于221。啊,等于221嘛,所以这我们就把最终结果的221就算出来了啊,那么也就是说呢,我们其实就利用了什么,其实就利用了一种,就是我刚才讲那个方式,就什么,就是两个BD码相加啊,就一模一样相加可以干什么,可以用一位来表示啊,一位来表示,那么你既然用一位来表示的话呢,那你数如果最终结果是大于九了怎么办啊,所以我们就说如果要大于四之后,先这么先加三,我再去做一位啊,我再去做一位就对了。
116:17
啊,再一做一位就对了好了,那么呃,在这的话呢,我们这两个数相加,那么还有呢,我考虑第三个数相加,就是第三个数是只有一位,那么这一位的话呢,因为两个数前面两个数是一模一样的,一加最低位肯定是等于零的,所以呢,我最后一个数只有一位的话,那怎么办呢?我就直接给你拼到那就行了,拼到那就是相加啊,拼到相加,所以呢,我加一回你拼了一个数,我再加一回的时候呢,你又拼了一个数,那好了,你由于你拼第二个数的时候是什么,我就把第一个数已经乘二了。啊,因为你左移一位嘛,左移一位就相当于把第一个数乘二了,所以呢,正好你来一位,我给你变成BD面一回,来一位给你把BD面变一回,所以当你都来完了,正好结果也就是BD码了。啊,最终结果就是BD码,所以怎么办呢?所以就是说这就是一个什么叫做用大四加三的方式实现了二进制软BD里面最重要什么?里边最主要就是说问这几个BD码是不是大于四,大于四就加三,加完三之后干什么去做移位,首先先问是不是大于四,大于四就加三,加完三就一位啊,首先就问是不是大于四,大于四加三就一位啊,所以就一直没来做。
117:25
只有把后边都移完了,那最终结果就不用再去管大S不大S了啊,因为呢,嗯,你在加之前的时候呢,就知道后边有数啊有数,所以我们才先加,加完之后再做一位啊,移位就是把为了把后边的数给移进来,对不对,后边都没数了,那就不用对比了,就成功了,所以呢,在我们这当中怎么办呢?就是说后边数有八位的情况下,我们我们要做什么,就是说要先对比,然后。做一位先对比调整,然后做一位先对比调整,做一位,所以需要几轮的,需要八轮对不对,因为一轮能拉进来一个数,一轮能拉进来一个数啊,所以是这个,那么呃,大家怎么做呢?大家可以说这个,呃去把这个,这个什么呢?去把这个,呃这个结果啊,就是说去把这个,就是说刚才讲的原理你没听明白,呃,无所谓啊,无所谓啊,那么你可以怎么做呢?你可以直接说这个,这个就是去理解什么,去理解就是说我刚才说的这个过程啊,比如说前面都是全零,后面随便写个数,然后你把数先写出来,算出来,它等于多少多少多少就算对了,然后干什么,然后就往前判断,先判断这三个数有没有大于四的,有大于就加三啊,没有的话就往前移位啊,没有就往前移位,然后呢,再一直移完,最终结果就出现了啊,这就是等于221,这就做对了,那么用这种方式做出来的二进制转BD呢,它利用的资源啊,用的资源会比较少一些。
118:52
啊,用的资源会比较少一些啊,那么后边我们做实际分析的时候,也会发现它的速度也会相对来说比较快一些啊,那么呃,这个呢,我们今天呢,主要是什么?主要是把这个原理给讲了啊,那么呃,在之前我上课的时候,一般这个不讲这个原理,就直接就讲操作啊,直接就讲这个操作,就把这个操作还是蛮简单对吧,先判断是不是大于四,如果大于四就加三,不大于四就一位,然后呢就来八轮就结束了。
119:18
还来八轮就结束了,所以这个呢,就是如果只讲操作会比较简单啊,那么呃,前面呢,花了很长时间给大家干什么,给大家讲了这个原理啊,给大家讲原理,特别是呢,我在讲这过程当中也跟大家说了,就是你往里移动一味移动一味儿移动一味就干什么,相在于就是你移动这一味儿的时候,就直接我就会把什么会把你的叫做这个,呃,所对应的BCD码我都已经给你算出来了啊,就你移动一半我就给你算FBD,移动一会就算FBD,而你移动就什么,就意味着就把前面一进那个数呢,就已经扩大了二倍啊,扩大了二倍,而对应的BD面来说也是很简单,比如这个数是一对不对。那如果说它后边再添了一位,这个数就不不代表一了,代表代表二了,因为代表一乘以二的一次幂了,然后面添了个零怎么办呢?就不代表。
120:04
刚才那个二代表四了,再加一位他不代表八了,再加一位代表十,这个这个16了,再加一位代表32,再加一位就代表64,再加一位代表128了,所以呢,你后边每加一位,他自己的这个叫什么,他自己的这个这个这个个权重就是扩大二倍嘛,这就是数,这就是叫做这个二进制的一种,这个这个这个这个规律对不对,那当然也是一样,你把它弄到BD码当中了,那么它呢。也会扩大二倍,你扩大二倍的,最后BD码呢,跟前面是一样的,所以这很简单的问题,什么就是通过这种方式,我们就可以把二进制转成BD了,是吧,把二就转BD了,那么这个转过程呢,是一步一步转啊,就是先转高位再转低位啊,然后呢,都是对应的啊,都是对应的。那么。今天呢,就主要是这个原理啊,今天主要是这个原理,那么。
121:00
呃,那么这个呢,我一会儿呢,把这个文档啊,把这个我应该手里有个文档,我把这个文档呢,简单的整理一下,然后呢,这个呃,发给大家,然后大家可以看一下这个文档,然后配一下咱们这个视频,好好的来去这个听一下这个原理,然后呢,今天就讲到这儿吧,然后明天的话呢,我来把这个操作用咱们的代码来实现了,然后看一看结果对不对,好吧。好了,下面来看看一看有没有什么问题好OK是吧,好,那么一会儿我来整理一下啊,整理好了发给大家,好吧,那今天就就这样好吧,估计这个也就迷迷糊糊的是吧,课下好好看一看啊,课下好好看一看啊。好,那今天就这样。
我来说两句