文档库 最新最全的文档下载
当前位置:文档库 › 03第三章VHDL语言基础习题答案.doc

03第三章VHDL语言基础习题答案.doc

03第三章VHDL语言基础习题答案.doc
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 有哪四种描述风格?

答案:

行为描述、数据流描述、结构描述以及由前三种组合的混合描述。

实验题

实验【一】编写一个实体

实验目的:熟悉实体的编写方法。

实验任务:在 Quartus II 中建立一个 VHDL 语言文件,编写一个实体,该实体要求如下:

实体名: TEST 。

输入端口: INPUTA , INPUTB ,数据类型为BIT 。

输出端口: OUTPUT ,数据类型为BIT 。

没有类属说明。

答案:

ENTITY TEST IS -- 实体

PORT(

INPUTA,INPUTB: in bit; OUTPUT: out bit); --2 个输入引脚,类型BIT

--1 个输出引脚,类型BIT

END TEST;

实验【二】编写一个结构体

实验目的:熟悉结构体的编写方法。

? 3 ?

实验任务:在 Quartus II 中建立一个 VHDL 语言文件,编写一个结构体,该结构体要

求如下:

实体名: TEST 。

结构体名: RTL 。

没有功能描述语句。

答案:

ARCHITECTURE RTL OF TEST IS-- 结构体,名称为RTL ,对应实体为TEST

BEGIN

--无逻辑语句

END RT;

?4 ?

第一章EDA 开发技术基础

在EDA 开发中,用户以计算机为工具,在对应的集成开发环境中,用硬件描述语言完成设计文件,然后由计算机自动地完成逻辑编译、综合、优化、布局、布线和仿真

等工作,并且对于特定目标芯片进行适配编译、逻辑映射和编程下载。本章将介绍EDA 开发技术的基础知识,包括EDA 的发展历史、可编程逻辑语言的分类和特点,可编程

逻辑器件的种类和开发方法,使用EDA 进行设计的流程等。

1.1 EDA 技术基础

EDA 是电子设计自动化(Electronic Design Automation )的缩写,是在20 世纪 60 年代中期从计算机辅助设计( CAD )、计算机辅助制造( CAM )、计算机辅助测试( CAT )和计算机辅助工程( CAE )的概念发展而来的。

1.1.1EDA 技术简介

EDA 技术是现代电子信息工程领域中一门发展迅速的新技术。它是以计算机为工作平台,其以EDA 软件工具为开发环境,以硬件描述语言为主要表达方式,以大规模可

编程器件为设计载体,以ASIC 、SOC、FPGA 芯片为目标器件,以电子系统设计为应用

方向的电子产品自动化设计过程。

EDA 技术有广义和狭义之分。

从广义来说EDA技术包括半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印制电路板设计自动化、仿真与测试故障诊断自动化等,例如PSPICE、EWB 、MATLAB等计算机辅助分析CAA 技术和 PROTEL 、ORCAD 等印刷制版计算机辅助设计等。

从狭义来说EDA技术就是电子设计自动化,即通过相关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、化简、分割、综合、优化、以及布局

布线、逻辑仿真等工作,最终完成对于特定目标芯片的适配编译、逻辑映射、编程下载,从而形成集成电子系统,不包含电子生产自动化。

EDA 技术在电子系统设计中具有以下特点,所以的到了广泛应用:

● 用软件的方式设计硬件。

● 用软件方式设计的系统到硬件系统的转换是由相关软件自动完成的。

● 在设计过程中可以用软件进行各种仿真进行验证。

●现代 EDA 工具具有高层综合和优化功能,能够在系统级进行综合、优化和方针,

从而缩短设计周期,提高工作效率。

● 系统可以现场编程,在线升级。

? 5 ?

第二章Quartus II 集成开发环境

Altera公司的Quartus Ⅱ集成开发环境根据设计者的需求提供了一个完整的多平台

开发环境,其包含了整个可编程逻辑器件设计阶段的所有解决方案,提供了完整的图形用

户界面可以完成可编程片上系统的整个开发流程的各个阶段,包括输入、综合、仿真

等,在其中设计者可以方便的完成数字系统设计的全过程。本章将介绍如何在Quartus II 集成开发环境应用VHDL语言进行数字系统的开发。

注意: Quartus II 集成开发环境的最新版是V12.0 ,但是在最新版中其去掉了直接输入波形文件进行仿真的功能,取而代之的是使用ModelSim 的仿真文件进行仿真,为了便于

读者快速上手学习,不增加难度,本书采用了依然可以使用波形文件进行仿真的V9.1

版本,读者可以在Altera 的网站上免费下载到该版本的Web Edtion 版;另外值得一

说的是 Quartus II 有完整版和Web Edtion 两个版本,前者收费而后者收费,前者对于

后者而言只是多了很多内部集成的IP 核,所以对于普通入门级用户而言直接下载免

费使用的后者即可。

2.1 Quartus II 应用基础

设计输入

包括基于块的设计、

系统级设计和软件开发

综合

布局、布线调试

时序分析工程变动管理

仿真时序逼近

编程、配置

图 1.2Quartus Ⅱ设计流程

?6 ?

第三章VHDL 语言基础

VHDL语言的应用程序都是由几个固定的部分组成的,通常来说缺一不可,并且其

代码会具有一些固定的样式即描述风格。本章以一个使用VHDL语言来实现三态门的简

单实例来介绍VHDL语言程序的一些基础知识,包括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:OUT std_logic); END tri_gate;

ARCHITECTURE rtl OF tri_gate IS BEGIN

PROCESS(DIN,EN)

BEGIN

IF(EN='1') THEN

DOUT<=DIN;

ELSE

DOUT<='Z';

END IF;

END PROCESS; END rtl;

器件外部接口信号

实体:说明,相当于器件

的引脚

器件内部工作逻辑结构体:描述,即为

实体描

述的器件功能结构

该应用代码对应的RTL 文件如图 3.1 所示。

? 7 ?

第四章VHDL 语言的基本要素

和其他编程语言一样,硬件描述语言VHDL 也有自己的文字规则。作为编程语句的

基本单元, VHDL语言的语言要素反映了其重要的语言特点。能够正确理解的文字规则和熟练掌握VHDL语言要素的基本含义及用法,是利用VHDL VHDL 语言硬件描述语

言进行数字系统设计的基础,本章将就这些方面进行详细的介绍。

4.1 VHDL 语言文字的命名规范

使用 VHDL 语言进行数字系统设计,必须在编程过程中严格遵守VHDL文字规则,如其特有的表达方式等,VHDL 语言的文字(Literal )主要包括数值型文字和标识符。

● 数值型文字:包括数字型、字符串型和位串型。

● 标识符:用于定义常数、变量、信号、子程序或参数的名字。

4.1.1数值型文字

