EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx

上传人:b****6 文档编号:18094447 上传时间:2022-12-13 格式:DOCX 页数:37 大小:210.54KB
下载 相关 举报
EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx_第1页
第1页 / 共37页
EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx_第2页
第2页 / 共37页
EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx_第3页
第3页 / 共37页
EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx_第4页
第4页 / 共37页
EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx

《EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx》由会员分享,可在线阅读,更多相关《EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx(37页珍藏版)》请在冰豆网上搜索。

EDA技术课后参考答案陈炳权曾庆立供参考文档格式.docx

QuartusII还可与SOPCBuilder结合,实现SOPC系统开发。

ispExPERT是Lattice公司的主要集成环境。

通过它可以进行VHDL、Verilog及ABEL语言的设计输入、综合、适配、仿真和在系统下载。

ispExPERT是目前流行的EDA软件中最容易掌握的设计工具之一,它界面友好、操作方便、功能强大,并与第三方EDA工具兼容良好。

FoundationSeries是Xilinx公司较成熟的集成开发EDA工具。

它采用自动化的、完整的集成设计环境。

Foundation项目管理器集成Xilinx实现工具,并包含了强大的书馆SynopsysFPGAExpress综合系统,是业界最强大的EDA设计工具之一。

7.简要阐述EDA技术的发展趋势和应用领域

从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。

EDA的范畴包括:

机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。

 

第二章VHDL硬件描述语言

1、简述实体(ENTITY)、结构体(ARCHITECTURE)与原理图的关系。

结构来说实体就是原理图的外观,结构体中的具体程序就是原理图中的具体实现。

2、子程序调用与元件例化有何区别,函数与过程在具体使用上有何不同。

从硬件角度讲,一个子程序的调用类似于一个元件模块的例化,VHDL综合器为子程序的每一次调用都生成一个电路逻辑块。

所不同的是,元件的例化将产生一个新的设计层次,而子程序调用只对应于当前层次的一部分。

函数和过程的不同在于:

函数只有一个输出,只能通过函数体内的RETURN语句来实现,函数体内不能有信号赋值语句;

而过程却可以有不止一个输出,而且是通过过程体内的信号赋值语句或者变量赋值语句来实现的,过程体内的RETURN语句没有用处,因此不少过程都将其省略了。

函数的调用只能通过表达式来实现,过程的调用则是通过过程调用语句来实现的。

3、什么是重载函数?

重载算符有何用处?

如何调用重载算符函数。

(1)什么是重载函数?

根据操作对象变换处理功能。

(2)重载算符有何用处?

用于两个不同类型的操作数据自动转换成同种数据类型,并进行运算处理。

(3)如何调用重载算符函数?

采用隐式方式调用,无需事先声明。

4、在VHDL程序中配置有何用处?

配置可以把特定的结构体关联到一个确定的实体,正如配置一词本身的含义一样。

配置语句就是用来为较大的系统设计提供管理和工程组织的。

配置也是VHDL设计实体中的一个基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。

总之用于设置VHDL的工作参数以及工作模式。

配置用来选择实体的多个结构体的哪一个被使用。

5.嵌套BLOCK的可视性规则是什么?

以嵌套BLOCK的语句方式设计三个并列的3输入或门。

BLOCK是VHD中具有的一种划分机制,这种机制允许设计者合理地将一个模块分为数个区域,在每个块都能对其局部信号、数据类型和常量加以描述和定义。

任何能在结构体的说明部分进行说明的对象都能在BLOCK说明部分中进行说明。

相关参考代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYtriple_inputIS

PORT(A:

INSTD_LOGIC;

B:

C:

OUTA:

OUTSTD_LOGIC

);

ENDtriple_input;

ARCHITECTUREADOOFtriple_inputIS

BEGIN

OUTA<

=AANDBANDC;

ENDADO;

6.简述函数与过程的异同点,过程与进程的异同点。

子程序有两种类型,即过程(PROCEDURE)和函数(FUNCTION)。

函数和过程都是串行的。

它们的区别在于:

过程的调用可以通过其界面获得多个返回值,而函数只能返回一个值;

在函数入口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数;

过程一般被看作一种语句结构,而函数通常是表达式的一部分;

过程可以单独存在,而函数通常作为语句的一部分调用。

