粉丝1157获赞4187



大家好,欢迎关注红标微博,同天洛博士同心讲。今天带来的是软件到数字芯片设计, 哎,就说计算机编程序怎么到数字芯片,数字逻辑芯片设计。那我们通过对比类比学习的方法去掌握工具, 对跨专业的学习给他打通。通过案例的这个学习,很多案例 包括 c 元实线,还有对应的柱子逻辑这个模块的设计。最后呢,再 进行这个归纳总结测试的评估。呃,还有包括你学习的,或者说你职业的职业规划辅助的指导。 我们可能是不同的专业背景, 有的是学计算机出身的,呃,这个他容易学会,因为他有 c 语言啊, c 加加等这种语言的这个基础。但是他瓶颈呢是在电路的模块, 电路可能就不会不是特别熟悉哎。所以我们这个今天的导读呢,就是让计算机出身的学生也可以通过这个课 学会。比如说我们的数字电路,数字芯片用到的,用到的这个 vlog hdr 为原,哎,可以掌握。还有电信啊,电子科学,微电子啊 这些同学呢,可能他上手就比较容易,因为他有定的基础,他的平静呢,在算法是吧,我们的电路呢,就是实现你的算法,就是数,实现你的数学 输入,就会通过案例的大量案例的这个讲解啊,就会把算法 c 实现的算法和 vlog hdl 硬件描述语言实现的电路对应起来。 让这些电信电科专业的学生呢,可以可以知道什么算法,用什么电路建了一个连接。还有些 物理数学啊等基础学科。机械啊,自动化学生自动化还好一些啊,就说这种机械电子还好一些,有些纯基础的学生呢,可能他们的基础啊,内功比较好,但是他们的瓶颈呢,在不知道用什么工具啊,不知道用 c 啊。我说不知道用这个 vlog 去设计这个输入电路。 他们对工具,对语言呢,不是很了解哎,也可以通过这个课去掌握 c, error log、 h、 error log hdr 语言。 f 线呢,是学化学生物学,就说可能和我们电啊,计算机啊,这个跨的有点大。也可以通过这个课就记好他们具体比如说哎,应用的场景啊,他们可能去比较了解。然后呢,他们的评比呢,是需要掌握一两种 工具,具体的,具体的在自己的场景上去用。我们这个导读课也会,也会在后续的这个课程里面去给大家介绍怎么去切入这种跨专业,这个 相对跨度比较大的学生,怎么去快速的切入,切切入进去掌握一两种工具。 下面就说到我们这个软件,比如说用 c 实现。然后呢,这个电路呢,数字电路啊,或者数字芯片吧。我们用这个 verlog hdl 描述, 就开始经类比啊,对比的学习。软件设计到数字电路类比啊,对比的学习。比如说加法运算,这里给设几种,几个四个,这个例子 当然不包,不仅包含这四个,还可能有更多的。怎么去这个算法 c 到电路 vlog 加法运算在我们 c a 里面,可能就是加了 c 等于 a 加 b。 当然还有这是算数运算的一种。还有一些逻辑运算,都是借助这个逻辑运算的算则和加和算数运算的算则。实现。 c 可能比较简单,但是具体的在 vlog 里面它 他需要接入,比如加是加法器,那么这个加法器呢?他是一个真实的物理的电路,那么他们应该用什么算子啊,实现啊?或者说他的描述方法和 c 是怎么个区别? 不一样的地方是哪里?它的怎么设计是吧?好讲。还有数组,在 c 元里面,数组包括这个数据类型, 把它整成一个向量,或者叫使量形成一个数组,还要把它存起来。还有 c 元的指针哎。同时呢,在我们这个弯电路, vlog 式的电路里面也要设到这种存存不同类型的这个数组就设到机存器堆, 这个姬存希堆啊,就是要实现这个存的功能。刚才说到加法呀,这种算数运算,或是还有这个逻辑运算是实现算的功能是吧。还有 c 元里边有循环替代这个方循环啊, vivo 循环啊等其余的循环啊, 就这些循环实现了一些,实现了部分的流程控制。当然还有其余的一些流程控制。这种 c 我们看他怎么实现。然后呢,在数字芯片里边,我们怎么去实现这种流程的控 控制,比如说报循环这种是吧?比如说实现这刚才加法,我们可以用雷加气, 对这里的累加器,指的是针对这个 for 去算,比如说一加到十这种迭代用加这种算子没有累加器。电路里边儿呃, vlog 里面儿电路是怎么设计的?还有这个,再分享一个呃算法流程图,比如说我们 c 实现一个算法,还有一个 follow 流程图,管理整个的整个的算法啊。在 vlog 实现的电路里面也有这个有线状态机 fsm 有线有线状态机去 管理啊,这个数字系统,数字电路系统,他更加有顺序也说呢,当当然还有别的这些 算法到这个硬软件,到这个数字电路的这种这种这种描述是吧?据说这里只是给出四个案例。 当然我们学习以后呢,就要对我们掌握的技能啊,进行一些评估了。我们需要准确定位自己学习掌握的程度, 好继续的在学习,或说在职场去定位自己哎,比如说有些哎,入门的是吧,可能基础差一点哎,或说学化学的,或说学这个物理学的, 那么可以通过这后续的课程去入门。同时呢,就说达到一个入门的水平以后呢,也要强化学习,根据我们这个课程啊,强化 对嗯,对比说,呃,这个某一部分知识呢,再去举一反三啊,再去多做类似的程序, 突然学习啊,就说哎,我们掌握了一些基础的这个设计算法啊,电路啊,我们可以把它把它这个集成起来,拓展下我们系统的思维啊。啊,我说 进阶呢,就说我们已经掌握了这种基础的一些税的方法了,税的语言了,知识了。我们进阶就说需要具备在工程上可以去快速的解决落地了这个能力。 哎,我们这时候可以考虑不同设计方案的优点或是缺点,你要考虑到你这个算法到电路,你这个实现这个 算法是不是可以改善你的电路设计出来的是不是速度啊,效率啊,功耗啊,消耗的这个算的,或者存的这种资源是不是更加优化,还有认知大幅度提高, 我们就是对算法本身认知,对我们的算法映射或是转换成电路的性能指标也有认知。认识。 就他俩从软件算法到步子逻辑电路整体的认知我们提升了。主要是对这个最终的电路的性能指标, 我们去关注这个性能指标了。优秀呢,就是我们可以独立的去把把这个算法 变成这个满足指标的电路是吧?我们我们就是以这个最终的我们的性能啊。我说各种指标作为一个驱动去去优化我们的算法,我说去把我们的优化后的算法变成电路,就可以独立的去承担项目了。 最后啊,我们在学习系统训练以后,我们还会进行一些测试啊,评估反馈评估啊,看看你自己在职场的定位,或说你学习的程度如何, 有个清晰的认识啊。好,我们这个导读啊,就就介绍到这里, 大家如果有兴趣可以扫扫这个码联络关注。好,谢谢,再见。