数值型文字的值主要有以下几种表达方式:

●整数型文字:整数文字都是十进制的数,如:1,123,987 ,518E2 ,12_345_678

等。其中,下划线并无特殊含义,其唯一的作用就是增加文字的可读性,且不影

响文字本身的值。

● 实数型文字:实数型文字与整数型文字一样都是十进制的数,但是他必须带有小

数点。如:12.3, 34.502, 0.0 ,6.5E-2 ( =0.065 ), 123_456.789_321 等。

● 以数制基数表示的文字:用这种表示方法的文字由五部分构成。第一部分,用十

进制数来表示的数制基数;第二部分,数制隔离符号“#”;第三部分,要表达

的文字的数值表示;第四部分,指数隔离符号“#”;第五部分,用十进制表示

的指数部分,当指数为0 时,这部分可以省略不写,如下所示:

SIGNAL A,B,C : INTEGER RANGE 0 TO 255;

A <=

B <= 2#1100_1111#;

10#158#2;

-- 表示二进制计数,即十进制的

-- 表示十进制计数,且指数为

207

2,即十进制的158*158

C <= 8#375#; -- 表示八进制计数,即十进制的253

●物理量文字:此类型文字带有单位,如60s,1km ,300pf描述

中,可以进行行为仿真,但是在综合时被忽略,不能被等。这些文字用于行为VHDL综合器综合

形成与之对应的硬件结构。

注意:在这些数值型文字中,整数可综合实现,实数一般不能被综合,而物理量则完全不可综合。

?8 ?

第五章VHDL 语言的顺序描述语句

从执行顺序上划分,VHDL 语言可以分为顺序描述语句(Sequential Statements )和并行描述语句( Concurrent Statements )两大类,前者在执行过程中是按照书写顺序依次

执行的,而后者则是在同一时间同步执行的,在本章将详细地介绍顺序描述语句,包括其特

点和分类以及赋值语句、代入语句和流程控制语句等顺序描述语句的使用方法。

5.1顺序描述语句的特点和分类

顺序描述语句是相对于并行语句而言的,其最大的特点是:每一条语句在行为仿真

中的顺序与他们在代码中的书写顺序相同,且只出现在进程或者子程序(包括过程和函

数)中。

在数字系统设计中,顺序描述语句通常用来描述逻辑系统的组合逻辑、时序逻辑等。

VHDL 语言中的顺序描述语句主要包括:赋值语句(变量赋值语句)、代入语句(信号

赋值语句)、流程控制语句、等待语句、子程序调用语句、返回语句和空操作语句等。

5.2赋值语句介绍

赋值语句用于将一个值或者一个表达式的运算结果传递给变量或者变量数组,其标准格式如下:

目的变量<=表达式;

该语句表示把右边的表达式的值赋给目的变量,但语句两边的数据类型必须相同。

