VHDL思考题 | 太极博弈原理官方站|紫欽天|融通百科为我所用|生活全智慧|生活智慧之书

正在阅读:

VHDL思考题

1,243

第一章

1.EDA的英文全称是什么?EDA的中文含义是什么?

Electronic Design Automation

电子设计自动化       

 

2.常用的硬件描述语言有哪几种?

Ø       VHDL:作为IEEE的工业标准硬件描述语言,在电子工程领域,已成为事实上的通用硬件描述语言。

Ø        Verilog:支持的EDA工具较多,适用于RTL级和门电路级的描述,其综合过程较VHDL稍简单,但其在高级描述方面不如VHDL

Ø       ABEL:一种支持各种不同输入方式的HDL,被广泛用于各种可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模的可编程器件的设计。

               有专家认为,在新世纪中,VHDLVerilog语言将承担几乎全部的数字系统设计任务。

 

3.VHDL的英文全称是什么?其中文含义是什么?

Very High Speed Integrated Circuit               超高速集成电路
               Hardware Description Language             
硬件描述语言  

 

4.VHDL有什么特点?

1.  强大的功能和灵活性

          VHDL具有功能强大的语言结构,可以用简洁明确的程序来描述复杂的逻辑控制;具有多层次的设计描述功能,支持设计库和可重复使用的元件生成;支持阶层设计和提供模块设计的创建。VHDL还支持同步电路、异步电路和随机电路的设计,这是其它HDL所不能比拟的。

2. 独立于器件的设计

            设计人员采用VHDL进行硬件电路设计时,不必考虑完成此项设计需要选择什么逻辑器件;如需对设计进行资源利用和性能方面优化,也不要求设计人员非常熟悉器件的内部结构。设计人员只需要集中精力来进行设计方案的构思。

3.  与工艺无关的可移植性

由于VHDL是一种标准化的硬件描述语言,因此同一个设计的VHDL描述可以被不同的EDA工具支持,即同一个设计的VHDL描述可以从一个模拟工具移植到另一个模拟工具、从一个综合工具移植到另一个综合工具或者从一个工作平台移植到另一个工作平台。

4.  性能评估能力

             独立于器件的设计和与工艺无关的可移植性,允许设计人员可以采用不同的器件结构和综合工具来对自己的设计进行综合和性能评估。

5. 易于ASIC移植

                   采用VHDL进行产品设计时效率高,即可以使设计的产品以最快的速度上市。当产品的数量达到相当的规模时,采用VHDL语言能够很容易地帮助设计人员实现转成ASIC的设计,从而可以确保ASIC厂商生产高质量的器件产品 

     6.  标准、规范,易于共享和复用

              VHDL的语法规范、标准、可读性强,便于使设计成果在设计人员之间进行交流和共享。反过来,可以进一步推动VHDL的发展和完善。

 

5.目前比较流行的、主流厂家的EDA的软件工具有哪些?

Ø       目前比较流行的、主流厂家的EDA的软件工具有AlteraMAX+plus IIQuartus IILatticeispEXPERTXilinxFoundation Series

 

第三章

1.一个相对完整的VHDL程序由哪几部分组成?