数学中的加减乘除在 f、 p、 g、 a 开发中用法有什么不同?来看一下 very、 log、 h、 d、 l 语言的运算符按功能可以分为九类, 第一种算数运算符。加减乘除大家都比较熟悉,需要重点了解的是取于, 需要注意的是,在进行整数的除法运算时,结果略去小数部分,只取整数部分。 第二种复值运算符,主要是阻塞复值和非阻塞复值。第三种关系运算符。关系运算符和逻辑运算符一般用于条件判断语句。 第四种逻辑运算符,第一个相当于数学中的雨,第二个相当于数学中的或第三个是趋反的意思。第五种是条件运算符,条件运算符是书写效率 非常高的运算符,条件运算符为问号,很像 c 语言里面的问号运算符,它实现的是组合逻辑,或者说就是多路副勇气。条件运算符涉及到三目运算符,三目运算符涉及到三个操作符。后面课程会讲到。 第六种为运算符,为运算符,和逻辑运算符有点相似,大家要注意它的关键词为运算符的每一位都会被运算到, 比如八位拍臂零零幺零幺幺零幺。要做这个操作术进行相与与,只有一位操作符对八位位宽的八位数进行相与,也就是每一位之间都要相与。零与零与结果是零,一与零与结果也是零。一与一与结果是一, 零与一与结果还是零。接下来继续相与零与零与结果是零,一与零与结果是零,最后零与零与结果是零。最后这个八位操作数如果被与的话,他最后的结果就是零。 这个例子是偶数的语法,如果是积数的话会怎么样呢?在后面加上一,因为是积数,所以最后的一不用语,直接一下来,零与一相语的结果还是零, 这就是为运算符的操作方式。来看一下逻辑运算符为什么是两位,相当于是两个整体之间的与, 如 a 等于八位拍 b 零零幺零幺幺零幺, b 等于四位拍四个一,这里的 a 和 b 是两个整体,所以只能用逻辑运算符,用两个符号来表示,这就是逻辑运算 算符和未运算符的区别。第七种,移位运算符,分左移运算符和右移运算符,左移是扩大两倍,右移是缩小两倍。第八种,拼接运算符,它的表现形式是大括号,在使用拼接运算符的时候一定要注意它的微宽, 如果在使用过程中忽略了位宽,就会出现结果上的误差,在仿真的时候会出现一条蓝色的线,出现高阻碳, 在使用拼接运算符的时候,一定先指明他的微宽。第九种,一些其他的运算符,这里不过多讲解。 最后看一下各个运算服的优先级别,这个部分的内容大家作为了解,不用刻意记忆。 在使用一些运算符的时候,需要优先执行某一个运算符,只需要在要执行的运算符部分添加括号即可。优先执行括号属于更高级的运算符,使用起来也非常简单。