目的变量的类型、范围和初始值都应该先给出,右边表达式可以是变量、信号量或字符。变量只能在进程( PROCESS )或子程序( 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 : = 10 ;

VARIABLE temp4 : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ;

SIGNAL a: STD_LOGIC ;-- 定义信号

SIGNAL b: REAL ;

? 9 ?

第六章VHDL 语言的并行描述语句

在实际的数字系统中,很多操作是互相独立,可以并行(在同一时间执行)的;在

VHDL 语言中使用并行描述语言来对这些操作进实现,这些并行语句可以是结构性的,

也可以是行为性的,其是硬件描述语言特有的,其在系统的某一时刻同时执行,不因编

程的语句顺序而影响执行的先后。本章介绍了VHDL语言中的并行描述语句的使用方

法,包括并发信号代入语句( Concurrent Signal Assignment )、进程语句( PROCESS )、元件调用语句( COMPONENT )、端口映射语句( PORT MAP )等。

6.1并发信号代入语句

在5.3 小节中介绍了代入语句,而本节讲的并发信号代入语句主要是强调该语句的

并发性,其在仿真时刻同时运行,其表示可编程逻辑器件上的各个独立的硬件模块的各

自独立操作。

6.1.1并发信号代入语句基础

当信号代入语句在进程内部使用时,它将作为顺序语句的形式出现,当信号代入语

句在结构体的进程之外使用时,它将作为并行语句的形式。实际上一个并发信号代入语

句就是一个等效的进程的简略形式。下面就介绍并发信号代入语句的并发性和进程等效

性。

例6.1 是一个并发信号代入语句的应用实例。

【例 6.1 】并发信号代入语句的使用

q0 <= data1 + data2 ; -- 描述加法器行为

q1 <= data3 * data4 ; -- 描述乘法器行为

第一个信号代入语句描述了一个硬件加法器的行为,第二个信号代入语句描述了一

个硬件乘法器的行为,这两个代入语句是并发执行的,硬件加法器和乘法器独立并行工

作。在仿真时刻,两个语句是并发处理的,从而真实地模拟了实际硬件系统中加法器和

乘法器的工作情况,这就是信号代入语句的并发性。

另外,一个并发信号代入语句就是一个简化的进程,如例 6.2 所示。

【例 6.2 】并发信号代入语句和信号的关系

ARCHITECTURE behav OF concurrent_example IS BEGIN

q <= d0 NAND ( d1 OR d2 )AFTER 7 ns ;-- 信号代入语句

END ARCHITECTURE behav ;

该并发信号代入语句可以等效于如下的进程形式。

?10 ?

第七章使用 VHDL 语言来设计组合逻辑

电路

常见的数字系统可以分组合逻辑电路和时序逻辑电路两大部分,组合逻辑电路是指

在任何时刻,输出状态只决定于同一时刻各输入状态的组合,而与电路以前状态无关,

而与其他时间的状态无关的电路,本章将详细介绍使用VHDL 语言来设计组合逻辑电路

的方法。

7.1组合逻辑电路设计基础

7.1.1逻辑代数基础

逻辑代数又称布尔代数,是 19 世纪英国数学家布尔首先提出来的,其是研究数字逻辑

电路的基本工具和理论基础。

1.逻辑变量和逻辑函数

逻辑代数是用来处理逻辑运算的代数。参与逻辑运算的变量称为逻辑变量,它一般

只有 0、 1 两种取值,称为“逻辑0”和“逻辑1”。逻辑0 和逻辑 1 不同于普通代数中

的0 和1,因为在逻辑运算中它不表示具体的数值大小,而只是表示两种相互矛盾、相

互对立的状态,如表示事件的真和假;信号的有和无;开关的通和断;电平的高和低等

等。

逻辑函数是由若干逻辑变量经过有限次的逻辑运算所决定的输出。若输入逻辑变量

确定以后,输出的值也就被唯一确定了,称这个输出为有关逻辑变量的逻辑函数。

2.基本逻辑运算

所谓逻辑运算,就是按照人们事先设计好的规则,进行逻辑推理和逻辑判断。逻辑

代数中,最基本的逻辑运算是“与”、“或”、“非”三种,其他任何复杂的逻辑运算

都可以通过这三种基本逻辑运算来实现。

“与”逻辑运算又称为逻辑乘或逻辑与。它的定义是:只有决定某一事件是否发生的

所有条件全部具备,这一事件才能发生,这种因果关系称为与逻辑。其中决定事件的

条件称为输入逻辑变量,一般用字母 A 、B、C、D 等表示;事件是否发生这一结果称为

逻辑函数的输出,一般用字母F 表示。若将决定事件发生的条件具备表示为逻辑1,条件不具备表示为逻辑 0,事件发生表示为逻辑 1,事件不发生表示为逻辑 0,并将“条件”

和“结果”的各种可能性列成表格,这种反映输入逻辑变量和输出函数值关系的表格称

? 11 ? 第八章使用 VHDL 语言来设计时序电路

时序电路是一种常用的电子电路,其和组合逻辑电路是完全不同的两种类型的电

路,组合电路的输出仅仅和电路当时的输入有关,而时序电路的输出不仅仅和电路当前

输入相关,还和电路过去输入相关,本章将介绍时序电路的基本原理和如何在VHDL 语言中进行时序电路设计。

8.1时序电路基础

由于时序电路的输出和其过去的状态也相关,所以时序电路中必然有记忆元件,用

于记忆和过去输入信号相关的信息。

时序电路可以分为两大类:

● 同步时序电路:其所有电路都是用一个公共的时钟信号,电路中所有的记忆元件

都受到这个时钟信号的同一控制,只有在该信号来到的时候记忆元件的状态才能

发生变化,从而使时序电路的输入发生变化;而且每次时钟信号到来的时候,记忆元件的状态和电路的输出状态才会发生改变。

● 异步时序电路:其电路中没有一个统一的时钟信号,各个记忆元件也不受到同一

个时钟控制,电路状态的改变是因为输入信号引起的。

注意:绝大多数的实际应用电路,从宏观上看都是异步时序电路,而从微观(各个模块)

上看都是同步时序电路,所以也可以认为同步时序电路是异步时序电路的基础。

时序逻辑电路在电路结构上有两个显著的特点。一是它通常包含组合电路和存储电

路两个组成部分,而存储电路是必不可少的;二是存储电路的输出状态必须反馈到电路

的输入端,与输入信号一起共同决定电路的输出。

由于任何时序逻辑电路都是以时钟为驱动信号的,时序电路只有在时钟信号的控制

下其电路状态才会改变,时钟信号是时序电路的执行条件。另外由于时序逻辑电路有存储

功能,因此它就具有初始状态,为了使时序电路正常工作,需要用复位信号使电路状

态回归到一个确定的状态。

8.2时序电路的时钟信号

时钟信号在时序逻辑电路中有着重要的作用,它将驱动时序逻辑电路状态的转移,

根据时钟信号可以区分时序电路的原来状态和当前状态。

?12 ?

第九章使用 VHDL 语言来设计存储器

存储器( Memory )是数字系统的重要的组成部分,因为数字系统的工作一般都会

伴随着数据的存储。存储器实际上是一种时序逻辑电路。数字系统中存储器主要包括:

只读存储器( ROM )、随机存储器( RAM )和先入先出存储器( FIFO ),本章将介绍使用VHDL 语言来设计这些存储器的方法。

9.1只读存储器(ROM)设计

9.1.1只读存储器(ROM )基础

ROM 是只读存储器( Read-Only Memory )的简称,是一种只能读出事先所存数据的

固态半导体存储器。其特性是一旦写入数据就无法再将之改变或删除。通常用在不需

经常变更数据的电子或电脑系统中,并且数据不会因为电源关闭而消失,简而言之ROM 就是只能读不能写。

注意: ROM 的“不能写”准确来说是是对写入数据要求的条件比较高,比如说要求更高的

工作电压、紫外光照射等,并不是说完全不能再重写。

9.1.2只读存储器(ROM )的 VHDL 语言实现

1.单口只读存储器

单口只读存储器是指ROM 只有一套数据总线,其同时只支持一个对ROM 中地址

单元的读操作。例 9.1 是一个 256 字节容量的需要注意的是在实现中定义了一个文件用于将8 位单口 ROM 的 VHDL语言实现实例,ROM 中所有地址单元的数据内容都进行

了初始化操作。

【例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 语言来设计状态机

状态机就是一组触发器的输出状态随着时钟和输入信号按照一定的规律变化的一

种机制或过程,所有的时序电路从理论上都可以表示为有限状态机(Finite State

Machine , FSM ),有限状态机是实现高可靠逻辑控制的重要途径,是大型数字系统设计

中的重要组成部分,尤其是进行复杂时序逻辑电路的实现。本章在基本时序逻辑电路

描述的基础上,介绍采用 VHDL 进行有限状态机设计的方法和有限状态机设计中需要注意

的一些问题。

10.1状态机基础

数字系统一般可分为控制单元和数据通道,数据通道通常由组合逻辑电路构成,而控

制单元通常由时序逻辑电路构成。控制单元的每一个控制态可以看作一种状态,而状

态之间的转换条件指定了下一个状态和输出信号,因此采用有限状态机可以非常清楚的

描述时序电路之间的状态转换模式和状态转换的条件。

10.1.1状态机的分类

有限状态机根据输出信号与当前状态以及输入信号的关系来分,可以分为Moore 型

和 Mealy 型两种:

●输出信号只和当前状态有关的状态机称为Moore 型状态机,如图10.1 所示。

●输出信号不仅和当前状态有关,而且也和输入信号有关的状态机称为Mealy 型状

态机,如图10.2 所示。

input next_state output

次态逻辑输出逻辑

current_state

状态寄存器

clk

reset

图 10.1 Moore 型有限状态机

next_state output

次态逻辑输出逻辑

current_state

状态寄存器

clk

reset

图10.2 Mealy 型有限状态机

?14 ?

第十一章VHDL 语言的层次化设计

在使用 VHDL 语言来进行大型数字系统设计的时候可以采用层次化结构设计的方法

将系统拆分为几个层次进行,这样可以使得系统的体系更加清晰,降低设计难度。本章将

详细介绍 VHDL 语言的层次化设计思想以及如何使用层次化设计思想来进行数字系统设

计,包括库、程序包以及配置的使用方法。

11.1层次化结构设计基础

任何复杂的数字系统最终都可以分解基本门电路和寄存器电路单元,根据这个思

路,在采用 VHDL 语言进行数字系统设计过程中,也可以将设计目标进行层层分解,在各

个层次上分别设计;或者将目标分解成一些模块,各个模块同时进行设计,最后进行组合

联调,这就是层次化、结构化的设计方法。层次化的设计方法能使复杂的电子系统简化,

并且在不同的层次上都能够进行仿真验证,及时发现错误并加以纠正。结构化的

设计能够将复杂的系统划分成一些模块,各个模块同时进行设计,分别编译、仿真验证,最后组合成一个系统,这样便于一些子模块资源的共享,如可以利用已经完成的工程项

目中设计好的模块。

对于一个数字系统来说,设计层次可以从两个不同的角度来划分:按照性能描述

划分和按照结构描述划分,对应于第三章中 VHDL 程序设计的不同描述风格——行为描述和

结构描述。

系统的性能描述主要关注系统的行为,即系统完成什么功能,它通常只表示系统的

输入输出间的关系,以系统的功能为设计目标,以系统的输入信号、内部状态和输出信

号的要求为设计中心,至于具体的逻辑电路实现则并不关注。

系统的结构描述主要关注于实现某一功能的系统的具体结构以及各组成模块之间

的连接关系,包括各个功能单元的具体的端口定义。它不能直观的表示系统的逻辑功能,

需要根据各组成单元的功能及其相互驱动关系来确定,它是系统功能的具体实现电路。

数字系统一般可以分为以下 6 个层次:系统级、芯片级、寄存器级、门级、电路级

和版图级。与之相对应,系统的性能描述和结构描述也可以分为 6 个层次,表8.1 是对不同设计风格和设计层次的对应关系。

表 8.1 数字系统的层次关系

系统层次性能描述结构描述

系统级芯片级自然语言描述的系统需求

系统的实现算法

系统结构框图

处理器、存储器、串行

控制器

/并行接口、中断

? 15 ? 第十二章VHDL 语言的仿真、综合和优化

此在使用 VHDL 语言进行项目开发过程中,实现设计目标只是其中一部分的工作,外还

需要对该项目进行仿真、综合和优化工作,这些工作不仅仅可以提高芯片资源的利

用效率,甚至可以提高设计正确性和设计效率。本章将介绍如何在VHDL 语言开发过程中进行仿真、综合和优化。

12.1 VHDL 语言的仿真

进行第二章介绍了在 quartus 中使用波形文件进行工程项目的仿真,在采用 VHDL 数字电

路和数字系统的设计中,仿真是非常重要的一个步骤,要在设计的多个阶段进行

多个层次的仿真如行为仿真、时序仿真和硬件仿真。它是对电路设计的一种检验方法,

用 VHDL描述的任何数字电路和数字系统是否正确,是否符合设计的目标和要求,都需要通过仿真来进行验证。仿真一般通过VHDL 仿真器和具体的CPLD/FPGA 芯片来完成。目前,各EDA 公司和厂商为设计者提供了众多的仿真工具,如Synopsys 公司的 VCS ,VEDA Desigan Automation 公司的VULCAL 等。仿真是利用VHDL 语言进行数字电路

设计的一个必不可少的步骤,它贯穿设计的整个过程。

在数字系统的设计过程中一般要进行三个层次仿真:行为级仿真、 RTL 级仿真和门

级仿真,各级所要达到的目的是不一样的。

● 行为仿真是针对设计进行系统级的仿真,主要用于对系统设计可行性进行评估和

验证,可以快速的对多种系统设计方案进行比较和论证,以此获得正确的最佳设

计方案。

●RTL 级仿真主要针对各个模块进行功能验证。

●而门级仿真则用于保证设计的电路针对具体器件的电气性能如延时等是满足设

计需求的。

可以把用VHDL描述的系统或模块看作能完成某一个功能的整体,给定它一组输入

信号(测试向量),它就会根据设计的内容给出对应的一组输出信号(响应),将设计

模块或系统的输出信号与按照逻辑功能要求预期得到的输出信号进行比较就能够判断

被测部分功能的正确性以及是否满足设计的要求。

无论是功能仿真还是时序仿真,仿真方法一般有两种:一种是在大多数EDA 工具中的 VHDL 仿真器允许进行交互式的操作,允许直接通过设置输入信号波形的方式对输

入信号进行赋值,指定仿真时间,并观察输出波形的方式来进行仿真过程,第二章中介

绍的即为这种方法。

另一种仿真方法就是利用测试平台的方法,自动的对被测试模块输入信号测试向

量,并且通过波形输出和文件记录输出等方式,或者与测试平台中的设定输出向量来进

?16 ?

第十三章VHDL 语言的属性描述语句

VHDL语言具有属性预定义和描述的功能,利用这些功能可以写出功能丰富、简明

扼要的程序模块,因此熟练掌握VHDL语言的属性描述语句是应用硬件描述语言的关键

之一。本章介绍了VHDL语言的属性描述语句使用方法,包括属性预定义、树数值类属

性描述语句、函数类属性描述语句等。

13.1属性预定义

VHDL 语言的属性描述语句有许多重要的应用,可以用来获取一般数值的邻值、极

限值,可以用来获取数组的长度、数组中的值,可以用来从块、信号或子类型中获取数

据,可以用来获取未约束的数据类型的范围,可以用来检出时钟( clock )的边沿,可以用来完

成定时检查。

属性描述语句一共包括 6 类:

● 数值类属性描述语句。

● 函数类属性描述语句。

● 信号类属性描述语句。

● 数据类型类属性描述语句。

● 数据区间类属性描述语句。

● 用户自定义属性语句。

通过 VHDL 语言的属性描述语句可以获得客体对象的有关值、类型、功能、范围等,用途非常广泛。预定义属性是 VHDL 语言程序设计的重要步骤、重要方法之一,是信息在变量、信号、文件、块、进程等不同客体之间传递、提取的重要方法,下面将结合各种具体应用实例,详细地向读者介绍各种属性描述语句。

13.2数值类属性描述语句

数值类属性描述语句通常用来获得一般数据、数组、块的有关值,还可以用于获得

数组的长度、数据类型的边界等。数值类属性描述语句还可以进一步细分为 3 个子类的属性描述语句,包括:

● 一般数据的数值属性描述语句。

● 数组的数值属性描述语句。

●块的数值属性描述语句。

? 17 ?

第十四章 VHDL 语言的数字系统设计应用

实例

数字系统设计是 VHDL 语言诞生的主要目的,其可以快速、方便、高正确率的实现针对

具体应用的数字系统;此外利用 VHDL 语言描述的数字电路还可以与传统的数字系统设计

方法相结合,取长补短共同实现能够完成目标任务的数字系统。本章介绍了交通

灯控制器、出租车计费器、自动售货机和通用异步发送器这四个基于VHDL 语言的数字

系统设计应用实例。

14.1交通灯控制器

随着各种交通工具的发展和交通指挥的需要,交通灯的诞生大大改善了城市交

通状况,本应用是一个交通控制器的实例,用于控制十字路口主、支两条道路

的红、绿、黄三色灯,指挥车辆和行人安全通信。

14.1.1交通灯控制器的需求分析

该交通灯控制器要求能显示十字路口东西、南北两个方向的红、黄、绿的指示状态。用两

组红、黄、绿三种颜色的灯分别作为东西、南北两个方向的红、黄、绿灯。变化规

律如下:

● 东西绿灯亮,南北红灯亮

● 东西黄灯亮,南北红灯亮

● 东西红灯亮,南北绿灯亮

● 东西红灯亮,南北黄灯亮

● 东西绿灯亮,南北红灯亮

南北方向是主干道车道,东西方向是支干道车道,要求两条交叉道路上的车辆交替

运行,主干道每次通行时间都设为30 秒、支干道每次通行间为20 秒,时间可设置修改。

在绿灯转为红灯时,要求黄灯先亮 5 秒钟,才能变换运行车道。

要求交通灯控制器有复位功能,在复位信号使能的情况下能够实现交通灯的自动复

位,并且要求所有交通灯的状态变化包括复位信号引起的均发生在时钟脉冲的上升沿

处。

14.1.2交通灯控制器的系统设计

根据交通灯系统设计要求,可以用一个有限状态机来实现这个交通灯控制器。首先

根据功能要求,明确两组交通灯的状态,这两组交通灯总共有四种状态,分别用st0,st1,

?18 ?

内容简介

本书介绍了EDA 技术和硬件描述语言VHDL的基础知识,通过对工程实例的系统

分析、程序设计和仿真,深入细致的讨论了其在数字系统设计中的广泛应用。

本书首先介绍了EDA 和 VHDL语言基础知识,然后介绍了最常用的VHDL语言集成开发环境Quartus II ,然后基于Qartus II 介绍了 VHDL语言的语法知识,包括VHDL 程序结构(如实体、结构体、块语句、库、程序包等)、VHDL 语言要素(如文字规则、数据变量、数据类型、操作符等)、VHDL 顺序语句和并行语句(如赋值语句、流程控

制语句、子程序调用语句、进程语句、并行信号赋值语句等),讨论了基本电路(如组

合逻辑里的加法器、译码器等,时序逻辑里的触发器、寄存器等,以及Mealy 和 Moore 型状态机)的VHDL实现方法;最后介绍了VHDL语言的综合、优化和层次设计并且

给出了几个综合应用实例

本书从浅入深介绍了使用VHDL语言进行EDA 设计的的整个流程,并且给出了大

量的应用实例,适合具有一定数字电路基础的希望学习集成电路设计的读者,可以作为

一本 VHDL 语言设计的参考手册,同时也适合以及高等院校电子类专业的学生和爱好者

阅读。

? 19 ? 前言

行业背景

电子设计自动化( Electronic Design Automation ,即 EDA)技术是指包括电路系统设计、

系统仿真、设计综合、 PCB版图设计和制版的一整套自动化流程。随着计算机、集成电路和

电子设计技术的高速发展,EDA技术已经渗透到百姓生活的各个角落,日益成为电子信息类产品的支柱产业;而硬件描述语言则是集成电路设计的核心技术,在常用的硬件描述语言中VHDL 因其功能强大、严谨等特点占据了绝大部分市场。

关于本书

本书介绍了 EDA技术和硬件描述语言 VHDL 的基础知识,通过对工程实例的系统分析、程

序设计和仿真,深入细致的讨论了其在数字系统设计中的广泛应用。

本书首先介绍了 EDA和 VHDL 语言基础知识,然后介绍了最常用的 VHDL语言集成开发环境Quartus II,然后基于 Qartus II 介绍了 VHDL 语言的语法知识,包括 VHDL 程序结构(如

实体、结构体、块语句、库、程序包等)、VHDL 语言要素(如文字规则、数据变量、数据类型、操作符等)、VHDL顺序语句和并行语句(如赋值语句、流程控制语句、子程序调用语句、进程语句、并行信号赋值语句等),讨论了基本电路(如组合逻辑里的加法器、译码器等,

时序逻辑里的触发器、寄存器等,以及 Mealy 和 Moore 型状态机)的 VHDL实现方法;最后介绍了 VHDL 语言的综合、优化和层次设计并且给出了几个综合应用实例

本书的各个章节说明如下:

·第1章主要介绍EDA技术和VHDL语言的基础知识,并且详细介绍了使用VHDL语言来进行 EDA设计的流程。

·第2章主要介绍了VHDL 语言的集成开发环境Quartus II 的使用方法。

·第3章主要介绍了VHDL 语言程序的机构,包括描述风格、结构体、实体等。

·第4章主要介绍了VHDL 语言的基本要素,包括标识符的命名规范,数据对象的使用和数据类型等。

·第5章主要介绍了VHDL 语言的顺序描述语句,包括赋值语句、代入语句、流程控制语句、 WAIT 语句等。

·第6章主要介绍了VHDL 语言的并行描述语句,包括并发信号代入语句、进程语句、过程语句等。

·第7章介绍了如何使用VHDL 语言来设计组合逻辑电路,包括基础门电路、编码器、译码器、数据选择器等。

·第8章介绍了如何使用VHDL 语言来设计时序电路,包括触发器、寄存器、计数器等。

·第9章介绍了如何使用VHDL 语言来设计存储器,包括ROM、 RAM、 FIFO等。

·第10章介绍了如何使用VHDL 语言来设计状态机,包括米勒型状态机、莫尔型状

态机以及状态机的实际应用。

VHDL语言快速入门必读

一·1.数据类型BIT与STD_LOGIC有什么区别。 BIT类型的取值只能是0或1,没有不定状态X,也没有高阻态。 STD_LOGIC类型可以有9种不同的值,包括U-初始值,X-不定,0-0,1-1,Z-高阻态,W-弱信号不定,L-弱信号0,H弱信号1.‘—’不可能情况。 2.信号和变量的异同。 信号是全局量,只要在结构体中已经定义,就可以在结构体中的所有地方使用,信号的赋值符号是”<=”,信号带入时可以附加延时,信号实际带入过程和带入语句的处理时分开进行的。 变量是局部量,只能在进程,子程序内部定义和使用,变量的赋值符号是“:=”,变量的赋值是立即执行的,不能附加延时。 3.VHDL语言的基本顺序语句和并行语句有哪些? 双性语句:信号带入语句 顺序语句:WHAT语句,断言语句,变量赋值语句,IF语句,CASE语句,LOOP语句,NEXT语句,EXIT语句,过程调用语句,NULL语句。 并行语句:进程(PROCESS)语句,条件带入语句,选择信号带入语句,并发过程调用语句,块语句。 4.用VHDL语言进行硬件设计的流程是什么? 1.分析实际的需求2确定芯片的功能3.用VHDL 语言描述改元件4.编译,如果有错误修改后再编译直至编译通过。5.仿真,如果仿真不符合设计要求,修改程序直至仿真通过。6.测试7.综合,8.下载到实际的芯片上。 5.基本的硬件描述语言的种类有哪些? 美国国防部开发的VHDL。 Verilog公司开发的Verilog-HDL. 日本电子工业振兴协会开发的UDL/I语言。 6.VHDL语言中包含的库的种类有哪些?库:是经编译后的数据的集合,它存放包集合定义,实体定义,构造体定义,和配置定义。库的种类:1.IEEE库,2.STD库,3.面向ASIC 的库,4.WORK库,5.用户定义库 7.IEEE库中所包含的基本类型转换函数有 1.包含程序所用的库 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; 2.实体声明 ENTITY fp IS PORT(); END ENTITY fp; 3.结构体,具体功能的实现 ARCHITECTURE a OF fp IS BEGIN END ARCHITECTURE a; 9.VHDL的程序子结构有哪些? 进程(PROCESS)顺序语句,块(BLOCK)并行语句,过程(PROCEDURE)顺序语句,函数(顺序语句)。 10.简述when-else和if-else的区别? If-else是顺序语句所以只能在进程内部使用,可以没有else语句,可以进行嵌套。有自身值带入的描述,能组成锁存电路。 When-else是并行语句,在结构体内使用,必须要有else语句,不能进行嵌套,没有自身值带入的描述,不能组成锁存电路。 11.什么是ASIC,ASIC的特点是什么?ASIC是Application Specific Integrated Circuit 的英文缩写,在集成电路界被认为是一种为专门目的而设计的集成电路。 ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。 12.逻辑电平有哪些?

vhdl基本语法

VHDL 基础语法篇——VHDL VHDL硬件描述语言 1.1 VHDL概述 1.1.1 VHDL的特点 VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于 VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原 语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下: 1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下 (top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。 2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设 计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数 据传送。利用单元(componet)、块(block)、过程(procure)和函数(function)等语句, 用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文 档资料的保存和广泛使用。 3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL 的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数 据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类 型语言。 4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行 和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构 和行为状态。 1.1.2 VHDL语言的基本结构 VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级 语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字 逻辑电路的设计基础,就可以在较短的时间内学会VHDL语言。但是VHDL毕竟是一种描述 数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的 语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者 感到枯燥无味,不得要领。较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整 体的程序结构,再逐步介绍程序中的语法概念。 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路, 或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含程序包、实体和结构体三个部分。实体给出电路单元的外部输入输出接口信号和引脚信 息,结构体给出了电路单元的内部结构和信号的行为特点, 程序包定义在设计结构体和实体 中将用到的常数、数据类型、子程序和设计好的电路单元等。 一位全加器的逻辑表达式是: S=A⊕B⊕Ci Co=AB+ACi+BCi 全加器的VHDL程序的文件名称是fulladder.VHD,其中VHD是VHDL程序的文件扩展名, 程序如下: LIBRARY IEEE; --IEEE标准库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fulladder IS -- fulladder是实体名称 PORT( A, B, Ci : IN STD_LOGIC; --定义输入/输出信号 Co, S : OUT STD_LOGIC ); END fulladder; ARCHITECTURE addstr OF fulladder IS --addstr是结构体名 BEGIN S <= A XOR B XOR Ci; Co <= (A AND B) OR (A AND Ci) OR (B AND Ci); END addstr; 从这个例子中可以看出,一段完整的VHDL代码主要由以下几部分组成: 第一部分是程序包,程序包是用VHDL语言编写的共享文件,定义在设计结构体和实体

VHDL语言的基本知识点罗列

VHDL语言的基本知识点罗列 1 VHDL语言的标识符 VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。使用标识符要遵守如下法则: a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。 任何标识符必须以英文字母开头。λ 末字符不能为下划线。λ b)不允许出现两个连续下划线。 标识符中不区分大小写字母。λ VHDL定义的保留子或称关键字,不能用作标识符。λ c) VHDL中的注释由两个连续的短线(--)开始,直到行尾。 以下是非法标识符: -Decoder —起始不能为非英文字母 3DOP —起始不能为数字 Large#number —“#”不能成为标识符的构成符号 Data__bus —不能有双下划线 Copper_ —最后字符不能为下划线 On —关键字不能用作标识符。 注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。 标识符表示的几种数据对象的详细说明如下: 1) 常数(Constant ) 常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。常数一被赋值就不能在改变。一般格式: CONSTANT 常数名:数据类型:=表达式; 例:CONSTANT Vcc: REAL: =5.0; —设计实体的电源电压指定 常数所赋得值应与定义的数据类型一致。 常量的使用范围取决于它被定义的位置。程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。 2) 变量(Variable) 变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。用作局部数据存储。在仿真过程中。它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。变量常用在实现某种算法的赋值语句中。 一般格式: VARIABLE 变量名数据类型约束条件:=表达式; 例:VARIABLE x,y:INTEGER; —定义x,y为整数变量 VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围 变量的适用范围仅限于定义了变量的进程或子程序中。若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。 变量赋值语句的语法格式如下:

