03第三章VHDL语言基础习题答案_第1页
03第三章VHDL语言基础习题答案_第2页
03第三章VHDL语言基础习题答案_第3页
03第三章VHDL语言基础习题答案_第4页
03第三章VHDL语言基础习题答案_第5页
已阅读5页,还剩64页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

1、 填空题 1、一个标准的 VHDL 语言程序由库、实体和结构体组成。 2、个完整的 VHDL 语言描述是以对一个功能元件的完整描述为基础的 3、实体相当于电路图中一个器件符号。 4、端口说明( PORT )是对设计实体与外部接口的描述,也可以说是设计实体的外 部引脚的名称,它为实体与外部环境的动态通信提供通道 5、缓冲( BUFFER )端口描述模式和 INOUT 双向模式的区别在于只能接受一个驱动源,不允许多重驱动。 6、 VHDL 语言的结构体的这些子结构互相之间是并行的。 7、将 VHDL 语言的行为描述语句转换为门级描述由 VHDL 开发工具自动完成,是 VHDL 语言综合器的任务。

2、8、数据流描述也称为 RTL (寄存器传输级)描述方式,它类似于布尔方程,它既 表示某种行为,又隐含结构信息,主要指非结构化的并行语句描述。 9、在结构描述中,元件间的连接是通过定义的端口界面来实现的。 10、结构描述的缺点是程序表示的是电路的结构连接关系,不能直观的得到设计电 路的逻辑功能。 综述题 1 、写出实体的结构。 答案ENTITY 实体名 ISGENERIC( 类属表 );PORT( 端口表 );END ENTITY 实体名 ; 2 、在 IEEE 库中定义了哪四种 VHDL 语言的端口模式? 答案IN :输入OUT :输出INOUT :双向,输入输出BUFFER :缓冲,其实质也

3、是双向的,但是只能接受一个驱动源。 3 、写出结构体的结构。 ?2 ? 答案ARCHITECTURE 结构体名 OF 实体名 IS 说明语句 BEGIN 功能描述语句 END ARCHITECTURE 结构体名 ; 4 、写出结构体的功能性描述语句的 5 种子结构。 答案: 块语句、进程语句、子程序调用语句、信号赋值语句和元件例化语句。 5 、 VHDL 有哪四种描述风格? 答案: 行为描述、数据流描述、结构描述以及由前三种组合的混合描述。 实验题 实验【一】编写一个实体 实验目的 :熟悉实体的编写方法。 实验任务 :在 Quartus II 中建立一个 VHDL 语言文件,编写一个实体,该实

4、体要求如下实体名: TEST 输入端口: INPUTA , INPUTB ,数据类型为 BIT 输出端口: OUTPUT ,数据类型为 BIT 没有类属说明。 答ENTITY TEST IS - PORT(INPUTA,INPUTB: in bit;OUTPUT: out bit); -2 个输入引脚,类型 BIT -1 个输出引脚,类型 BIEND TEST; 实验【二】编写一个结构体 实验目的 :熟悉结构体的编写方法。 ? 3 ? 实验任务 :在 Quartus II 中建立一个 VHDL 语言文件,编写一个结构体,该结构体要求如下实体名: TEST 结构体名: RTL 没有功能描述语句。

5、 答案ARCHITECTURE RTL OF TEST IS - 结构体,名称为 RTL ,对应实体为 TESBEGIN - 无逻辑语句 END RT; ?4 ? 第一章 EDA 开发技术基础 在 EDA 开发中,用户以计算机为工具,在对应的集成开发环境中,用硬件描述语言完成设计文件,然后由计算机自动地完成逻辑编译、综合、优化、布局、布线和仿真 等工作, 并且对于特定目标芯片进行适配编译、 逻辑映射和编程下载。 本章将介绍 EDA 开发技术的基础知识,包括 EDA 的发展历史、可编程逻辑语言的分类和特点,可编程 逻辑器件的种类和开发方法,使用 EDA 进行设计的流程等。 1.1 EDA 技术基

