VHDL作业及答案.docx

上传人:b****5 文档编号:14513696 上传时间:2023-06-24 格式:DOCX 页数:12 大小:23.83KB
下载 相关 举报
VHDL作业及答案.docx_第1页
第1页 / 共12页
VHDL作业及答案.docx_第2页
第2页 / 共12页
VHDL作业及答案.docx_第3页
第3页 / 共12页
VHDL作业及答案.docx_第4页
第4页 / 共12页
VHDL作业及答案.docx_第5页
第5页 / 共12页
VHDL作业及答案.docx_第6页
第6页 / 共12页
VHDL作业及答案.docx_第7页
第7页 / 共12页
VHDL作业及答案.docx_第8页
第8页 / 共12页
VHDL作业及答案.docx_第9页
第9页 / 共12页
VHDL作业及答案.docx_第10页
第10页 / 共12页
VHDL作业及答案.docx_第11页
第11页 / 共12页
VHDL作业及答案.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VHDL作业及答案.docx

《VHDL作业及答案.docx》由会员分享,可在线阅读,更多相关《VHDL作业及答案.docx(12页珍藏版)》请在冰点文库上搜索。

VHDL作业及答案.docx

VHDL作业及答案

第5章PPT课件作业

1.VHDL程序一般包含几个组成部分?

各部分的作用是什么?

实体,结构体,库,程序包,配置

实体:

用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数量和端口特性。

结构体:

用于描述实体所代表的系统内部的结构和行为;它描述设计实体的结构、行为、元件及内部连接关系。

库:

存放已经编译的实体、构造体、程序包集合和配置。

程序包:

存放各设计模块都能共享的数据类型、常数和子程序库;

配置:

实体对应多个结构体时,从与某个实体对应的多个结构体中选定一个作为具体实现。

2.端口模式有哪几种?

buffer类型与inout类型的端口有什么区别?

Out,in,inout,buffer

out(输出):

只能被赋值,用于不能反馈的输出;

in(输入):

只能读,用于时钟输入、控制输入单向数据输入;

inout(输入输出):

既可读又可被赋值,被读的值是端口输入值而不是被赋值,作为双向端口。

buffer(缓冲):

类似于输出,但可以读,读的值是被赋值,用做内部反馈用,不能作为双向端口使用。

3.下列标识符中,哪些是非法的?

Led3coder__1endportstd_machine2adderdecoder*8

and_2__decoder_1and2and_2and__2and-2

4.指出下面的实体描述中存在的四处语法错误并改正

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmux21aIS

PORT(a,b,s:

INBIT;

y:

OUTBIT;);(1.删除括号内的分号)

ENDENTITYmux;(2.改为mux21a)

ARCHITECTUREoneOFmux21aIS

BEGIN

PROCESS(a,b,s)

Begin

ifs=‘0’theny<=a;

elsey<=b;

endif;

endprocess(结束少了一个分号)

ENDARCHITECTUREnone;(none改为one)

5.写出下图所示的设计实体mux41的实体声明。

所有端口都采用bit或bit_vector类型。

ENTITYmux41IS

PORT(A,B,C,D:

INBIT;

SEL:

INBIT_VECTOR(1DOWNTO0);

Q:

OUTBIT);

ENDENTITYmux41;

6.表达式C<=A+B中,A、B、C的数据类型都是STD_LOGIC_VECTOR,是否能直接进行加法运算?

说明原因和解决方法。

答:

不能直接进行加法运算。

因为+号只能对整数类型进行直接相加,如果要对STD_LOGIC_VECTOR数据类型进行+法操作,需要调用运算符重载,即在程序的开头打开IEEE.STD_LOGIC_UNSIGNED.ALL程序包,或者把STD_LOGIC_VECTOR数据类型改为整数类型。

7.能把任意一种进制的值向一整数类型的对象赋值吗?

如果能,怎样做?

答:

能。

见书上P322页

8.判断下列VHDL的数值表示是否合法,如果有误指出原因(P322)

16#0FA#10#12F#8#789#8#356#2#0101010#

9.数据类型BIT,INTEGER,BOOLEAN分别定义在那个库中?

哪些库和程序包总是可见的?

答:

BIT,INTEGER,BOOLEAN分别定义在STD库的STANDARD程序包中(见书上P324-325)

WORK库,STD库总是可见的(P316-317)

10.习题3-1,3-2,3-6(P92)

答:

3-6考试有此种类型的程序题。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDFF3IS