VHDL语言的基本要素(大全)

VHDL语言的基本要素 一、数据对象 VHDL语言的主要数据对象有信号,变量,常量。 信号—信号是电路中的物理量,对应于电路的连线、节点;信号说明全局量,用于描述中的构造体(Architecture), 实体(Intity),程序包(package)。 变量—变量是程序运算中的中间量,并不对应电路中的物理量。变量说明局部量,用于进程语句(process), 函数(Function), 过程(procedure)。 常量—常数也不对应电路中的物理量,当常量说明全局量,在构造体(Architecture), 实体(Intity),程序包(package),进程语句(process), 函数(Function), 过程(procedure)中均可使用。数据对象的定义格式: signal 信号名:数据类型,约束条件,表达式 Variable 变量名:数据类型,约束条件:=表达式 Constant 常量名:数据类型,约束条件:=表达式 例如:Variable count:INTEGER RANGE 0 TO 255:=10 Constant Daly:Time:=100ns 信号代入和变量赋值的区别:两者形式不同,操作过程也不相同。变量赋值符“:=”,信号的代入符“<=”。 在变量的赋值语句中,该语句一当执行,其值立即将赋予变量;而信号的代入,其语句执行后不会立即使信号发生代入,在下条语句

执行时,仍使用原来的信号值,如进程语句中的敏感表的信号代入就是如此。 二、数据类型 VHDL语言中的数据类型,一般而言可分为:标量类型和组合类型。在实际使用中,也可分成予定义类型和用户定义类型。VHDL语言是强类型的语言,主要可按如下分类和变换处理。 ①标准数据类型 ⑴整数⑵实数(浮点数)-1.0E+38~+1.0E38 ⑶位bit (0,1) ⑷位矢量⑸布尔量,“假”,“真”⑹字符(ASCⅡ)字符 ⑺时间 ⑻错误等级⑼自然数(大于等于0的整数)⑽字符串 (字符矢量) ②用户定义的数据类型 TYPE 数据类型名{数据类型名} 数据类型定义 ⑴枚举类型⑵整数类型⑶实数类型⑷数组类型 ⑸存取类型⑹文件类型⑺记录类型⑻时间类型③用户定义子类型 SUBTUPE 子类型名IS 数据类型名[范围] 例:SUBTYPE digit is INTEGER RANGE 0 TO 9 ④数据类型转换 数据类型的变换函数通常由“STD_LOGIC_1164”,