呃,本节视频讲一下 vlog mo, 呃, vlog 的一个模块,呃, vlog excel, 它的一个程序呢,都是 由模块来构成的,那么每个模块的内容他都是以摸九为开头,然后以 n 的摸九为结尾的,你所有的内容都必须在摸九和嗯的摸九这两个之间来完成。 那么每一个模块呢,他又有实现一个特定的一个功能,不同的模块他实现的功能肯定不一样,那么模块与模块之间呢?他其实是可以哎相互嵌套的啊,比如说我们有很 多的一个啊,通常意向大家叫子模块,对吧?那么子模块呢?最后呢?可以哎,在我们的顶层中啊,进行一个连接,也就说我们把顶层然后去调用一些子模块,就相当于一个树,对吧?那么树呢?它有我们的树干, 除了树干还有我们的一个树枝,对吧?树枝上面可能还有一些许多树叶,那么比如说我们的树干就可以相当于我们的一个顶层,而里面的枝和叶去相当于树枝,相当于我们那个子模块,而树叶呢,可能就是构成子模块的一些功能。 那么每个模块呢?嗯,要进行一个端口定义,那么在这儿的端口定义呢,后面会给大家讲他分为哪几个端口类型,那么他去说明呢,就是一个 输入和输出口,然后对功能模块呢进行一个呃,行为逻辑描述,行为逻辑描述,当然了也可能是呃,后面讲描述方式,可能有数据流,有行为流就是建模方式。 那么 vlog 的书写格式呢,非常的一个自由,就说不会像其他的一个语言,它有一些它固定的必须这么写,那么在我们的 vlog 的语言中呢,它不会有特别大的一个限制性 啊,可以写的很随意,那不同的人呢,有不同的一个风格,那比如说你一句可以写几个啊?或者说一个渔具可以写成很多行都是可以的。那么除了 n 的 model 语句外,每个语句和数据定义的最后必须有 分号,这个是就说你每去写一个语句,他可能后面都会有一个分号,除了 model 和 in the model 之外,那么其中 可以用这个方式,就一个斜杠,两个斜杠中间有星号和点点点,比如中间这个点点点其实就代表你要注视的一个内容,中间这个点点点代表你要注视内容,可以用这种方式去注视。还有的注视方式就是在你的语句前面加两个斜杠, 反斜杠表示注射,这是两种注射的一个方法啊,这种呢啊对程序有什么好处呢啊?比如说你想用不同的方式去表达同一个功能的话,你可以两个方式都写在上面 啊,这种呢也有利于你的啊,程序的一个可读性和可维护性,就是你在后面去实现功能上也比较方便的修改。