PORT(CLK0,CL:

INSTD_LOGIC;

OUT1:

OUTSTD_LOGIC);

END;

ARCHITECTUREbhvOFDFF3IS

SIGNALQ:

STD_LOGIC;(此处只能定义信号)

BEGIN

PROCESS(CLK0)

BEGIN

IFCLK0'EVENTANDCLK0='1'THEN

Q<=QNORCL;

ENDIF;

ENDPROCESS;

OUT1<=NOTQ;

END;

11.VHDL语言数据对象有哪几种?

作用范围如何?

对其赋初值作用有何不同?

答:

VHDL语言数据对象有信号,变量,常量。

要回答的特别详细

12.判断下面三个程序中是否有错误,若有则指出错误所在。

程序1:

signala,en:

std_logic;

process(a,en)

variableb:

std_logic;

begin

ifen=1thenb<=a;(错误2处。

1.en为std_logic类型,此类型赋值为en=‘1’;2.b为变量,变量赋值采用:

=)

endif;

endprocess;

程序2:

architectureoneofsampleis

variablea,b,c:

integer;(结构体里面不能定义变量,只能定义信号)

begin

c<=a+b;

endarchitectureone;

程序3:

libraryieee;

Useieee.std_logic_1164.all;

Entitymux21is

Port(a,b:

instd_logic;

sel:

instd_logic;

c:

outstd_logic);

endEntitysam2;(1.sam2改为mux21)

architectureoneofsampleis(2.sample改为mux21)

begin

process(a,b.sel)(6.if语句应该放在process中)

begin

ifsel=‘0’thenc:

=a;(3.端口赋值采用<=,改为c<=a)

elsec:

=b;(4.端口赋值采用<=,改为c<=b)

endif;

endprocess;

endarchitecturetwo;(5.two改为mux21)

13.在VHDL中,如何描述时钟信号上升沿和下降沿?

请分别列举两种不同的方法

14.叙述进程语句的语法格式,并说明各组成部分的功能和作用。

(回答要详细)

process[(敏感信号表)]

[进程说明部分]

begin

{顺序处理语句}

endprocess[标号];

1.敏感信号表内为信号列表,该表内的信号的变化将引起进程的执行。

多数VHDL综合器要求敏感信号表必须列出本进程中所有输入信号名。

2.进程说明用来定义在该进程中需要用到的局部量,如变量、常数等,在此处定义的变量是局部量,只能在该进程中使用,其他地方不能使用。

特别强调在进程说明部分只能定义局部变量,不能定义信号和共享变量。

3.顺序描述语句是一段顺序执行的语句,具体描述进程的行为.如:

信号赋值,变量赋值,if语句,case语句等。

15.进程的敏感信号表具有什么作用?

列出敏感信号时应注意什么?

(回答要详细)

答:

敏感信号表中有多个敏感信号时,其中任一个信号的变化都会引起进程启动,写敏感信号表时,尽量将在进程中被读取的信号列全。

若无敏感信号表,就必须放一个WAIT语句在进程内作为进程启动语句

16.进程设计要点是什么?

(回答要详细)

ØPROCESS为一无限循环语句

ØPROCESS中的顺序语句具有明显的顺序/并行运行双重性进程内部只能加载顺序语句,但进程本身是并行语句出现在结构体中,它与其他并行结构或进程之间在结构体中是并行运行的

Ø进程语句本身是并行语句

Ø一个进程中只允许描述对应于一个时钟信号的同步时序逻辑

Ø进程必须由敏感信号的变化来启动敏感信号表中有多个敏感信号时,其中任一个信号

的变化都会引起进程启动,写敏感信号表时,尽量将在进程中被读取的信号列全。

敏感信号表,就必须放一WAIT语句在进程内作为进程启动语句

Ø信号是多个进程间的通信线在结构体中多个进程可以并行运行,多个进程之间的通

信是通过信号来实现。

因此,在任一进程的进程说明部分不允许定义信号

第6章PPT课件作业

1.顺序语句和并行语句分别有哪些?

顺序语句和并行语句主要有什么区别?

