lcytms 发表于 2017-5-28 22:08:33

0933
        不是,而是说这段行为你必须写在always的框架里面,always之后的begin块里面,这个EDA才知道这是一段行为语句。
        否则他不做行为处理。
        If的时候它也可以做其它方式的处理。
        还有一个行为框架,就是初始化行为框架,initial,initial语句也是行为。
        initial语句我们大多用于非综合,但是也可以用于综合。
        凡是写在这两个循环行为体,一个是always,一个是初始化行为体,一个是循环行为体。
        凡是写在这个行为体之中的,就是行为。
        或者说行为语句,你只能写在行为体里面,写在外面就没有用,它也会报错。
        写在行为体里面就是行为语句。
        行为语句被驱动的信号,就要声明成reg。
        非行为的,除了这个之外的,就是线,就这么简单。
        关于阻塞和非阻塞呢,其它的语言嘛,我们看一下书都知道,什么样的情况之下用阻塞,什么样的情况之下用非阻塞?

lcytms 发表于 2017-5-28 22:17:06

0934
        一种现代的观点是这样的,我们说过,阻塞是Verilog的团队它带来的一个缺陷,但是现在反转了。
        如果你是写综合,你的目的是写成一段可综合的代码,这段代码你要变成网表,要装到FPGA里面去。
        这是用于综合目的的。
        VHDL没有问题,全部都是非阻塞。
        你的Verilog是用于综合目的的,这个时候现代的观点认为,全部写非阻塞。
        当然它语法上有限定,像assign语句,它的语法上只能是阻塞,所以说你就不能写非阻塞。
        因为语法上嵌套是报错的。
        也就是说在行为语句,always语句或者是initial语句里面,不包括数据流,数据流是规定了只能是阻塞,只能是等号,没有变的。

lcytms 发表于 2017-5-28 22:17:43

0935
        语法结构就是这样的。
        如果你的这段代码适用于写综合目的,是要变成网表,要下载到FPGA里面去的,变成电路的,写行为语句的时候,现代的观点是说,全部写非阻塞。
        你要写综合的行为,全部写非阻塞。
        一定正确,验证正确,下板也正确。

lcytms 发表于 2017-5-28 22:18:55

0936
        如果你是用于非综合目的的,是在电脑上用的,在电脑上做评估、做第三方分析、做验证,这个时候就要分析了。
        有的时候需要写阻塞,有的时候需要写非阻塞。
        当你需要验证的时候,验证的平台要像真实电路那样做,没有先来后到,同时做,你就必须写非阻塞。
        如果做验证的时候,你希望一件事情先发生,一件事情后发生,你就写阻塞。
        也就是说这个时候,阻塞和非阻塞区别在什么地方呢?
        你准备是写综合还是非综合呢?
        综合全部用非阻塞,用于非综合目的的时候呢,跟真实电路同时动作,用非阻塞。
        有先来后到,用阻塞。一句话,尽可能地用非阻塞。
        当你用行为语句写综合代码的时候,尽可能地用非阻塞。

lcytms 发表于 2017-5-28 22:19:36

0937
        一定没有错。
        问题是写非综合的时候,就有很多讨论了。
        然后呢,我们的工具学习。
        这是语言体系,我们重点是Verilog。
        VHDL介绍的不多。
        我们学了哪些工具?
        我们学了Altera的Quartus工具。
        Xilinx的ISE可能适当的时候也做了一些介绍。
        我们使用了Matlab这个工具。
        像跟Quartus对接的Modelsim这些工具,我们都做了一些介绍。

lcytms 发表于 2017-5-28 22:20:06

0938
        特别是Quartus这款工具,我们也要简单说一下,这是Altera的工具。
        Altera跟Xilinx这是两套码制,所以说这个世界很疯狂,语言里面现在有两种语言,工具也是。
        还有很多半导体产商,中国现在也在起步。
        所以说肯定会有很多的平台。

lcytms 发表于 2017-5-28 22:20:43

0939
        但是呢,有一件事却是固定的,就是正确的东西是收敛的,所以说我们无论看Xilinx也好,Altera也好,最终他们发展的方向都趋近于一致。
        说明研究结论是收敛的。
        但是风格还是各有不同。
        Quartus是Altera的综合开发环境。
        ISE是Xilinx的综合开发环境。
        业界对这两者也是有区别的。
        前面我们讲了Moorby和米德的故事,现在是Altera和Xilinx的故事。
        可能这次Intel收购了Altera之后,会对Altera的大学计划以及宣传策略还会稍微有一些影响。

lcytms 发表于 2017-5-28 22:21:23

0940
        因为到目前为止,他们团队的变更,对新的市场的对策,现在还没有看见。
        这期间会有一些空白。
        Quartus这款平台是Altera引以为自豪的,它是2002年进行了一次再版,把一代固定到二代,从它的stratix到stratix II,按照这个序列发展下去,基本上定型了。
        Quartus II就没有变化了。

lcytms 发表于 2017-5-28 22:22:02

0941
        在这款工具里面,可以用它的编辑器,可以写代码,可以做综合,可以做时序分析,可以做优化。
        优化我们介绍的并不多。但它内部有。
        可以做时序收敛。一系列。
        一个集成的开发环境。
        其中对我们设计而言,一个比较关注的是什么呢?
        编辑器是比较好用的。
        很快11.0之后,Altera有一个策略,因为它有大量的IP核,它有一个OpenCore Plus,Xilinx也有。
        吸收了很多可重用的代码。

lcytms 发表于 2017-5-28 22:22:42

0942
        这些IP核里面有大量的第三方的知识产权,第三方知识产权要得到保护,就启用了一个OpenCore Plus的一个组织。
        我们SDRAM的课程里面介绍过,加入这个组织以后,Altera会把它的代码的原文,用128位的秘钥,AES的秘钥来加密。
        这样的话呢就看不到原文,用户你可以使用,但是看不到原文。
        并且呢,需要license的许可。
        Quartus使用这种方式来保护它的知识产权。
        以前上课的时候我们知道,如果用户要使用这个IP的时候呢,有一件重要的事情必须要做,要做验证,要仿真。
页: 1 2 3 [4] 5 6 7 8 9 10 11 12 13
查看完整版本: 跟李凡老师学FPGA之D100:FPGA 100天总结(20170520课堂笔记)