03 第三章 VHDL语言基础 习题答案

填空题 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有哪四种描述风格? 答案: 行为描述、数据流描述、结构描述以及由前三种组合的混合描述。 实验题 实验【一】编写一个实体 实验目的:熟悉实体的编写方法。 实验任务:在Quartus II中建立一个VHDL语言文件,编写一个实体,该实体要求如下: 实体名:TEST。 输入端口:INPUTA,INPUTB,数据类型为BIT。 输出端口:OUTPUT,数据类型为BIT。 没有类属说明。 答案: ENTITY TEST IS --实体 PORT( INPUTA,INPUTB: in bit; --2个输入引脚,类型BIT OUTPUT: out bit); --1个输出引脚,类型BIT END TEST; 实验【二】编写一个结构体 实验目的:熟悉结构体的编写方法。

VHDL经典教程(精简快速入门版)

3 VHDL语言 VHDL: VHSIC Hardware Description Language. 3.1 VHDL语言基础 3.2 VHDL基本结构 3.3 VHDL语句 3.4 状态机在VHDL中的实现 3.5 常用电路VHDL程序 3.6 VHDL仿真 3.7 VHDL综合

HDL----Hardware Description Language 一种用于描述数字电路的功能或行为的语言。目的是提为电路设计效率,缩短设计周期,减小设计成本,可在芯片制造前进行有效的仿真和错误检测。 优点: HDL设计的电路能获得非常抽象级的描述。如基于RTL(Register Transfer Level)描述的IC,可用于不同的工艺。 HDL设计的电路,在设计的前期,就可以完成电路的功能级的验证。HDL设计的电路类似于计算机编程。 常用的HDL语言:VHDL 、Verilog HDL

