请选择 进入手机版 | 继续访问电脑版

fpga论坛|fpga设计论坛

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

跟李凡老师学FPGA之D100:FPGA 100天总结(20170520课堂笔记)

[复制链接]
 楼主| lcytms 发表于 2017-5-28 21:41:03 | 显示全部楼层
0923
        它的语法结构就是如此。
        但是你写成了reg,不一定得到reg,并不一定综合成这个寄存器。
        这就要猜了。所以说这就是一大怪。
        寄存器要自己猜。
        还有些其它的一些特点,我们同学可以自己总结一下。
        Verilog在语法体系上和VHDL,和任何一种语言不同之处,所以有的时候说Verilog四大怪,八大怪。
        但是为什么讲上帝眷顾Verilog呢?
        随着Moorby他走互联网的应用,他不像VHDL皇帝女儿不愁嫁,他一定要嫁出去。
        他才有钱,他才能生存。所以说他就用了OVI,互联网的Open Verilog International。
        因为OVI是一个开源平台,我们至芯也叫开源嘛。
        开源就是免费的,Moorby他组织了全世界这么一件事情。
 楼主| lcytms 发表于 2017-5-28 21:43:40 | 显示全部楼层
0924
        他写EDA,因为要转型嘛。
        很多项目就受限于此,很多人接触他很陌生。
        Moorby他就说,你写好的代码上传到OVI这个平台上,有点像马云的淘宝,当然它是一个技术平台。
        大家全世界都可以分享。
        这样的话呢,关注OVI的人就会越来越多。
        当关注OVI的人群多到一定程度的时候,大家就会注意到,竟然还有一种这样的语言,它写代码的时候可以这样写,可以非常方便。
        我们刚才讲了,Verilog有很多怪,但是Verilog有很多方便之处,是VHDL没有的,绝对是VHDL不可比拟的。
        Verilog它提供了大量的系统任务,Verilog它的编译器要smart,要聪明得多。
        所以说同样的一段代码,VHDL的编译器的代码量要小一些,Verilog要多一些,要多得多。
 楼主| lcytms 发表于 2017-5-28 21:44:26 | 显示全部楼层
0925
        所以说Verilog会更聪明,更智能。
        这样用verilog的人越来越多。才知道居然有这么一种语言。
        最重大的历史的反转是2000年以后,特别是2012以后,EDA的发展的速度很快,建模的量也越来越多。
        速度越来越快,也越来越复杂。这个时候,建模不是EDA的主要的问题,验证成为一个问题。
        复杂的验证需要很长的时间,并且得不到正确的结果。
        所以说验证理论就应运而生。说到验证理论,我们要说一下我们的夏老师。
        验证方法学提出来以后,也是Synopsys委托夏老师把他翻译过来的。
        但是那本书并不是翻得特别好,这个是实话实说,但是这项工作仍然是夏老师用慧眼把这个验证方法学首先把它引进过来的。
 楼主| lcytms 发表于 2017-5-28 21:45:26 | 显示全部楼层
0926
        2012以后,引进验证方法学以后,验证成为全世界的一个关注点。
        验证就意味着什么呢?我们刚才说Verilog和VHDL的相同和不同之处。
        还有一个就是阻塞和非阻塞,我们在CSS的课程介绍过,那个blocking和non-blocking。
        VHDL嘛,米德的那个体系下面,全部都是非阻塞,因为它要模拟真实的物理电路嘛,它是对真实电路的一个抽象,一个模型。
        当然要把这个模型做成真实的,否则这个模型是失败的。
        我做了一个模型,跟真的电路又不一样,我这个模型就是失败的嘛。
        那么我要这个模型做什么?
        所以说米德体系下面绝对不会干这个事。
        他要做这个模型,就一定要跟真实的物理模型要一模一样,所以说他只有一个非阻塞。
        因为,想想看,两个电路,三个电路放在一起,通上电以后,所有的电路会在同一个时刻发生同一件事。
 楼主| lcytms 发表于 2017-5-28 21:49:49 | 显示全部楼层
0927
        它绝对不会像计算机一样的,先让离我最近的这个板子先做一件事,后面再做一件事。
        第三个板子再做一件事。不可能。对不对?上帝一定会让它同时动作。
        所以说一定是一个非阻塞的进程。
        Moorby由于Verilog里面引用的是C语言,C语言里面引入了进程管理的blocking,所以说他把阻塞带进来了,引进过来了。
        据说很久以后他的团队才发现这个问题,这是很可笑的一个事情。
        阻塞是一个什么意思呢?
        就是有个先来后到。
        要回到电脑上嘛,电脑上无论是单核还是多核,无论是线程还是单进程,那么在执行程序的时候一定是先来后到的,先做一件事,再做一件事,所以说它要用阻塞来描述是比较合适的。
 楼主| lcytms 发表于 2017-5-28 21:50:37 | 显示全部楼层
