VHDL习题解答_第1页
VHDL习题解答_第2页
VHDL习题解答_第3页
VHDL习题解答_第4页
VHDL习题解答_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VHDL 程序设计教程习题参考解答第一章 习题参考答案1什么是VHDL?VHDL的实现有哪几种形态?硬件描述语言(Hardware Description Language,HDL),顾名思义,是电子系统硬件行为描述、结构描述、数据流描述的语言。VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。2简述VHDL的发展史。1981年6月VHDL工作小组成立,提出了一个满足电子设计各种要求的能够作为工业标准的硬件描述语言。1983年第三季度,由IBM公司、TI公司、I

2、nter metrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,VHDL1.0版本宣布实施,即IEEE STD 1076-1987。1993年经过重新修订,发布VHDL2.0版本,从而形成新的标准即IEEE STD 1076-1993。2006年VHDL发布VHDL3.0版本;2008年8月,VHDL 4.0版本发布,解决了3.0版本中发现的多个问题。2009年1月,IEEE公布了VHDL 4.0的标准版本,最新VHDL标准IEEE 1076-2008在2009年1月

3、实施。3. 详述VHDL设计IP模块的流程。第1种设计形态,VHDL程序以IP模块的形态存在,VHDL-IP设计流程如图1.6所示。IP模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。图1.6 VHDL-IP设计流程4. 简答VHDL设计用FPGA实现的意义。可编程器件FPGA具有容量大、密度高等特点,是科学实验、小批量生产、样机研制的载体。这种产品形态可以作为科学实验、小批量产品研发的最佳实现方案。5. 叙述用VHDL设计ASIC的流程。VHDL设计的ASIC芯片实现,流程如图1.8所示。工程项目的V

4、HDL功能设计与某一集成电路工艺相结合,形成集成电路版图设计,并在晶圆上实现实现集成电路芯片的制造。图1.8 VHDL- ASIC 设计流程工程项目经过集成电路前端设计(VHDL设计、功能时序设计)、后端设计(版图设计),后端仿真、设计规则检查(DRC)、形式验证后的版图,交付集成电路芯片代工厂进行工业化大规模生产。6. 怎样建立一个基本VHDL设计环境?把VHDL语言输入界面、编辑界面、编译工具、器件库、函数库的组合称为VHDL设计环境。许多EDA工具均提供了VHDL设计环境,如ALTERA公司的Quartus II。7. 开展IP 设计需要什么条件? VHDL程序以IP模块的形态存在。IP

5、模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。开展IP设计需要EDA工具提供VHDL语言编译环境。8. 片上系统设计的知识要求和实验条件有那些? 片上系统设计需要SOC系统知识,嵌入式计算机体系结构知识,IP复用知识,底层驱动软件编写技能。实验条件,需要相对高级、复杂一些的FPGA开发板。第二章 习题参考答案1什么是对象?对象有哪几种类型?在VHDL语言中,对象(Objects)是具有特定数据类型且可以被赋值的客体。VHDL语言中的对象有4类:常量(Constant)、信号(Signal)、变量(Va

6、riable)和文件(Files)。2变量和信号的区别是什么?变量(Variable)是一个局部量,主要用于对临时数据进行局部存储。信号(Signal)可用于电路内部硬件设计实体相互连接的抽象表示。信号是全局量,通常在实体说明、结构体和包中使用。3VHDL语言定义的标准数据类型有哪些?VHDL语言预定义的数据类型包括: 整数类型(Integer Type)、 实数类型或浮点类型(Real Type Floating Type)、 位类型(Bit Type)、 位矢量类型(Bit_Vector Type), 布尔类型(Boolean Type)、 字符类型(Character Type), 时间

7、类型或物理类型(Time Type Physical Type)、 错误类型(Note,Warning,Error,Failure Type), 自然数、整数类型(Natural Type) 字符串类型(Tring Type)。用户自定义的数据类型:枚举类型(Enumerated Type)、 数组类型(Array Type)、 存取类型(Access Type)、 文件类型(Files Type) 记录类型(Recode Type)。4哪些数据类型不能被综合?物理类型是不能被综合的。5简述VHDL语言操作符的优先级。运算符的优先级优先级顺序运算操作符类型操 作 符操作符功能高低逻辑运算符NO