一个完整的VHDL程序包括    1. 实体(Entity

                                        2. 结构体(Architecture

                                         3. 配置(Configuration

                                         4. 包(Package

                                         5. 库(Library

 

2.VHDL有哪几种不同风格的描述方式?各有什么特点?

有三种不同风格的描述方式:行为描述方式(behavior)、数据流描述方式(dataflow)或寄存器RTL描述方式、结构化描述方式(structural) 

Ø       行为描述方式只描述所希望电路的功能或者说电路行为,而没有直接指明或涉及实现这些行为的硬件结构。它是系统数学模型的描述,主要是顺序语句描述。

           VHDL的行为描述语句转换成可综合的门级描述是VHDL综合器的任务,这是一项十分复杂的工作。

Ø       数据流描述方式或寄存器RTL描述方式是以规定设计中的各种寄存器形式为特征,然后在寄存器之间插入组合逻辑。这类寄存器或显式地通过元件具体装配,或者通过推论作隐含的描述。它采用并发信号赋值语句,描述数据流程的运动路径、运动方向和运动结果。

Ø       结构化描述方式就是表示元件之间的互连,通常用于层次设计,允许互连元件的层次式安置,其建模步骤如下:

Ø       元件说明:描述局部接口。

Ø       元件例化:相对于其它元件放置元件。

Ø       元件配置:指定元件所用的设计实体,即对一个给定实体,如果有多个可用的结构体,则由配置决定模拟中所用的一个结构。

        利用结构描述方式,可以采用结构化、模块化设计思想,将一个大的设计划分为许多小的模块,逐一设计调试完成,然后利用结构描述方法将它们组装起来,形成更为复杂的设计。

 

3.简述实体描述与原理图的关系,结构体描述与原理图的关系.

不同逻辑功能的设计实体可以拥有相同的实体描述,这是因为实体类似于原理图中的一个部件符号,而其具体的逻辑功能是由设计实体中结构体的描述确定的。实体是VHDL的基本设计单元,它可以对一个门电路、一个芯片、一块电路板乃至整个系统进行接口描述。结构体是实体所定义的设计实体中的一个组成部分。结构体描述设计实体的内部结构和/或外部设计实体端口间的逻辑关系。

 

4.子程序调用与元件例化有何区别?函数与过程在具体使用上有何不同?

Ø       子程序是一个VHDL程序模块,它是利用顺序语句来定义和完成算法的,应用它能更有效地完成重复性的设计工作。子程序不能从所在的结构体的其他块或进程结构中直接读取信号值或者向信号赋值,而只能通过子程序调用及与子程序的界面端口进行通信。

Ø       子程序有两种类型,即过程(PROCEDURE)和函数(FUNCTION)。过程的调用可通过其界面获得多个返回值,而函数只能返回一个值。在函数入口中,所有参数都是输入参数,而过程有输入参数、输出参数和双向参数。过程一般被看作一种语句结构,而函数通常是表达式的一部分。过程可以单独存在,而函数通常作为语句的一部分调用。

Ø       VHDL子程序有一个非常有用的特性,就是具有可重载性的特点,即允许有许多重名的子程序,但这些子程序的参数类型及返回值数据类型是不同的

Ø       在实用中必须注意,综合后的子程序将映射于目标芯片中的一个相应的电路模块,且每一次调用都将在硬件结构中产生具有相同结构的不同的模块,这一点与在普通的软件中调用子程序有很大的不同。因此,在面向VHDL的实用中,要密切关注和严格控制子程序的调用次数,每调用一次子程序都意味着增加了一个硬件电路模块

 

 

5.甚么是重载函数?重载算符有何用处?如何调用重载算符函数?

&S226;          重载函数(RELOAD FUNCTION)

&S226;          VHDL允许以相同的函数名定义函数,即重载函数。但这时要求函数中定义的操作数具有不同的数据类型,以便调用时用以分辨不同功能的同名函数。在具有不同数据类型操作数构成的同名函数中,以运算符重载式函数最为常用。这种函数为不同数据类型间的运算带来极大的方便,例如以加号“+”为函数名的函数即为运算符重载函数。

&S226;          VHDL中预定义的操作符如“+”“AND”“MOD”“>”等运算符均可以被重载,以赋予新的数据类型操作功能,也就是说,通过重新定义运算符的方式,允许被重载的运算符能够对新的数据类型进行操作,或者允许不同的数据类型之间用此运算符进行运算。

 

 

6.在VHDL程序中配置有何用处?

Ø       配置可以把特定的结构体指定给一个确定的实体。通常在大而复杂的VHDL工程设计中,配置语句可以为实体指定或配置一个结构体。如可利用配置使仿真器为同一实体配置不同的结构体以使设计者比较不同结构体的仿真差别,或者为例化的各元件实体配置指定的结构体,从而形成一个所希望的例化元件层次构成的设计实体。

Ø       配置也是VHDL设计实体中的一个基本单元,在综合或仿真中,可以利用配置语句为确定整个设计提供许多有用信息。例如对以元件例化的层次方式构成的VHDL设计实体,就可把配置语句的设置看成是一个元件表,以配置语句指定在顶层设计中的每一元件与一特定结构体相衔接,或赋予特定属性。配置语句还能用于对元件的端口连接进行重新安排等。

Ø       VHDL综合器允许将配置规定为一个设计实体中的最高层设计单元,但只支持对最顶层的实体进行配置。

               配置语句的一般格式如下:                                            CONFIGURATION  配置名 OF  实体名 IS                     配置说明                                                        END  配置名;

Ø       配置主要为顶层设计实体指定结构体,或为参与例化的元件实体指定所希望的结构体,以层次方式来对元件例化作结构配置。如前所述,每个实体可以拥有多个不同的结构体,而每个结构体的地位是相同的,在这种情况下,可以利用配置说明为这个实体指定一个结构体。

 

第四章

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

Ø       VHDL语法规则中,变量是一个局部量,只能在进程和子程序中使用。变量不能将信息带出对它作出定义的当前设计单元。变量的赋值是一种理想化的数据传输,是立即发生,不存在任何延时的行为。VHDL语言规则不支持变量附加延时语句。变量常用在实现某种算法的赋值语句中。

Ø       定义变量的语法格式如下:

              VARIABLE 变量名:数据类型[约束条件][:=初始值];

       例如:

              VARIABLE  AINTEGER     --定义A为整数型变量

              VARIABLE  BCINTEGER:=2

                                   --定义BC为整型变量,初始值为2

Ø       变量不能用于存储元件。

Ø       变量赋值和初始化赋值赋号都用=”表示。

Ø       变量赋的初值不是预设的,某一时刻 只能有一个值。

Ø       变量不能用于在进程间的传递数据。

Ø       仿真时,变量用于建模;综合时,充当数据的暂存。

 

 

Ø       信号是描述硬件系统的基本数据对象,它类似于连接线。信号可以作为设计实体中并行语句模块间的信息交流通道。在VHDL中,信号及其相关的信号赋值语句、决断函数、延时语句等很好地描述了硬件系统的许多基本特征。如硬件系统运行的并行性;信号传输过程中的惯性延时特性;多驱动源的总线行为等。

Ø       信号作为一种数值容器,不但可以容纳当前值,也可以保持历史值。这一属性与触发器的记忆功能有很好的对应关系。

Ø       信号的定义格式如下:

              SIGNAL  信号名: 数据类型[约束条件][:=初始值]

Ø        例:

              SIGNAL  S1STD_LOGIG:=0     

                    --定义了一个标准位的单值信号S1,初始值为低电平

              SIGNAL  S2S3BIT       

                     --定义了两个为BIT的信号S2S3

              SIGNAL  S4 STD_LOGIC_VECTOR(15 DOWNTO 0)

                         --定义了一个标准位矢的位矢量(数组、总线)信号,                --共有16个信号元素

Ø       ”:=“表示对信号直接赋值,信号获得初始值不产生延时。

Ø       ”<=“表示对信号代入赋值,这种方式允许产生延时。

Ø       仿真进,要保证信号在初始化时能设定在指定值上。

Ø       综合时,信号应在实体和结构体中被清楚地描述。

Ø        

Ø       三者的使用比较

Ø       从硬件电路系统来看,常量相当于电路中的恒定电平,如GNDVCC接口,而变量和信号则相当于组合电路系统中门与门间的连接及其连线上的信号值。

Ø       从行为仿真和VHDL语句功能上看,信号和变量的区别主要表现在接受和保持信息的方式、信息保持与传递的区域大小上。如:

Ø       信号可以设置传输延迟量,而变量则不能;

Ø       变量在进程、函数和过程中声明,只能作为局部的信息载体,而信号在结构体中声明,可作为模块间的信息载体;

Ø       变量的设置有时只是一种过渡,最后的信息传输和界面间的通信都靠信号来完成。

Ø       变量用“:=”号赋值,其值立即被使用(无时间延迟),而信号用“<=”赋值,其赋值过程附加有时间延迟,只在信号声明语句中用“:=”号赋初值 

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

Ø       虽然VHDL仿真器允许变量和信号设置初始值,但在实际应用中,VHDL综合器并不会把这些信息综合进去。

 

&S226;         常量(CONSTANT)

Ø       常量的定义和设置主要是为了使设计实体中的常数更容易阅读和修改。例如,将位矢的宽度定义为一个常量,只要修改这个常量就能很容易地改变宽度,从而改变硬件结构。在程序中,常量是一个恒定不变的值,一旦作了数据类型的赋值定义后,在程序中不能再改变,因而具有全局意义。若要改变常量值,须改变设计,然后重新编译。

Ø       常量的定义形式如下:

           CONSTANT 常量名:数据类型:=表达式;

Ø       例如:

              CONSTANT fbusBIT_VECTOR:=“010115”

              CONSTANT vccREAL:=5.0

              CONSTANT delayTIME:=20 ns

&S226;          VHDL要求所定义的常量数据类型必须与表达式的数据类型一致。常量的数据类型可以是标量类型或复合类型,但不能是文件类型(File)或存取类型(Access)

&S226;          常量定义语句所允许的设计单元有实体、结构体、程序包、块、进程和子程序。在程序包中定义的常量可以暂不设具体数值,它可以在程序包体中设定。

&S226;          常量的使用范围取决于它被定义的位置。在程序包中定义的常量具有最大全局化特征,可以用在调用此程序包的所有设计实体中;定义在设计实体中的常量,其有效范围为这个实体定义的所有的结构体;定义在设计实体的某一结构体中的常量,则只能用于此结构体;定义在结构体的某一单元的常量,如一个进程中,则这个常量只能用在这一进程中。

 

第八章

1.叙述惯性延迟与传输延迟的异同点,以及惯性延迟的物理机制。

Ø       惯性延迟

               惯性延迟的主要物理机制是分布电容效应,分布电容产生的因素很多,分布电容具有吸收脉冲能量的效应。当输入器件的信号脉冲宽度小于器件输入端的分布电容对应的时间常数时,或者说小于器件的惯性延迟宽度时,脉冲将无法突破数字器件的阈值电平,从而在输出端不会产生任何变化。这就类似于用一外力推动一静止物体时,如果此外力持续的时间过短,将无法克服物体的静止惯性将其推动。故这个特性用于表示忽略输入尖峰的元件,如触发器、逻辑门等。

Ø       传输延迟

                传输延迟表示无论脉冲宽度多窄都能传输的延迟模型。传输延迟与惯性延迟相比,其不同之处在于传输延迟表达的是一种输入与输出之间的绝对延迟,它并不考虑信号持续的时间,仅仅对信号延迟一个时间段。这个时间段即为传输延迟。在VHDL中,传输延迟表示边线的延迟,对延迟器件、PCB板上的连线延迟和ASIC上通道延迟的建模特别有用。

 

2.功能仿真中,引进仿真δ的意义是甚么?试举例说明。

&S226;          信号的δ延迟和延缓进程

Ø       对于下列语句:

              out1 <= in1 AFTER 0 ns;                                  out1 <= in1;

       称为零延迟。对于零延迟,为了得出一致性的仿真结果,VHDL中引入了δ延迟机制,即VHDL仿真器自动为系统中的信号赋值配置一足够小而又能满足逻辑排序的仿真延迟量δ。

Ø       硬件设计中,多个进程并发工作,并且其结果保持一个δ时间,然后所有结果被接收。这些δ延迟的中间结果并不总是设计中关心的问题,但用这种方法,解决了仿真时由于计算顺序不同所带来的不一致性。

 

Ø         δ延迟的使用

LIBRARY IEEE;

USE IEEE.Std_Logic_1164.ALL;

ENTITY test IS

  PORT (in1, in2 : IN Std_Logic := '1';

               out1 : INOUT Std_Logic := '1';

                out2 : INOUT Std_Logic := '0');

END ENTITY test;

ARCHITECTURE example OF test IS

BEGIN

  out1 <= in2 NAND out2;

  out2 <= in1 NAND out1;

END ARCHITECTURE example;

Ø       延缓进程

               在仿真过程中,某个时刻可能包含多个δ延迟,一个进程只在这个时刻的最后一个δ时间激活,该进程称为延缓进程。

               延缓进程的定义是在可选标号加一个保留字POSTPONED,如:                                                                                       p1: POSTPONED PROCESS IS                                                                     p2: POSTPONED ASSERT a=b REPORT "…"         

 

抱歉,这篇文章关闭了评论功能。

关闭