VHDL复习题.docx

上传人:b****4 文档编号:11914999 上传时间:2023-04-16 格式:DOCX 页数:38 大小:258.66KB
下载 相关 举报
VHDL复习题.docx_第1页
第1页 / 共38页
VHDL复习题.docx_第2页
第2页 / 共38页
VHDL复习题.docx_第3页
第3页 / 共38页
VHDL复习题.docx_第4页
第4页 / 共38页
VHDL复习题.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

VHDL复习题.docx

《VHDL复习题.docx》由会员分享,可在线阅读,更多相关《VHDL复习题.docx(38页珍藏版)》请在冰豆网上搜索。

VHDL复习题.docx

VHDL复习题

习题

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式的运算顺序不同。

VHDL操作符优先级:

(关系操作符的结果只有TRUE或FALSE两种。

3.10简述六种移位操作符SLL、SRL、SLA、SRA、ROL和ROR的含义及操作规定?

并举例说明。

(1)SLL:

逻辑左移,bit或布尔一维数组

SRL:

逻辑右移,bit或布尔一维数组

SLA:

算数左移,bit或布尔一维数组

SRA:

算数右移,bit或布尔一维数组

ROL:

逻辑循环左移,bit或布尔一维数组

ROR:

逻辑循环右移,bit或布尔一维数组 

(2)A=“10010101"

Asll2 得"01010100"(逻辑左移,用'0'填补空位)

Asrl3 得"00010010"(逻辑右移,用'0'填补空位)

Asla3 得"10101111"(算术左移,用最左端位填补空位)

Asra2 得"11100101"(算术右移,用最右端位填补空位)

Arol3 得"10101100"(循环左移)

Aror5 得"10101100"(循环右移)

3.11什么叫重载操作符?

使用重载操作符有什么好处?

怎样使用重载操作符?

含有重载操作符的运算怎样确定运算结果?

(1)对已存在的操作符重新定义,使其能进行不同类型操作数之间的运算。

(2)方便各种不同数据类型间的运算。

(3)引用数据包:

STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED和STD_LOGIC_即可使用重载操作符。

3.12VHDL程序设计中的基本语句系列有几种?

它们的特点如何?

它们各使用在什么场所?

它们各自包括些什么基本语句?

答:

(1)顺序语句与并行语句。

(2)顺序语句的执行与它们的书写顺序基本一致(指仿真或逻辑上的顺序执行),但实际上硬件电路是并行工作的。

顺序语句用在进程和子程序的内部。

并行语句的执行与书写顺序无关,各语句是同时执行的,在执行过程中各并行语句之间可通过信号进行通信,同步运行;也可以互为独立、互不相关,异步运行。

(3)顺序语句:

变量/信号赋值语句,流程控制语句(if,case,loop,next,exit),等待语句,子程序调用语句,返回语句,空操作语句等。

并行语句:

进程语句,块语句,信号赋值语句,元件例化语句,生成语句,子程序调用等语句。

 3.13VHDL中信号赋值和变量赋值的有什么区别?

其赋值符号是否异同?

信号赋值延时更新数据,一般生成时序电路,用的是"<="

变量赋值立即更新数据,一般生成组合电路,用的是":

="

(变量具有局部特征,它的有效性只局限于所定义的一个进程中,或一个子程序中,它是一个局部的、暂时性数据对象,对于它的赋值是立即发生的。

信号具有全局特征,它不但可以作为一个设计实体内部各单元之间数据传送的载体,而且可通过信号与其他的实体进行通信,信号的赋值不是立即发生的,它发生在一个进程结束时。

3.14段下标元素和集合块元素是怎样赋值的?

试举例说明。

(1)段下标元素赋值目标表示形式:

标识符(下标1TO或DOWNTO下标2)(其中下标1、下标2必须用具体数值表示,并且其数值范围必须在所定义的数组下标范围内)

例如:

VARIABLEa,b:

STD_LOGIC_VECTOR(1TO4)

b(1TO4):

=”1011”;

a:

=b;

a(1TO2):

=b(3TO4);--a

(1)=’1’,a

(2)=’1’;

a(1TO4):

=”1011”;

(2)集合块元素

3.15转向控制语句有几种?

它们各用在什么场所?

它们使用时特别需要注意什么?

IF语句;CASE选择语句;LOOP循环语句;NEXT语句和EXIT语句

(1)if 条件表达式1  then 顺序语句; 

elsif 条件表达式2  then 顺序语句; 

else 条件表达式n  then 顺序语句; 

end if; 

if语句可根据一个或多个布尔条件,有选择的执行指定的顺序语句。

 使用时应注意:

1.关键字then后可包含一个或多个顺序语句。

2.elsif子句可以有多个或没有,每个elsif子句执行时具有向前与的作用。

3.else子句可以没有。

4.关键字then后的顺序语句可以是if语句,即if语句可以嵌套。

 

(2)case选择表达式 is 

when 选择值1 =>  顺序语句;  

when 选择值2 =>  顺序语句;  ...... 

end case; 

case语句可根据一个表达式的不同取值执行不同的顺序语句。

 

使用时应注意:

1.表达式的值可以是整型或枚举型的,或是这些数据类型构成的数组。

2.选择值可以是单个取值,如4;也可以是一个取值范围,如2 to 5;也可以是多个并列的取值,如2|6;还可以是以上三种取值方式的混合。

3.case语句执行时,根据选择表达式的值来选择执行哪个顺序语句,选择的结果和每个选择值的顺序无关,只要求对于选择表达式的每个可能取值,有且仅有一个选择值与之匹配即可。

4.常用 when others表示其它未列出的选择值。

5.“=> ”后面的顺序语句可以有多个。

 

(3)[标号:

] for  循环变量 in  范围 loop                 [标号:

] while  条件  loop  

 顺序语句;                 顺序语句; 

end loop [标号];                end loop [标号];

for循环用于循环次数已知的情况;while 循环用于循环次数未知的情况。

 使用时应注意:

for循环中的循环变量无需事先定义,可自动加/减1。

 

(4)next; 无条件中止当前循环,返回循环起点,开始下次循环。

 

exit; 无条件退出当前循环。

 

next  loop标号; 无条件中止LOOP标号标明的循环,返回LOOP标号处,开始下次循环。

 

exit  loop标号; 无条件退出LOOP标号标明的循环。

 

next  loop标号 when 条件; 条件为真时中止LOOP标号标明的循环,返回LOOP标号处,开始下次循环。

 

exit  loop标号when 条件; 条件为真时退出LOOP标号标明的循环。

3.16在CASE语句中在什么情况下可以不要WHENOTHERS语句?

在什么情况下一定要WHENOTHERS语句?

答:

case语句执行时,根据选择表达式的值来选择执行哪个顺序语句,要求对于选择表达式的每个可能取值,有且仅有一个选择值与之匹配。

因此,当已列出的选择值能够覆盖选择表达式的所有可能取值时,可以不要when others语句。

否则,要用 when others表示其它未列出的选择值。

3.17FOR-LOOP语句应用于什么场合?

循环变量怎样取值?

是否需要事先在程序中定义?

在重复的次数已知的情况下可以使用该语句。

循环变量的取值是根据系统的功能要求给定的,要事先在程序上定义。

3.18分别用IF语句、CASE语句设计一个四—十六译码器。

a:

用IF语句设计一个四-十六译码器

PROCESS(G1,g2a,g2b,sel)

begin

if(g1='1'andg2a='0'andg2b='0')then

if(sel="0000")theny<="1111111111111110";

elsif(sel="0001")theny<="1111111111111101";

elsif(sel="0010")theny<="1111111111111011";

elsif(sel="0011")theny<="1111111111110111";

elsif(sel="0100")theny<="1111111111101111";

elsif(sel="0101")theny<="1111111111011111";

elsif(sel="0110")theny<="1111111110111111";

elsif(sel="0111")theny<="1111111101111111";

elsif(sel="1000")theny<="1111111011111111";

elsif(sel="1001")theny<="1111110111111111";

elsif(sel="1010")theny<="1111101111111111";

elsif(sel="1011")theny<="1111011111111111";

elsif(sel="1100")theny<="1110111111111111";

elsif(sel="1101")theny<="1101111111111111";

elsif(sel="1110")theny<="1011111111111111";

elsif(sel="1111")theny<="0111111111111111";

elsey<="XXXXXXXXXXXXXXXX";

endif;

elseY<="1111111111111111";

endif;

endprocess;

b:

用CASE语句设计一个四-十六译码器

caseselis

when"0000"=>y<="1111111111111110";

when"0001"=>y<="1111111111111101";

when"0010"=>y<="1111111111111011";

when"0011"=>y<="1111111111110111";

when"0100"=>y<="1111111111101111";

when"0101"=>y<="1111111111011111";

when"0110"=>y<="1111111110111111";

when"0111"=>y<="1111111101111111";

when"1000"=>y<="1111111011111111";

when"1001"=>y<="1111110111111111";

when"1010"=>y<="1111101111111111";

when"1011"=>y<="1111011111111111";

when"1100"=>y<="1110111111111111";

when"1101"=>y<="1101111111111111";

when"1110"=>y<="1011111111111111";

when"1111"=>y<="0111111111111111";

whenothers=>y<="XXXXXXXXXXXXXXXX";

endcase;

3.19WAIT语句有几种书写格式?

哪些格式可以进行逻辑综合?

waituntil结构waiton结构其中waituntil结构可以进行逻辑组合

3.20VHDL的预定义属性的作用是什么?

哪些项目可以具有属性?

常用的预定义属性有哪几类?

(1)作用在于可对信号或其他的项目多种属性进行检测或统计。

(2)具有属性的项目:

类型,子类型,过程,函数,信号,变量,常量,实体,结构体,配置,程序包,元件,语句标号。

(3)常用的属性有信号类属性,数据区间类属性,数值类属性,数组属性 

3.21试用’EVENT属性描述一种用时钟CLK上升沿触发的D触发器及一种用时钟CLK下降沿触发的JK触发器。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYdtriggerIS

PORT(clk:

INSTD_LOGIC;

d:

INSTD_LOGIC;

q:

OUTSTD_LOGIC);

ENDdtrigger;

ARCHITECTUREbehaveOFdtriggerIS

BEGIN

PROCESS(clk)

BEGIN

IFclk'EVENTANDclk='1'THEN

q:

=d;

ENDIF;

ENDPROCESS;

ENDbehave;

 

3.22什么叫进程语句?

你是如何理解进程语句的并行性和顺序性的双重特性的?

(1)进程实际上是顺序语句描述的一种进程过程,进程是用于描述事件的,process语句结构包含了一个代表实体中部分逻辑行为的独立的顺序语句描述的进程

(2)一个结构体中可以有多个并行进程结构,而有一个进程内部结构却是由一系列顺序语句来构成的,即进程语句间是并行执行的进程的内部是顺序执行的

( 进程语句是一种描述硬件行为的语句,进程语句内部是由顺序语句构成的,内部执行时是顺序性的,但进程语句属于并行语句,多个进程之间的执行并行运行。

3.23进程的启动条件是什么?

如果进程有两个基本点敏感变量,其中一个由“0”变“1”,等待一段时间以后再由“1”变“0”;而另一个只由“1”变“0”改变一次,请问该进程将执行几遍?

答:

进程的启动条件:

敏感信号列表中的任何一个敏感信号的值发生变化,或者wait语句中的条件为真。

3遍

3.24有人说,进程中的语句顺序颠倒一下并不会改变所描述电路的功能,这种说法对吗?

为什么?

不对。

因为PLC的扫描过程是从左到右,从上到下进行的。

同一进程中的逻辑描述语句是顺序运行的。

3.25并行信号赋值语句有几类?

比较其异同。

(1)1.简单信号赋值语句2.条件信号赋值语句3.选择信号赋值语句

(2)共同点:

赋值目标都是信号,都是并行语句,都相当于一个隐含的进程语句(信号赋值语句中的所有读入信号都作为该进程的敏感信号)。

 

不同点:

简单信号赋值语句是最简单的并行语句,执行时直接将表达式的值赋给信号。

 

条件信号赋值语句的功能与if语句相同,在执行时按书写的先后顺序测试每个条件,一旦条件为真,则将表达式的值赋给信号。

 

选择信号赋值语句与case语句相似。

当关键字with后的选择表达式的值发生变化时,就将该值和每个选择值进行比较,将选择值匹配的子句中的表达式的值赋给信号。

 

3.26分别用条件信号赋值语句、选择信号赋值语句设计一个四—十六译码器。

 LIBRARY  IEEE; 

  USE IEEE.STD_LOGIC_1164.ALL; 

  USE IEEE.STD_LOGIC_UNSIGNED.ALL;  

  ENTITY DECODER IS 

    PORT(A, B, C,D:

IN STD_LOGIC; 

         Y:

 OUT BIT_VECTOR (15 DOWNTO 0));    

END ENTITY DECODER;   

ARCHITECTURE ART1 OF DECODER IS 

    SIGNAL SR:

 STD_LOGIC_VECTOR(3 DOWNTO 0);   

BEGIN 

    SR<= D&C&B&A;  

     Y(0)<='1' WHEN SR="0000" ELSE '0';      

Y

(1)<='1' WHEN SR="0001" ELSE '0';    

  Y

(2)<='1' WHEN SR="0010" ELSE '0';    

  Y(3)<='1' WHEN SR="0011" ELSE '0';      

Y(4)<='1' WHEN SR="0100" ELSE '0';     

 Y(5)<='1' WHEN SR="0101" ELSE '0';      

Y(6)<='1' WHEN SR="0110" ELSE '0';    

  Y(7)<='1' WHEN SR="0111" ELSE '0';  

 Y(8)<='1' WHEN SR="1000" ELSE '0';   

Y(9)<='1' WHEN SR="1001" ELSE '0';   

Y(10)<='1' WHEN SR="1010" ELSE '0'; 

Y(11)<='1' WHEN SR="1011" ELSE '0';   

Y(12)<='1' WHEN SR="1100" ELSE '0';   

Y(13)<='1' WHEN SR="1101" ELSE '0';   

Y(14)<='1' WHEN SR="1110" ELSE '0';  

 Y(15)<='1' WHEN SR="1111" ELSE '0';  

END ARCHITECTURE ART1;   

ARCHITECTURE ART2 OF DECODER IS 

    SIGNAL SR:

 STD_LOGIC_VECTOR(3 DOWNTO 0);  

 BEGIN 

     WITH SR SELECT  

 Y<= “0000_0000_0000_0001” WHEN “0000”,   

 “0000_0000_0000_0010” WHEN “0001”,    

“0000_0000_0000_0100” WHEN “0010”,    

“0000_0000_0000_1000” WHEN “0011”,    

“0000_0000_0001_0000” WHEN “0100”,    

“0000_0000_0010_0000” WHEN “0101”,   

“0000_0000_0100_0000” WHEN “0110”,    

“0000_0000_1000_0000” WHEN “0111”,   

 “0000_0001_0000_0000” WH

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

当前位置:首页 > 解决方案 > 工作计划

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

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