8、T取非算术运算符ABS取绝对值*指数运算REM取余MOD求模/除法*乘-负+正并置运算符&并置算术运算符-减+加关系运算符>=大于等于<=小于等于>大于<小于/=不等于=等于逻辑运算符XOR异或NOR或非NAND与非OR或AND与6哪3种方法可用来进行类型转换?有3种方法:类型标记法、函数转换法和常数转换法。7. 状态运算符的有哪两个值? “TRUE”,和“FALSE”。8. 标示符与保留字有何不同?对VHDL编程有何约束?标识符用于命名实体、结构体、信号和变量等。VHDL语言中的保留字不可以用于标识符的命名中,保留字有些用于VHDL程序设计的关键字。 第三章

9、习题参考答案1简述VHDL设计实体的结构。实体(Entity)提供了被设计系统或器件的公共信息,指明了输入与输出引脚。实体由实体名、类型说明、端口说明、实体说明部分和实体语句部分组成。实体的一般格式为:ENTITY 实体名 IS GENERIC语句; -可选项(参数说明) PORT语句; -必需项(端口说明) 实体说明部分; -可选项 BEGIN 实体语句部分;END ENTITY 实体名;2用结构体的3种描述法设计一个4位计数器。3什么叫进程?简述进程的工作方式。进程语句不是一条语句,而是一段程序结构,这段程序描述了一个靠敏感信号触发的硬件模块反复执行的工作过程。进程语句(Process)是

10、并行处理语句,即在结构体中多个进程语句是同时并发运行的。进程语句的一般书写形式为:进程名:PROCESS敏感信号表 变量声明语句 BEGIN 顺序语句 END PROCESS 进程名;进程语句中一般带有一个敏感信号表。这些信号无论哪一个发生变化都将启动进程,进程中的程序将从上到下顺序执行一遍,产生新的结果并输出。当进程执行完毕,就返回进程开始处,等待敏感量的新变化,引发进程的下一次执行。周而复始,循环往复,以至无穷。 4什么叫模块?区分模块与进程。模块(Block)语句是结构体中的一系列并行语句的组合,适用于复杂项目的模块化设计。模块调用必须说明属性、配置和连接关系。模块语句的一般格式如下:块

11、名:BLOCK 控制条件的布尔表达式 ISGENERIC子句 GENERIC映射; 端口子句 端口映射; 块说明部分 BEGIN 并行语句A ; 并行语句B ;END BLOCK块名;模块是一个独立的子结构,可以包含PORT语句和GENERIC语句,允许设计者通过这两个语句将模块的内部信号变化传递给模块的外部信号。同样,也可以将模块的外部信号变化传递给模块的内部信号。进程不是独立的硬件结构描述,进程用于含有触发条件的、需要反复运行的程序结构。5. 简述过程与函数的区别。过程语句(procedure)结构过程语句的一般格式如下:PROCEDURE过程名|运算符号generic 子句;generi

12、c映射; parameter(参数列表)IS 子程序声明区;BEGIN 顺序处理语句;END PROCEDURE 过程名|运算符号;过程语句中的输入输出参数列在过程名后面的括号里,一般地,IN作为常量,OUT和INOUT作为变量。当过程语句在主程序调用结束后,将变量OUT和INOUT拷贝到调用者的信号和变量中。函数是具有某一特定功能的程序段,能够被主程序调用。函数被调用时,首先要初始化,执行处理功能后,将处理结果传递给主程序。函数内部的值不能保持,函数返回后,才能被再次调用,再次初始化。VHDL程序中函数语句的结构与其他语句一样,也有规定的书写格式:FUNCTION函数名|运算符号generi

13、c子句;generic映射;parameter(参数列表)RETURN数据类型名 IS子程序声明区;BEGIN 顺序处理语句; RETURN返回变量名;ENDFUNCTION函数名|运算符号;6. 用结构化描述方法设计一个加法器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY half_adder IS -实体名half_adderPORT(a,b:IN Bit; S,C:OUT Bit); -实体端口说明END ENTITY half_adder;ARCHITECTURE addr1 OF half_add IS-结构体1的名字为addr1BE

14、GIN S <= a XOR b; C <= a AND b;END ARCHITECTURE addr1;- - - - - - - - - - - - - ARCHITECTURE addr2 OF half IS -结构体2的名字为addr2BEGIN example:block -模块名example PORT(a,b: IN Bit; -端口子句 s,c: OUT Bit); PORT MAP (a,b,s,c); -端口映射BEGIN P1: PROCESS (a,b) IS -进程1的标号P1 BEGIN s <= a XOR b; END PROCESS P1

15、; P2: PROCESS (a,b) IS -进程2的标号P2 BEGIN c <= a and b; END PROCESS P2;END Block example;END ARCHITECTURE addr2;7. 采用多模块设计方法设计一个日历时钟 见教材。8. 单模块的端口信号与芯片引脚是什么关系?PORT MAP语句通过映射实现了block块内信号和结构体信号的连接,实现了实体端口引脚的连接,当实体端口信号发生变化时,通过映射,block块内信号也会发生变化,即这种信号变化被传递到了块内,block块的行为根据新的输入信号的变化而变化。9. 多模块的端口信号与模块间互联信号

