VHDL习题解答Word文档下载推荐.docx
《VHDL习题解答Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《VHDL习题解答Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
工程项目的VHDL功能设计与某一集成电路工艺相结合,形成集成电路版图设计,并在晶圆上实现实现集成电路芯片的制造。
图1.8VHDL-ASIC设计流程
工程项目经过集成电路前端设计(VHDL设计、功能时序设计)、后端设计(版图设计),后端仿真、设计规则检查(DRC)、形式验证后的版图,交付集成电路芯片代工厂进行工业化大规模生产。
6.怎样建立一个基本VHDL设计环境?
把VHDL语言输入界面、编辑界面、编译工具、器件库、函数库的组合称为VHDL设计环境。
许多EDA工具均提供了VHDL设计环境,如ALTERA公司的QuartusII。
7.开展IP设计需要什么条件?
VHDL程序以IP模块的形态存在。
开展IP设计需要EDA工具提供VHDL语言编译环境。
8.片上系统设计的知识要求和实验条件有那些?
片上系统设计需要SOC系统知识,嵌入式计算机体系结构知识,IP复用知识,底层驱动软件编写技能。
实验条件,需要相对高级、复杂一些的FPGA开发板。
第二章习题参考答案
1.什么是对象?
对象有哪几种类型?
在VHDL语言中,对象(Objects)是具有特定数据类型且可以被赋值的客体。
VHDL语言中的对象有4类:
常量(Constant)、信号(Signal)、变量(Variable)和文件(Files)。
2.变量和信号的区别是什么?
变量(Variable)是一个局部量,主要用于对临时数据进行局部存储。
信号(Signal)可用于电路内部硬件设计实体相互连接的抽象表示。
信号是全局量,通常在实体说明、结构体和包中使用。
3.VHDL语言定义的标准数据类型有哪些?
VHDL语言预定义的数据类型包括:
①整数类型(IntegerType)、
2实数类型或浮点类型(RealType&FloatingType)、
3位类型(BitType)、
4位矢量类型(Bit_VectorType),
5布尔类型(BooleanType)、
6字符类型(CharacterType),
7时间类型或物理类型(TimeType&PhysicalType)、
8错误类型(Note,Warning,Error,FailureType),
9自然数、整数类型(NaturalType)
10字符串类型(TringType)。
用户自定义的数据类型:
①枚举类型(EnumeratedType)、
②数组类型(ArrayType)、
3存取类型(AccessType)、
4文件类型(FilesType)
⑤记录类型(RecodeType)。
4.哪些数据类型不能被综合?
物理类型是不能被综合的。
5.简述VHDL语言操作符的优先级。
运算符的优先级
优先级顺序
运算操作符类型
操作符
操作符功能
高
低
逻辑运算符
NOT
取非
算术运算符
ABS
取绝对值
**
指数运算
REM
取余
MOD
求模
/
除法
*
乘
-
负
+
正
并置运算符
&
并置
减
加
关系运算符
>
=
大于等于
<
小于等于
大于
小于
/=
不等于
等于
XOR
异或
NOR
或非
NAND
与非
OR
或
AND
与
6.哪3种方法可用来进行类型转换?
有3种方法:
类型标记法、函数转换法和常数转换法。
7.状态运算符的有哪两个值?
“TRUE”,和“FALSE”。
8.标示符与保留字有何不同?
对VHDL编程有何约束?
标识符用于命名实体、结构体、信号和变量等。
VHDL语言中的保留字不可以用于标识符的命名中,保留字有些用于VHDL程序设计的关键字。
第三章习题参考答案
1.简述VHDL设计实体的结构。
实体(Entity)提供了被设计系统或器件的公共信息,指明了输入与输出引脚。
实体由实体名、类型说明、端口说明、实体说明部分和实体语句部分组成。
实体的一般格式为:
ENTITY实体名IS
[GENERIC语句;
]--可选项(参数说明)
PORT语句;
--必需项(端口说明)
[实体说明部分;
]--可选项
[BEGIN
实体语句部分;
]
END[ENTITY][实体名];
2.用结构体的3种描述法设计一个4位计数器。
3.什么叫进程?
简述进程的工作方式。
进程语句不是一条语句,而是一段程序结构,这段程序描述了一个靠敏感信号触发的硬件模块反复执行的工作过程。
进程语句(Process)是并行处理语句,即在结构体中多个进程语句是同时并发运行的。
进程语句的一般书写形式为:
[进程名:
]PROCESS[敏感信号表]
变量声明语句
…
BEGIN
…
顺序语句
…
ENDPROCESS[进程名];
进程语句中一般带有一个敏感信号表。
这些信号无论哪一个发生变化都将启动进程,进程中的程序将从上到下顺序执行一遍,产生新的结果并输出。
当进程执行完毕,就返回进程开始处,等待敏感量的新变化,引发进程的下一次执行。
周而复始,循环往复,以至无穷。
4.什么叫模块?
区分模块与进程。
模块(Block)语句是结构体中的一系列并行语句的组合,适用于复杂项目的模块化设计。
模块调用必须说明属性、配置和连接关系。
模块语句的一般格式如下:
块名:
BLOCK[控制条件的布尔表达式][IS]
{[GENERIC子句
[GENERIC映射;
]]}
{[端口子句
[端口映射;
]]
{块说明部分}
BEGIN
{并行语句A;
并行语句B;
…}
ENDBLOCK[块名];
模块是一个独立的子结构,可以包含PORT语句和GENERIC语句,允许设计者通过这两个语句将模块的内部信号变化传递给模块的外部信号。
同样,也可以将模块的外部信号变化传递给模块的内部信号。
进程不是独立的硬件结构描述,进程用于含有触发条件的、需要反复运行的程序结构。
5.简述过程与函数的区别。
过程语句(procedure)结构
过程语句的一般格式如下:
PROCEDURE 过程名|运算符号
[generic子句;
[generic映射;
]]
[[parameter](参数列表)]IS
[子程序声明区];
BEGIN
[顺序处理语句];
END[PROCEDURE]过程名|运算符号;
过程语句中的输入输出参数列在过程名后面的括号里,一般地,IN作为常量,OUT和INOUT作为变量。
当过程语句在主程序调用结束后,将变量OUT和INOUT拷贝到调用者的信号和变量中。
函数是具有某一特定功能的程序段,能够被主程序调用。
函数被调用时,首先要初始化,执行处理功能后,将处理结果传递给主程序。
函数内部的值不能保持,函数返回后,才能被再次调用,再次初始化。
VHDL程序中函数语句的结构与其他语句一样,也有规定的书写格式:
FUNCTION 函数名|运算符号
[generic子句;
[[parameter](参数列表)]
RETURN 数据类型名IS
[子程序声明区];
RETURN[返回变量名];
END [FUNCTION][函数名|运算符号];
6.用结构化描述方法设计一个加法器。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYhalf_adderIS--实体名half_adder
PORT(a,b:
INBit;
S,C:
OUTBit);
--实体端口说明
ENDENTITYhalf_adder;
ARCHITECTUREaddr1OFhalf_addIS--结构体1的名字为addr1
S<
=aXORb;
C<
=aANDb;
ENDARCHITECTUREaddr1;
-----------------
ARCHITECTUREaddr2OFhalfIS--结构体2的名字为addr2
example:
block--模块名example
PORT(a,b:
INBit;
--端口子句
s,c:
OUTBit);
PORTMAP(a,b,s,c);
--端口映射
P1:
PROCESS(a,b)IS--进程1的标号P1
BEGIN
s<
ENDPROCESSP1;
P2:
PROCESS(a,b)IS--进程2的标号P2
c<
=aandb;
ENDPROCESSP2;
ENDBlockexample;
ENDARCHITECTUREaddr2;
7.采用多模块设计方法设计一个日历时钟
见教材。
8.单模块的端口信号与芯片引脚是什么关系