barry log hdl 是一种用于数字逻辑电路设计的语言。用 barylog hdl 描述的电路设计就是该电路的 barylog hdl 模型。 very low g、 h、 d、 l g 是一种行为描述的语言,也是一种结构描述的语言。这也就是说,既可以用电路的功能描述,也可以用原漆键和他们之间的连接来建立所设计电路的。 very log 模型可以是实际电路的不同级别的抽象。这些抽象的级别和他们对应的 模型类型共有以下五种系统及算法级、二 tl 级、门级、开关级。一个复杂电路系统的完整白尔洛 hdl 模型是由若干个白尔洛 hdl 模块构成的。 模型是由若干个白尔洛 hdl 模块构成的。每一个模块有可以由若干个子模块构成。其中有些模块需要综合成具体电路,而有些模 模块只是与用户所设计的模块交互的现存电路或激励信号源。利用 bear log htl 语言结构所提供的这种功能,就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所做设计的逻辑电路进行严格的验证。 very logo hdl 行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于 算法集和二 tl 级的模型设计。这种行为描述语言具有以下功能可描述顺序执行或并行执行的程序结构用延迟表达式或事件表达式来明确的控制过程的启动时间通过命名的事件来触发其他过程里的激活行为或停止行为 提供了条件。 ifs taste 循环程序结构提供了可带参数且非零延续时间的任务。 task 程序结 结构提供了可定义新的操作符的函数结构。 function 提供了用于建立表达式的算数运算符。 virolog htl 语言作为一种结构化的语言,也非常适合于门集合的模型设计。因其结构化的特点,又使它具有以下功能提供了完整的一套组合型原语 提供了双向通路和电阻器件的原语,可建立 mos 器件的电荷分享和电荷衰减动态模型。一种高级的硬件描述编程语言,有着类似 c 语言的风格,其中有许多语句如也语句 case。 如果读者已经掌握 c 语言编程的基础, 那么学习 vera low ghdl 并不困难。我们只要对 barral local 某些语句的特殊方面着重理解,并加强上机练习,就能很好的掌握它。利用它的强大功能来设计复杂的数字逻辑电路。下个视频我们将对 law ghdl 中的基本语法逐一加以介绍。