16、是什么关系?一个结构体中可以含有多个模块,一个模块中可以含有多个进程。如此嵌套、循环,就构成一个复杂的电子系统。模块的端口信号用于模块间的互联信号。多模块构成的新系统,端口信号重新定义。第四章 习题参考答案1 什么叫进程?简述进程的工作方式。略2什么叫模块?区分模块与进程。略3用结构描述法和GENERATE语句设计一个8位移位寄存器。 上机编程并编译实现。4设计一个3-8优先级编码器。上机编程并编译实现。5设计一个4-16译码器。上机编程并编译实现。6. 设计一个十进制计数器。上机编程并编译实现。7. 用生成语句设计一个数组存储阵列。上机编程并编译实现。8. 用断言语句、report语句,编写

17、一段测试诊断报告VHDL程序。上机编程并编译实现。第五章 习题参考答案1配置语句的书写格式是怎样的?配置的一般书写格式为:CONFIGURATION 配置名 OF 实体名 IS FOR 选配结构体名USE ENTITY 实体名(结构体名);GENERIC MAP 语句;PORT MAP 语句;块配置 END FOR;END CONFIGURATION 配置名;2配置说明中的映射有哪两种方法?形式端口与实际端口可以是名字关联映射,也可以是位置顺序关联映射。3在配置语句中用GENERIC指定参数,设计一个译码器。上机编程实验。4设计一个加法器,元件例化后放入库中备用。上机编程实验。5简述层次化设计

18、的过程。层次化设计是指在一个大型设计任务中,将目标层层分解,在各个层次上分别进行设计的方法。在有些设计中,设计者先构建一些模块,然后再将这些模块组合起来,最终完成整个系统的设计。有人把在整个设计任务上的层面上展开行为描述的设计方法,称为高层次设计,而对某一模块、某一元件的结构描述称为底层设计。6什么是库、程序包、子程序、过程调用、函数调用?库(Library)用来存储已编译的设计单元,通过其目录可查询、调用其中的设计单元。包(package)用来封装一些类别相近的元件。包是库中一个存储单元。多个包存储在一个元件库中。子程序包含过程与函数。过程与函数是两种不同VHDL程序片段。反复完成一些数学计

19、算的元件行为,写VHDL函数较合适;反复完成某一处理过程的元件行为,写VHDL过程较合适。在系统设计中,过程的调用程序编写,称为过程调用,函数的调用程序的编写,称为函数调用。这些调用的前提是过程模块、函数模块在库中已经存在。 7. 编写一个OR函数,重载它,对不同的数据类型进行OR运算。上机编程实验。8. 写一段textio程序,并给出实验报告。 上机编程实验。第六章 习题参考答案1CLK信号怎样用VHDL语言描述?时钟上升沿的描述语句:IF clk' CURRENT_VALUE = 0 AND clk' EVENT AND clk LAST_VALUE = 1;时钟下降沿的描

20、述语句:IF clk' CURRENT_VALUE = 1 AND clk' EVENT AND clk LAST_VALUE = 0;2异步复位怎样用VHDL语言描述?清零语句在时钟语句外执行时,与时钟无关,称谓“异步清零”。P1: PROCESS (clk,clr) BEGIN IF (clr = 0) THEN -异步清零 Q <= 0 ; ELSIF(clkEVENT AND clk = 1 ) THEN Q <= d ; -时钟上升沿时刻,q=d; END IF; END PROCESS P1;3设计一个8位循环移位寄存器。学生上机编程实践4. 设计一个六

21、十进制计数器。学生上机编程实践5. 设计一个八位编码器。学生上机编程实践6. 设计一个三八译码器。学生上机编程实践7. 设计一个N位通用加法器。学生上机编程实践8.为什么要层次化设计? 大型项目,需要多人协同设计。就需要把项目层层分解,把子项目分配给团队成员。 复杂项目,需要基础模块设计和顶层设计,这样模块间的组装时,构成的电子门系统结构比较清晰。9Moore型状态机和Mealy型状态机有什么相同和不同?Moore型状态机的输出信号仅与现态相关。Mealy型状态机输出是现态和输入的函数。两种类型的区分如图所示。状态机的区分10一位有效状态机有什么优点?一般情况下,运行速度的提高,是以牺牲资源、