6、础 EDA 是电子设计自动化( Electronic Design Automation )的缩写,是在 20 世纪 60 年代中期从计算机辅助设计 ( CAD )、计算机辅助制造 ( CAM )、计算机辅助测试 ( CAT )和计算机辅助工程( CAE )的概念发展而来的。 1.1.1 EDA 技术简介 EDA 技术是现代电子信息工程领域中一门发展迅速的新技术。 它是以计算机为工作 平台,其以 EDA 软件工具为开发环境,以硬件描述语言为主要表达方式,以大规模可 编程器件为设计载体,以 ASIC 、SOC、FPGA 芯片为目标器件,以电子系统设计为应用 方向的电子产品自动化设计过程。EDA

7、技术有广义和狭义之分从广义来说 EDA 技术包括半导体工艺设计自动化、可编程器件设计自动化、电子 系统设计自动化、 印制电路板设计自动化、 仿真与测试故障诊断自动化等, 例如 PSPICE、 EWB 、MATLAB 等计算机辅助分析 CAA 技术和 PROTEL 、ORCAD 等印刷制版计算机 辅助设计等从狭义来说 EDA 技术就是电子设计自动化,即通过相关的开发软件,自动完成用 软件方式设计的电子系统到硬件系统的逻辑编译、化简、分割、综合、优化、以及布局 布线、 逻辑仿真等工作, 最终完成对于特定目标芯片的适配编译、 逻辑映射、 编程下载, 从而形成集成电子系统,不包含电子生产自动化。 ED

8、A 技术在电子系统设计中具有以下特点,所以的到了广泛应用: 用软件的方式设计硬件。 用软件方式设计的系统到硬件系统的转换是由相关软件自动完成 在设计过程中可以用软件进行各种仿真进行验证 现代 EDA 工具具有高层综合和优化功能, 能够在系统级进行综合、 优化和方针, 从而缩短设计周期,提高工作效率。 系统可以现场编程,在线升级。 ? 5 ? 第二章 Quartus II 集成开发环境 Altera 公司的 Quartus 集成开发环境根据设计者的需求提供了一个完整的多平台 开发环境,其包含了整个可编程逻辑器件设计阶段的所有解决方案,提供了完整的图形用户界面可以完成可编程片上系统的整个开发流程的

9、各个阶段,包括输入、综合、仿真 等,在其中设计者可以方便的完成数字系统设计的全过程。 本章将介绍如何在 Quartus II 集成开发环境应用 VHDL 语言进行数字系统的开发。 注意: Quartus II 集成开发环境的最新版是 V12.0 ,但是在最新版中其去掉了直接输入波形文件进行仿真的功能,取而代之的是使用 ModelSim 的仿真文件进行仿真,为了便于 读者快速上手学习, 不增加难度, 本书采用了依然可以使用波形文件进行仿真的 V9.1 版本,读者可以在 Altera 的网站上免费下载到该版本的 Web Edtion 版;另外值得一说的是 Quartus II 有完整版和 Web

10、Edtion 两个版本, 前者收费而后者收费, 前者对于 后者而言只是多了很多内部集成的 IP 核,所以对于普通入门级用户而言直接下载免 费使用的后者即可。 2.1 Quartus II 应用基础 设计输入 包括基于块的设计、 系统级设计和软件开发 综合 布局、布线 调试 时序分析 工程变动管理 仿真 时序逼近 编程、配置 图 1.2 Quartus 设计流程 ?6 ? 第三章 VHDL 语言基础 VHDL 语言的应用程序都是由几个固定的部分组成的,通常来说缺一不可,并且其 代码会具有一些固定的样式即描述风格。 本章以一个使用 VHDL 语言来实现三态门的简 单实例来介绍 VHDL 语言程序的

