集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: lcytms

跟李凡老师学FPGA之D02:EDA建模、HDL描述语言(20160424课堂笔记)

[复制链接]
 楼主| lcytms 发表于 2016-12-11 23:06:44 | 显示全部楼层
1053
        门级的描述加上具体的地址就会得到网表,得到延迟特性,这个呢描述的是相同的电路,描述的方式不同,抽象的层次不同,gate level更接近于具体的描述。
        真正下板的时候呢,还要具体到开关级。
        所以说呢,越往下面的描述就更接近具体,越往上面就更接近抽象,这种从抽象到具体的描述,这种层次结构呢,在很多教材里,我们都称之为抽象的层次讨论。
        最高级的抽象,可以是系统级的抽象,从需求和概念上进行抽象。
        另外,可以从算法描述进行算法级的抽象,或者是框图描述的架构级抽象。
        以及我们源代码描述的,HDL代码描述的寄存器RTL级的抽象,更进一步的,由EDA的机器决定的门级抽象和开关级的抽象。
1054
        这些呢,抽象层次的划分,抽象层次的树,主流是由工具决定的,但是设计者的作为并不大。
        设计者在建模的时候,选择每一级的抽象,算法及以上,架构级以上,这可能和你设计的思路有关,以下的部分大多是由工具决定的。
        但是在米德体系下,就提出了三种非常著名的,非常重要的,设计者可以主动作为的描述方式,就是称之为数据流建模、行为建模和结构化建模。
        所谓数据流建模,或者数据流的description,description本身就是描述嘛,data-flow description。
        数据流的这个描述呢,建模呢,是对资源进行组织,对资源的描述。
        通过对资源的描述,来实现对电路的描述,称之为数据流建模。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:13:02 | 显示全部楼层
1055
        VHDL的数据流建模,它是正宗的米德体系,它做得很好。但是Verilog是商业化行为,商业化行为的数据流建模。
        业界曾经有一种批评,就是认为Verilog的数据流建模做得是很差很少很失败,三个很。
        但是呢,尽管如此,2015以后的verilog呢,做了弥补,虽然它的语法上支持很弱,但是呢,它还是有一些手段,能够解决对数据流建模的支持。
        最著名的,最重要的一个verilog的一个数据流的建模,就是带问号的assign语句。
        我们知道,带问号的assign语句,还可以对资源进行描述,这是唯一的一个。
        另外一种方式,就是称为behavioral description,行为的描述。
1056
        2000年之前呢,EDA的教材上呢,或者说在EDA界值得欢欣鼓舞的一件事,就是引入了behavior,引入了行为的statements,语句。
        当时的人们有这样的感觉,EDA的设计者,因为在之前,EDA的设计呢,总要考虑what to do和how to do。
        既要考虑它要做什么,也要考虑它的门级实现,如何用门来实现对应的任务的,执行它的what to do和how to do的这个过程的。
        正是由于EDA这个语言的出现呢,引入了行为的语句,使得这种效率呢,得到了极大的提升。
        我们不再需要描述how to do了,我们只需要描述what to do,做什么,这个电路做什么。
        什么是what to do呢?
        就是我只要考虑,如果出现了什么样的情况,电路发生什么样的动作,需要把这件事情描述清楚。
1057
        类似于人类的语言,if怎么样,结果怎么样。
        Case怎么样,结果怎么样。
        想想看,这个跟电路有没有关系,没有任何的关系,或者需要用行为,用behavior来描述,带来的效率的巨大提升。
        我刚才已经解释了,正是由于行为的描述,导致了更多的故事。
        就是2000年之前,我们只要会写行为,就会写EDA,但是2000年之后,写了行为,你不一定能够写出一个很好的电路。
        因为有可能会出现综合的问题,综合不友好,或者说综合效率低下,或者说不可综合。
        那么,行为的描述显然带来了巨大的提升。
        什么是行为呢?
        就是类似于人类的语言,如果怎么样,就怎么样,出现什么样的情况怎么样,我们要怎么样地处理。
        但你做这种描述的时候,你描述了行为,但是行为变成电路呢,如何变成电路?