22、提高成本为代价的。一位有效编码,比顺序编码方式占用资源多,这种方法在某些情况下不是最佳设计方案。当目标器件具有较多寄存器资源,并且寄存器之间组合逻辑较少时,一位有效编码是一个比较合适的方法。一位有效编码方式下状态机输出由状态位译码输出。这是因为各个状态编码仅对应单独的状态位。11设计一个3位8状态机。学生上机编程实践12设计一个基于PCI BUS数字图像处理芯片,画出层次分解图,由几个人分别编程,再组合通调,写出一个团体协作的案例,总结成功失败的经验学生上机编程实践第七章 习题参考答案1. 简答功能仿真和时序仿真的不同。功能仿真:在RTL层进行的仿真,其特点是不考虑构成电路逻辑延迟和门时间延迟

23、,着重考虑电路在理想环境下的行为和设计结构的一致性;时序仿真:在电路已经映射到特定的工艺环境后,将电路的路径延迟和门延迟考虑进对电路行为的影响后,来比较电路的行为是否还能够在一定条件下满足设计要求。2. 为什么VHDL设计仅需要功能仿真? VHDL 设计硬件电路,以功能设计为设计目标,与具体的集成电路工艺无关。在不同工艺条件下,时序延时是不同的。由于VHDL设计与工艺无关,因此仅需要功能仿真。当VHDL模块移植在不同工艺条件下,时序仿真才有意义。3. 为什么集成电路设计版图设计需要时序仿真? 集成电路版图设计的前提是在某一特定的工艺条件下,进行芯片的物理层设计,由于不同工艺时序不同,所以需要时

24、序仿真,同时也需要功能仿真。在集成电路设计行业内,把版图设计的时序仿真和功能仿真彻称为“后仿真”。4. 熟练掌握使用仿真工具进行功能仿真和时序仿真,并写出仿真步骤。 学生上机实验5. 设计一个10进制计数器,编写仿真Testbench,用ModeSim工具仿真出波形。 学生上机实验6. 设计一个串行移位寄存器,编写仿真Testbench,用ModeSim工具仿真出波形。 学生上机实验7. 设计一个千兆网络收发器,编写仿真Testbench,用ModeSim工具仿真出波形 学生上机实验8. 设计一个512MB容量的DDR3控制器,仿真出状态机功能和读写时序波形。 学生上机实验第八章 习题参考答案

25、1. VHPI有哪些功能?VHPI为每个功能提供了一个VHPI操作。在VHPI头文件中,对每个功能都定义了一个vhpiCapabilitiesT类型的枚举型常量。VHPI功能有:1. 层次化功能:用于访问设计层次信息模型,对应的枚举型常量为vhpiProvidesHierachy,表示静态解释区域的对象、声明的对象,以及访问声明过的对象的值。2. 静态访问功能:用于访问设计层次信息模型,对应的枚举型常量为vhpiProvidesStaticAccess,表示静态解释语句的对象和表达式。3. 互联功能:用于访问设计层次信息模型中,对应的枚举型常量为vhpiProvidesConnectivity

26、,表示驱动、负载和端口关联等的对象。4. 事后分析功能:用于访问库信息模型中的对象,以及访问由本地静态表达式初始化的已声明对象的值。对应的枚举型常量为vhpiProvidesPostAnalysis。5. 基本外部模型功能:该功能支持外部模型的创建和回调;支持访问层次信息模型中,表示外部模型的对象。对应的枚举型常量为vhpiProvidesForeignModel。6. 高级外部模型功能:该功能支持外部驱动的创建、处理和事务调度。对应的枚举型常量为vhpiProvidesAdvanceForeignModel。 7. 保存/重启能力:用于支持外部模型和应用程序的保存和重启。对应的枚举型常量为v

27、hpiProvidesSaveRestart。8. 重置功能:用于支持外部模型重置和回调。对应的枚举型常量为vhpiProvidesReset。9. 基本调试和运行时仿真功能:对应的枚举型常量为vhpiProvidesDebugRuntime。支持vhpi_control、vhpi_get_time和vhpi_get_next_time函数;支持信号、端口和驱动对象值的变动和更新回调,支持时间和动作回调。10. 高级调试和运行时仿真功能:支持变量的对象值的变动和更新回调以及LineOffset属性。对应枚举型常量为vhpiProvidesAdvancedDebugRuntime。11. 动态解