过程和进程的相同点:

只能使用顺序语句,可以单独存在。

不同点:

过程不能像进程那样可以从本结构体的其他块或进程结构中直接读取信号值或者信号赋值。

7、判断下列VHDL标识符是否合法,如果不合法则指出原因:

16#0FA#,10#12F#,8#789#,8#356#,2#0101010#,74HC245,\74HC574\,CLR/RESET,\IN4/SCLK\,D100%。

识符用法规定:

(1)只能包含英文字母,数字,下划线

(2)标识符的首字符只能是字母。

故:

(1)16#0FA#错在首字符是数字,且包含非法字符“#“。

10#12F#、8#789#,8#356#,2#0101010#,74HC245也是犯同一错误。

(2)\74HC574\,CLR/RESET,\IN4/SCLK\,D100%都是非法,包含非法字符….

8、讨论数据对象信号与变量间的异同处,说明它们的使用对所形成的硬件结构有何影响。

在VHDL中,对象是指用来保持数据的一些客体单元。

信号跟变量是VHDL中的重要客体。

信号是指在设计实体中数据交换的一种手段,采用信号对象可以把设计实体连接在一起形成模块。

在硬件电路中代表一条硬件连线,有时信号会被综合成一个寄存器。

变量主要是对暂时数据进行局部存储,它是一个局部量。

信号与变量在使用前都必需先声明后使用,否则会产生编译错误。

信号可以architecture、package、entitiy中声明,是全局量可以在全局使用。

变量可以process、function、procedure中声明,也只能在process、function、procedur中使用不是全局变量。

他们之间的主要区别有:

信号赋值至少要有δ延时;

而变量赋值没有。

信号除当前值外有许多相关的信息,如历史信息和投影波形;

而变量只有当前值。

进程对信号敏感而不对变量敏感。

信号可以是多个进程的全局信号;

而变量只在定义他们的顺序域可见(共享变量除外)。

信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。

变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。

从综合后所对应的硬件电路结构来看,信号一般将对应更多的硬件结构,但在许多情况下,信号和变量并没有什么区别。

例如在满足一定条件的进程中,综合后它们都能引入寄存器。

这时它们都具有能够接受赋值这一重要的共性,而VHDL综合器并不理会它们在接受赋值时存在的延时特性。

9.运算符重载函数通常要调用转换函数,以便能够利用已有的数据类型。

下面给出一个新的数据类型AGE,并且下面的转换函数已经实现:

functionCONV_INTEGER(ARG:

AGE)returnINTEGER;

请仿照本章中的例子,利用此函数编写一个“+”运算符重载函数,支持下面的运算:

SIGNALa,c:

AGE;

...

c<

=a+20;

function“+”(L:

AGE,R:

integer)returnAGEis

Begin

returnCONV_AGE(L+CONV_INTEGER(R));

End;

10、设计16位比较器,比较器的输入是2个待比较的16位数:

A=[A15…A0],B=[B15…B0],输出是D、E、F。

当A=B时,D=1;

当A>

B时,E=1;

当A<

B时,F=1(参考方法:

用常规的比较器设计方法,即直接利用关系操作符进行编程设计,或者利用减法器来完成,通过减法运算后的符号和结果来判别两个被比较值的大小)。

library 

ieee;

use 

ieee.std_logic_1164.all;

ieee.std_logic_unsigned.all;

entity 

compare 

is

port(a:

in 

std_logic_vector(16 

downto 

0);

b:

X,Y,Z:

out 

std_logic);

end 

compare;

architecture 

behave 

of 

begin

process(a,b)

if 

(a 

>

b) 

then

<

='

1'

;

0'

