芙蓉王 发表于 2016-12-12 16:25:38

                         感谢楼主分享

lcytms 发表于 2016-12-18 22:28:22

1129
        设置好仿真。
        在verilog里面,什么信号应该声明成reg,什么信号应该声明成线呢?
        是一个老生常谈的问题,但是现在我们讨论了。
        实质上,我们做了今天的学习,就应该非常清楚这件事情,而且永远不会错。
        就是你只要记住这样一个事实,是行为语句的输出就声明成reg,没有错,非行为语句,除了行为语句,其它的任何语句,就是线,这是很好记的。
        在行为语句的代码里面,有一个信号出现在赋值号的左侧,这个信号就一定要声明成reg,非行为语句就是线。

lcytms 发表于 2016-12-18 22:30:05

1130
        查看仿真波形。
        现在我们看到,当s为低电平的时候,是短周期的a输出,当s为高电平的时候,是长周期的b输出。
        和我们之前数据里做的完全相同,不同的描述得到不同的结果,这个呢就是行为的描述。
        行为是一个非常重要的描述方式,带来效率的提升。
        在做行为的时候呢,我们也注意这两件事实,一是它的可综合性,要做到综合友好,得知道什么样的行为,得到什么样的代码。

lcytms 发表于 2016-12-18 22:32:49

1131
        反之,你需要什么样的电路,用什么样的行为语句来描述。
        我们稍后会有一门课程,称之为CSS,coding style for synthesis,就是面向综合的编码风格。
        这门课程会精确地讨论,what statements,what circuit,反之,什么样的电路,用什么样的代码描述。
        一定要有这个知识,你才能够把综合写好,做到综合友好。
        下面呢,我们来写它的结构。
        也就说,行为语句的时候,是真正做到了只描述what to do,而没有描述how to do。
        可是结构化的时候,显然是既要描述what to do,也需要描述how to do。

lcytms 发表于 2016-12-18 22:35:05

1132
        并且真正是站在电子电路设计的角度上,有点还原到返璞归真了,回到原始的设计上。
        但是呢,虽然它的效率降低,但是它却带来了核心技术,带来了创造力。
        一些竞争性的想法,具有核心技术的想法,具有专利的想法,是在结构化上实现的,现在我们就来做它的结构化。
        同样是这个双输入与门。
        结构化就意味着what to do、how to do都要结合,how to do就是如何用电路来实现,这个时候回到了事情的本质上,需要这个布尔表达式,F=A•~S + B•S。
        what to do只描述了这么一个事实,S为真值的时候B输出,S为假值的时候B输出。
        但是如果how to do呢,要回到本质问题上,要用逻辑门来实现。
        根据这个布尔表达式,有两个与门,一个或门,一个非门,两个逻辑要用类似的逻辑门来实现。

lcytms 发表于 2016-12-18 22:36:45

1133
        两个与门我们绘制出来。

lcytms 发表于 2016-12-18 22:40:24

1134
        现在才返璞归真,回到了电路设计的本质上。
        这张图的电子设计的思想,是用逻辑门来实现的。
        逻辑门来实现how to do,如何来做这件事情。
        What to do的语言描述,how to do的语言描述,结构化。
        那么我们把这段代码做出来,这段代码呢,我们用verilog的底层原语。
        底层原语它支持非门、与门、或门,甚至与非、或非,它都支持,门级原语。
        我们需要做的呢就是,输入信号有了,已经声明出来,然后呢我们还需要把它的实例声明出来。
1135
        实例呢,我们把反相器的实例名标为U1,然后呢,U2、U3、U4,然后呢,这个构成了结构的部件。
        这个部分就是我们的mux2。mux2的建模,出了这个方框的,就是端口,在方框内部的,就是中间信号。
        同样新建一个,另存为mux2_structure.v,我们用结构化来做。
        使用结构化的时候呢,也必须设置为顶层,然后一仿真的时候,综合的时候,EDA支持它,这个时候才能在Hierarchy这棵树上找到它。

lcytms 发表于 2016-12-18 22:42:40

1136
        我们刚才已经说了,凡是行为输出的都是reg,非行为的都是线,所以说呢,这些信号肯定都是非行为的。
        中间信号有三个,分别是s_n、bs、as_n,然后呢,我们来做它的门级原语。
        门级原语,首先写它的非门。

lcytms 发表于 2016-12-18 22:44:34

1137
        非门的门级原语就是not,是u1,第一个参数是输出,其它是输入的重载。
        然后呢,我们再准备与门and,是u2。
        还有u3。
        或门,u4。

lcytms 发表于 2016-12-18 22:45:55

1138
        填写参数。这就构成了结构的顶层的代码。Ctrl+S、Ctrl+K。
页: 1 2 3 4 5 6 7 8 [9] 10 11 12 13 14 15 16 17 18
查看完整版本: 跟李凡老师学FPGA之D02:EDA建模、HDL描述语言(20160424课堂笔记)