13 第十三章 VHDL语言的属性描述语句 习题答案
vhdl简答

1、简述信号与变量的区别。
a.信号延时赋值,变量立即赋值b.信号的代入使用<=,变量的代入使用:=;c.信号在实际的硬件当中有对应的连线,变量没有2、简述可编程逻辑器件的优点。
a.集成度高,可以替代多至几千块通用IC芯片.极大减小电路的面积,降低功耗,提高可靠性b.具有完善先进的开发工具.提供语言、图形等设计方法,十分灵活.通过仿真工具来验证设计的正确性c.可以反复地擦除、编程,方便设计的修改和升级d.灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间f.保密性好3、试比较moore状态机与mealy状态机的异同。
Moore输出只是状态机当前状态的函数. Mealy输出为有限状态机当前值和输入值的函数3、简述VHDL语言与计算机语言的差别。
a. 运行的基础。
计算机语言是在CPU+RAM构建的平台上运行。
VHDL设计的结果是由具体的逻辑、触发器组成的数字电路b.执行方式.计算机语言基本上以串行的方式执行.VHDL在总体上是以并行方式工作c.验证方式.计算机语言主要关注于变量值的变化.VHDL要实现严格的时序逻辑关系6、VHDL与计算机语言的区别?VHDL语言可以并行执行,计算机语言只能顺序执行。
3.1比较常用硬件描述语言VHDL、Verilog和ABEL语言的优劣。
1.VHDL:描述语言层次较高,不易控制底层电路,因而对综合器的性能要求较高。
有多种EDA工具选择,已成为IEEE标准。
应用VHDL进行工程设计的优点是多方面的,具体如下:(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。
(2) VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。
(3) VHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。
(4) 用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表(根据不同的实现芯片)。
2023年大学_EDA技术与VHDL第二版(潘松著)课后习题答案下载

2023年EDA技术与VHDL第二版(潘松著)课后习题答案下载EDA技术与VHDL第二版(潘松著)课后答案下载第1章 EDA技术概述1.1 EDA技术及其发展1.1.1 EDA技术的发展1.1.2 EDA技术的涵义1.1.3 EDA技术的基本特征1.2 EDA技术的主要内容及主要的EDA厂商1.2.1 EDA技术的主要内容1.2.2 主要EDA厂商概述1.3 EDA技术实现目标1.3.1 超大规模可编程逻辑器件1.3.2 半定制或全定制ASIC1.3.3 混合ASIC1.4 EDA技术应用1.4.1 EDA技术应用形式1.4.2 EDA技术应用场合1.5 EDA技术的发展趋势1.5.1 可编程器件的发展趋势1.5.2 软件开发工具的发展趋势1.5.3 输入方式的发展趋势__小结思考题和习题第2章大规模可编程逻辑器件2.1 可编程逻辑器件概述2.1.1 PLD的'发展进程2.1.2 PLD的种类及分类方法2.2 简单可编程逻辑器件2.2.1 PLD电路的表示方法及有关符号 2.2.2 PROM基本结构2.2.3 PLA基本结构2.2.4 PAL基本结构2.2.5 GAL基本结构2.3 复杂可编程逻辑器件2.3.1 CPLD基本结构2.3.2 Altera公司器件2.4 现场可编程逻辑器件2.4.1 FPGA整体结构2.4.2 Xilinx公司FPGA器件2.5 在系统可编程逻辑器件2.5.1 ispLSl/pLSl的结构2.5.2 Lattice公司ispLSI系列器件 2.6 FPGA和CPLD的开发应用2.6.1 CPLD和FPGA的编程与配置2.6.2 FPGA和CPLD的性能比较2.6.3 FPGA和CPLD的应用选择__小结思考题和习题第3章 EDA设计流程与开发3.1 EDA设计流程3.1.1 设计输入3.1.2 综合3.1.3 适配3.1.4 时序仿真与功能仿真3.1.5 编程下载3.1.6 硬件测试3.2 ASIC及其设计流程3.2.1 ASIC设计方法3.2.2 一般的ASIC设计流程3.3 可编程逻辑器件的开发环境 3.4 硬件描述语言3.5 IP核__小结思考题和习题第4章硬件描述语言VHDL4.1 VHDL概述4.1.1 VHDL的发展历程4.1.2 VHDL的特点4.2 VHDL程序基本结构4.2.1 实体4.2.2 结构体4.2.3 库4.2.4 程序包4.2.5 配置4.3 VHDL基本要素4.3.1 文字规则4.3.2 数据对象4.3.3 数据类型4.3.4 运算操作符4.3.5 VHDL结构体描述方式 4.4 VHDL顺序语句4.4.1 赋值语句4.4.2 IF语句4.4.3 等待和断言语句4.4.4 cASE语句4.4.5 LOOP语句4.4.6 RETIARN语句4.4.7 过程调用语句4.4.8 REPORT语句4.5 VHDL并行语句4.5.1 进程语句4.5.2 块语句4.5.3 并行信号代人语句4.5.4 并行过程调用语句4.5.5 并行断言语句4.5.6 参数传递语句4.5.7 元件例化语句__小结思考题和习题第5章 QuartusⅡ软件及其应用5.1 基本设计流程5.1.1 建立工作库文件夹和编辑设计文件 5.1.2 创建工程5.1.3 编译前设计5.1.4 全程编译5.1.5 时序仿真5.1.6 应用RTL电路图观察器5.2 引脚设置和下载5.2.1 引脚锁定5.2.2 配置文件下载5.2.3 AS模式编程配置器件5.2.4 JTAG间接模式编程配置器件5.2.5 USBBlaster编程配置器件使用方法 __小结思考题和习题第6章 VHDL应用实例6.1 组合逻辑电路设计6.1.1 基本门电路设计6.1.2 译码器设计6.1.3 数据选择器设计6.1.4 三态门设计6.1.5 编码器设计6.1.6 数值比较器设计6.2 时序逻辑电路设计6.2.1 时钟信号和复位信号6.2.2 触发器设计6.2.3 寄存器和移位寄存器设计6.2.4 计数器设计6.2.5 存储器设计6.3 综合实例——数字秒表的设计__小结思考题和习题第7章状态机设计7.1 一般有限状态机7.1.1 数据类型定义语句7.1.2 为什么要使用状态机 7.1.3 一般有限状态机的设计 7.2 Moore型有限状态机设计 7.2.1 多进程有限状态机7.2.2 单进程有限状态机7.3 Mealy型有限状态机7.4 状态编码7.4.1 状态位直接输出型编码 7.4.2 顺序编码7.4.3 一位热码编码7.5 状态机处理__小结思考题和习题第8章 EDlA实验开发系统8.1 GW48型实验开发系统原理与应用8.1.1 系统性能及使用注意事项8.1.2 GW48系统主板结构与使用方法8.2 实验电路结构图8.2.1 实验电路信号资源符号图说明8.2.2 各实验电路结构图特点与适用范围简述8.3 GW48CK/GK/EK/PK2系统信号名与芯片引脚对照表 __小结思考题和习题第9章 EnA技术实验实验一:全加器的设计实验二:4位加减法器的设计实验三:基本D触发器的设计实验四:同步清零计数器的设计实验五:基本移位寄存器的设计串人/串出移位寄存器实验六:同步预置数串行输出移位寄存器的设计实验七:半整数分频器的设计实验八:音乐发生器的设计实验九:交通灯控制器的设计实验十:数字时钟的设计EDA技术与VHDL第二版(潘松著):内容简介《EDA技术与VHDL》主要内容有Altera公司可编程器件及器件的选用、QuartusⅡ开发工具的使用;VHDL硬件描述语言及丰富的数字电路和电子数字系统EDA设计实例。
03第三章VHDL语言基础习题答案.doc

填空题1、一个标准的VHDL语言程序由库、实体和结构体组成。
2、个完整的VHDL语言描述是以对一个功能元件的完整描述为基础的3、实体相当于电路图中一个器件符号。
4、端口说明( PORT )是对设计实体与外部接口的描述,也可以说是设计实体的外部引脚的名称,它为实体与外部环境的动态通信提供通道5、缓冲( BUFFER )端口描述模式和 INOUT 双向模式的区别在于只能接受一个驱动源,不允许多重驱动。
6、 VHDL语言的结构体的这些子结构互相之间是并行的。
7、将 VHDL语言的行为描述语句转换为门级描述由VHDL开发工具自动完成,是VHDL 语言综合器的任务。
8、数据流描述也称为RTL (寄存器传输级)描述方式,它类似于布尔方程,它既表示某种行为,又隐含结构信息,主要指非结构化的并行语句描述。
9、在结构描述中,元件间的连接是通过定义的端口界面来实现的。
10、结构描述的缺点是程序表示的是电路的结构连接关系,不能直观的得到设计电路的逻辑功能。
综述题1、写出实体的结构。
答案:ENTITY 实体名IS[GENERIC( 类属表 );][PORT( 端口表 );]END ENTITY实体名;2 、在 IEEE 库中定义了哪四种VHDL 语言的端口模式?答案:IN :输入。
OUT :输出。
INOUT :双向,输入输出。
BUFFER :缓冲,其实质也是双向的,但是只能接受一个驱动源。
3、写出结构体的结构。
?2 ?答案:ARCHITECTURE 结构体名OF 实体名IS[ 说明语句 ]BEGIN[ 功能描述语句]END ARCHITECTURE结构体名;4 、写出结构体的功能性描述语句的5 种子结构。
答案:块语句、进程语句、子程序调用语句、信号赋值语句和元件例化语句。
5 、 VHDL 有哪四种描述风格?答案:行为描述、数据流描述、结构描述以及由前三种组合的混合描述。
实验题实验【一】编写一个实体实验目的:熟悉实体的编写方法。
VHDL语言的主要描述语句

VHDL语言的主要描述语句按照语句的执行顺序对VHDL语言进行分类,包含两类语句:并行描述语句该语句的执行与书写顺序无关,总是同时被执行顺序描述语句从仿真的角度,该语句是顺序执行的进程语句(PROCESS)是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。
但是进程内部的所有语句都是顺序语句。
一、顺序描述语句顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。
如下分别介绍有关的顺序描述语句.1.WAIT语句进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.等待语句的格式:*WAIT 无限等待*WAIT ON 敏感信号变化*WAIT UNTIL 条件满足*WAIT FOR 时间到(1)WAIT ON格式:WAIT ON 信号[,信号]例5-1PROCESS(a,b)BEGINy<=a AND b;END PROCESS;该例中的进程与下例中进程相同:例5-1PROCESSBEGINy<=a AND b;WAIT ON a,b;END PROCESS;例5-2PROCESS(a,b)BEGINy<=a AND b;WAIT ON a,b;END PROCESS;(2)WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100)(3)WAIT FOR等到时间到格式: WAIT FOR 时间表达式当进程执行到该语句时,被挂起;等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns;WAIT FOR (a*(b+c);(4)多条件WAIT 语句例: WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件:第一,信号nmi和interrupt 任何一个有一次刷新动作第二, 信号nmi和interrupt 任何一个为真第三, 已等待5 us只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。
vhdl课后习题答案

vhdl课后习题答案VHDL课后习题答案在学习VHDL(VHSIC Hardware Description Language)这门课程时,课后习题是巩固知识、提高能力的重要方式。
通过认真完成课后习题并查看答案,我们可以更好地理解和掌握VHDL的相关知识,提高自己的编程能力。
下面我们将通过几个典型的VHDL课后习题答案来展示VHDL的魅力和应用。
1. 课后习题一题目:使用VHDL编写一个简单的门电路,包括AND门、OR门和NOT门,并进行仿真验证。
答案:首先,我们定义AND门、OR门和NOT门的输入输出信号。
然后,使用VHDL语言编写各个门电路的逻辑实现,并进行仿真验证。
最后,我们可以观察仿真波形图,验证门电路的功能是否符合预期。
2. 课后习题二题目:使用VHDL编写一个4位全加器,并进行综合、布线和时序分析。
答案:首先,我们定义全加器的输入输出信号。
然后,使用VHDL语言编写4位全加器的逻辑实现,并进行综合、布线和时序分析。
最后,我们可以观察综合和布线报告,分析全加器的资源利用情况和时序性能。
3. 课后习题三题目:使用VHDL编写一个有限状态机(FSM),实现一个简单的计数器,并进行状态转移图和状态转移表的分析。
答案:首先,我们定义有限状态机的状态和状态转移条件。
然后,使用VHDL 语言编写有限状态机的逻辑实现,并进行状态转移图和状态转移表的分析。
最后,我们可以观察状态转移图和状态转移表,验证有限状态机的状态转移是否符合预期。
通过以上几个VHDL课后习题答案的展示,我们可以看到VHDL在数字电路设计和硬件描述方面的强大应用。
通过学习VHDL并完成课后习题,我们可以提高自己的编程能力,掌握数字电路设计的基本原理和方法。
希望大家在学习VHDL的过程中能够认真完成课后习题,并不断提高自己的编程水平。
EDA技术与VHDL程序开发基础教程课后答案(完整版)

1.8.1填空1.EDA的英文全称是Electronic Design Automation2.EDA技术经历了计算机辅助设计CAD阶段、计算机辅助工程设计CAE阶段、现代电子系统设计自动化EDA阶段三个发展阶段3. EDA技术的应用可概括为PCB设计、ASIC设计、CPLD/FPGA设计三个方向4.目前比较流行的主流厂家的EDA软件有Quartus II、ISE、ModelSim、ispLEVER5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有VHDL、Verilog7.逻辑综合后生成的网表文件为EDIF8.布局布线主要完成将综合器生成的网表文件转换成所需的下载文件9.时序仿真较功能仿真多考虑了器件的物理模型参数10.常用的第三方EDA工具软件有Synplify/Synplify Pro、Leonardo Spectrum1.8.2选择1.EDA技术发展历程的正确描述为(A)A CAD->CAE->EDAB EDA->CAD->CAEC EDA->CAE->CADD CAE->CAD->EDA2.Altera的第四代EDA集成开发环境为(C)A ModelsimB MUX+Plus IIC Quartus IID ISE3.下列EDA工具中,支持状态图输入方式的是(B)A Quartus IIB ISEC ispDesignEXPERTD Syplify Pro4.下列几种仿真中考虑了物理模型参数的仿真是(A)A 时序仿真B 功能仿真C 行为仿真D 逻辑仿真5.下列描述EDA工程设计流程正确的是(C)A输入->综合->布线->下载->仿真B布线->仿真->下载->输入->综合C输入->综合->布线->仿真->下载D输入->仿真->综合->布线->下载6.下列编程语言中不属于硬件描述语言的是(D)A VHDLB VerilogC ABELD PHP1.8.3问答1.结合本章学习的知识,简述什么是EDA技术?谈谈自己对EDA技术的认识?答:EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
《VHDL应用教程》课后习题参考答案

第1章绪论1.1电子设计自动化1.2EDA技术,是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
1.31、用软件的方式设计硬件。
2、用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的。
3、设计过程中可用有关软件进行各种仿真。
4、系统可现场编程,在线升级。
5、整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
1.4可编程逻辑器件(Programmable Logic Device,PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。
FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
1.51、自顶向下设计方法是一种模块化设计方法。
它对设计的描述从上到下,逐步由粗略到详细,符合常规的逻辑思维习惯。
由于高层设计与器件无关,设计易于在各种集成电路工艺或可编程器件之间移植。
2、适合多个设计者同时进行设计。
随着技术的不断进步,许多设计由一个设计者已无法完成,而必须经过多个设计者分工协作来完成。
在这种情况下,应用自顶向下的设计方法便于多个设计者同时进行设计,对设计任务进行合理分配,并用系统工程的方法对设计进行管理。
第2章可编程逻辑器件2.1按结构的复杂程度分类、按互连结构分类、按可编程特性分类、按可编程器件的编程元件分类2.2主动串行配置式、主动并行配置模式、外设配置模式、从动串行配置模式、菊花链配置模式2.31、编程单元。
查找表型FPGA的编程单元为SRAM结构,可以无限次编程,但它属于易失性元件,掉电后芯片内的信息会丢失;而CPLD则采用EEPROM编程单元,不仅可无限次编程,且掉电后片内的信息不会丢失。
VHDL习题解答

V H D L习题解答(共15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--VHDL 程序设计教程习题参考解答第一章习题参考答案1.什么是VHDLVHDL的实现有哪几种形态硬件描述语言(Hardware Description Language,HDL),顾名思义,是电子系统硬件行为描述、结构描述、数据流描述的语言。
VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。
2.简述VHDL的发展史。
1981年6月VHDL工作小组成立,提出了一个满足电子设计各种要求的能够作为工业标准的硬件描述语言。
1983年第三季度,由IBM公司、TI公司、Inter metrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。
1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,版本宣布实施,即IEEE STD 1076-1987。
1993年经过重新修订,发布版本,从而形成新的标准即IEEE STD 1076-1993。
2006年VHDL发布版本;2008年8月,VHDL 版本发布,解决了版本中发现的多个问题。
2009年1月,IEEE公布了VHDL 的标准版本,最新VHDL标准IEEE 1076-2008在2009年1月实施。
3. 详述VHDL设计IP模块的流程。
第1种设计形态,VHDL程序以IP模块的形态存在,VHDL-IP设计流程如图所示。
IP模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。
IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。
图 VHDL-IP设计流程4. 简答VHDL设计用FPGA实现的意义。
可编程器件FPGA具有容量大、密度高等特点,是科学实验、小批量生产、样机研制的载体。
VHDL程序设计教程习题解答

VHDL程序设计教程习题参考解答第1章思考题解答1.什么是VHDL?简述VHDL的发展史。
答:VHDL是美国国防部为电子项目设计承包商提供的,签定合同使用的,电子系统硬件描述语言。
1983年成立VHDL语言开发组,1987年推广实施,1993年扩充改版。
VHDL 是IEEE标准语言,广泛用于数字集成电路逻辑设计。
2.简述VHDL设计实体的结构。
答:实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。
根据IEEE标准,实体组织的一般格式为:ENTITY 实体名 IS[GENERIC(类型表);] --可选项[PORT(端口表);] --必需项实体说明部分; --可选项[BEGIN实体语句部分;]END [ENTITY] [实体名];3.分别用结构体的3种描述法设计一个4位计数器。
答:用行为描述方法设计一个4位计数器如下,其它描述方法,读者可自行设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY countA ISPORT (clk,clr,en:IN STD_LOGIC;Qa,qb,qc,qd:OUT STD_LOGIC);END countA;ARCHITECTURE example OF countA ISSIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0);BEGINQa <= count_4(0);Qb <= count_4(1);Qc <= count_4(2);Qd <= count_4(3);PROCESS (clk,clr)BEGINIF (clr = '1' ) THENCount_4 <= "0000";ELSIF (clk'EVENT AND clk = '1' ) THENIF (en = '1' ) THENIF (count_4 = "1111") THENcount_4 <= "0000";ELSEcount_4 <= count_4+ '1';END IF;END IF;END IF;END PROCESS;END example;第2章思考题解答1.什么叫对象?对象有哪几个类型?答:在VHDL语言中,凡是可以赋于一个值的客体叫对象(object)。
vhdl语言的名词解释题答案

vhdl语言的名词解释题答案VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和硬件描述领域。
在VHDL中,有许多重要的名词需要理解和解释。
本文将对其中一些常见的名词进行解释,帮助读者更好地理解VHDL语言。
1. 实体(Entity):实体是VHDL中的一个关键概念,描述了一个电路或组件的外部特性,类似于C语言中的函数声明。
实体定义了输入(端口)和输出(信号)的类型、方向和宽度等信息。
在VHDL中,实体是由端口声明和信号声明组成的。
2. 体(Architecture):体是VHDL中定义电路结构和行为的部分。
它描述了实体中定义的端口和信号如何互相连接、通过逻辑门实现特定的功能。
一个实体可以有多个体,每个体可以用不同的方式实现相同的功能。
3. 信号(Signal):信号是VHDL中的基本数据类型,用于在不同的实体和体之间传递信息。
每个信号都有一个特定的类型,如布尔型、整数型或位向量型,用于表示不同的电路信号。
4. 进程(Process):进程是VHDL中定义电路行为的方式之一,类似于C语言中的函数。
一个进程可以包含多个语句,通过条件语句和循环语句来控制信号的行为。
进程可以响应输入信号的变化,并根据特定的逻辑来更新输出信号。
5. 组合逻辑(Combinational Logic):组合逻辑是一种基本的电路逻辑,它根据输入信号的当前值直接计算出输出信号的值,而不考虑过去的状态。
在VHDL中,组合逻辑通常通过使用逻辑运算符(如AND、OR和NOT)和条件语句(如IF-THEN-ELSE)来实现。
6. 时序逻辑(Sequential Logic):时序逻辑是一种基于电路状态的逻辑,它不仅考虑当前输入信号的值,还考虑过去的状态。
时序逻辑包括存储元件(如寄存器和触发器)和时钟信号,用于控制电路的时序行为。
在VHDL中,时序逻辑通常通过使用进程来实现。
VHDL语言描述语句

PROCESS(a,b,en) BEGIN IF (en='1') THEN c<=a; ELSE c<=b; END IF; END PROCESS;
(3)用作多选择控制时的IF语句书写格式为 IF 条件1 THEN 顺序处理语句1; ELSIF 条件2 THEN 顺序处理语句2; ┆ ELSIF 条件N-1 THEN 顺序处理语句N-1; ELSE 顺序处理语句N; END IF;
• 语法说明:
进程当中的赋值: 变量:立即更新。 信号:process执行完毕赋值才生效。同时,进程中的信号赋值语句允许 有多个不同的赋值驱动源,但仅最后 一个驱动源有效
3、IF语句
IF语句 IF语句是根据所指定的条件来确定执行哪些语句,适用于比较器、 译码器等需要条件控制的逻辑电路设计,通常有以下三种类型。 (1)用作门阀控制时的IF语句书写格式为 IF (条件) THEN 顺序处理语句; END IF;
LIBRARY IEEE; USE IEEE.Sቤተ መጻሕፍቲ ባይዱD_LOGIC_1164.ALL; ENTITY mux4 IS PORT( input:IN STD_LOGIC_VECTOR(3 DOWNTO 0); en:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC); END mux4; ARCHITECTURE aa OF mux4 IS BEGIN PROCESS(input,en) BEGIN IF (en="00") THEN y<=input(0); ELSIF (en="01") THEN y<=input(1); 例2(例5-9)四选一数据选择器 ELSIF (en="10") THEN y<=input(2); ELSE y<=input(3); END IF; END PROCESS; END aa;
13第十三章VHDL语言的属性描述语句习题答案

填空题1、D ATA ' LEFT表示得到数据类型或子类型区间的左边界值。
2、A RRAY ' ENGTH表示数组的范围长度。
3、函数类属性描述语句是指这些属性是以函数的形式来表达的。
4、在VHDL语言程序中经常要定义数组,并在程序中运用数组的左端位置序号、右端位置序号等,此时可以使用数组的属性函数了。
5、信号的属性函数也是函数类属性描述语句的一种,其可以得到信号的行为信息、____________ 功能信息和历史信息。
6、信号类属性描述’STABLE ( time )可以确定原信号的工作情况,并稳定一段要求的时间,稳定时间由时间表达式time决定,其返回是布尔信号量,可以作为独立的信号来使用,它也可以用来触发其他进程。
7、数据类型类属性描述语句只有一个属性’BASE,利用该属性可以返回原数据的数据类型。
综述题1、VHDL语言的属性描述语句包括哪六大类?答案:•数值类属性描述语句。
•函数类属性描述语句。
•信号类属性描述语句。
•数据类型类属性描述语句。
•数据区间类属性描述语句。
•用户自定义属性语句。
2、VHDL语言的数据类型的属性函数有几种,分别是什么?答案:•DATA 'POS (x)表示得到输入数据x的位置序号值。
•DATA 'VAL (x)表示根据位置序号值x索引到该位置的数值。
•DATA 'SUCC ( x)表示得到排列在输入数据x后面的数值。
•DATA 'RED ( x)表示得到排列在输入数据x前面的数值。
•DATA 'LEFTOF (x)表示得到输入数据x的左邻值。
•DATA 'RIGHTOF ( x)表示得到输入数据x的右邻值。
?2 ?3、数组的属性函数有哪几种?答案:•ARRAY 'LEFT (n)表示得到数组的第n维区间的左端位置序号值。
•ARRAY 'RIGHT (n)表示得到数组的第n维区间的右端位置序号值。
VHDL语言知识学习的主要描述语句

VHDL 语言的主要描述语句按照语句的执行顺序对VHDL 语言进行分类,包含两类语句:并行描述语句该语句的执行与书写顺序无关,总是同时被执行顺序描述语句从仿真的角度,该语句是顺序执行的进程语句( PROCESS )是最典型的并行语句,一个构造体内可以有几个进程语句同时存在,而且并发执行。
但是进程内部的所有语句都是顺序语句。
一、顺序描述语句顺序描述语句只能用在进程和子程序中,它和其他高级语言一样,其语句是按照语句的出现的顺序加以执行的。
如下分别介绍有关的顺序描述语句.1. WAIT 语句进程在执行过程中总是处于两种状态:执行或挂起,进程的状态变化受等待语句的控制,当进程执行到等待语句,就被挂起,并等待再次执行进程.等待语句的格式:*WAIT 无限等待*WAIT ON 敏感信号变化*WAIT UNTIL 条件满足*WAIT FOR 时间到( 1 )WAIT ON例5-1PROCESS(a,b)BEGINy<=a AND b;END PROCESS;该例中的进程与下例中进程相同例5-1PROCESSBEGINy<=a AND b;WAIT ON a,b;END PROCESS;例5-2PROCESS(a,b)BEGINy<=a AND b;WAIT ON a,b;END PROCESS;2 )WAIT UNTIL 直到条件满足格式: WAIT UNTIL 布尔表达式当进程执行到该语句时,被挂起;若布尔表达式为真时,进程将被启动.例: WAIT UNTIL ((x*10)<100)( 3 )WAIT FOR 等到时间到格式: WAIT FOR 时间表达式当进程执行到该语句时,被挂起; 等待一定的时间后,进程将被启动.例: WAIT FOR 20 ns ;WAIT FOR (a*( b+c );(4 )多条件WAIT 语句例: WAIT ON nmi,interrupt UNTIL ((nmi=TRUE) OR (interrupt=TRUE)) FOR 5 us 该等待有三个条件:第一,信号nmi 和interrupt 任何一个有一次刷新动作第二, 信号nmi 和interrupt 任何一个为真第三, 已等待 5 us只要一个以上的条件被满足,进程就被启动.*注意:多条件等待时,表达式的值至少应包含一个信号量的值。
VHDL属性描述与定义语句

属性描述与定义语句
1. 信号类属性
(NOT clock’STABLE AND clock ='1') (clock’EVENT AND clock ='1') 注意:
语句“ NOT(clock'STABLE AND clock ='1') ”的 表达方式是不可综合的。因为,对于VHDL综合器来说, 括号中的语句等效于一条时钟信号边沿测试专用语句, 它已不是普通的操作数,所以不能以操作数方式来对待。
属性描述与定义语句
4. 数组属性'LENGTH
... TYPE arry1 ARRAY (0 TO 7) OF BIT ; VARIABLE wth: INTEGER; ... wth1: =arry1’L
属性描述与定义语句
5. 用户定义属性 ATTRIBUTE 属性名 : 数据类型; ATTRIBUTE 属性名 OF 对象名 : 对象类型IS 值;
even_numbits, odd_numbits : OUT STD_LOGIC ) ; END parity ; ARCHITECTURE behave OF parity IS BEGIN PROCESS (input_bus)
VARIABLE temp: STD_LOGIC; BEGIN
temp := '0'; FOR i IN input_bus'LOW TO input_bus'HIGH LOOP temp := temp XOR input_bus( i ) ; END LOOP ; odd_numbits <= temp ; even_numbits <= NOT temp; END PROCESS; END behave;
13 第十三章 VHDL语言的属性描述语句

第十三章 VHDL语言的属性描述语句
13.5 数据类型类属性描述语句
数据类型类属性描述语句只有一个属 性’BASE,利用该属性可以返回原数据的 数据类型,而且必须使用数值类属性描述 语句或函数类属性描述语句的返回值来表 示。
第十三章 VHDL语言的属性描述语句
13.6 数据区间类属性描述语句
第十三章 VHDL语言的属性描述语句
13.4.3 属性 ’QUIET语句
SIGNAL’QUIET(time)语句:表示在要求 的一段时间内,原信号如果没有事件要处 理,则属性函数将返回一个布尔信号量 “真”值,如果有事件要处理,则属性函 数将返回一个布尔信号量“假”值,其中 要求的一段时间由时间表达式time决定。
数据类型类属性描述语句有两个属 性’RANGE[(n)]和属 性’REVERSE_RANGE[(n)],这两个属 性仅仅用于受约束的数组类型数据,并返 回数组类型数据指定的第n维区间的索引长 度
第十三章 VHDL语言的属性描述语句
13.7 用户自定义属性语句
除了上面介绍的各种属性外,还可以由用 户自定义属性,它被称为用户自定义属性 语句,其关键词是ATTRIBUTE。
第十三章 VHDL语言的属性描述语句
13.1 属性预定义 13.2 数字类属性描述语句 13.3 函数类属性描述语句 13.4 信号类属性描述语句 13.5 数据类型类属性描述语句 13.6 数据区域类属性描述语句 13.7 用户自定义属性语句
第十三章 VHDL语言的属性描述语句
13.2 数值类属性描述语句
13.2.1 一般数据的数值属性描述语句 13.2.2 数组的数值属性描述语句 13.2.3 块的数值属性描述语句
VHDL练习题

12. VHDL语言中变量定义的位置是 D 。
A. 实体中中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置13. VHDL语言中信号定义的位置是 D 。
A. 实体中任何位置B. 实体中特定位置C. 结构体中任何位置D. 结构体中特定位置14. 变量是局部量可以写在 B 。
A. 实体中B. 进程中C. 线粒体D. 种子体中15. 变量和信号的描述正确的是 A 。
A. 变量赋值号是:=B. 信号赋值号是:=C. 变量赋值号是<=D. 二者没有区别16. 变量和信号的描述正确的是 B 。
A. 变量可以带出进程B. 信号可以带出进程C. 信号不能带出进程D. 二者没有区别17. 关于VHDL数据类型,正确的是 D 。
A. 数据类型不同不能进行运算B. 数据类型相同才能进行运算C. 数据类型相同或相符就可以运算D. 运算与数据类型无关18. 下面数据中属于实数的是 A 。
A. B. 3 C. ‘1’ D. “11011”19. 下面数据中属于位矢量的是 D 。
A. B. 3 C. ‘1’ D. “11011”20. 关于VHDL数据类型,正确的是。
A. 用户不能定义子类型B. 用户可以定义子类型C. 用户可以定义任何类型的数据D. 前面三个答案都是错误的21. 可以不必声明而直接引用的数据类型是 C 。
A. STD_LOGICB. STD_LOGIC_VECTORC. BITD. 前面三个答案都是错误的22. STD_LOGIG_1164中定义的高阻是字符 D 。
A. XB. xC. zD. Z23. STD_LOGIG_1164中字符H定义的是 A 。
A. 弱信号1B. 弱信号0C. 没有这个定义D. 初始值24. 使用STD_LOGIG_1164使用的数据类型时 B 。
A.可以直接调用B.必须在库和包集合中声明C.必须在实体中声明D. 必须在结构体中声明25. 关于转化函数正确的说法是。
最新VHDL必须掌握的知识点和相关例题整理

VHDL总复习之必须要掌握的知识点和相关例题目录VHDL总复习之必须要掌握的知识点和相关例题 (1)1.VHDL语言的基本设计实体和完整的VHDL语言程序的结构 (2)2.进程(PROCESS)语句的结构 (2)3.VHDL语言子程序的结构 (2)(1).过程(Procedure) (2)(2).函数(Function) (2)4.过程与函数的主要区别 (3)5.进程和子程序中使用的语句 (3)6.VHDL语言中客体的概念及使用范围 (3)7.信号和变量的区别及作用范围 (3)8.VHDL语言的数据类型和运算操作 (4)9.VHDL语言构造体的三种描述方式 (4)PONENT(元件)语句和COMPONENT—INSTANT(元件例示)语句的功能和书写格式 (5)11.VHDL语言的主要描述语句的功能、使用场合和语法格式 (5)12.VHDL语言的命名规则 (6)13.VHDL语言的数值类属性描述 (6)14.VHDL语言的信号属性函数 (7)15.数值系统的定义方法,各种状态的含义 (7)16.采用有限状态机进行电路设计的基本方法 (7)17.仿真Δ延时引入的原因和对并发语句仿真结果的影响 (8)18.逻辑综合的概念与主要步骤 (8)19.运用VHDL语言和FPGA进行电路设计的主要步骤 (8)VHDL的全称以及利用VHDL设计硬件电路所具有的特点Very High Speed Integrated Circuit Hardware Description Language (超高速集成电路硬件描述语言)(1)设计文件齐全、方法灵活、支持广泛(2)系统硬件描述能力强(3)VHDL语言可以与工艺无关编程(4) VHDL语言标准、规范、易于共享和复用1.VHDL语言的基本设计实体和完整的VHDL语言程序的结构一个VHDL语言的基本设计实体由实体说明和构造体两个部分构成;一个完整的VHDL 语言程序包含5个部分:实体、构造体、配置、包集合(程序包)和库。
VHDL程序练习题含答案

VHDL程序填空题一在下面横线上填上合适的VHDL关键词;完成2选1多路选择器的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;1 MUX21 ISPORTSEL:IN STD_LOGIC;A;B:IN STD_LOGIC;Q: OUT STD_LOGIC ;END MUX21;2 BHV OF MUX21 ISBEGINQ<=A WHEN SEL=’1’ ELSE B;END BHV;二在下面横线上填上合适的语句;完成BCD-7段LED显示译码器的设计.. LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BCD_7SEG ISPORT BCD_LED : IN STD_LOGIC_VECTOR3 DOWNTO 0;LEDSEG : OUT STD_LOGIC_VECTOR6 DOWNTO 0;END BCD_7SEG;ARCHITECTURE BEHA VIOR OF BCD_7SEG ISBEGINPROCESSBCD_LED3IF BCD_LED="0000" THEN LEDSEG<="0111111";ELSIF BCD_LED="0001" THEN LEDSEG<="0000110";ELSIF BCD_LED="0010" THEN LEDSEG<= 4 ;ELSIF BCD_LED="0011" THEN LEDSEG<="1001111";ELSIF BCD_LED="0100" THEN LEDSEG<="1100110";ELSIF BCD_LED="0101" THEN LEDSEG<="1101101";ELSIF BCD_LED="0110" THEN LEDSEG<="1111101";ELSIF BCD_LED="0111" THEN LEDSEG<="0000111";ELSIF BCD_LED="1000" THEN LEDSEG<="1111111";ELSIF BCD_LED="1001" THEN LEDSEG<="1101111";ELSE LEDSEG<= 5 ;END IF;END PROCESS;END BEHA VIOR;三在下面横线上填上合适的语句;完成数据选择器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX16 ISPORT D0; D1; D2; D3: IN STD_LOGIC_VECTOR15 DOWNTO 0;SEL: IN STD_LOGIC_VECTOR 6 DOWNTO 0;Y: OUT STD_LOGIC_VECTOR15 DOWNTO 0;END;ARCHITECTURE ONE OF MUX16 ISBEGINWITH 7 SELECTY <= D0 WHEN "00";D1 WHEN "01";D2 WHEN "10";D3 WHEN 8 ;END;四在下面横线上填上合适的语句;完成JK触发器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JKFF1 ISPORT PSET;CLR;CLK;J;K : IN STD_LOGIC;Q : OUT STD_LOGIC;END JKFF1;ARCHITECTURE MAXPLD OF JKFF1 ISSIGNAL TEMP:STD_LOGIC;BEGINPROCESSPSET;CLR;CLKBEGINIF PSET='0'AND CLR='1' THEN TEMP<='1';ELSIF PSET='1'AND CLR='0' THEN TEMP<='0';ELSIF PSET='0'AND CLR='0' THEN NULL;9 CLK'EVENT AND CLK='1' THEN10 J='0' AND K='0' THEN TEMP<=TEMP;ELSIF J='0' AND K='1' THEN TEMP<='0';ELSIF J='1' AND K='0' THEN TEMP<='1';ELSIF J='1' AND K='1' THEN TEMP<= 11 ;END IF;END IF;END PROCESS;Q<=TEMP;END ;五在下面横线上填上合适的语句;完成计数器的设计..说明:设电路的控制端均为高电平有效;时钟端CLK;电路的预置数据输入端为4位D;计数输出端也为4位Q;带同步始能EN、异步复位CLR和预置控制LD的六进制减法计数器.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORTEN;CLR;LD;CLK:IN STD_LOGIC;D: IN STD_LOGIC_VECTOR3 DOWNTO 0;Q:OUT STD_LOGIC_VECTOR3 DOWNTO 0;END CNT6;ARCHITECTURE BEHA OF CNT6 ISSIGNAL QTEMP:STD_LOGIC_VECTOR3 DOWNTO 0;BEGINPROCESSCLK;CLR;LDBEGINIF CLR='1' THEN QTEMP<="0000"; --CLR=1清零ELSIF CLK'EVENT AND CLK='1' THEN --判断是否上升沿IF LD='1' THEN QTEMP<= 12 ; --判断是否置位ELSIF EN='1' THEN --判断是否允许计数IF QTEMP="0000" THEN QTEMP<= 13 ; --等于0;计数值置5 ELSE QTEMP<= 14 ; --否则;计数值减1END IF;END IF;END IF;Q<=QTEMP;END PROCESS;END BEHA;六在下面横线上填上合适的语句;完成状态机的设计..说明:设计一个双进程状态机;状态0时如果输入”10”则转为下一状态;否则输出”1001”;状态1时如果输入”11”则转为下一状态;否则输出”0101”;状态2时如果输入”01”则转为下一状态;否则输出”1100”;状态3时如果输入”00”则转为状态0;否则输出”0010”..复位时为状态0..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MOORE1 ISPORT DATAIN: IN STD_LOGIC_VECTOR1 DOWNTO 0;CLK; RST:IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR3 DOWNTO 0;END;ARCHITECTURE ONE OF MOORE1 ISTYPE ST_TYPE IS ST0; ST1; ST2; ST3; --定义4个状态SIGNAL CST; NST: ST_TYPE; --定义两个信号现态和次态SIGNAL Q1:STD_LOGIC_VECTOR3 DOWNTO 0;BEGINREG: PROCESSCLK; RST --主控时序进程BEGINIF RST='1' THEN CST<= 15 ; --异步复位为状态0 ELSIF CLK'EVENT AND CLK='1' THENCST<= 16 ; --现态=次态END IF;END PROCESS;COM: PROCESSCST; DATAINBEGINCASE CST ISWHEN ST0 => IF DATAIN="10" THEN NST<=ST1;ELSE NST<=ST0; Q1<="1001"; END IF;WHEN ST1 => IF DATAIN="11" THEN NST<=ST2;ELSE NST<=ST1; Q1<="0101"; END IF;WHEN ST2 => IF DATAIN="01" THEN NST<=ST3;ELSE NST<=ST2; Q1<="1100"; END IF;WHEN ST3 => IF DATAIN="00" THEN NST<=ST0;ELSE NST<=ST3; Q1<="0010"; END IF;17 ;END PROCESS;Q<=Q1;END;七在下面横线上填上合适的语句;完成减法器的设计..由两个1位的半减器组成一个1位的全减器--1位半减器的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HALF_SUB ISPORTA;B : IN STD_LOGIC;DIFF;COUT : OUT STD_LOGIC;END HALF_SUB;ARCHITECTURE ART OF HALF_SUB ISBEGINCOUT<= 18 ; --借位DIFF<= 19 ; --差END ;--1位全减器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FALF_SUB ISPORTA;B;CIN: IN STD_LOGIC;DIFF;COUT : OUT STD_LOGIC;END FALF_SUB;ARCHITECTURE ART OF FALF_SUB ISCOMPONENT HALF_SUBPORTA;B : IN STD_LOGIC;DIFF;COUT : OUT STD_LOGIC;END COMPONENT;20 T0;T1;T2:STD_LOGIC;BEGINU1: HALF_SUB PORT MAPA;B; 21 ;T1;U2: HALF_SUB PORT MAPT0; 22 ; 23 ;T2; COUT<= 24 ;END ;八在下面横线上填上合适的语句;完成分频器的设计..说明:占空比为1:2的8分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLKDIV8_1TO2 ISPORTCLK:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC ;END CLKDIV8_1TO2;ARCHITECTURE TWO OF CLKDIV8_1TO2 ISSIGNAL CNT:STD_LOGIC_VECTOR1 DOWNTO 0;SIGNAL CK:STD_LOGIC;BEGINPROCESSCLKBEGINIF RISING_EDGE 25 THENIF CNT="11" THENCNT<="00";CK<= 26 ;ELSE CNT<= 27 ;END IF;END IF;CLKOUT<=CK;END PROCESS;END;九在下面横线上填上合适的语句;完成60进制减计数器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT ISPORTCLK: IN STD_LOGIC;H;L: OUT STD_LOGIC_VECTOR3 DOWNTO 0;END COUNT;ARCHITECTURE BHV OF COUNT ISBEGINPROCESSCLKV ARIABLE HH;LL: STD_LOGIC_VECTOR3 DOWNTO 0; BEGINIF CLK'EVENT AND CLK='1' THENIF LL=0 AND HH=0 THENHH:="0101"; LL:="1001";ELSIF LL=0 THENLL:= 28 ;HH:= 29 ;ELSELL:= 30 ;END IF;END IF;H<=HH;L<=LL;END PROCESS;END BHV;十在下面横线上填上合适的语句;完成4-2优先编码器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CODE4 ISPORTA;B;C;D : IN STD_LOGIC;Y0;Y1 : OUT STD_LOGIC;END CODE4;ARCHITECTURE CODE4 OF CODE4 ISSIGNAL DDD:STD_LOGIC_VECTOR3 DOWNTO 0;SIGNAL Q:STD_LOGIC_VECTOR 31 DOWNTO 0;BEGINDDD<= 32 ;PROCESSDDDBEGINIF DDD0='0' THEN Q <= "11";ELSIF DDD1='0' THEN Q <= "10";ELSIFDDD2='0' THEN Q<="01";ELSE Q <= "00";END IF;33 ;Y1<=Q0; Y0<=Q1;END CODE4;十一在下面横线上填上合适的语句;完成10位二进制加法器电路的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ 34 .ALL;ENTITY ADDER1 ISPORTA;B:IN STD_LOGIC_VECTOR9 DOWNTO 0;COUT:OUT STD_LOGIC;SUM:OUT STD_LOGIC_VECTOR9 DOWNTO 0;END;ARCHITECTURE JG OF ADDER1 ISSIGNAL ATEMP: STD_LOGIC_VECTOR10 DOWNTO 0;SIGNAL BTEMP: STD_LOGIC_VECTOR10 DOWNTO 0;SIGNAL SUMTEMP: STD_LOGIC_VECTOR 35 DOWNTO 0; BEGINATEMP<=’0’& A;BTEMP<=’0’& B;SUMTEMP<= 36 ;SUM<=SUMTEMP9 DOWNTO 0;COUT<= 37 ;END JG;十二在下面横线上填上合适的语句;完成移位寄存器的设计..说明:8位的移位寄存器;具有左移一位或右移一位、并行输入和同步复位的功能.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY SHIFTER ISPORTDATA :IN STD_LOGIC_VECTOR7 DOWNTO 0;CLK:IN STD_LOGIC;SHIFTLEFT;SHIFTRIGHT:IN STD_LOGIC;RESET:IN STD_LOGIC;MODE:IN STD_LOGIC_VECTOR1 DOWNTO 0;QOUT:BUFFER STD_LOGIC_VECTOR7 DOWNTO 0;END SHIFTER;ARCHITECTURE ART OF SHIFTER ISBEGINPROCESSBEGIN38 RISING_EDGECLK; --等待上升沿IF RESET='1' THEN QOUT<="00000000"; --同步复位ELSECASE MODE ISWHEN "01"=>QOUT<=SHIFTRIGHT& 39 ; --右移一位WHEN "10"=>QOUT<=QOUT6 DOWNTO 0& 40 ; --左移一位WHEN "11"=>QOUT<= 41 ; --不移;并行输入WHEN OTHERS=>NULL;42 ;END IF;END PROCESS;END ART;十三在下面横线上填上合适的语句;完成计数器的设计..说明:设计一个带有异步复位和时钟使能的一位八进制加法计数器带进位输出端.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT8 ISPORT CLK;RST;EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR 43 DOWNTO 0;COUT : OUT STD_LOGIC ;END CNT8;ARCHITECTURE BEHA V OF CNT8 ISBEGINPROCESSCLK; RST; EN44 CQI : STD_LOGIC_VECTOR2 DOWNTO 0;BEGINIF RST = '1' THEN CQI := “000”;45CLK'EVENT AND CLK='1' THENIF EN = '1' THENIF CQI < "111" THEN CQI := 46 ;ELSE CQI := 47 ;END IF;END IF;END IF;IF CQI = "111" THEN COUT <= '1';ELSE COUT <= '0';END IF;CQ <= CQI;END PROCESS;END BEHA V;十四在下面横线上填上合适的语句;完成序列信号发生器的设计..说明:已知发送信号为”10011010”;要求以由高到低的序列形式一位一位的发送;发送开始前及发送完为低电平..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XULIE ISPORT RES; CLK: IN STD_LOGIC;Y: OUT STD_LOGIC ;END;ARCHITECTURE ARCH OF XULIE ISSIGNAL REG:STD_LOGIC_VECTOR7 DOWNTO 0;BEGINPROCESSCLK; RESBEGINIFCLK’EVENT AND CLK=’1’ THENIF RES=’1’ THENY<=’0’;REG<= 48 ; --同步复位;并加载输入ELSE Y<= 49 ; --高位输出REG<= 50 ; --左移;低位补0END IF;END IF;END PROCESS;END;十五在下面横线上填上合适的语句;完成数据选择器的设计..说明:采用元件例化的设计方法;先设计一个2选1多路选择器;再使用3个2选1多路选择器构成一个4选1多路选择器..LIBRARY IEEE; --2选1多路选择器的描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX21 ISPORTA;B;SEL : IN STD_LOGIC;Y : OUT STD_LOGIC;END MUX21;ARCHITECTURE ART OF MUX21 ISBEGINY<=A WHEN SEL='0' ELSE B;END ;LIBRARY IEEE; --4选1多路选择器的描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORTA;B;C;D : IN STD_LOGIC;S1;S2 : IN STD_LOGIC;Y:OUT STD_LOGIC ;END;ARCHITECTURE ART OF MUX41 ISCOMPONENT MUX41PORTA;B;SEL : IN STD_LOGIC;Y : OUT STD_LOGIC;END COMPONENT;51 Y1;Y2:STD_LOGIC;BEGINU1: MUX21 PORT MAPA;B;S1; 52 ;U2: MUX21 PORT MAPC;D; 52 ;Y2;U2: MUX21 PORT MAPY1;Y2; 54 ;Y;END ;十六在下面横线上填上合适的语句;完成8位奇偶校验电路的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PC ISPORT A : IN STD_LOGIC_VECTOR7 DOWNTO 0;Y : OUT STD_LOGIC ;END PC;ARCHITECTURE A OF PC ISBEGINPROCESSA.V ARIABLE TMP: STD_LOGIC;BEGINTMP 55 '0';FOR I IN 0 TO 7 LOOPTMP:= 56 ;END LOOP;Y<= 57 ;END PROCESS;END;十七在下面横线上填上合适的语句;完成一个逻辑电路的设计;其布尔方程为Y=A+BC⊙D+B⊕F.LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY COMB ISPORTA; B;C;D;E;F;: IN STD_LOGIC;Y: OUT STD_LOGIC;END COMB;ARCHITECTURE ONE OF COMB ISBEGINY<=A OR B AND C 58 D OR B 59 F;END ARCHITECTURE ONE;十八在下面横线上填上合适的语句;完成一个带使能功能的二-十进制译码器的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MY2TO10 ISPORT EN: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR60 DOWNTO 0;POUT: OUT STD_LOGIC_VECTOR9 DOWNTO 0 ;END;ARCHITECTURE ARCH OF MY2TO10 ISBEGINPROCESSEN; DINBEGINIF EN=’1’ THENCASE DIN ISWHEN "0000" => POUT<="0000000001";WHEN "0001" => POUT<="0000000010";WHEN "0010" => POUT<="0000000100";WHEN "0011" => POUT<="0000001000";WHEN "0100" => POUT<="0000010000";WHEN "0101" => POUT<="0000100000";WHEN "0110" => POUT<="0001000000";WHEN "0111" => POUT<="0010000000";WHEN "1000" => POUT<="010*******";WHEN "1001" => POUT<="1000000000";WHEN OTHERS => POUT<="0000000000";END CASE;END IF;END PROCESS;END;十九在下面横线上填上合适的语句;完成下降沿触发的D触发器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF ISPORTD;CLK:IN STD_LOGIC;Q; QB: OUT STD_LOGIC;END DFF;ARCHITECTURE BEHAVE OF DFF ISBEGINPROCESSCLKBEGINIF 61 AND CLK'EVENT THENQ <=62 ;QB<=NOT D;END IF;END PROCESS;END BEHAVE;二十在下面横线上填上合适的语句;完成移位寄存器的设计..说明:4位串入-串出移位寄存器有有1个串行数据输入端DI、1个串行数据输出输出端DO 和1个时钟输入端CLKLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SISO ISPORTDI: IN STD_LOGIC;CLK:IN STD_LOGIC;DO:OUT STD_LOGIC;END SISO;ARCHITECTURE A OF SISO ISSIGNAL Q: STD_LOGIC_VECTOR3 DOWNTO 0;BEGINPROCESSCLK;DIBEGINIF CLK’ EVENT AND CLK=’1’ THENQ0<=63 ;FOR 64 LOOPQI<=65 ;END IF;END PROCESS;DO<=Q3;END A;二十一在下面横线上填上合适的语句;完成同步22进制计数器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER22 ISPORT CLK: IN STD_LOGIC;CH; C: OUT STD_LOGIC;QB1; QA1: OUT STD_LOGIC_VECTOR3 DOWNTO 0;END;ARCHITECTURE BEHAV OF COUNTER22 ISSIGNAL QB; QA: STD_LOGIC_VECTOR3 DOWNTO 0;SIGNAL CIN: STD_LOGIC;BEGINQB1<=QB;QA1<=QA;PROCESSCLKBEGINIF CLK'EVENT AND CLK='1' THENIF QA=66 OR QB=2 AND QA=1 THEN QA<="0000"; CIN<='0';ELSIF QA=67 THEN CIN<='1'; QA<=QA+1;ELSE QA<=68 ;CIN<='0';END IF;END IF;END PROCESS;PROCESSCIN; CLKBEGINIF CLK'EVENT AND CLK='1' THENIF QB=2 AND QA=1 THEN QB<=69 ; C<='1';ELSE C<=70 ;END IF;IF CIN='1' THEN QB<=71 ;END IF;END IF;END PROCESS;CH<=CIN;END;二十二在下面横线上填上合适的语句;完成一个“01111110”序列发生器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY SENQGEN ISPORTCLK;CLR;CLOCK:IN STD_LOGIC;ZO:OUT STD_LOGIC;END;ARCHITECTURE ART OF SENQGEN ISSIGNAL COUNT:STD_LOGIC_VECTOR2 DOWNTO 0;SIGNAL Z:STD_LOGIC:='0';BEGINPROCESSCLK;CLRBEGINIF CLR='1' THEN COUNT<="000";ELSEIF CLK='1' AND CLK'EVENT THENIF COUNT=72 THEN COUNT<="000";ELSE COUNT<=COUNT+1;END IF;END IF;END IF;END PROCESS;PROCESSCOUNTBEGINCASE COUNT ISWHEN "000"=>Z<='0';WHEN "001"=>Z<='1';WHEN "010"=>Z<='1';WHEN "011"=>Z<='1';WHEN "100"=>Z<='1';WHEN "101"=>Z<='1';WHEN "110"=>Z<='1';WHEN OTHERS=>Z<=73 ;END CASE;END PROCESS;PROCESSCLOCK;ZBEGINIF CLOCK='1' AND CLOCK'EVENT THENZO<=74 ;END IF;END PROCESS;END ART;二十三在下面横线上填上合适的语句;完成一个“01111110”序列信号检测器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DETECT ISPORT DATAIN:IN STD_LOGIC;CLK:IN STD_LOGIC;Q:BUFFER STD_LOGIC;END DETECT;ARCHITECTURE ART OF DETECT ISTYPE STATETYPE IS S0;S1;S2;S3;S4;S5;S6;S7;S8;BEGINPROCESSCLKVARIABLE 75 :76 ;BEGINQ<='0';CASE PRESENT_STATE ISWHEN S0=>IF DATAIN='0' THEN PRESENT_STATE:=S1;ELSE PRESENT_STATE:=S0; END IF;WHEN S1=>IF DATAIN='1' THEN PRESENT_STATE:=S2;ELSE PRESENT_STATE:=S1; END IF;WHEN S2=>IF DATAIN='1' THEN PRESENT_STATE:=S3;ELSE PRESENT_STATE:=S1; END IF;WHEN S3=>IF DATAIN='1' THEN PRESENT_STATE:=S4;ELSE PRESENT_STATE:=S1; END IF;WHEN S4=>IF DATAIN='1' THEN PRESENT_STATE:=S5;ELSE PRESENT_STATE:=S1; END IF;WHEN S5=>IF DATAIN='1' THEN PRESENT_STATE:=S6;ELSE PRESENT_STATE:=S1; END IF;WHEN S6=>IF DATAIN='1' THEN PRESENT_STATE:=S7;ELSE PRESENT_STATE:=S1; END IF;WHEN S7=>IF DATAIN='0' THEN PRESENT_STATE:=S8;Q<='1'; ELSE PRESENT_STATE:=S0; END IF;WHEN S8=>IF DATAIN='0' THEN PRESENT_STATE:=77 ;ELSE PRESENT_STATE:=78 ; END IF;END CASE;79 CLK='1';END PROCESS;END ART;二十四在下面横线上填上合适的语句;完成序列信号发生器的设计..说明:带异步复位为CLR;时钟端为CLK;输出端为Q;串行输出指定序列低位先出.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SENQGEN ISPORTCLR;CLK:IN STD_LOGIC;Q:OUT STD_LOGIC;END SENQGEN;ARCHITECTURE BEHA OF SENQGEN ISSIGNAL Q_TEMP:STD_LOGIC_VECTOR2 DOWNTO 0;BEGINPROCESSCLK;CLRBEGINIF CLR='1' THEN Q_TEMP<="000";80 CLK'EVENT AND CLK='1' THENIF Q_TEMP="111" THEN Q_TEMP<="000";81 Q_TEMP<=Q_TEMP+1;END IF;82 ;END PROCESS;PROCESSQ_TEMPBEGINCASE Q_TEMP ISWHEN "000"=>Q<='0';WHEN "001"=>Q<='1';WHEN "010"=>Q<='0';WHEN "011"=>Q<='1';WHEN "100"=>Q<='1';WHEN "101"=>Q<='1';WHEN "110"=>Q<='1';WHEN "111"=>Q<='0';WHEN OTHERS=>83 ;END CASE;END PROCESS;END BEHA;二十五在下面横线上填上合适的语句;完成七人表决器的设计..说明:一个带输出显示的七人表决器两种结果:同意;反对.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BIAOJUE7 ISPORTD:IN STD_LOGIC_VECTOR0 TO 6;RLED;GLED:OUT STD_LOGIC;LEDSEG:OUT STD_LOGIC_VECTOR 6 DOWNTO 0;END;ARCHITECTURE BEV OF BIAOJUE7 ISBEGINPROCESSDVARIABLE COUNT:INTEGER RANGE 0 TO 7 ;BEGINCOUNT:=84 ;FOR 85 LOOPIF DI='1' THEN COUNT:=86 ;ELSE COUNT:=COUNT;END IF;END LOOP;IF COUNT>87 THEN GLED<='1'; RLED<='0'; ELSE GLED<='0'; RLED<='1';END IF;CASE COUNT ISWHEN 0=> LEDSEG<="0111111";WHEN 1=> LEDSEG<="0000110";WHEN 2=> LEDSEG<="1011011";WHEN 3=> LEDSEG<="1001111";WHEN 4=> LEDSEG<="1100110";WHEN 5=> LEDSEG<="1101101";WHEN 6=> LEDSEG<="1111101";WHEN 7=> LEDSEG<="0100111";END CASE;END PROCESS;END BEV;二十六在下面横线上填上合适的语句;完成有限状态机的设计..说明:状态转换图如右图;S0~S3为状态号;圈内为输出..LIBRARY 1EEE;USE IEEE.STD_ LOGIC_1164.ALL;PORT CLK;RESET:IN STD_LOGIC;INPUTS :IN STD_LOGIC_VECTOR 0 TO 1;OUTPUTS :OUT INTEGER RANGE 0 TO 15 ;END S_ MACHINE;ARCHITECTURE BEHA V OF S_MACHINE ISTYPE STA TES IS S0; S1; S2; S3;SIGNAL CURCENT_STA TE;NEXT_STA TE:STA TES;BEGINREG: PROCESS RESET;CLK --状态切换BEGINIF RESET = ‘1’ THEN CURRENT_ STATE <= S0;ELSIF CLK=’L’AND CLK‘EVENT THENCURRENT_ STA TE <= NEXT_ STA TE;END IF;END PROCESS;COM:PROCESSCURRENT_ STATE; INPUTS--下一状态、BEGINCASE CURRENT_ STATE ISWHEN S0 => OUTPUTS<= 88 ;IF INPUTS=”00” THEN NEXT_ STA TE<=S0;ELSE NEXT_ STATE<=SL;END IF;WHEN SL=> OUTPUTS<=8;IF INPUTS= 89 THEN NEXT_ STA TE<= 90 ;ELSE NEXT_STATE<=S2;END IF;WHEN S2=> OUTPUTS<=12;IF INPUTS=“11”THEN NEXT_STATE<=S0;ELSE NEXT_STATE<= S3;END IF;WHEN S3=> OUTPUTS<=14;IF INPUTS = “11”THEN NEXT_STA TE <=S3;;ELSE NEXT STATE <=S0;END IF;END CASE;91 ;END BEHA V;二十七在下面横线上填上合适的语句;完成移位寄存器74166的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TTL74166 ISPORT A;B;C;D;E;F;G;H:IN STD_LOGIC; --8位并行输入信号CLK:IN STD_LOGIC; --时钟信号RESET:IN STD_LOGIC; --复位信号SE:IN STD_LOGIC; --串行输入信号FE:IN STD_LOGIC; --时钟信号禁止端SL:IN STD_LOGIC; --移位装载控制端Q:OUT STD_LOGIC; --串行输出信号END TTL74166;ARCHITECTURE ART OF TTL74166 ISSIGNAL TMPREG8:STD_LOGIC_VECTOR7 DOWNTO 0;BEGINPROCESSCLK;RESET;SL;FEBEGINIF RESET='1' THEN TMPREG8<=92 ; Q<=TMPREG87; ELSIF CLK'EVENT AND CLK='1' THENIF FE='0' THENIF SL='0' THENTMPREG80<=A;TMPREG81<=B;TMPREG82<=C;TMPREG83<=D;TMPREG84<=E;TMPREG85<=F;TMPREG86<=G;TMPREG87<=H;93 SL='1' THENFOR I IN TMPREG8'HIGH DOWNTO 94 LOOPTMPREG8I<=95 ;END LOOP;TMPREG8TMPREG8'LOW<=96 ;Q<=97 ;END IF;END IF;END IF;END PROCESS;END ART;二十八在下面横线上填上合适的语句;完成8位双向总线缓冲器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TRI_BIGATE ISPORT A;B: INOUT STD_LOGIC_VECTOR7 DOWNTO 0;EN; DR: IN STD_LOGIC;END;ARCHITECTURE RTL OF TRI_BIGATE ISSIGNAL AOUT; BOUT:STD_LOGIC_VECTOR7 DOWNTO 0;BEGINPROCESSA; DR; ENBEGIN IF EN=‘0’ AND DR=‘1’ THEN BOUT<=A;ELSEBOUT<=“ZZZZZZZZ”;END IF;B<=BOUT;END PROCESS;PROCESSB; DR; ENBEGINIF EN=‘0’ AND DR=‘0’ THENAOUT<=98 ;ELSEAOUT<=99 ;END IF;A<=100 ;END PROCESS;END;二十九在下面横线上填上合适的语句;完成4位串入/并出移位寄存器的设计.. 说明:4位串入/并出移位寄存器可以用D触发器组成..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF ISPORTD;CLK:IN STD_LOGIC;Q: OUT STD_LOGIC;END DFF;ARCHITECTURE BEHAVE OF DFF ISBEGIN PROCESSCLKBEGINIF CLK= '0' AND CLK'EVENT THEN Q <=D;END IF;END PROCESS;END BEHAVE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT ISPORTA;CLK: IN STD_LOGIC;D : OUT STD_LOGIC;END SHIFT;ARCHITECTURE SHIFT1 OF SHIFT ISCOMPONENT DFF1PORT D;CLK: IN STD_LOGIC;Q: OUT STD_LOGIC;END COMPONENT ;SIGNAL Z:STD_LOGIC_VECTOR0 TO 4;BEGINZ0<=101 ;G1:FOR 102 GENERATEDFFX:DFF1 PORT MAP ZI;CLK;103 ;END GENERATE;D<=104 ;END SHIFT1;三十在下面横线上填上合适的语句;完成4位异步计数器的设计..说明:4位异步计数器可以用D触发器器组成..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF1 ISPORTD;CLK:IN STD_LOGIC;Q; QB: OUT STD_LOGIC;END DFF1;ARCHITECTURE BEHAVE OF DFF1 ISBEGIN PROCESSCLKBEGINIF CLK= '1' AND CLK'EVENT THEN Q <=D; QB<=NOT D;END IF;END PROCESS;END BEHAVE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY RPLCONT ISPORT CLK : IN STD_LOGIC;COUNT : OUT STD_LOGIC_VECTOR3 DOWNTO 0;END RPLCONT;ARCHITECTURE RPLCONT OF RPLCONT ISCOMPONENT DFF1PORT CLK;D:IN STD_LOGIC;Q;QB:OUT STD_LOGIC;END COMPONENT ;SIGNAL COUNT_IN_BAR:STD_LOGIC_VECTOR4 DOWNTO 0;BEGINCOUNT_IN_BAR0<=CLK;GEN1:FOR I IN 0 TO 3 GENERATEU:DFF1 PORT MAP CLK=>105 ; D=>106 ;Q=>107 ;QB=>108 ;END GENERATE;END RPLCONT;三十一在下面横线上填上合适的语句;完成交通灯控制器的设计..说明:红、黄、绿灯分别亮10秒;状态0时东西绿灯亮;南北红灯亮;状态1时东西绿、黄灯亮;南北红灯亮;状态2时东西红灯亮;南北绿灯亮;状态3时东西红灯亮;南北绿、黄灯亮..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TRAFFICLED1 ISPORT CLK; RESET: IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR11 DOWNTO 0 ;END;ARCHITECTURE ONE OF TRAFFICLED1 ISSIGNAL Y_EWSN; G_EWSN; R_EWSN:STD_LOGIC_VECTOR3 DOWNTO 0;SIGNAL COUNT:INTEGER RANGE 0 TO 9;SIGNAL STATE:INTEGER RANGE 0 TO 3;BEGINPROCESSRESET; CLK;COUNTBEGINIF RESET='1' THEN COUNT<=0; STATE<=0;ELSIF CLK'EVENT AND CLK='1' THEN COUNT<=COUNT+1;IF COUNT=109 THEN STATE <=STATE+1;END IF;IF STATE>110 THEN STATE <=0;END IF;END IF;CASE STATE ISWHEN 0 => Y_EWSN<="0000"; G_EWSN<="1100"; R_EWSN<="0011";WHEN 1 => Y_EWSN<="1100"; G_EWSN<="1100"; R_EWSN<="0011";WHEN 2 => Y_EWSN<="0000"; G_EWSN<="0011"; R_EWSN<="1100";WHEN 3=> Y_EWSN<="0011"; G_EWSN<="0011"; R_EWSN<="1100";WHEN OTHERS=>111 ;END CASE;END PROCESS;Q0<=R_EWSN0; Q1<=G_EWSN0; Q2<=Y_EWSN0 ;Q3<=R_EWSN2; Q4<=G_EWSN2; Q5<=Y_EWSN2 ;Q6<=R_EWSN1; Q7<=G_EWSN1; Q8<=Y_EWSN1 ;Q9<=R_EWSN3; Q10<=G_EWSN3; Q11<=Y_EWSN3 ;END;三十二在下面横线上填上合适的语句;完成8位数字比较器的设计..ENTITY COMP ISPORTA;B: IN 112 RANGE 0 T0 113 ;AEQUALB; AGREATB; ALESSB : OUT BIT;END COMP;ARCHITECTURE BEHA VE OF COMP ISBEGINAEQUALB<=‘1’WHEN A=B ELSE‘0’;AGREATB<=‘1’WHEN A>B ELSE‘0’;ALESSB<=‘1’WHEN A<B ELSE‘0’;END BEHA VE;三十三在下面横线上填上合适的语句;完成一个16个字节的堆栈的设计..说明:堆栈有复位信号、压栈/弹栈信号、堆栈满信号、数据输入/输出口.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY STACK ISPORTDATAIN : IN STD_LOGIC_VECTOR 7 DOWNTO 0 ;PUSH ; POP ; RESET ; CLK : IN STD_LOGIC;STACKFULL : OUT STD_LOGIC;DATAOUT : BUFFER STD_LOGIC_VECTOR 7 DOWNTO 0 ;END STACK;ARCHITECTURE A OF STACK ISTYPE ARRAYLOGIC IS ARRAY 15 DOWTO 0 OF STD_LOGIC_VECTOR 7 DOWNTO 0 ;--定义一个16字节数据类型SIGNAL DATA : ARRAYLOGIC;-- 此处定义了DA TA为一个数组16×8 SIGNAL STACKFLAG : STD_LOGIC_VECTOR 15 DOWNTO 0 ;--定义堆栈标志;每一字节有数据为1;无数据为0 BEGINSTACKFULL<=114 ; --字节0为栈底PROCESS CLK ; NRESET ; POP ; PUSHBEGINIF RESET = ‘1’ THENSTACKFLAG<=OTHERS => ‘0’ ;DATAOUT<=OTHERS => ‘0’ ;FOR I IN 0 TO 15 LOOPDATA I <=115 ;END LOOP;ELSIF CLK’EVENT AND CLK = ‘1’ THENIF PUSH = ‘1’ AND POP= ‘0’ THEN -- PUSHFOR I IN 0 TO 14 LOOPDATA I <=116 ;END LOOP;DATA 15 <=117 ;STACKFLAG<=‘1’ & STACKFLAG15 DOWNTO 1 ;ELSIF PUSH = ‘0’ AND POP= ‘1’ THEN -- POPDATAOUT<=DA TA 15;FOR I IN 15 DOWNTO 1 LOOPDATA I <=118 ;END LOOP;STACKFLAG<=STACKFLAG 119 DOWNTO 0 & ‘0’;END IF;END IF;END PROCESS;END A;三十四在下面横线上填上合适的语句;完成一个8位分频器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PULSE ISPORT CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR 7 DOWNTO 0;FOUT : OUT STD_LOGIC ;END;ARCHITECTURE ONE OF PULSE ISSIGNAL FULL : STD_LOGIC;BEGINP_REG: PROCESSCLK120 CNT8 : STD_LOGIC_VECTOR7 DOWNTO 0;BEGINIF CLK’EVENT AND CLK = ‘1’ THENIF CNT8 = "11111111" THENCNT8 := 121 ; --当CNT8计数计满时;输入数据D被同步预置给计数器CNT8FULL <= '1'; --同时使溢出标志信号FULL输出为高电平ELSE CNT8 := 122 ; --否则继续作加1计数FULL <= '0'; --且输出溢出标志信号FULL为低电平END IF;END IF;END PROCESS P_REG;P_DIV: PROCESS 123VARIABLE CNT2 : STD_LOGIC;BEGINIF FULL'EVENT AND FULL = '1' THENCNT2 <= 124 ; --如果溢出标志信号FULL为高电平;D触发器输出取反IF CNT2 = '1' THEN FOUT <= '1';ELSE FOUT <= '0';END IF;END IF;END PROCESS P_DIV;END;三十五在下面横线上填上合适的语句;完成一个10线-4线优先编码器的设计..LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CODER ISPORT DIN : IN STD_LOGIC_VECTOR9 DOWNTO 0;OUTPUT : OUT STD_LOGIC_VECTOR3 DOWNTO 0 ;END CODER;ARCHITECTURE BEHA V OF CODER ISSIGNAL SIN : STD_LOGIC_VECTOR3 DOWNTO 0;BEGINPROCESS 125BEGINIF DIN9='0' THEN SIN <= "1001" ;126 DIN8=’0’ THEN SIN <= "1000" ;ELSIF DIN7='0' THEN SIN <= "0111" ;ELSIF DIN6='0' THEN SIN <= "0110" ;ELSIF DIN5='0' THEN SIN <= "0101" ;ELSIF DIN4='0' THEN SIN <= "0100" ;ELSIF DIN3='0' THEN SIN <= "0011" ;ELSIF DIN2='0' THEN SIN <= "0010" ;ELSIF DIN1='0' THEN SIN <= "0001" ;ELSE SIN <= 127 ;128 ;END PROCESS ;OUTPUT <= SIN ;END BEHA V;三十六在下面横线上填上合适的语句;完成一个摩尔状态机的设计..说明:状态机的状态图见图A;状态结构图见图B.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
填空题1、DATA’LEFT表示得到数据类型或子类型区间的左边界值。
2、ARRAY’L ENGTH表示数组的范围长度。
3、函数类属性描述语句是指这些属性是以函数的形式来表达的。
4、在VHDL语言程序中经常要定义数组,并在程序中运用数组的左端位置序号、右端位置序号等,此时可以使用数组的属性函数了。
5、信号的属性函数也是函数类属性描述语句的一种,其可以得到信号的行为信息、功能信息和历史信息。
6、信号类属性描述’STABLE(time)可以确定原信号的工作情况,并稳定一段要求的时间,稳定时间由时间表达式time决定,其返回是布尔信号量,可以作为独立的信号来使用,它也可以用来触发其他进程。
7、数据类型类属性描述语句只有一个属性’BASE,利用该属性可以返回原数据的数据类型。
综述题1、VHDL语言的属性描述语句包括哪六大类?答案:●数值类属性描述语句。
●函数类属性描述语句。
●信号类属性描述语句。
●数据类型类属性描述语句。
●数据区间类属性描述语句。
●用户自定义属性语句。
2、VHDL语言的数据类型的属性函数有几种,分别是什么?答案:●DATA’POS(x)表示得到输入数据x的位置序号值。
●DATA’VAL(x)表示根据位置序号值x索引到该位置的数值。
●DATA’SUCC(x)表示得到排列在输入数据x后面的数值。
●DATA’PRED(x)表示得到排列在输入数据x前面的数值。
●DATA’LEFTOF(x)表示得到输入数据x的左邻值。
●DATA’RIGHTOF(x)表示得到输入数据x的右邻值。
•2 •3、数组的属性函数有哪几种?答案:●ARRAY’LEFT(n)表示得到数组的第n维区间的左端位置序号值。
●ARRAY’RIGHT(n)表示得到数组的第n维区间的右端位置序号值。
●ARRAY’HIGH(n)表示得到数组的第n维区间的高端位置序号值。
●ARRAY’LOW(n)表示得到数组的第n维区间的低端位置序号值。
4、信号类属性描述语句和信号的属性函数的区别是什么?答案:信号类属性描述语句产生一个新的信号,而信号的属性函数只是返回该信号的行为描述、功能描述、历史信息等,并没有产生新的信号。
实验【一】伪随机数发生器的设计实验目的:熟悉VHDL语言中的属性描述语句的使用方法。
实验任务:设计伪随机数发生器电路。
在设计过程中使用VHDL语言提供的各种属性函数以达到具有便于移植可重用性高的特点。
答案:Library IEEE ;use IEEE.std_logic_1164.all ;use IEEE.std_logic_arith.all ;entity lfsr isgeneric (data_width : natural := 8 ); --实体,宽度为8port (clk : in std_logic ;reset : in std_logic ;data_out : out UNSIGNED(data_width - 1 downto 0));end lfsr ;architecture rtl of lfsr is --结构体signal feedback : std_logic ;signal lfsr_reg : UNSIGNED(data_width - 1 downto 0) ;beginfeedback <= lfsr_reg(7) xor lfsr_reg(0) ;latch_it : process(clk,reset)beginif (reset = '1') then --复位信号lfsr_reg <= (others => '0') ;elsif (clk = '1' and clk'event) then -信号上升沿,产生一个随机数lfsr_reg <= lfsr_reg(lfsr_reg'high - 1 downto 0) & feedback ;• 3 •end if; end process ; data_out <= lfsr_reg ; end RTL;实验【二】TDC 时间数字转换电路的设计实验目的:熟悉VHDL 语言中的属性描述语句的使用方法。
实验任务:设计TDC 时间数字转换电路,实现具有时间数字转化功能的数字系统。
掌握VHDL 设计时间计数控制系统的原理和方法。
时间数字转化器(time-to-digital converters TDC )作为时间记录的一个方向,用于测量两个时刻之间的间隔。
qtt参考信号被测信号TDC 测量时间间隔的基本原理对所有具体的电路结构都是相同的,即将连续的时间划分为可测量的基本时间单位,从而实现时间量化。
如图7-11为TDC 的工作原理示意图,参考信号为单位时间间隔为T q 的抽样信号,同时该时间间隔T q 也是转化器的量化步长,被测时间为t start 和t stop 两个时间之间的时间差。
实际测量时间为T in ,量化输出结果为T out ,测量误差T error 。
各时间量之间的关系可以用方程1)、2)、3)描述。
其中式1)表示实际的测量时间间隔,式2)表示测量的总体误差,式3)表示TDC 的量化输出。
T in = t stop [k] - t start [k] 1_ T error = T in [k] – T out [k] 2) Out[k] = (Tin[k]-Terror[k])/T q 3)从式3)可以看出,时间数字转化器的分辨率受T q 限制。
在过去的很长时间里,工程师主要是通过降低Tq 的值来提高分辨率,即利用工艺尺寸减小,提高电路的工作速度从而降低量化步长。
当然,也可以通过电路结构调整,充分利用现有的工艺来提高分辨率,但这种提升较工艺进步带来的提升小很多。
基于延时链结构的TDC 主要由延时链和用于读取作用的寄存器链构成。
其中,输入信号包含了测量开始的信息,延时链对输入信号有固定的延时,寄存器则用于读取测量结束时延时链各级的输出,然后通过译码器将输出转化为开始时刻与结束时刻之间的•4 •量化时间差,从而完成了连续时间到量化时间之间的转化。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity DFF1 is --第一个DFF的实体,上升沿DFFport(clk,D:in std_logic;Q:out std_logic);end DFF1;architecture rtl of DFF1 is --上升沿DFF的结构体signal q1:std_logic;beginprocess(D,clk)beginif(clk'event and clk='1') thenq1<=D;else q1<=q1;end if;Q<=q1;end process;end rtl;-------------------------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity DFF2 is --第二个DFF的实体,下降沿DFFport(clk,D:in std_logic;Q:out std_logic);end DFF2;architecture rtl of DFF2 is --下降沿DFF的结构体• 5 •signal q1:std_logic;beginprocess(D,clk)beginif(clk'event and clk='0') thenq1<=D;else q1<=q1;end if;Q<=q1;end process;end rtl;library ieee; --TDC实现use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity TDC is --TDC的实体port(clk1,ckv,Fref :in std_logic;n:out std_logic_vector(3 downto 0));end TDC;architecture rtl of TDC is --TDC的结构体signal q,D:std_logic_vector(8 downto 1);COMPONENT DFF1 --上升沿DFF元件例化PORT(D : IN STD_LOGIC;clk : IN STD_LOGIC ;Q : OUT STD_LOGIC);END COMPONENT;COMPONENT DFF2 --下降沿DFF元件例化PORT(D : IN STD_LOGIC;clk : IN STD_LOGIC ;Q : OUT STD_LOGIC);END COMPONENT;BEGINU00:DFF2 PORT MAP (D => ckv,clk => clk1,Q=> D(1)); --电路连接•6 •U01:DFF1 PORT MAP (D => D(1),clk => clk1,Q=> D(2));U02:DFF2 PORT MAP (D => D(2),clk => clk1,Q=> D(3));U03:DFF1 PORT MAP (D => D(3),clk => clk1,Q=> D(4));U04:DFF2 PORT MAP (D => D(4),clk => clk1,Q=> D(5));U05:DFF1 PORT MAP (D => D(5),clk => clk1,Q=> D(6));U06:DFF2 PORT MAP (D => D(6),clk => clk1,Q=> D(7));U07:DFF1 PORT MAP (D => D(7),clk => clk1,Q=> D(8));U10:DFF1 PORT MAP (D => D(1),clk => Fref,Q=> q(1));U11:DFF1 PORT MAP (D => D(2),clk => Fref,Q=> q(2));U12:DFF1 PORT MAP (D => D(3),clk => Fref,Q=> q(3));U13:DFF1 PORT MAP (D => D(4),clk => Fref,Q=> q(4));U14:DFF1 PORT MAP (D => D(5),clk => Fref,Q=> q(5));U15:DFF1 PORT MAP (D => D(6),clk => Fref,Q=> q(6));U16:DFF1 PORT MAP (D => D(7),clk => Fref,Q=> q(7));U17:DFF1 PORT MAP (D => D(8),clk => Fref,Q=> q(8));process(clk1,ckv,Fref,q,D) --译码电路beginif(q(1)='1'and q(2)='0') then n<="0001";elsif(q(2)='1' and q(3)='0') then n<="0010";elsif(q(3)='1' and q(4)='0') then n<="0011";elsif(q(4)='1' and q(5)='0') then n<="0100";elsif(q(5)='1' and q(6)='0') then n<="0101";elsif(q(6)='1' and q(7)='0') then n<="0110";elsif(q(7)='1' and q(8)='0') then n<="0111";elsif(q(8)='1' and q(1)='0') then n<="1000";else n<="0000";end if;end process;end rtl;。