?VHDL 是美国国防部在20世纪80年代初为实现其高速集成电路硬件VHSIC 计划提出的描述语言; ?IEEE 从1986年开始致力于VHDL 标准化工作,融合了其它 ASIC 芯片制造商开发的硬件描述语言的优点,于93年形成了标 准版本(IEEE.std_1164)。 ?1995年,我国国家技术监督局推荐VHDL 做为电子设计自动化硬件描述语言的国家标准。 VHDL 概述: VHDL VHSIC Hardwarter Description Language Very High speed integrated circuit VHSIC

VHDL优点: ?覆盖面广,系统硬件描述能力强,是一个多层次的硬件描述语言; ?VHDL语言具有良好的可读性,既可以被计算机接受,也容易被人们所理解; ?VHDL语言可以与工艺无关编程; ?VHDL语言已做为一种IEEE的工业标准,便于使用、交流和推广。 VHDL语言的不足之处: 设计的最终实现取决于针对目标器件的编程器,工具的不同会导致综合质量不一样。

三VHDL语言基础

第三章VHDL语言基础 本章介绍VHDL语言的基础知识,具体容包括: 1、概述 2、VHDL程序的基本结构 库、程序包、实体说明、结构体、配置 3、VHDL的语言要素 语法规则、数据对象、数据类型、运算操作符 4、VHDL的描述语句 并行语句、顺序语句、子程序、属性语句 5、VHDL的描述方式 行为描述方式、寄存器传输级描述方式、结构描述方式 第一节概述 HDL(Hardware DescriptionLanguage):硬件描述语言,描述数字电路和系统的语言。具体来说,用于描述数字系统的结构、行为、功能和接口。 在EDA设计中,设计者利用硬件描述语言,可以描述自己的设计思想,完成设计输入的步骤。设计输入共有三种方法——原理图、文本、波形输入,其中,文本输入方式就是用硬件描述语言跟计算机交流,让计算机读懂设计者的设计。 VHDL的全称是Very-High-Speed Integrated CircuitHardware