elsif(a 

then 

ELSE 

if;

process;

behave;

11.在VHDL编程中,为什么应尽可能使用子类型对类型的取值范围给予限定。

由于子类型与其基本数据类型属同一数据类型,因此属于子类型的和属于基本数据类型的数据对象间的赋值和被赋值可以直接进行,不必进行数据类型的转换。

利用子类型定义数据对象的好处是,除了使程序提高可读性和易处理外,其实质性的好处还在于有利于提高综合的优化效率,这是因为综合器可以根据子类型所设的约束范围,有效地推知参与综合的寄存器的最合适的数目。

12、判断下面3例VHDL程序中是否有错误,若有错误则指出错误原因:

程序1

SignalA,EN:

std_logic;

Process(A,EN)

VariableB:

ifEN=‘1’then

B<

=A;

endif;

endprocess;

程序2

Architectureoneofsampleis

variablea,b,c:

integer;

=a+b;

end;

程序3

libraryieee;

useieee.std_logic_1164.all;

entitymux21is

port(a,b:

instd_logic;

sel:

c:

outstd_logic;

);

endsam2;

architectureoneofmux21is

begin③

ifsel='

thenc:

=a;

elsec:

=b;

endtwo;

程序1:

将“B<

=A”改成“B:

=A”

程序2:

-将“c<

=a+b”改成“c:

=a+b”

程序3:

①将“;

)”改成“)”②将“sam2”改成“entitymux21”③增加“process(a,b,sel)begin④ifsel='

thenc:

=a;

elsec:

=b;

endif;

--应改成“ifsel='

thenc<

elsec<

”⑤增加“endprocess;

”⑥将“two”改成“architectureone”

13、分别用CASE语句和IF设计3-8译码器。

CASE语句:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdecoder38IS

PORT(EN:

A0,A1,A2:

Y:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYdecoder38;

ARCHITECTURbhvOFdecoder38IS

SIGNALS:

STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

S<

=A2&

A1&

A0;

PROCESS(EN,S)

IF(EN=’1’)THEN

CASESIS

WHEN“000”=>

Y<

=”00000001”;

WHEN“001”=>

=”00000010”;

WHEN“010”=>

=”00000100”;

WHEN“011”=>

=”00001000”;

WHEN“100”=>

=”00010000”;

WHEN“101”=>

=”00100000”;

WHEN“110”=>

=”01000000”;

WHEN“111”=>

=”10000000”;

WHENOTHERS=>

NULL;

ENDCASE;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREbhv;

IF语句:

PROCESS(EN,A2,A1,A0)

IF(A2=’0’)THEN

IF(A1=’0’)THEN

IF(A0=’0’)THEN

Y<

=’00000001’;

ELSE

=’00000010’;

ELSIF(A1=’1’)THEN

=’00000100’;

ELSE

=’00001000’;

ENDIF;

ELSIF(A2=’1’)THEN

=’00010000’;

=’00100000’;

=’01000000’;

=’10000000’;

entitysssis

port(a:

instd_logic_vector(2downto0);

cout:

outstd_logic_vector(7downto0));

end;

architectureoneofsssis

begin

process(a)

begin

ifa="

000"

thencout<

="

11111110"

elsifa="

001"

11111101"

010"

11111011"

011"

11110111"

100"

11101111"

101"

11011111"

110"

10111111"

111"

01111111"

endprocess;

14、若在进程中加入WAIT语句,应注意哪几个方面的问题。

应注意以下问题:

①已列出敏感信号的进程中不能使用任何形式的WAIT语句;

②一般情况下,只有WAITUNTIL格式的等待语句可以被综合器所接受,其余语句格式只能在VHDL仿真器中使用;

③在使用WAITON语句的进程中,敏感信号量应写在进程中的WAITON语句后面;

④在不使用WAITON语句的进程中,敏感信号量应在开头的关键词PROCESS后面的敏感信号表中列出。

15、图2.15中的f_adder是一位全加器,cin是输入进位,cout是输出进位。

试给出此电路的VHDL描述。

图2.15习题15图

entityffis

port(x,y,clock:

instd_logic;

sum:

outstd_logic);

end;

architectureoneofffis

componentf_adder

port(a,b,ci:

su,co:

endcomponent;

componentdf

port(d,cl:

q1:

signalcout,tmp:

std_logic;

u1:

f_adderportmap(a=>

x,b=>

y,ci=>

tmp,su=>

sum,co=>

cout);

u2:

dfportmap(d=>

cout,cl=>

clock,q1=>

tmp);

endarchitectureone;

--底层文件1:

D触发器

entitydfis

port(d,cl:

architecturetwoofdfis

signalqq:

process(cl,qq)

ifcl'

eventandcl='

thenqq<

=d;

q1<

=qq;

endarchitecturetwo;

--底层文件2:

全加器

us

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1