0928
        当初这个Verilog确实是犯了一个错误,就是一个非常可笑的错误,这样的错误应该来讲还是很多的。
        但是就是这么奇特,反转了。
        你想想看,阻塞用在什么地方?
        用在电脑上是合适的,当它用于描述这个电路的时候,电路综合的时候,是一点意义都没有。
        因为电路综合出来,上帝一定会让它同时动作,所以说一定是非阻塞赋值,是更正确的、更真实的描述。
        描述嘛,D,Description嘛,所以说阻塞是不真实的描述。
        但是反转在什么地方呢?
        验证上。验证它不是综合,验证是把你写的这段代码回到电脑上来做,在电脑上来验证。
        Verification嘛,没有实物,来进行测试,来做评估。
        这种情况称之为验证。
        有了实物,那就不是verification,那是test,测试了嘛。
 楼主| lcytms 发表于 2017-5-28 21:51:24 | 显示全部楼层
0929
        所以说验证的时候,仍然在电脑上,电脑上仍然有个先来后到,到了电脑上阻塞就需要了,所以说VHDL这个时候它没有阻塞,这就麻烦了。
        在验证的时候,VHDL跟Verilog的差距一下子下来了。Verilog本来是他的一个错误,阻塞语句里引进的一个错误。
        还有像我们验证的时候,我们经常说在testbench里面,在验证的时候会有很多种写法。
        它有大量的系统任务可以支持验证。
        它可以用@的符号来对齐上升沿,这个不是它的缺陷,在团队制定的时候,本身就是它的优势。
        这一点到了验证的时候就更有作用了。
        这个时候呢,在验证的时候,回到了电脑的平台上。
        电脑上一定有个先来后到,先来后到的阻塞加上@的符号,所以说它用这种语言来支持一个验证方法学是合适的。
        以至于IEE在2012以后发布的对System Verilog的支持,是继承Verilog,而不是继承VHDL。
 楼主| lcytms 发表于 2017-5-28 21:59:29 | 显示全部楼层
0930
        System Verilog现在几乎是公认的,就是九九归一,EDA经过了很多,我们看的Quartus工具里面,还有一个AHDL,A是Altera,Altera的HDL语言。
        Altera它也想自己写一个语言,所以说从70年代以后,有很多想法,就是认为Verilog也有缺陷,VHDL也有缺陷,Verilog太随意,VHDL太严谨,有很多想法。
        现在九九归一,System Verilog集合了所有语言的优点,但是它主要的是集成的是Verilog,它肯定了Verilog,Verilog有很多优势。
        尤其是它支持验证,支持验证方法学。
 楼主| lcytms 发表于 2017-5-28 22:05:50 | 显示全部楼层
0931
        这个呢,简单回顾一下语言。
        所以说我们在语言的学习过程中,可以看得到,其中有一些非常有趣的回忆,我们的经验,或者是我们的一个知识体系。
        我们刚刚开始接触的时候,我们同学可能就来问,如何来确定,什么时候写阻塞?
        什么时候写非阻塞?
        如何来确定哪些信号来声明成reg?
        那些信号要声明成wire?
        什么时候声明成线?
        什么时候声明成寄存器?
        现在大家应该一清二楚了。
        我就不在黑板上写了。
        凡是用行为写的,被行为驱动的信号要声明成reg。
        对不对?
        非行为的就是线。
        就这么简单。
        Verilog团队当时就是这么制定的。
        什么是行为呢?
        behavior。
        你要写成行为也很好记,在VHDL里面呢,有两个行为体,凡是行为语句,类似人类语言的描述,如果怎么样,结果怎么样。
 楼主| lcytms 发表于 2017-5-28 22:06:53 | 显示全部楼层
0932
        在什么样的情况之下发生,我们的结果怎么样?
        case怎么样,结果怎么样?
        这个是用人类的语言来描述电路,称之为描述电路的行为。
        而这个电路具体如何实现呢?
        交给综合器,由综合器去实现。
        所以说行为语句的引入,使得HDL语言,使得EDA的设计得到了长足的发展。
        我们的EDA工程师不必就一个一个的细节,来搭建它的门结构。
        不必了。
        你只要把高端的行为描述出来。
        行为的语句,在Verilog也好,在VHDL眼里面也好,必须要写在单独的框架里面,EDA的软件才能识别你的行为语句。
        Verilog有两个行为的框架,一个是always,英语的含义就是永远、总是、一直,实际上我们知道它就是一个框架,不用从语义上去理解,它永远在做什么,永远在执行什么。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|FPGA论坛 ( 京ICP备20003123号-1 )

GMT+8, 2021-10-29 00:47 , Processed in 0.064369 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表