DescriptionLanguage,译作甚高速集成电路硬件描述语言,是当前广泛使用的HDL 语言之一,并被IEEE和美国国防部采用为标准的HDL语言。 1、发展历程: 美国国防部1982年开发VHDL语言,在1987年被IEEE采用为标准硬件描述语言。在实际使用过程中,发现1987年版本的缺陷,并于1993年对87版进行了修订。因此,现在有两个版本的VHDL语言。 1)1987年的IEEE 1076(VHDL87) 2)1993年进行了修正(VHDL93) VHDL语言目前已成为,开发设计可编程逻辑器件的重要工具。 2、优点: VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点: 功能强大,设计方式多样 VHDL具有功能强大的语言结构, 可用简洁明确的代码来描述十分复杂的硬件电路。 VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。 (自上而下:“上”指的是整个数字系统的功能和定义,“下”指的是组成系统的功能部件(子模块)。自上而下的设计,就是根据整个系统的功能,按照一定的原则把系统划分为若干个子模块,然后分别设计实现每个子模块,最后把这些子模块组装成完整的数字系统。)

vhdl语言基础

第1章VHDL语言基础 1.1 概述 硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述、结构描述、数据流描述的语言。目前,利用硬件描述语言可以进行数字电子系统的设计。随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。 国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来。有些HDL成为IEEE标准,但大部分是企业标准。VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司。可谓百家争鸣,百花齐放。这些不同的语言传播到国内,同样也引起了不同的影响。在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言。这两种语言已成为IEEE标准语言。 电子设计自动化(electronic design automation,EDA)技术的理论基础、设计工具、设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA 则是这些硬件配置文件的载体。当这些FPGA器件加载、配置上不同的文件时,这个器件便具有了相应的功能。在这一系列的设计、综合、仿真、验证、配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中。 以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟。在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力。HDL语言的语法语义学研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真、验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件。软件、硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐。毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力。本书从应用的角度向国内广大读者介绍VHDL编程技术,让大家掌握HDL编程,了解FPGA结构,学会使用EDA工具,为集成电路前端设计打下基础。 1.1.1 硬件描述语言的诞生 VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。HDL发展的技术源头是:在HDL形成发展之前,已有了许多程序设计语言,如汇编、C、Pascal、Fortran、Prolog等。这些语言运行

