填空题
1、一个标准的 VHDL 语言程序由库、实体和结构体组成。
2、个完整的 VHDL 语言描述是以对一个功能元件的完整描述为基础的 3、实体相当于电路图中一个器件符号。
4、端口说明( PORT )是对设计实体与外部接口的描述,也可以说是设计实体的外 部引脚的名称,它为实体与外部环境的动态通信提供通道
5、缓冲( BUFFER )端口描述模式和 INOUT 双向模式的区别在于只能接受一个驱动源,不允许多重驱动。
6、 VHDL 语言的结构体的这些子结构互相之间是并行的。 7、将 VHDL 语言的行为描述语句转换为门级描述由
VHDL 语言综合器的任务。
8、数据流描述也称为
RTL (寄存器传输级)描述方式,它类似于布尔方程,它既
VHDL 开发工具自动完成,是
表示某种行为,又隐含结构信息,主要指非结构化的并行语句描述。
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;
实验【二】编写一个结构体
实验目的 :熟悉结构体的编写方法。
? 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.1 EDA 技术简介
它是以计算机为工作
EDA 技术是现代电子信息工程领域中一门发展迅速的新技术。
平台,其以 EDA 软件工具为开发环境,以硬件描述语言为主要表达方式,以大规模可
编程器件为设计载体,以
ASIC 、SOC、FPGA 芯片为目标器件,以电子系统设计为应用
方向的电子产品自动化设计过程。
EDA 技术有广义和狭义之分。
从广义来说 EDA 技术包括半导体工艺设计自动化、可编程器件设计自动化、电子 系统设计自动化、 印制电路板设计自动化、 EWB 、MATLAB 等计算机辅助分析 辅助设计等。
从狭义来说 EDA 技术就是电子设计自动化,即通过相关的开发软件,自动完成用 软件方式设计的电子系统到硬件系统的逻辑编译、化简、分割、综合、优化、以及布局 布线、 逻辑仿真等工作, 最终完成对于特定目标芯片的适配编译、 从而形成集成电子系统,不包含电子生产自动化。
仿真与测试故障诊断自动化等, 例如 PSPICE、
CAA 技术和 PROTEL 、ORCAD 等印刷制版计算机
逻辑映射、 编程下载, EDA 技术在电子系统设计中具有以下特点,所以的到了广泛应用:
● 用软件的方式设计硬件。
● 用软件方式设计的系统到硬件系统的转换是由相关软件自动完成的。 ● 在设计过程中可以用软件进行各种仿真进行验证。 ● 现代 EDA 工具具有高层综合和优化功能,
从而缩短设计周期,提高工作效率。
能够在系统级进行综合、
优化和方针,
● 系统可以现场编程,在线升级。
? 5 ?
第二章
Quartus II 集成开发环境
Altera 公司的 Quartus Ⅱ集成开发环境根据设计者的需求提供了一个完整的多平台
开发环境,其包含了整个可编程逻辑器件设计阶段的所有解决方案,提供了完整的图形用户界面可以完成可编程片上系统的整个开发流程的各个阶段,包括输入、综合、仿真
等,在其中设计者可以方便的完成数字系统设计的全过程。 集成开发环境应用
本章将介绍如何在 Quartus II
VHDL 语言进行数字系统的开发。
V12.0 ,但是在最新版中其去掉了直接输入波形
注意: Quartus II 集成开发环境的最新版是
文件进行仿真的功能,取而代之的是使用
ModelSim 的仿真文件进行仿真,为了便于
V9.1
读者快速上手学习, 不增加难度, 本书采用了依然可以使用波形文件进行仿真的 版本,读者可以在
Altera 的网站上免费下载到该版本的 Web Edtion 版;另外值得一
前者对于
说的是 Quartus II 有完整版和 Web Edtion 两个版本, 前者收费而后者收费,
后者而言只是多了很多内部集成的
IP 核,所以对于普通入门级用户而言直接下载免
费使用的后者即可。
2.1 Quartus II 应用基础
设计输入
综合
布局、布线
时序分析
仿真
编程、配置
时序逼近 工程变动管理
调试
包括基于块的设计、 系统级设计和软件开发
图 1.2 Quartus Ⅱ设计流程
?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_11.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.7_321 等。 ● 以数制基数表示的文字: 用这种表示方法的文字由五部分构成。
进制数来表示的数制基数;第二部分,数制隔离符号“ 的文字的数值表示;第四部分,指数隔离符号“ 的指数部分,当指数为
第一部分, 用十
#”;第三部分,要表达
#”;第五部分,用十进制表示
0 时,这部分可以省略不写,如下所示:
SIGNAL A,B,C : INTEGER RANGE 0 TO 255;
A <=
2#1100_1111#; 10#158#2;
-- 表示二进制计数,即十进制的 -- 表示十进制计数,且指数为
207
B <=
C <=
2,即十进制的 158*158 253
8#375#; -- 表示八进制计数,即十进制的
● 物理量文字:此类型文字带有单位,如 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 CONSTANT VARIABLE VARIABLE VARIABLE SIGNAL a SIGNAL b
cvolt : REAL : = 3.3 ; ccurrent : REAL : = 4.0 ; temp0, temp1 : REAL ; temp2, temp3 : INTEGER
-- 定义常数
-- 定义变量
RANGE 0 TO 255 : = 10 ;
temp4 : STD_LOGIC_VECTOR ( 3 DOWNTO 0 ) ; : STD_LOGIC ;
: 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 ) END ARCHITECTURE
AFTER 7 ns ; -- 信号代入语句
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
的
library ieee;
VHDL实现
use ieee.std_logic_11.all;
use ieee.numeric_std.all; entity single_port_rom is
port
-- 库文件
-- 实体
(
addr : in natural range 0 to 255; clk q
: in std_logic;
-- 地址变量
-- 时钟变量
: out std_logic_vector(7 downto 0) --八位输出
? 13 ?
第十章
使用 VHDL 语言来设计状态机
状态机就是一组触发器的输出状态随着时钟和输入信号按照一定的规律变化的一 种机制或过程,所有的时序电路从理论上都可以表示为有限状态机(
Finite State
Machine , FSM ),有限状态机是实现高可靠逻辑控制的重要途径,是大型数字系统设计
中的重要组成部分,尤其是进行复杂时序逻辑电路的实现。本章在基本时序逻辑电路
描述的基础上, 介绍采用 VHDL 进行有限状态机设计的方法和有限状态机设计中需要注意的一些问题。
10.1 状态机基础
数字系统一般可分为控制单元和数据通道,数据通道通常由组合逻辑电路构成,而控制单元通常由时序逻辑电路构成。控制单元的每一个控制态可以看作一种状态,而状
态之间的转换条件指定了下一个状态和输出信号,
因此采用有限状态机可以非常清楚的
描述时序电路之间的状态转换模式和状态转换的条件。
input
10.1.1 状态机的分类
可以分为 Moore 型
有限状态机根据输出信号与当前状态以及输入信号的关系来分,
和 Mealy 型两种:
● 输出信号只和当前状态有关的状态机称为 ● 输出信号不仅和当前状态有关,
态机,如图 10.2 所示。
Moore 型状态机,如图 10.1 所示。 Mealy 型状
而且也和输入信号有关的状态机称为
next_state
次态逻辑
输出逻辑
current_state
状态寄存器
clk reset
output
图 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 仿真器和具体的 目前,各 EDA 公司和厂商为设计者提供了众多的仿真工具,如
CPLD/FPGA 芯片来完成。 Synopsys 公司的 VCS ,
VEDA Desigan Automation 公司的 VULCAL 等。仿真是利用 设计的一个必不可少的步骤,它贯穿设计的整个过程。
在数字系统的设计过程中一般要进行三个层次仿真:
级仿真,各级所要达到的目的是不一样的。
VHDL 语言进行数字电路
行为级仿真、 RTL 级仿真和门
● 行为仿真是针对设计进行系统级的仿真,
计方案。
主要用于对系统设计可行性进行评估和
以此获得正确的最佳设
验证,可以快速的对多种系统设计方案进行比较和论证,
● RTL 级仿真主要针对各个模块进行功能验证。
● 而门级仿真则用于保证设计的电路针对具体器件的电气性能如延时等是满足设
计需求的。 可以把用 VHDL 描述的系统或模块看作能完成某一个功能的整体,
给定它一组输入
信号(测试向量),它就会根据设计的内容给出对应的一组输出信号(响应),将设计
模块或系统的输出信号与按照逻辑功能要求预期得到的输出信号进行比较就能够判断
被测部分功能的正确性以及是否满足设计的要求。
无论是功能仿真还是时序仿真,仿真方法一般有两种:一种是在大多数
中的 VHDL 仿真器允许进行交互式的操作,
EDA 工具
允许直接通过设置输入信号波形的方式对输
入信号进行赋值,指定仿真时间,并观察输出波形的方式来进行仿真过程,第二章中介
绍的即为这种方法。
另一种仿真方法就是利用测试平台的方法,自动的对被测试模块输入信号测试向
量,并且通过波形输出和文件记录输出等方式,或者与测试平台中的设定输出向量来进
?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 语言集
VHDL
成开发环境 Quartus II ,然后基于 Qartus II 介绍了 VHDL 语言的语法知识,包括 程序结构(如实体、结构体、块语句、库、程序包等)、
VHDL 语言要素(如文字规则、
数据变量、数据类型、操作符等)、
VHDL 顺序语句和并行语句(如赋值语句、流程控
制语句、子程序调用语句、进程语句、并行信号赋值语句等),讨论了基本电路(如组 合逻辑里的加法器、译码器等,时序逻辑里的触发器、寄存器等,以及 型状态机)的 VHDL 实现方法;最后介绍了
Mealy 和 Moore
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 语言来设计存储器,包括 · 第 10 章介绍了如何使用
ROM、 RAM、 FIFO等。
VHDL 语言来设计状态机,包括米勒型状态机、莫尔型状
态机以及状态机的实际应用。
?20 ?
修改记录 .txt
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务