28、释功能:对应的枚举型常量为vhpiProvidesDynamicElab,这一能力集需要基本调试和运行仿真功能、高级调试和运行仿真功能。支持访问动态解释区域、声明或构造对象。2. 在VHPI工具运行的各个阶段分别可以进行何类操作?VHDL工具各个运行阶段为:l vhpiRegistrationPhase:工具开始注册、执行阶段。注册阶段包括两个步骤,具体如下:(1)完成外部模型应用以及外部模型的库注册。(2)完成每个已注册和已激活的vhpiCbStartOfTool回调运行。当所有的已注册和已激活的vhpiCbStartOfTool回调返回到VHPI工具后,注册阶段完成。在注册阶段,调用函数v

29、hpi_get(vhpiPhaseP,NULL),返回vhpiRegistrationPhase。l vhpiAnalysisPhase:开始分析设计文件阶段。分析阶段包含3个步骤,具体如下:(1)每个已注册和激活的vhpiCbStartOfAnalysis回调都已运行。(2)一个或多个设计文件已完成分析。(3)每个注册和激活的vhpiCbEndOfAnalysis回调都已运行。在分析阶段,调用函数vhpi_get(vhpiPhaseP,NULL),返回vhpiAnalysisPhase。l vhpiElaborationPhase:开始静态解释(Elaboration)设计层次阶段。解释阶段

30、包含下列步骤:(1)每个已注册和激活的vhpiCbStartOfElaboration回调都已运行。(2)设计层次已解释。如果存在注册过的外部结构体,这一行为会为这些外部结构体唤起解释函数。(3)每个注册和激活的vhpiCbEndOfElaboration回调都已运行。在解释阶段,调用vhpi_get(vhpiPhaseP, NULL),返回vhpiElaborationPhase。l vhpiInitializationPhase:开始初始化阶段。初始化阶段用于设计层次的初始化。初始化阶段可以包含为已注册的外部结构体调用运行函数。在初始化阶段,调用函数vhpi_get(vhpiPhaseP,

31、 NULL),返回vhpiInitializationPhase。l vhpiSimulationPhase:开始执行仿真阶段。仿真阶段涉及仿真周期的运行,包括已注册和激活的vhpiCbStartOfSimulation(开始仿真)和vhpiCbEndOfSimulation(结束仿真)回调的运行。在仿真阶段,调用vhpi_get(vhpiPhaseP, NULL),返回vhpiSimulationPhase。(仿真结果)l vhpiSavePhase:保存VHDL模型的当前状态阶段。保存阶段包含下列步骤:(1)设计工具保存当前VHDL模型状态的一些行为,包括下个仿真周期的时间Tn。(2)已注

32、册和已激活的vhpiCbStartOfSave回调运行完成。(3)已注册和已激活的vhpiCbEndOfSave回调运行完成。在保存阶段,调用vhpi_get(vhpiPhaseP, NULL),返回vhpiSavePhase。l vhpiRestartPhase:VHDL模型重新启动阶段。重启阶段包含下列步骤:(1)恢复先前保存的VHDL模型状态的一些行为,包括下个仿真周期的时间Tn。(2)已注册和激活的vhpiCbStartOfRestart回调运行完成。(3)已注册和激活的vhpiCbEndOfRestart回调运行完成。在重启阶段,调用vhpi_get(vhpiPhaseP, NULL

33、),返回vhpiRestartPhase。l vhpiCbStartOfReset:重置阶段重置阶段包含下列步骤:(1)已注册和激活的vhpiCbStartOfReset回调运行完成。(2)所有除vhpiCbEndOfReset以外的回调都被清除。(3)每个驱动的输出波形都被重置为初始内容。(4)当前时间Tc被重置为0 ns。(5)已注册和激活的vhpiCbEndOfReset回调运行完成。在重置阶段,调用vhpi_get(vhpiPhaseP, NULL),返回vhpiResetPhase。l vhpiTerminationPhase:工具终止阶段。终止阶段涉及运行每个已注册和激活的vhpi

34、CbEndOfTool回调。当所有的回调都已返回到工具时,工具可以终止。3. 回调的作用是什么?回调是VHPI工具在VHDL模型运行程序时获得控制的一种机制,用于VHPI/C代码和VHDL模型之间的通信。4. VHPI工具、C+程序、VHDL模块三者的联系与区分,相互作用关系是什么?VHPI提供访问数据到VHDL模型,对其评估与仿真。这个接口是作为C语言的库来实现的,由IEEE研发并满足VHPI标准。VHPI应用程序必须编译、连接的共享库,它们能进一步VHDL设计单元、子程序绑定。5. 熟悉Active-HDL工具。学生上机实习6. 熟悉Eclipse软件开发环境。学生上机实习7. 设计一个DDR3控制器,使用VHPI工具、C+程序进行仿真、测试。学生上机实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论