04 第四章 VHDL语言的基本要素 习题答案

填空题 1、VHDL语言的文字(Literal)主要包括数值型文字和标识符。 2、在VHDL语言的以数字基数表示的文字中,十进制计数的1582的表示方法是10#158#2。 3、在数位字符串中,B为二进制基数符号;O为八进制基数符号;X为十六进制基数符号。 4、下标用于指示数组型变量或信号的某一个元素。 5、VHDL语言的注释以--来表示。 6、VHDL语言中主要有4类基本的数据对象:常量(CONSTANT)、变量(VARIABLE)、信号(SIGNAL)和文件(FILES)。 7、在对信号进行赋初值时,使用:=表示没有延时,使用<=表示有延时。 8、VHDL是一种强类型语言,要求每一个数据对象必须具有确定的唯一的数据类型,而且只有数据类型相同的量才能互相传递和作用。 9、VHDL语言的数据类型按照数据来源来分,可以分为VHDL语言预定义的标准数据类型和用户自定义的数据类型。 10、位类型实际上是一个二值枚举型数据类型,只有两个可能的取值:0和1,用于表示逻辑0和逻辑1。 11、标准逻辑位类型是在IEEE的STD_LOGIC_1164程序包中定义的。 12、布尔类型和位类型类似,实际上是一个二值枚举型数据类型,有两个可能的取值:TRUE(真)和FALSE(假)。 13、VHDL语言中主要有4类操作符:逻辑操作符(LOGIC OPERATOR)、关系操作符(RELATION OPERATOR)、算术操作符(ARITHMETIC OPERATOR)和重载操作符(OVERLOADING OPERATOR)。 综述题 1、VHDL语言的数字型文字主要有哪几种表达方式,并且举例。 答案: ●整数型文字,如:1,123,518E2,12_345_678。 ●实数型文字,如:12.3,6.5E-2,12_23.45_32。 ●以数字基数表示的文字,如:10#158#2。 ●物理量文字,如:60s,1km。 2、VHDL语言标识符有哪些书写规范?

vhdl基本语法(简略共34页)

VHDL硬件描述语言 1.1 VHDL概述 1.1.1 VHDL的特点 VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,由于 VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分高级语言的原 语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下: 1. 支持从系统级到门级电路的描述,既支持自底向上(bottom-up)的设计也支持从顶向下 (top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。 2. VHDL的设计单元的基本组成部分是实体(entity)和结构体(architecture),实体包含设 计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数 据传送。利用单元(componet)、块(block)、过程(procure)和函数(function)等语句, 用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文 档资料的保存和广泛使用。 3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL 的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数 据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类 型语言。 4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行 和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构 和行为状态。 1.1.2 VHDL语言的基本结构 VHDL语言是数字电路的硬件描述语言,在语句结构上吸取了Fortran和C等计算机高级 语言的语句,如IF语句、循环语句、函数和子程序等,只要具备高级语言的编程技能和数字 逻辑电路的设计基础,就可以在较短的时间学会VHDL语言。但是VHDL毕竟是一种描述 数字电路的工业标准语言,该种语言的标识符号、数据类型、数据对象以及描述各种电路的 语句形式和程序结构等方面具有特殊的规定,如果一开始就介绍它的语法规定,会使初学者 感到枯燥无味,不得要领。较好的办法是选取几个具有代表性的VHDL程序实例,先介绍整 体的程序结构,再逐步介绍程序中的语法概念。 一个VHDL语言的设计程序描述的是一个电路单元,这个电路单元可以是一个门电路, 或者是一个计数器,也可以是一个CPU。一般情况下,一个完整的VHDL语言程序至少要包含程序包、实体和结构体三个部分。实体给出电路单元的外部输入输出接口信号和引脚信 息,结构体给出了电路单元的部结构和信号的行为特点, 程序包定义在设计结构体和实体 中将用到的常数、数据类型、子程序和设计好的电路单元等。 一位全加器的逻辑表达式是: S=A⊕B⊕Ci Co=AB+ACi+BCi 全加器的VHDL程序的文件名称是fulladder.VHD,其中VHD是VHDL程序的文件扩展名, 程序如下: LIBRARY IEEE; --IEEE标准库 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fulladder IS -- fulladder是实体名称 PORT( A, B, Ci : IN STD_LOGIC; --定义输入/输出信号 Co, S : OUT STD_LOGIC ); END fulladder; ARCHITECTURE addstr OF fulladder IS --addstr是结构体名 BEGIN S <= A XOR B XOR Ci; Co <= (A AND B) OR (A AND Ci) OR (B AND Ci); END addstr; 从这个例子中可以看出,一段完整的VHDL代码主要由以下几部分组成:

VHDL语言入门到精通

可编程逻辑器件 与VHDL程序设计技术 计划学时课堂教学36 实验教学18 教学目的 了解一类器件:FPGA/CPLD; 掌握一门设计语言:VHDL; 熟悉一种设计工具:Quartus II。 考试笔试50%,实验50%。 教材:以课件为主 第一章概述 一、设计自动化(Design Automation)数字系统:计算机,通信系统,控制电路,集成电路,数码设备,掌上电脑… 超大规模集成电路:Very Large Scale Integrated Circuit(VLSI) 计算机辅助设计:Computer Aided Design(CAD) 电子设计自动化(E lectronic D esign A utomation,EDA,电子设计自动化)(模拟电路+数字系统) 电路组成:分离元件→大、中、小规模IC→超大规模集成电路 设计方法:人工设计→CAD→EDA 二、EDA发展历史与现状 50年代──萌芽 用电子管计算机帮助设计晶体管计算机; 逻辑图的保存、检查、修改。 60年代──简单的单独的CAD软件 印刷电路板PCB+集成电路IC出现+计算机应用的推广。 PCB布线,电路模拟,电路分析,逻辑模拟。 70年代──第一代:CAD设备 小型专用计算机+CAD软件 逻辑模拟,逻辑优化,版图图形编辑+设计规则检查。 (Tango布线软件) 80年代──第二代:ICCAD软件系统 初步覆盖了集成电路自动设计全过程(逻辑图—产品); 主要针对PAL、GAL等器件; 逻辑图输入、逻辑模拟、逻辑综合、逻辑电路测试码生成、版图和PCB的自动布局布线。 Mentor,Cadence,ViewLogic,熊猫系统 90年代──第三代:覆盖所有级别的EDA开放式集成系统 高层次设计自动化,形式验证; 标准硬件描述语言VHDL; 时延、功耗驱动的高层次综合与版图自动布局布线; Synopsys,Mentor,Cadence… 2000年代──以SOC为中心 System on a chip; 初步实现了“概念驱动工程”的思想。 三、数字系统与VLSI

相关文档