您好,欢迎访问三七文档
VHDL程序设计教程习题参考解答第一章习题参考答案1.什么是VHDL?VHDL的实现有哪几种形态?硬件描述语言(HardwareDescriptionLanguage,HDL),顾名思义,是电子系统硬件行为描述、结构描述、数据流描述的语言。VHDL语言的英文全名是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,即超高速集成电路硬件描述语言。2.简述VHDL的发展史。1981年6月VHDL工作小组成立,提出了一个满足电子设计各种要求的能够作为工业标准的硬件描述语言。1983年第三季度,由IBM公司、TI公司、Intermetrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,VHDL1.0版本宣布实施,即IEEESTD1076-1987。1993年经过重新修订,发布VHDL2.0版本,从而形成新的标准即IEEESTD1076-1993。2006年VHDL发布VHDL3.0版本;2008年8月,VHDL4.0版本发布,解决了3.0版本中发现的多个问题。2009年1月,IEEE公布了VHDL4.0的标准版本,最新VHDL标准IEEE1076-2008在2009年1月实施。3.详述VHDL设计IP模块的流程。第1种设计形态,VHDL程序以IP模块的形态存在,VHDL-IP设计流程如图1.6所示。IP模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。VHDL功能定义VHDL程序编译VHDLIP封装VHDL修改调试VHDL程序编辑VHDL功能仿真图1.6VHDL-IP设计流程4.简答VHDL设计用FPGA实现的意义。可编程器件FPGA具有容量大、密度高等特点,是科学实验、小批量生产、样机研制的载体。这种产品形态可以作为科学实验、小批量产品研发的最佳实现方案。5.叙述用VHDL设计ASIC的流程。VHDL设计的ASIC芯片实现,流程如图1.8所示。工程项目的VHDL功能设计与某一集成电路工艺相结合,形成集成电路版图设计,并在晶圆上实现实现集成电路芯片的制造。VHDL功能仿真成功是是时序仿真成功物理综合版图设计参数提取设计规则检查版图交付工厂生产成品测试ASIC芯片出厂VHDL功能定义VHDL程序编辑VHDL程序编译FPGA下载功能测试成功是否是否VHDL修改调试否否图1.8VHDL-ASIC设计流程工程项目经过集成电路前端设计(VHDL设计、功能时序设计)、后端设计(版图设计),后端仿真、设计规则检查(DRC)、形式验证后的版图,交付集成电路芯片代工厂进行工业化大规模生产。6.怎样建立一个基本VHDL设计环境?把VHDL语言输入界面、编辑界面、编译工具、器件库、函数库的组合称为VHDL设计环境。许多EDA工具均提供了VHDL设计环境,如ALTERA公司的QuartusII。7.开展IP设计需要什么条件?VHDL程序以IP模块的形态存在。IP模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。开展IP设计需要EDA工具提供VHDL语言编译环境。8.片上系统设计的知识要求和实验条件有那些?片上系统设计需要SOC系统知识,嵌入式计算机体系结构知识,IP复用知识,底层驱动软件编写技能。实验条件,需要相对高级、复杂一些的FPGA开发板。第二章习题参考答案1.什么是对象?对象有哪几种类型?在VHDL语言中,对象(Objects)是具有特定数据类型且可以被赋值的客体。VHDL语言中的对象有4类:常量(Constant)、信号(Signal)、变量(Variable)和文件(Files)。2.变量和信号的区别是什么?变量(Variable)是一个局部量,主要用于对临时数据进行局部存储。信号(Signal)可用于电路内部硬件设计实体相互连接的抽象表示。信号是全局量,通常在实体说明、结构体和包中使用。3.VHDL语言定义的标准数据类型有哪些?VHDL语言预定义的数据类型包括:①整数类型(IntegerType)、②实数类型或浮点类型(RealType&FloatingType)、③位类型(BitType)、④位矢量类型(Bit_VectorType),⑤布尔类型(BooleanType)、⑥字符类型(CharacterType),⑦时间类型或物理类型(TimeType&PhysicalType)、⑧错误类型(Note,Warning,Error,FailureType),⑨自然数、整数类型(NaturalType)⑩字符串类型(TringType)。用户自定义的数据类型:①枚举类型(EnumeratedType)、②数组类型(ArrayType)、③存取类型(AccessType)、④文件类型(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子句;[generic映射;][[parameter](参数列表)]RETURN数据类型名IS[子程序声明区];BEGIN[顺序处理语句];RETURN[返回变量名];END[FUNCTION][函数名|运算符号];6.用结构化描述方法设计一个加法器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYhalf_adderIS--实体名half_adderPORT(a,b:INBit;S,C:OUTBit);--实体端口说明ENDENTITYhalf_adder;ARCHITECTUREaddr1OFhalf_addIS--结构体1的名字为addr1BEGINS=aXORb;C=aANDb;ENDARCHITECTUREaddr1;-----------------ARCHITECTUREaddr2OFhalfIS--结构体2的名字为addr2BEGINexample:block--模块名examplePORT(a,b:INBit;--端口子句s,c:OUTBit);PORTMAP(a,b,s,c);--端口映射BEGINP1:PROCESS(a,b)IS--进程1的标号P1BEGINs=aXORb;ENDPROCESSP1;P2:PROCESS(a,b)IS--进程2的标号P2BEGINc=aandb;ENDPROCESSP2;ENDBlockexample;ENDARCHITECTUREaddr2;7.采用多模块设计方法设计一个日历时钟见教材。8.单模块的端口信号与芯片引脚是什么关系?PORTMAP语句通过映射实现了block块内信号和结构体信号的连接,实现了实体端口引脚的连接,当实体端口信号发生变化时,通过映射,block块内信号也会发生变化,即这种信号变化被传递到了块内,block块的行为根据新的输入信号的变化而变化。9.多模块的端口信号与模块间互联信号是什么关系?一个结构体中可以含有多个模块,一个模块中可以含有多个进程。如此嵌套、循环,就构成一个复杂的电子系统。模块的端口信号用于模块间的互联信号。多模块构成的新系统,端口信号重新定义。第四章习题参考答案1.什么叫进程?简述进程的工作方式。略2.什么叫模块?区分模块与进程。略3.用结构描述法和GENERATE语句设计一个8位移位寄存器。上机编程并编译实现。4.设计一个3-8优先级编码器。上机编程并编译实现。5.设计一个4-16译码器。上机编程并编译实现。6.设计一个十进制计数器。上机编程并编译实现。7.用生成语句设计一个数组存储阵列。上机编程并编译实现。8.用断言语句、report语句,编写一段测试诊断报告VHDL程序。上机编程并编译实现。第五章习题参考答案1.配置语句的书写格式是怎样的?配置的一般书写格式为:CONFIGURATION配置名OF实体名ISFOR选配结构体名{[USEENTITY实体名(结构体名);][GENERICMAP语句;][PORTMAP语句;][块配置]}ENDFOR;END[CONFIGURA
本文标题:VHDL习题解答
链接地址:https://www.777doc.com/doc-2866356 .html