EDA技术课后答案Word格式文档下载.docx
《EDA技术课后答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《EDA技术课后答案Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
描述语言在逻辑描述方面有什么区别?
常用的硬件描述语言有VHDL、Verilog、ABEL。
VHDL:
作为IEEE的工业标准硬件描述语言,在电子工程领域,已成为事实上的通用硬件描述语言;
逻辑综合能力强,适合行为描述。
Verilog:
支持的EDA工具较多,适用于RTL级和门电路级的描述,其综合过程较VHDL稍简单,但其在高级描述方面不如VHDL。
ABEL:
一种支持各种不同输入方式的HDL,被广泛用于各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模的可编程器件的设计。
1.9目前比较流行的、主流厂家的EDA的软件工具有哪些?
这些开发软件的主要区别是什么?
目前比较流行的、主流厂家的EDA的软件工具有Altera的MAX+plusII、Lattice的ispEXPERT、Xilinx的FoundationSeries。
1.10对于目标器件为FPGA/CPLD的VHDL设计,其工程设计包括几个主要步骤?
每步的作用是什么?
每步的结果是什么?
第一:
需要进行“源程序的编辑和编译”—用一定的逻辑表达手段将设计表达出来;
第二:
要进行“逻辑综合”---将用一定的逻辑表达手段将表达出来的设计经过一系列的操作,分解成一系列的逻辑电路及对应的关系(电路分解);
第三:
要进行目标器件的“布线/适配”---在选用的目标器件中建立这些基本逻辑电路的对应关系(逻辑实现)
第四:
目标器件的编程下载---将前面的软件设计经过编程变成具体的设计系统(物理实现);
最后要进行硬件仿真/硬件测试---验证所设计的系统是否符合要求。
同时,在设计过程中要进行有关“仿真”---模拟有关设计结果与设计构想是否相符。
设计基本流程如图1-1所示。
1.11名词解释:
逻辑综合、逻辑适配、行为仿真、功能仿真、时序仿真。
逻辑综合:
逻辑综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形的描述,针对给定硬件结构组件进行编译、优化、转换和综合,最终获得门级电路甚至更底层的电路描述文件。
由此可见,综合器工作前,必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定硬件结构用某种网表文件的方式联系起来。
显然,综合器是软件描述与硬件实现的一座桥梁。
综合过程就是将电路的高级语言描述转换成低级的,可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件。
逻辑适配:
适配器的功能是将由综合器产生的网表文件配置于指定的目标器件中,产生最终的下载文件,如JEDEC格式的文件。
适配所选定的目标器件(FPGA/CPLD芯片)必须属于原综合器指定的目标器件系列。
行为仿真:
在综合以前可以先对VHDL所描述的内容进行行为仿真,即将VHDL设计源程序直接送到VHDL仿真器中仿真,这就是所谓的VHDL行为仿真。
因为此时的仿真只是根据VHDL的语义进行的,与具体电路没有关系。
功能仿真:
仅对VHDL描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件的硬件特性,如延时特性。
时序仿真:
时序仿真是接近真实器件运行的仿真,仿真过程中已将器件特性考虑进去了,因而,仿真精度要高得多。
但时序仿真的仿真文件必须来自针对具体器件的布线/适配器所产生的仿真文件。
综合后所得的EDIF/XNF门级网表文件通常作为FPGA布线器或CPLD适配器的输入文件。
通过布线/适配的处理后,布线/适配器将生成一个VHDL网表文件,这个网表文件中包含了较为精确的延时信息,网表文件中描述的电路结构与布线/适配后的结果是一致的。
此时,将这个VHDL网表文件送到VHDL仿真器中进行仿真,就可以得到精确的时序仿真结果了
2-1
2-3
2-4
2-5
2-6
2.7
3.1比较常用硬件描述语言VHDL、Verilog和ABEL语言的优劣。
1.VHDL:
描述语言层次较高,不易控制底层电路,对综合器的性能要求较高。
有多种
EDA工具选择,已成为IEEE标准。
应用VHDL进行工程设计的优点是多方面的,具体如下:
(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。
(2)VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。
(3)VHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。
(4)用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表(根据不同的实现芯片)。
(5)VHDL对设计的描述具有相对独立性。
(6)VHDL具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。
2.Verilog:
设计者需要了解电路的结构细节,对综合器的性能要求较低。
有多种EDA工具选择,已成为IEEE标准。
3.ABEL:
设计者需要了解电路的结构细节,对综合器的性能要求较低。
支持ABEL的综合器只有一家,ABEL正朝国际化标准努力。
3.2VHDL程序一般包括几个组成部分?
每部分的作用是什么?
(1)三个基本组成部分:
库、程序包使用说明,实体描述和实体对应的结构体描述。
(2)库、程序包使用说明:
用于打开调用本设计实体将用到的库、程序包实体描述:
用于描述该设计实体与外界的接口信号说明
结构体描述:
用于描述该设计实体内部的组成及内部工作的逻辑关系
结构体配置语句主要用于层次化的方式对特定的设计实体进行元件的例化,或是为实体选定某个特定的结构体
3.3VHDL语言中数据对象有几种?
各种数据对象的作用范围如何?
各种数据对象的实际物理含义是什么?
(1)数据对象有三种:
变量、常量、信号
(2)常量的作用范围取决于其所定义的位置。
若在程序包中定义,则可以用在调用该程序包的所有设计实体中。
若定义在实体中,则可在这个实体的所有结构体中使用。
若定义在结构体中,则只能用于该结构体。
若定义在进程/子程序中,则只能用于该进程/子程序。
变量属于局部量,作用范围仅限于所定义的进程或子程序内部。
信号属于全局量,作用范围取决于其所定义的位置。
(3)信号表示硬件中的连线,用于各并行语句模块之间的通信。
变量一般用于存储局部/临时数据。
常量表示电路中的恒定电平,可使代码中常数易于阅读和修改。
3.4什么叫标识符?
VHDL的基本标识符是怎样规定的?
(1)标识符用来定义常量、变量、信号、端口、子程序或者参数的名字。
(2)VHDL的基本标识符就是以英文字母开头,不连续使用下划线,不以下划线结尾的,由26个英文大小写字母,数字0-9以及下划线组成的字符串。
3.5信号和变量在描述和使用时有哪些主要区别?
(1)变量只能在进程或子程序内部定义,用于存储局部/临时数据。
信号只能在进程或子程序的外部定义,表示硬件中的连线,用于各并行语句模块之间的通信。
(2)信号用signal关键字定义,赋值符号为”<
=”。
变量用variable关键字定义,赋值符号为”:
=”
(3)信号赋值,可以设定延时量,需要延时一段时间后才执行;
变量赋值立即执行。
3.6VHDL语言中的标准数据类型有哪几类?
用户可以自己定义的数据类型有哪几类?
并简单介绍各数据类型。
(1)标量型:
属单元素最基本的数据类型,通常用于描述一个单值数据对象,它包括实数类型、整数类型、枚举类型和时间类型。
复合类型:
可以由细小的数据类型复合而成,如可有标量复合而成。
复合类型主要有数组型和记录型。
存取类型:
为给定的数据类型的数据对象提供存取方式。
文件类型:
用于提供多值存取类型。
(2)用户可自定义的数据类型:
枚举类型、整数类型、数组类型、记录类型、时间类型、实数类型等
3.7BIT数据类型和STD_LOGIC数据类型有什么区别?
BIT数据类型只能取值0或1,而STD_LOGIC数据类型是BIT数据类型的扩展,除了0和1外,还包括7种数据类型,分别是U,X,Z,W,L,H,_
3.8用户怎样自定义数据类型?
试举例说明。
利用类型定义语句TYPE和子类型定义语句SUBTYPE实现。
如TYPEWEEKIS(SON,MON,TUE,WED,THU,FRI,SAT)SUBTYPEDIGITSINTEGERRANGE0TO9
3.9VHDL语言有哪几类操作符?
在一个表达式中有多种操作符时应按怎样的准则进行运算?
下列三个表达式是否等效:
①A<
=NOTBANDCORD;
②A<
=(NOTBANDC)ORD;
③A<
=NOTBAND(CORD).
(1)主要有四种操作符逻辑运算符,关系运算符,算术运算符,符号运算符此外还有重载运算符。
(2)按照操作符的优先级高低进行运算
(3)这三个表达式不等效。
1式表达错误,对同一优先级的不同运算符应加上括号。
2和3式的运算顺序不同。
3.16在CASE语句中在什么情况下可以不要WHENOTHERS语句?
在什么情况下一定要WHENOTHERS语句?
case语句执行时,根据选择表达式的值来选择执行哪个顺序语句,要求对于选择表达式的每个可能取值,有且仅有一个选择值与之匹配。
因此,当已列出的选择值能够覆盖选择表达式的所有可能取值时,可以不要whenothers语句。
否则,要用whenothers表示其它未列出的选择值。
a.用IF语句设计一个四-十六译码器
PROCESS(G1,g2a,g2b,sel)
begin
if(g1='
1'
andg2a='
0'
andg2b='
)then
if(sel="
0000"
)theny<
="
1111111111111110"
;
elsif(sel="
0001"
1111111111111101"
0010"
1111111111111011"
0011"
1111111111110111"
0100"
1111111111101111"
0101"
1111111111011111"
0110"
1111111110111111"
0111"
1111111101111111"
1000"
1111111011111111"
1001"
1111110111111111"
1010"
1111101111111111"
1011"
1111011111111111"
1100"
1110111111111111"
1101"
1101111111111111"
1110"
1011111111111111"
1111"
)theny<
0111111111111111"
elsey<
XXXXXXXXXXXXXXXX"
endif;
elseY<
1111111111111111"
endprocess;
b.用CASE语句设计一个四-十六译码器
caseselis
when"
=>
y<
when"
when"
whenothers=>
endcase
3.22什么叫进程语句?
你是如何理解进程语句的并行性和顺序性的双重特性的?
(1)进程实际上是顺序语句描述的一种进程过程,进程是用于描述事件的,process语句结构包含了一个代表实体中部分逻辑行为的独立的顺序语句描述的进程
(2)一个结构体中可以有多个并行进程结构,而有一个进程内部结构却是由一系列顺序语句来构成的,即进程语句间是并行执行的进程的内部是顺序执行的
(进程语句是一种描述硬件行为的语句,进程语句内部是由顺序语句构成的,内部执行时是顺序性的,但进程语句属于并行语句,多个进程之间的执行并行运行。
)
3.23进程的启动条件是什么?
如果进程有两个基本点敏感变量,其中一个由“0”变“1”,等待一段时间以后再由“1”变“0”;
而另一个只由“1”变“0”改变一次,请问该进程将执行几遍?
进程的启动条件:
敏感信号列表中的任何一个敏感信号的值发生变化,或者wait语句中的条件为真。
3遍
3.28元件例化语句的作用是什么?
元件例化语句包括几个组成部分?
各自的语句形式如何?
什么叫元件例化中的位置关联和名字关联?
(1)元件例化就是将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。
(2)元件例化语句由两部组成,前一部分是将一个现成的设计实体定义为一个元件的语句,第二部分则是此元件与当前设计实体中的连接说明。
(3)它们的语句格式如下:
-----元件定义语句
COMPONENT例化元件名ISGENERIC(类属表);
PORT(例化元件端口名表);
ENDCOMPONENT;
-----元件例化语句
元件例化名:
例化元件名PORTMAP([例化元件端口名=>
]连续实体端口名,...)
(4)名字关联是将例化元件的端口名与关联端口名通过关联(连续)符号“=>
"
一一对应地联系起来的方式;
位置关联是按例化元件端口定义顺序将例化元件的对应的连续实体端口名一一列出的方式。
3.32什么是结构体的行为描述方式?
它应用于什么场合?
用行为描述方式所编写的VHDL程序是否都可以进行逻辑综合?
(1)行为描述:
设计实体按算法的路径进行描述,他不是对某一个器件的描述,而是对整个设计单元的数学模型描述。
(2)主要用于系统数学模型的仿真或系统工作原理的仿真。
(3)故其大量采用的算术运算、关系运算、惯性延时、传输延时等描述方式是难以或不能进行逻辑综合的。
3.33什么叫数据流描述方式?
它和行为描述方式的主要区别在哪里?
用数据流描述方式所编写的VHDL程序是否都可以进行逻辑综合?
(1)数据流描述也称RTL描述,它以类似于寄存器传输级的方式描述数据的传输和变换,以规定设计中的各种寄存器形成为特征,然后再寄存器之间插入组合逻辑。
(2)行为描述只表示输入与输出间转换的行为,它不包含任何结构信息,而数据流的描述会伴有大量的有关这种结构信息的“流出”。
(3)类似于寄存器传输级的方式描述数据的传输和变换,认为数据是从一个设计流出,从输入到输出的观点称为数据流风格,所以不是所有的VHDL程序都可以进行逻辑综合。