11、一些基础知识,包括 VHDL 语言的组成, VHDL 语言 的实体, VHDL 语言的结构体和 VHDL 语言的描述风格等。 3.1 VHDL 语言程序的结构 和普通的应用语言程序一样, VHDL 语言的程序也有自己的结构, 或者说组成部分。一个简单的用 VHDL 语言实现的三态门如例 3.1 所示, 各个语句对应的模块结构如右侧注释所示。 【例 3.1 】一个简单的 VHDL语言程序和其结构LIBRARY IEEE;USE IEEE.std_logic_1164.ALL; IEEE 库使用说明 ENTITY tri_gate IS PORT(DIN,EN:IN std_logic; DOUT

12、:OUT std_logic)END tri_gate; ARCHITECTURE rtl OF tri_gate IS BEGIPROCESS(DIN,ENBEGIIF(EN=1) THEDOUT=DINELSE DOUT=Z; END IFEND PROCESS;END rtl; 器件外部接口信号 实体: 说明,相当于器件 的引脚 器件内部工作逻辑 结构体: 描述,即为实体描 述的器件功能结构 该应用代码对应的 RTL 文件如图 3.1 所示。 ? 7 ? 第四章 VHDL 语言的基本要素 和其他编程语言一样, 硬件描述语言 VHDL 也有自己的文字规则。 作为编程语句的 基本单元, VH

13、DL 语言的语言要素反映了其重要的语言特点。 能够正确理解 的文字规则和熟练掌握 VHDL 语言要素的基本含义及用法,是利用 VHDL VHDL 语言硬件描述语 言进行数字系统设计的基础,本章将就这些方面进行详细的介绍。 4.1 VHDL 语言文字的命名规范 使用 VHDL 语言进行数字系统设计, 必须在编程过程中严格遵守 VHDL 文字规则, 如其特有的表达方式等, VHDL 语言的文字( Literal )主要包括数值型文字和标识符。 数值型文字:包括数字型、字符串型和位串型。 标识符:用于定义常数、变量、信号、子程序或参数的名字。 4.1.1 数值型文字 数值型文字的值主要有以下几种表达

14、方式: 整数型文字:整数文字都是十进制的数,如: 1,123,987 ,518E2 ,12_345_678等。其中,下划线并无特殊含义,其唯一的作用就是增加文字的可读性,且不响文字本身的值。 实数型文字: 实数型文字与整数型文字一样都是十进制的数, 但是他必须带有数点。如: 12.3, 34.502, 0.0 ,6.5E-2 ( =0.065 ), 123_456.789_321 等。 以数制基数表示的文字: 用这种表示方法的文字由五部分构成。 第一部分, 用进制数来表示的数制基数;第二部分,数制隔离符号“ #”;第三部分,要表的文字的数值表示;第四部分,指数隔离符号“ #”;第五部分,用十进

15、制表示 的指数部分,当指数为 0 时,这部分可以省略不写,如下所示SIGNAL A,B,C : INTEGER RANGE 0 TO 255;A =B = 2#1100_1111#; 10#158#2; - 表示二进制计数,即十进制的 - 表示十进制计数,且指数为 207 2,即十进制的 158*1C = 8#375#; - 表示八进制计数,即十进制的 253 物理量文字:此类型文字带有单位,如 60s,1km ,300pf描述中,可以进行行为仿真,但是在综合时被忽略,不能被 等。这些文字用于行为 VHDL 综合器综合 形成与之对应的硬件结构。 注意:在这些数值型文字中,整数可综合实现,实数一

16、般不能被综合,而物理量则完全不 可综合。 ?8 ? 第五章 VHDL 语言的顺序描述语句 从执行顺序上划分, VHDL 语言可以分为顺序描述语句( Sequential Statements )和 并行描述语句( Concurrent Statements )两大类,前者在执行过程中是按照书写顺序依次执行的,而后者则是在同一时间同步执行的,在本章将详细地介绍顺序描述语句,包括其特点和分类以及赋值语句、代入语句和流程控制语句等顺序描述语句的使用方法。 5.1 顺序描述语句的特点和分类 顺序描述语句是相对于并行语句而言的,其最大的特点是:每一条语句在行为仿真 中的顺序与他们在代码中的书写顺序相同,

17、且只出现在进程或者子程序(包括过程和函 数)中。 在数字系统设计中, 顺序描述语句通常用来描述逻辑系统的组合逻辑、 时序逻辑等。 VHDL 语言中的顺序描述语句主要包括:赋值语句(变量赋值语句)、代入语句(信号赋值语句)、流程控制语句、等待语句、子程序调用语句、返回语句和空操作语句等。 5.2 赋值语句介绍 赋值语句用于将一个值或者一个表达式的运算结果传递给变量或者变量数组, 其标 准格式如下目的变量 = 表达式 ; 该语句表示把右边的表达式的值赋给目的变量,但语句两边的数据类型必须相同。 目的变量的类型、 范围和初始值都应该先给出, 右边表达式可以是变量、 信号量或字符。变量只能在进程( P

18、ROCESS )或子程序( SUBPROGRAM )中使用,而无法传递到进程 之外,所以它有点类似于其他高级语言中的局部变量。 例 5.1 是赋值语句的使用实例。【例 5.1 】赋值语句的使用ARCHITECTURE behavioral OF example_fuzhi IS CONSTANT cvolt : REAL : = 3.3 ; - 定义常数 CONSTANT ccurrent : REAL : = 4.0 ; VARIABLE temp0, temp1 : REAL ; - 定义变量 VARIABLE temp2, temp3 : INTEGER RANGE 0 TO 255 :

19、 = 10 ; VARIABLE temp4 : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ; SIGNAL a : STD_LOGIC ; - 定义信号 SIGNAL b : REAL ; ? 9 ? 第六章 VHDL 语言的并行描述语句 在实际的数字系统中,很多操作是互相独立,可以并行(在同一时间执行)的;在 VHDL 语言中使用并行描述语言来对这些操作进实现,这些并行语句可以是结构性的,也可以是行为性的,其是硬件描述语言特有的,其在系统的某一时刻同时执行,不因编 程的语句顺序而影响执行的先后。本章介绍了 VHDL 语言中的并行描述语句的使用方 法,包括并发信号代入语

20、句( Concurrent Signal Assignment )、进程语句( PROCESS )、元件调用语句( COMPONENT )、端口映射语句( PORT MAP )等。 6.1 并发信号代入语句 在 5.3 小节中介绍了代入语句,而本节讲的并发信号代入语句主要是强调该语句的并发性,其在仿真时刻同时运行,其表示可编程逻辑器件上的各个独立的硬件模块的各自独立操作。 6.1.1 并发信号代入语句基础 当信号代入语句在进程内部使用时,它将作为顺序语句的形式出现,当信号代入语 句在结构体的进程之外使用时,它将作为并行语句的形式。实际上一个并发信号代入语 句就是一个等效的进程的简略形式。 下面

21、就介绍并发信号代入语句的并发性和进程等效 性。 例 6.1 是一个并发信号代入语句的应用实例。【例 6.1 】并发信号代入语句的使用 q0 = data1 + data2 ; - 描述加法器行q1 = data3 * data4 ; - 描述乘法器行为 第一个信号代入语句描述了一个硬件加法器的行为, 第二个信号代入语句描述了一 个硬件乘法器的行为,这两个代入语句是并发执行的,硬件加法器和乘法器独立并行工 作。在仿真时刻,两个语句是并发处理的,从而真实地模拟了实际硬件系统中加法器和乘法器的工作情况,这就是信号代入语句的并发性。 另外,一个并发信号代入语句就是一个简化的进程,如例 6.2 所示。

22、【例 6.2 】并发信号代入语句和信号的关系 ARCHITECTURE behav OF concurrent_example IS BEGIN q = d0 NAND ( d1 OR d2 ) AFTER 7 ns ; - 信号代入语END ARCHITECTURE behav ; 该并发信号代入语句可以等效于如下的进程形式。 ?10 ? 第七章 使用 VHDL 语言来设计组合逻辑电路 常见的数字系统可以分组合逻辑电路和时序逻辑电路两大部分,组合逻辑电路是指 在任何时刻,输出状态只决定于同一时刻各输入状态的组合,而与电路以前状态无关, 而与其他时间的状态无关的电路, 本章将详细介绍使用 VH

23、DL 语言来设计组合逻辑电路 的方法。 7.1 组合逻辑电路设计基础 7.1.1 逻辑代数基础 逻辑代数又称布尔代数,是 19 世纪英国数学家布尔首先提出来的,其是研究数字逻辑电路的基本工具和理论基础。 1. 逻辑变量和逻辑函数 逻辑代数是用来处理逻辑运算的代数。参与逻辑运算的变量称为逻辑变量,它一般 只有 0、 1 两种取值,称为“逻辑 0”和“逻辑 1”。逻辑 0 和逻辑 1 不同于普通代数中 的 0 和 1,因为在逻辑运算中它不表示具体的数值大小,而只是表示两种相互矛盾、相互对立的状态,如表示事件的真和假;信号的有和无;开关的通和断;电平的高和低等等。 逻辑函数是由若干逻辑变量经过有限次

24、的逻辑运算所决定的输出。 若输入逻辑变量 确定以后,输出的值也就被唯一确定了,称这个输出为有关逻辑变量的逻辑函数。 2. 基本逻辑运算 所谓逻辑运算,就是按照人们事先设计好的规则,进行逻辑推理和逻辑判断。逻辑 代数中,最基本的逻辑运算是“与”、“或”、“非”三种,其他任何复杂的逻辑运算都可以通过这三种基本逻辑运算来实现。 “与”逻辑运算又称为逻辑乘或逻辑与。它的定义是:只有决定某一事件是否发生的所有条件全部具备,这一事件才能发生,这种因果关系称为与逻辑。其中决定事件的 条件称为输入逻辑变量,一般用字母 A 、B、C、D 等表示;事件是否发生这一结果称为 逻辑函数的输出,一般用字母 F 表示。若

25、将决定事件发生的条件具备表示为逻辑 1,条件不具备表示为逻辑 0,事件发生表示为逻辑 1,事件不发生表示为逻辑 0,并将“条件” 和“结果”的各种可能性列成表格,这种反映输入逻辑变量和输出函数值关系的表格称 ? 11 ? 第八章 使用 VHDL 语言来设计时序电路 时序电路是一种常用的电子电路,其和组合逻辑电路是完全不同的两种类型的电 路,组合电路的输出仅仅和电路当时的输入有关,而时序电路的输出不仅仅和电路当前 输入相关,还和电路过去输入相关,本章将介绍时序电路的基本原理和如何在 VHDL 语言中进行时序电路设计。 8.1 时序电路基础 由于时序电路的输出和其过去的状态也相关,所以时序电路中必

26、然有记忆元件,用 于记忆和过去输入信号相关的信息。 时序电路可以分为两大类: 同步时序电路: 其所有电路都是用一个公共的时钟信号, 电路中所有的记忆都受到这个时钟信号的同一控制, 只有在该信号来到的时候记忆元件的状态才能 发生变化, 从而使时序电路的输入发生变化; 而且每次时钟信号到来的时候, 记 忆元件的状态和电路的输出状态才会发生改变。 异步时序电路: 其电路中没有一个统一的时钟信号, 各个记忆元件也不受到同一个时钟控制,电路状态的改变是因为输入信号引起的。 注意:绝大多数的实际应用电路,从宏观上看都是异步时序电路,而从微观(各个模块) 上看都是同步时序电路,所以也可以认为同步时序电路是异

27、步时序电路的基础。 时序逻辑电路在电路结构上有两个显著的特点。 一是它通常包含组合电路和存储电 路两个组成部分,而存储电路是必不可少的;二是存储电路的输出状态必须反馈到电路的输入端,与输入信号一起共同决定电路的输出。 由于任何时序逻辑电路都是以时钟为驱动信号的, 时序电路只有在时钟信号的控制 下其电路状态才会改变,时钟信号是时序电路的执行条件。另外由于时序逻辑电路有存储功能,因此它就具有初始状态,为了使时序电路正常工作,需要用复位信号使电路状 态回归到一个确定的状态。 8.2 时序电路的时钟信号 时钟信号在时序逻辑电路中有着重要的作用,它将驱动时序逻辑电路状态的转移,根据时钟信号可以区分时序电

28、路的原来状态和当前状态。 ?12 ? 第九章 使用 VHDL 语言来设计存储器 存储器( Memory )是数字系统的重要的组成部分,因为数字系统的工作一般都会伴随着数据的存储。存储器实际上是一种时序逻辑电路。数字系统中存储器主要包括: 只读存储器( ROM )、随机存储器( RAM )和先入先出存储器( FIFO ),本章将介绍使用 VHDL 语言来设计这些存储器的方法。 9.1 只读存储器( ROM )设计 9.1.1 只读存储器( ROM )基础 ROM 是只读存储器( Read-Only Memory )的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦写入数据就无法再

29、将之改变或删除。通常用在不需 经常变更数据的电子或电脑系统中, 并且数据不会因为电源关闭而消失, 简而言之 ROM 就是只能读不能写。 注意: ROM 的“不能写”准确来说是是对写入数据要求的条件比较高,比如说要求更高的 工作电压、紫外光照射等,并不是说完全不能再重写。 9.1.2 只读存储器( ROM )的 VHDL 语言实现 1. 单口只读存储器 单口只读存储器是指 ROM 只有一套数据总线,其同时只支持一个对 ROM 中地址 单元的读操作。例 9.1 是一个 256 字节容量的需要注意的是在实现中定义了一个文件用于将 8 位单口 ROM 的 VHDL 语言实现实例, ROM 中所有地址单

30、元的数据内容都进行 了初始化操作。 【例 9.1 】单口 ROM的 VHDL实现library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all; - 库文entity single_port_rom is - port(addr : in natural range 0 to 255; - 地址clk : in std_logic; - 时钟变量 q : out std_logic_vector(7 downto 0) -八位输出 ? 13 ? 第十章 使用 VHDL 语言来设计状态机 状态机就是一组触发器的输出状态随着时钟和

31、输入信号按照一定的规律变化的一 种机制或过程,所有的时序电路从理论上都可以表示为有限状态机( Finite State Machine , FSM ),有限状态机是实现高可靠逻辑控制的重要途径,是大型数字系统设计中的重要组成部分,尤其是进行复杂时序逻辑电路的实现。本章在基本时序逻辑电路 描述的基础上, 介绍采用 VHDL 进行有限状态机设计的方法和有限状态机设计中需要注意的一些问题。 10.1 状态机基础 数字系统一般可分为控制单元和数据通道,数据通道通常由组合逻辑电路构成,而控制单元通常由时序逻辑电路构成。控制单元的每一个控制态可以看作一种状态,而状 态之间的转换条件指定了下一个状态和输出信

32、号, 因此采用有限状态机可以非常清楚的 描述时序电路之间的状态转换模式和状态转换的条件。 10.1.1 状态机的分类 有限状态机根据输出信号与当前状态以及输入信号的关系来分, 可以分为 Moore 型 和 Mealy 型两种: 输出信号只和当前状态有关的状态机称为 Moore 型状态机,如图 10.1 所示。 输出信号不仅和当前状态有关, 而且也和输入信号有关的状态机称为 Mealy 型态机,如图 10.2 所示。 input next_state output 次态逻辑 输出逻辑 current_state clk 状态寄存器 reset 图 10.1 Moore 型有限状态机 next_s

33、tate output 次态逻辑 输出逻辑 current_state 状态寄存器 clk reset 图 10.2 Mealy 型有限状态机 ?14 ? 第十一章 VHDL 语言的层次化设计 在使用 VHDL 语言来进行大型数字系统设计的时候可以采用层次化结构设计的方法将系统拆分为几个层次进行,这样可以使得系统的体系更加清晰,降低设计难度。本章将详细介绍 VHDL 语言的层次化设计思想以及如何使用层次化设计思想来进行数字系统设计,包括库、程序包以及配置的使用方法。 11.1 层次化结构设计基础 任何复杂的数字系统最终都可以分解基本门电路和寄存器电路单元,根据这个思 路,在采用 VHDL 语言

34、进行数字系统设计过程中,也可以将设计目标进行层层分解,在各个层次上分别设计;或者将目标分解成一些模块,各个模块同时进行设计,最后进行组合联调,这就是层次化、结构化的设计方法。层次化的设计方法能使复杂的电子系统简化,并且在不同的层次上都能够进行仿真验证,及时发现错误并加以纠正。结构化的 设计能够将复杂的系统划分成一些模块, 各个模块同时进行设计, 分别编译、 仿真验证,最后组合成一个系统,这样便于一些子模块资源的共享,如可以利用已经完成的工程项 目中设计好的模块。 对于一个数字系统来说,设计层次可以从两个不同的角度来划分:按照性能描述 划分和按照结构描述划分, 对应于第三章中 VHDL 程序设计

35、的不同描述风格行为描述和结构描述。 系统的性能描述主要关注系统的行为,即系统完成什么功能,它通常只表示系统的 输入输出间的关系,以系统的功能为设计目标,以系统的输入信号、内部状态和输出信 号的要求为设计中心,至于具体的逻辑电路实现则并不关注。 系统的结构描述主要关注于实现某一功能的系统的具体结构以及各组成模块之间 的连接关系, 包括各个功能单元的具体的端口定义。 它不能直观的表示系统的逻辑功能, 需要根据各组成单元的功能及其相互驱动关系来确定,它是系统功能的具体实现电路。 数字系统一般可以分为以下 6 个层次:系统级、芯片级、寄存器级、门级、电路级 和版图级。与之相对应,系统的性能描述和结构描

36、述也可以分为 6 个层次,表 8.1 是对 不同设计风格和设计层次的对应关系。 表 8.1 数字系统的层次关系 系统层次 性能描述 结构描述 系统级 芯片级 自然语言描述的系统需求 系统的实现算法 系统结构框图 处理器、 存储器、串行 控制器 /并行接口、 中断 ? 15 ? 第十二章 VHDL 语言的仿真、综合和优化 在使用 VHDL 语言进行项目开发过程中, 实现设计目标只是其中一部分的工作,外还需要对该项目进行仿真、综合和优化工作,这些工作不仅仅可以提高芯片资源的利 此 用效率, 甚至可以提高设计正确性和设计效率。 本章将介绍如何在 VHDL 语言开发过程 中进行仿真、综合和优化。 12

37、.1 VHDL 语言的仿真 第二章介绍了在 quartus 中使用波形文件进行工程项目的仿真,在采用 VHDL 数字电路和数字系统的设计中,仿真是非常重要的一个步骤,要在设计的多个阶段进行 进行 多个层次的仿真如行为仿真、时序仿真和硬件仿真。它是对电路设计的一种检验方法, 用 VHDL 描述的任何数字电路和数字系统是否正确, 是否符合设计的目标和要求, 都需 要通过仿真来进行验证。 仿真一般通过 VHDL 仿真器和具体的 CPLD/FPGA 芯片来完成。 目前,各 EDA 公司和厂商为设计者提供了众多的仿真工具,如 Synopsys 公司的 VCS , VEDA Desigan Automat

38、ion 公司的 VULCAL 等。仿真是利用 VHDL 语言进行数字电路 设计的一个必不可少的步骤,它贯穿设计的整个过程。 在数字系统的设计过程中一般要进行三个层次仿真: 行为级仿真、 RTL 级仿真和门 级仿真,各级所要达到的目的是不一样的。 行为仿真是针对设计进行系统级的仿真, 主要用于对系统设计可行性进行评验证,可以快速的对多种系统设计方案进行比较和论证, 以此获得正确的最佳设 计方案。 RTL 级仿真主要针对各个模块进行功能验证。 而门级仿真则用于保证设计的电路针对具体器件的电气性能如延时等是满足设计需求的。 可以把用 VHDL 描述的系统或模块看作能完成某一个功能的整体, 给定它一组

39、输入 信号(测试向量),它就会根据设计的内容给出对应的一组输出信号(响应),将设计 模块或系统的输出信号与按照逻辑功能要求预期得到的输出信号进行比较就能够判断 被测部分功能的正确性以及是否满足设计的要求。 无论是功能仿真还是时序仿真,仿真方法一般有两种:一种是在大多数 EDA 工具 中的 VHDL 仿真器允许进行交互式的操作, 允许直接通过设置输入信号波形的方式对输 入信号进行赋值,指定仿真时间,并观察输出波形的方式来进行仿真过程,第二章中介 绍的即为这种方法。 另一种仿真方法就是利用测试平台的方法,自动的对被测试模块输入信号测试向 量,并且通过波形输出和文件记录输出等方式,或者与测试平台中的

40、设定输出向量来进 ?16 ? 第十三章 VHDL 语言的属性描述语句 VHDL 语言具有属性预定义和描述的功能,利用这些功能可以写出功能丰富、简明 扼要的程序模块, 因此熟练掌握 VHDL 语言的属性描述语句是应用硬件描述语言的关键 之一。本章介绍了 VHDL 语言的属性描述语句使用方法,包括属性预定义、树数值类属 性描述语句、函数类属性描述语句等。 13.1 属性预定义 VHDL 语言的属性描述语句有许多重要的应用,可以用来获取一般数值的邻值、极限值,可以用来获取数组的长度、数组中的值,可以用来从块、信号或子类型中获取数 据,可以用来获取未约束的数据类型的范围,可以用来检出时钟( clock

41、 )的边沿,可以用来完成定时检查。 属性描述语句一共包括 6 类: 数值类属性描述语句。 函数类属性描述语句。 信号类属性描述语句。 数据类型类属性描述语句。 数据区间类属性描述语句。 用户自定义属性语句。 通过 VHDL 语言的属性描述语句可以获得客体对象的有关值、 类型、功能、范围等,用途非常广泛。预定义属性是 VHDL 语言程序设计的重要步骤、重要方法之一, 是信息在变量、信号、文件、块、进程等不同客体之间传递、提取的重要方法,下面将结合各种具体应用实例,详细地向读者介绍各种属性描述语句。 13.2 数值类属性描述语句 数值类属性描述语句通常用来获得一般数据、数组、块的有关值,还可以用于

42、获得 数组的长度、数据类型的边界等。数值类属性描述语句还可以进一步细分为 3 个子类的 属性描述语句,包括: 一般数据的数值属性描述语句。 数组的数值属性描述语句。 块的数值属性描述语句。 ? 17 ? 第十四章 VHDL 语言的数字系统设计应用实例 数字系统设计是 VHDL 语言诞生的主要目的,其可以快速、方便、高正确率的实现针对具体应用的数字系统; 此外利用 VHDL 语言描述的数字电路还可以与传统的数字系统设计方法相结合,取长补短共同实现能够完成目标任务的数字系统。本章介绍了交通 灯控制器、 出租车计费器、 自动售货机和通用异步发送器这四个基于 VHDL 语言的数字 系统设计应用实例。

43、14.1 交通灯控制器 随着各种交通工具的发展和交通指挥的需要,交通灯的诞生大大改善了城市交通状况,本应用是一个交通控制器的实例,用于控制十字路口主、支两条道路 的红、绿、黄三色灯,指挥车辆和行人安全通信。 14.1.1 交通灯控制器的需求分析 该交通灯控制器要求能显示十字路口东西、 南北两个方向的红、 黄、绿的指示状态。用两组红、黄、绿三种颜色的灯分别作为东西、南北两个方向的红、黄、绿灯。变化规 律如下: 东西绿灯亮,南北红灯亮 东西黄灯亮,南北红灯亮 东西红灯亮,南北绿灯亮 东西红灯亮,南北黄灯亮 东西绿灯亮,南北红灯亮 南北方向是主干道车道,东西方向是支干道车道,要求两条交叉道路上的车辆

44、交替 运行,主干道每次通行时间都设为 30 秒、支干道每次通行间为 20 秒,时间可设置修改。 在绿灯转为红灯时,要求黄灯先亮 5 秒钟,才能变换运行车道。 要求交通灯控制器有复位功能,在复位信号使能的情况下能够实现交通灯的自动复位,并且要求所有交通灯的状态变化包括复位信号引起的均发生在时钟脉冲的上升沿处。 14.1.2 交通灯控制器的系统设计 根据交通灯系统设计要求,可以用一个有限状态机来实现这个交通灯控制器。首先 根据功能要求, 明确两组交通灯的状态, 这两组交通灯总共有四种状态, 分别用 st0,st1, ?18 ? 内容简介 本书介绍了 EDA 技术和硬件描述语言 VHDL 的基础知识,通过对工程实例的系统 分析、程序设计和仿真,深入细致的讨论了其在数字系统设计中的广泛应用。 本书首先介绍了 EDA 和 VHDL 语言基础知识, 然后介绍了最常用的 VHDL 语言集 成开发环境 Quartus II ,然后基于 Qartus II 介绍了 VHDL 语言的语法知识,包括 VHDL 程序结构(如实体、结构体、块语句、库、程序包等)、 VHDL 语言要素(

温馨提示

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

评论

0/150

提交评论