啊?这个视频给大家录制一个比较简单的呃委挖度底下的一个 ip, 呃,这个 ip 是用来做外设的,瑞赛特用的。 啊,我们知道外设的话呢,呃就是相对于 cpu 来说,他的速度一般是比较低的,所以他需要的那个比赛的脉冲,就像这里这个脉冲他一般时间会要求会比较长一点。 而作为,呃现在主流的这个,嗯芯片的话,它它里面比如说一百兆的时钟的话,它的那个瑞赛的时钟时尚非常短,那外设呢?要求时钟比较长,那我们就可以设计一个小的 ip, 然后来解决这个。 啊这个问题。就是,呃总体上给一个小的一个短的瑞塞子,然后我这边可以产生一个长的给外设用的瑞塞子,我们来看一下他。呃如何实现代码呢?很简单,就 就只有一共就只有这么一点很短的一个蛋吧。然后这边是 thaspanx。 啊,这个代码我在那个认可上,呃已经试了一下,呃用的还可以,但是他是他是通用的,很多地方都可以用。我们来看下代码, 这是外设的一个 reset, 然后里面设置一个参数 nons, 这个 nons 呢就是用来设置你打算延迟多长时间, 要延迟就是多少个时钟周期啊。呃,我默认的是延迟十个时钟周期。 呃,他实际上呢,通过仿真可以发现,你这里如果设置是十个的话呢,最终是要延迟十二个,呃就是比你设置这个值会多两个。呃主要因为是这个底下的算法。 呃能说话他是小于等于吗?他会在大于的时候他才会做跳转,再加上本身还有零十克,所以他就一共会多两个, 嗯,输入信号,就是两个输入信号,一个是 clock 输入时钟,嗯,然后还有就是输入的 reset, 这是低有效的。输出的话呢,就是我们的这个外设的 reset 也是低有效的。 好,然后这是这是这个 ip 的这个输入,然后他内部是这样的一一点弹吧,就是有一个,有一个 ctrl 计算计数器,计数器是用来计数,说我要延迟多少个时钟周期,然后呢 把那个,再把这个瑞赛的再拉高啊,所以做这个用的,然后他进来的话就只有一个凹位子,就比较简单,只有一个凹位子,这个凹位子呢会去 检测时钟的伤生炎和这个瑞塞特的下降炎,瑞塞特如果是下降炎,并且瑞塞特是被拉低了以后呢,我们会把它整个清空,这个康泰给他清空啊,致灵,然后瑞塞特呢也直接就是外设的瑞塞特也直接拉低, 然后等等。这个,呃,正常比赛的提高了以后呢,就拉上去以后呢,这边就开始进入这个技术的模式,技术模式,然后因为每一个科拉科都会引起这边的一个动作技术模式,然后在这里面如果技术值呢小于你,你预设的 小,你预设的这个,那他就就加一,这就是加一,加一技术,然后当他大于了以后呢,就停止技术,这边是自己 给自己复制停止技术,然后这个 outsides, 嗯, output, 这位赛才呢也拉高,这样的话就实现一个完整的。呃,瑞赛的一个延时,然后我们来看一下 taspa 值, test bunch 呢?呃,我们也是先设一个 reset, 设一个啊,设个 clock, 设个 reset, 然后再设一个这个 out reset, 然后调用一下刚才写的这个 ip, 然后烂字呢,我们给设置就是个参数,烂词呢,我们给设置成 八,这个主要是为了好数,八加二等于十嘛,好数,这是他的实力,然后去调用一下这些参数, 然后下来时我们需要给他,呃,做两个动作,一个动作是一个立体动作,就是 执行一次,还有一个动作就是二位子动作,二位子动作呢,就是让这个 clock 始终等于自己的反就每隔五个时钟周期,就是看你上面的这个 timeskill, 这边是一纳苗的, 就是无那秒翻转一次,无那秒翻转一次,然后这边呢,是我们要来设置一下初始化,嗯,克拉克初始化是零,然后瑞赛的初始化呢?先设成一,然后稍微等一下,等个十五个,就是十五那秒。然后呢? 呃,把瑞赛的然后拉低,拉低了以后呢?等待十那秒再直接拉高,相当于从这里到这里产生一个瑞赛的一个一个小脉冲。好,然后我这边又等了二百五十那秒,这个主要是想产生第二个小的脉冲,嗯,同样这是第二个小 脉冲啊,所以他的这个仿真的结果就是这样,就这边是一个小的脉冲,这里也是一样的一个小的脉冲。呃,瑞塞子产生小的下降炎脉冲,然后奥特普特,瑞塞子同步的下降炎,然后延迟上去。这边的这个, 呃,这边的这个数字就是多少个使用周期,我们可以数一下,刚才是八八加二等于十嘛,我们可以数一下,一个,两个,三个、四个、五个、六个、七个、八个、九个、十个,一共十个使用周期,所以他就可以延长了。 所以就说,呃,你可以拿这个 ip, 然后在你想要延迟的任意的一个时间上呢,都可以给他把这个参数设了,然后直接就可以用了,就是很方便的。 好,然后这个视频我们就到这里。