1058
        how to do完全是EDA,自动化地进行,自动化地进行固然带来了效率的提升。
        但2000年之后也提到了一个特别的问题,除了追求效率的问题之外,就是核心竞争力。
        你不能指望你的行为语句会产生核心竞争力,因为行为变成电路完全交给EDA来做,EDA不可能替你进行创造性的思维。
        它只可能用行为所对应的、尽可能优化的电路结构来实现你的行为,而绝不会根据你的行为产生一个你有而别人没有,人无我有的一种特定的、高端的、更高级的一个电路结构,不可能。
        更高级的电路结构怎么做呢?
        还得回到结构化,structural description,结构化的描述,既描述了what to do,又描述了how to do。
1059
        结构化的描述,可以说,又回到了传统的电子设计的那种思路上,用结构化,用具体的部件,下层的部件来实现上层的部件,这种描述。
        这种描述的方式呢,都在一个电路模型里面,可能会交流,综合地来说,就是在现在的国外的高校的教案里面,大多数都会这样讨论这三种方式。
        就是行为是描述what to do,没有描述how to do。省略了how to do,带来效率的提升。
        而结构化是既描述what to do,又描述how to do,是完整的描述。
        数据流居于其中,它有的时候可以描述how to do,有的时候可以不用描述,居于其中。
        下面呢,我们就通过具体的例子来说明这三种方式是如何实现的。
        并且我们可以看到verilog里面的,它的编译器的一些特征。
1100
        有同学指出来,什么时候声明成reg呢?什么时候声明成线呢?
        这个跟EDA三种建模方式密切相关,密不可分。
        现在呢,我们通过一个例子,通过一个简单的例子,来说明这三种建模方式。
        我们这里通过一个简单的例子来比较,这三种建模方式的相同之处和不同之处,它们的特点。
        我们仍然通过多路器的例子,a输入,b输入,s输入。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:14:22 | 显示全部楼层
1101
        0、1、f。
        f跟a、b、s的布尔表达式是如何呢?
        我们现在就做一遍。
        根据我们的电路的需求,当s为真值的时候b输出,当s为假值的时候a输出,现在我们根据这些描述把真值表绘制出来。
        输入项a和b,s,输出项f。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:15:30 | 显示全部楼层
1102
        那么有三个输入,一共有八种情况。
        我用列模式来做。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:16:46 | 显示全部楼层
1103
        s为0的时候是a输出,s为1的时候是b输出。
        现在呢,根据这张真值表,SOP的最小项,积之和。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:18:42 | 显示全部楼层
1104
        (见图)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:20:25 | 显示全部楼层
1105
        其实用卡诺图也很容易。
        现在呢,我们就来通过三种方式,数据流、行为、结构化,来进行建模的描述。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:21:55 | 显示全部楼层
本帖最后由 lcytms 于 2016-12-11 23:23 编辑

1106
        我同样新建一个文件夹,关闭当前工程,新工程向导,我同样在今天日期下面新建一个mux2,顶层、工程命名mux2。
        跳过第二页。
        第三页,我们仍然选cyclone II这个器件。
        第四页,仿真,语言。
        第五页,finish。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:25:36 | 显示全部楼层
1107
        新建一个verilog,另存为mux2_dataflow.v,我们用数据流来做。
        显然在mux2这棵树上是找不到mux2_dataflow这个果实,我只能把它设置为顶层,否则EDA找不到它,就任何的事情都做不了。
        我只能重新把它设置为顶层。
        建模。
        什么时候要切换顶层,就要看层次这棵树上有没有。
        就象我在黑板上叙述的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2016-12-11 23:27:17 | 显示全部楼层
1108
        搭建框架。
        ctrl-s、ctrl-k。
        现在我们知道框架的重要性。
        mux2_dataflow这个框架。
        然后呢,我们写它的数据流,verilog里面最著名的一个数据流的语句,它的唯一的一个,就是assign带问号的那个。
        这是verilog里面唯一的一个数据流的语句,数据流的赋值语句就是这个,带问号的这种形式。
        以后我们在VHDL的课程里面会讨论到,它的支持要强大得多。
        ctrl-s、ctrl-k。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2024-12-24 03:55 , Processed in 0.063916 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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