2.用IF和when-else语句编写全加器(自己结合PPT,编程实现。

3.用元件例化法实现4位加法器。

(自己结合2位加法器的方法,编程实现。

4.阅读下面的程序,分析其实现的逻辑功能,并说明是时序逻辑还是组合逻辑

libraryieee;

Useieee.std_logic_1164.all;

Entitydecoderis

Port(a:

instd_logic_vector(9downto0);

c:

outintegerrange0to9);

endEntitydecoder;

architectureoneofdecoderis

begin

withaselect

c<=0when“0000000001”,

1when“0000000010”,

2when“0000000100”,

3when“0000001000”,

4when“0000010000”,

5when“0000100000”,

6when“0001000000”,

7when“”,

8when“”,

9when“”,

0whenothers;

endarchitectureone;

组合电路:

译码电路。

从低位到高位依次判断10位2进制数的哪一位是高电平,并输出高电平所在数据位置。

5.结构体的描述方式有几种方式?

各有什么特点?

1.行为描述方式:

只需描述输入与输出的行为,不关注具体的电路实现,一般通过一组顺序的VHDL进程来反映设计的功能和算法;

2.数据流描述方式:

这种描述将数据看成从设计的输入端到输出端,通过并行语句表示这些数据形式的改变,即信号到信号的数据流动的路径和形式进行描述;

3.结构描述方式:

多用在多层次的设计中,通过调用库中得元件或已经设计好的元件,进行组合来完成实体功能的描述,它只表示元件和元件之间的互连.

6.下面是三人表决器的VHDL描述,分析其实现机制,并说明三个不同的结构体分别用

了什么描述方法。

libraryieee;

Useieee.std_logic_1164.all;

Entityvoter3is

Port(a,b,c:

inbit;

m:

outbit);

endEntityvoter3;

结构体描述方法1:

(属于结构体的数据流描述方式。

architectureoneofvoter3is

begin

witha&b&cselect

m<=’1’when“110”|“101”|“011”|“111”,’0’whenothers;

endarchitectureone;

结构体描述方法2:

(采用了进程,属于结构体的行为描述方式)

architecturetwoofvoter3is

begin

process(a,b,c)

constantlookuptable:

bit_vector(0to7):

=“00010111”;

variableindex:

natural;]

begin

index:

=0;

ifa=’1’thenindex:

=index+1;endif;

ifb=’1’thenindex:

=index+2;endif;

ifc=’1’thenindex:

=index+4;endif;

m

endprocess;

endarchitecturetwo;

结构体描述方法3:

(采用元件例化,调用了其他元件,属于结构体的结构描述方式)

architecturethreeofvoter3is

componentand2port(in1,in2:

inbit;out1:

outbit);

endcomponent;

componentor2port(in1,in2,in3:

inbit;out1:

outbit);

endcomponent;

signalw1,w2,w3:

bit;

begin

gate1:

and2portmap(a,b,w1);

gate2:

and2portmap(b,c,w2);

gate3:

and2portmap(a,c,w3);

gate4:

or3portmap(w1,w2,w3,m);

endarchitecturethree;

第8章PPT课件作业

1.设计一个比较电路,当输入的8421BCD码值大于4时,输出为1,否则输出为0

(自己编写。

LIBRARYIEEE;--8421比较电路方法1

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcomparaIS

PORT(a:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Y:

OUTSTD_LOGIC);

ENDENTITYcompara;

ARCHITECTUREoneOFcomparaIS

BEGIN

process(a)

begin

if((a>4)and(a<=9))theny<='1';

elsey<='0';

endif;

endprocess;

ENDARCHITECTUREone;

LIBRARYIEEE;----8421比较电路方法2

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYcompara2IS

PORT(a:

INSTD_LOGIC_VECTOR(3DOWNTO0);

Y:

OUTSTD_LOGIC);

ENDENTITYcompara2;

ARCHITECTUREoneOFcompara2IS

BEGIN

process(a)

begin

ifa="0000"theny<='0';

elsifa="0001"theny<='0';

elsifa="0010"theny<='0';

elsifa="0011"theny<='0';

elsifa="0100"theny<='0';

elsifa="0101"theny<='1';

elsifa="0110"theny<='1';

elsifa="0111"theny<='1';

elsifa="1000"theny<='1';

elsifa="1001"theny<='1';

elsifa="1010"theny<='0';

elsifa="1011"theny<='0';

elsifa="1100"theny<='0';

elsifa="1101"theny<='0';

elsifa="1110"theny<='0';

elsey<='0';

endif;

endprocess;

ENDARCHITECTUREone;

2.编程实现3-8译码器。

(结合数码管译码器的方法,查询资料编写)

3.编程实现2个数相加的加法器。

其中加数和被加数均为4位二进制数。

(结合PPT的

位加法器,编程实现)

4.8位右移寄存器(自己编写。

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2