135
Company LOGO 电电电电电电电主主主 主主 电电电电电电电电电电电电

《 电子设计自动化 》

  • Upload
    chaney

  • View
    132

  • Download
    0

Embed Size (px)

DESCRIPTION

《 电子设计自动化 》. EDA. 主讲人:熊娟 黄淮学院电子科学与工程系. 6. 2. 3. 5. 4. 1. 可编程器件开发系统. Protel 99se/DXP 的使用. Multisim 的使用. 硬件描述语言. 可编程逻辑器件. EDA 技术基础. 本学期主要内容. 教学目的:认识 EDA 技术,掌握常用 EDA 工具的使用方法 (Protel 99se\ Multisim\Quartus2 ) ,掌握一种设计语言 (VHDL) 。 学时数: 72 学时(课堂教学 36 学时,上机实验 36 学时 ). - PowerPoint PPT Presentation

Citation preview

Page 1: 《 电子设计自动化 》

Company

LOGO

《电子设计自动化》

主讲人:熊娟

黄淮学院电子科学与工程系

Page 2: 《 电子设计自动化 》

Company Logo

本学期主要内容

可编程器件开发系统 6

Protel 99se/DXP 的使用 2

Multisim 的使用 3

硬件描述语言5

可编程逻辑器件 4

EDA 技术基础1

Page 3: 《 电子设计自动化 》

Company Logo

教学目的:认识 EDA 技术,掌握常用 EDA 工具的使用方法 (Protel 99se\ Multisim\Quartus2) ,掌握一种设计语言 (VHDL) 。

学时数: 72 学时(课堂教学 36 学时,上机实验 36 学时)

Page 4: 《 电子设计自动化 》

Company Logo

推荐教材及参考书

《 EDA 技术入门与提高》,王行、熊寿葵、李衍主编,西安电子科技大学出版社 ;《电子设计自动化技术及应用》,李方明主编,清华大学出版社 ; 《 VHDL 程序设计教程》,邢建平 曾繁泰主编,清华大学出版社 ;

《电子设计自动化》 张永生主编

中国电力出版社

《 Protel 99SE 电路设计技术入门与应用》,李东生主编,电子工业出版社 ;《电路设计与制板—— Protel DXP 入门与提高》,老虎工作室主编,人民邮电出版社 ;《Multisim 10 电路设计及应用》,王冠华 主编,国防工业出版社 ;

Page 5: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

VHDL 概述 5.1

5.2

5.3

VHDL 基本描述语句 5.4

常见逻辑单元的 VHDL 描述 5.5

5.6

VHDL 基本元素

VHDL 基本结构

VHDL 仿真与综合

Page 6: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.1 VHDL 概述

Text

1. VHDL 的涵义及其发展

( 1 )涵义HDL----Hardware Description Language (硬件描述语言) 一种用于描述数字电路的功能或行为的语言。常用的 HDL是 VHDL、 Verilog HDL和 ABEL 。

VHDL :(全称是“超高速集成电路硬件描述语言”) VHSIC (Very High Speed Integrated Circuit) Hardware Description Language

黄淮学院

VHDL 主要用于描述数字系统的结构、行 为、功能和接口。VHDL 将一个设计(元件、电路、系统)分为:外部(可视部分、端口)和 内部(不可视部分、内部功能、算法)。

Page 7: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.1 VHDL 概述

Text

1. VHDL 的涵义及其发展

( 2 )发展 20 世纪 80 年代初由美国国防部在实施超高速集成电路( VHSIC )项目时开发的。 1987 年由 IEEE 协会批准为 IEEE 工业标准,称为 IEEE1076-1987 。各 EDA 公司相继推出支持 VHDL 的设计环境。 1993 年被更新为 93 标准,即 IEEE1076-1993 。进一步提高抽象描述层次,扩展了系统描述能力。 1995 年,我国国家技术监督局推荐 VHDL 做为电子设计自动化硬件描述语言的国家标准。

EDA 工具及 HDL 的流行,使电子系统向集成化、大规模和高速度等方向发展。 美国硅谷约有 80% 的 ASIC 和 FPGA/CPLD 已采用 HDL 进行设计。

黄淮学院

Page 8: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.1 VHDL 概述

Text

2. VHDL 的特点

( 1) VHDL 具有强大的语言结构,系统硬件描述能力强、设计效率高;具有较高的抽象描述能力。(如:一个可置数的 16 位计数器)( 2) VHDL 语言可读性强,易于修改和发现错误。( 3) VHDL 具有丰富的仿真语句和库函数,可对 VHDL 源代码进行早期功能仿真,有利于大系统的设计与验证。( 4) VHDL 设计不依赖于器件,与工艺无关 。( 5 )移植性好。 ( 6) VHDL 体系符合 TOP-DOWN和 CE (并行工程)设计思想。( 7) VHDL 设计效率高,产品上市时间快,成本低。

16 位计数器电路原理图

用 VHDL 描述的可置数 16 位计数器

黄淮学院

Page 9: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

补充知识

黄淮学院

VHDL与 C、 C++ 的区别: C、 C++ 代替汇编等语言 VHDL 代替原理图、逻辑状态图等

VHDL 与电原理图描述的区别: VHDL 具有较强的抽象描述能力,可进行系统行为级别的描述。描述简洁,效率高。 VHDL 描述与实现工艺无关。 电原理图描述需给出完整、具体的电路结构图,不能进行抽象描述。描述繁杂,效率低。电原理图描述与实现工艺有关。 VHDL 与常规计算机程序的区别: VHDL从根本上是并发执行的,通常称之为代码。 VHDL 中只有在进程 (PROCESS) 、函数 (FUNCTION) 和过程 (PROCEDURE) 内部的语句才是顺序执行的。

Page 10: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.2 VHDL 基本结构

Text

一个完整的 VHDL 语言程序通常包含 5 部分:

黄淮学院

◆实体( Entity ):描述所设计的系统的外部接口信号,定义电路设计中所有的输入和 输出端口;◆结构体 (Architecture) :描述系统内部的具体结构和操作(行为);◆包集合 (Package) :存放各设计模块能共享的数据类型、常数和子程序等;◆配置 (Configuration) :指定实体所对应的结构体;◆库 (Library) :存放已经编译的实体、结构体、包集合和配置。

不管是简单的数字电路(可以是一个与门)可以是一个与门),还是复杂的数字电路(可以是一个微处理可以是一个微处理器或一个系统)器或一个系统),其基本构成是一致的。它们主要是由实体说明( Entity Declaration )和结构体( Architecture Body )两部分构成。

Page 11: 《 电子设计自动化 》

Company Logo

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY test IS PORT ( a,b: IN STD_LOGIC ; c: OUT STD_LOGIC);END test; ARCHITECTURE behav of test ISBEGIN c<=a AND b;END behav;

库库包包

实体实体说明说明

结构体结构体

实体说明是一个器件的外部视图,即外部引脚输入输出情况的

定义

结构体描述了一个器件逻辑功能

的实现ab

c

第五章 硬件描述语言 (VHDL)

ab

c 黄淮学院

Page 12: 《 电子设计自动化 》

Company Logo

STDSTD 库:库:包集合“包集合“ Standard”Standard” 和“和“ TextioTextio””

WORKWORK 库:当前工作库库:当前工作库IEEEIEEE 库:标准包集合库:标准包集合 STD_LOGIC_1164STD_LOGIC_1164

用户自定义库:用户自定义库:

设计库设计库 ( 隐含打开 )(不需定义

资源库资源库 ( 用LIBRARY)

1.1. 库分类库分类

2. 2. 库说明库说明————放在设计单元的最前面放在设计单元的最前面

LIBRARY 库名;USE 库名 . 程序包名 . 项目名 ;

ALLLIBRARY ieee ;USE ieee. Std_logic_1164.all;

第五章 硬件描述语言(VHDL)

库 5.2 VHDL 基本结构

黄淮学院

Page 13: 《 电子设计自动化 》

Company Logo

常用库

Page 14: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

包集合包集合 5.2 VHDL 基本结构

黄淮学院

1. 1. 是库结构中的一个层次是库结构中的一个层次2. 2. 单纯地罗列设计中经常用到的信号定义、数据类型、元件语句、函数定义、过程定义单纯地罗列设计中经常用到的信号定义、数据类型、元件语句、函数定义、过程定义等等3. 3. 用于封装属于多个设计单元分享的信息用于封装属于多个设计单元分享的信息

常用的预定义的程序包常用的预定义的程序包

STD_LOGIC_1164 程序包( std-logic类型以及相关函数)

STD_LOGIC_1164 程序包( std-logic类型以及相关函数)

STD_LOGIC_ARITH 程序包(算术函数 )STD_LOGIC_ARITH 程序包(算术函数 )

STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED 程序包 ( 符合算术函数和无符合算术函数)

STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED 程序包 ( 符合算术函数和无符合算术函数)

STANDARD和 TEXTIO 程序包(标准和文件输入 /输出程序包)

STANDARD和 TEXTIO 程序包(标准和文件输入 /输出程序包)

Page 15: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

配置配置 5.2 VHDL 基本结构

黄淮学院

配置可以把特定的结构体关联到(指定给)一个确定的实体。

配置可以把特定的结构体关联到(指定给)一个确定的实体。

实体

结构体 N结构体 1

Configuration 配置名 of 实体名 is

For 选配结构体名 End For;

End 配置名;

Page 16: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

配置配置 5.2 VHDL 基本结构

黄淮学院

例:例: 2-4 2-4 译码器设计译码器设计方案方案 11 :反相器:反相器 +3+3输入与门输入与门方案方案 22 :单一逻辑门与非门:单一逻辑门与非门

Entity decode is Port( …);End decode;Architecture struc1 of decode is Begin ….End struc1 ;Architecture struc2 of decode is Begin ….End struc2 ;

Configuration pg1 of decode is

For struc1

End For;

End pg1 ;

Configuration pg2 of decode is

For struc2

End For;

End pg2 ;

译码器实体译码器结构体 2译码器结构体 1

Page 17: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

实体实体 5.2 VHDL 基本结构

黄淮学院

ENTITY 实体名 IS[ GENERIC (常数名:数据类型:设定值) ]PORT( 端口名 1 :端口方向 端口类型; …… 端口名 n :端口方向 端口类型 ) ;END [ 实体名 ] ;

实体的一般格式为:

要点:要点: 以 以 entity entity 实体名 实体名 isis 开始;以 开始;以 end end 实体实体名名 ;; 结束结束 实体的主要内容为端口实体的主要内容为端口 (port) (port) 说明,其中主说明,其中主要包括:信号名、信号模式、信号类型要包括:信号名、信号模式、信号类型

library ieee;use ieee.std_logic_1164.all; entity test is port ( a,b: in std_logic; c: out std_logic);end test; architecture behav of test isbegin c<=a and b;end behav;

用来表示被设计电路芯片的名称。由英文字母和数字组合而成,不允许有中文字符,第一个字符必须是英文字母。必须与 VHDL 程序的文件名称相同。

a ctestb

Page 18: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

实体实体 5.2 VHDL 基本结构

黄淮学院

1. 1. 类属类属 ((Generic )说明)说明

类属为设计实体与外界通信的静态信息提供通道,用来规定端口的大小、实体中子元件的数目和实体的定时特性等。类属说明是可选部分。如果需要,可使用以“ GENERIC”

语句来指定该设计单元的类属参数(如延时、功耗等)。格式: GENERIC (常数名:数据类型:设定值; ∶ 常数名:数据类型:设定值);

例如: GENERIC( wide: integer:=32 ); --说明宽度为32 GENERIC( tmp: integer:=1ns ); --说明延时 1 ns

由英文字母和数字组合而成,第一个字符

必须是英文字母

VHDL 综合器仅支持数据类型为整数

的类属值。

Page 19: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

实体实体 5.2 VHDL 基本结构

黄淮学院

1. 1. 类属类属 ((Generic )说明)说明

例如:加入类属说明的 2输入的与门的实体说明ENTITY and2 IS GENERIC ( risew: TIME :=1ns ; fallw: TIME :=1ns ) ; PORT ( A: IN STD_LOGIC ; B: IN STD_LOGIC ; Y: OUT STD_LOGIC ) ; END and2;

-- 定义 risew 为上升沿

-- 定义 fallw 为下降沿

-- 定义 A 、 B和 Y 为逻辑位

GENERIC (rise,fall:time);

同类型的参数名可放在同一个说明语句中。

Page 20: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

实体实体 5.2 VHDL 基本结构

黄淮学院

2. 2. 端口端口 (port(port )说明)说明

port ( 端口名 {,端口名 } :信号方向 数据类型 ;);

port (x,y: IN Bit;

sum: OUT Bit;

input: IN Bit_Vector(1 TO n);

Output: OUT Bit);端口命名:英文字母 / 英文字母加数字

VHDL: 不区分大小写!实实体体

xx

yy

inputinputsumsum

output

端口说明的一般格式为:

Page 21: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

实体实体 5.2 VHDL 基本结构

黄淮学院

2. 2. 端口端口 (port(port )说明)说明信号流动的方向(信号流动的方向(端口模式),模式),端口模式用来说明数据传输通过该端口的方向。端口模式有以下几类:

IN (输入):仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。OUT (输出):仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输

出,不能用于反馈。 INOUT (双向):可以允许数据流入或流出该实体。该模式也允许用于内部反馈。BUFFER (输出 / 内部反馈):该模式允许数据流出该实体和作为内部反馈时用,但不允

许作为双向端口使用。该端口只能在实体内赋值,不能外部驱动。该端口只能在实体内赋值,不能外部驱动。

同方向、同类型的端口可放在同一个说明语句中。

Page 22: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

实体实体 5.2 VHDL 基本结构

黄淮学院

2. 2. 端口端口 (port(port )说明)说明

port (x: IN Bit; y: IN Bit; Output: OUT Bit);

数据类型 : 用来指定每个端口信号的取值类型,原则上可以是任何标准的数据类型和用户自定义类型。 VHDL 提供了 10 种数据类型。IEEE1706-93 标准规定的数据类型包括: Boolen (布尔型)、 bit (位型)、 bit_vector (位矢量型)、 integer integer (整数型 ) 等。 当用户使用了 IEEE 库中的程序包后,可以使用预先定义的 std_Logic (标准逻辑位 ) 数据类型和 std_Logic_vector( 标准逻辑矢量 ) 数据类型等。

output

yy

xxtest

注意:位型数据规定的取值范围是逻辑位“ 1” 和“ 0” 。在 VHDL 中,表示逻辑位“ 0” 和“ 1” 的表达必须加单引号,否则 VHDL 综合器会将未加单引号的 0和 1解释为整数数据类型。

Page 23: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

实体举例

黄淮学院

二选一电路的实体说明:

entity mux isport (

a: in std_logic;b: in std_logic;

s: in std_logic;f: out std_logic

);end mux;

AB

S

F

mux

Page 24: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

结构体结构体 5.2 VHDL 基本结构

黄淮学院

结构体定义了设计单元具体的功能,描述了该基本设计单元的行为、元件和内部的连接关系。

结构体的一般格式如下:ARCHITECTURE 结构体名 OF 实体名 IS [声明语句 ]BEGIN 功能描述语句END [ 结构体名 ];

是指对结构体需要使用的信号、常数、数据类型和函数进行定义和说明。

具体描述结构体的功能和行为。以各种不同的描述风格表达:信号赋值语句 ; 元件例化语句 ; 进程语句等,这些语句都是并发(同时)执行的,与排列顺序无关。

一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方式。同一时刻只有一个结构体起作用,通过 CONFIGURATION决定用哪个结构体进行仿真或综合。 在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。即它定义了设计单元的具体功能。

可任意取,但一般用描述方式定

义behav (行为级) ; dataflow (数据流

级) ; struc (门级)

Page 25: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

结构体举例

黄淮学院

二选一电路的结构体描述 1 :

architecture first_rtl of mux is begin mux_p: process (a,b,s) begin f <= (a and s) or (b and not s); end process mux_p;end first_rtl;

二选一电路的结构体描述 2 : architecture rtl of mux is begin mux_p: process (a,b,s) begin if ( s=‘1’ ) then f <= a; else f <= b; end if; end process mux_p; end rtl;

-- 结构体定义

功能描述语句 进

顺序语句

Page 26: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

1. 词法规则

( 1 )注释由两个短线“ --” 开始的一行文字,如: -- this is a counter

黄淮学院

( 2 )数字十进制整数表示法:如: 5E2( =500 ), 51e0( =51 ), 12_345(=12345) , 012( =12 )实数(带小数的十进制数):必需带小数点。如: 23.34, 0.0, 44.99E-2( =0.4499 )以数制基数表示 : 2#1111_1110#( =254) , 10#170#( =170 ) , 16#2E#( =46 )

格式: 基数 # 数字文字 #E 指数

( 3 )字符和字符串字符:用单引号引起来的 ASCII 字符,可以是数字,也可以是符号或字母。区分大小写 .如:‘ *’ ,‘ Z’字符串:用双引号引起来一维的字符数组。区分大小写 . 如:“ FALSE” , O“34”

Page 27: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

1. 词法规则

( 4 )标识符定义常数、变量、信号、端口、子程序或参数的名字。◆基本标识符的要求(短标识符)( 87 标准): • 以英文字母开头; • 不连续使用下划线“ _”; • 不以下划线“ _” 结尾; • 由 26 个大小写英文字母、数字 0-9 及下划线“ _”组成的字符串。 •基本标识符中的英文字母不分大小写; • VHDL 的保留字 ( 关键字)不能作为标识符使用。

黄淮学院

Page 28: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

1. 词法规则

( 4 )标识符

黄淮学院

my_counter 、Decoder_1 、FFT 、Sig_N 、Not_Ack 、State0 、entity1

合法标识符不合法标识符_Decoder_1 、2FFT 、Sig_#N 、Not-Ack 、ALL_RST_ 、AB AC 、loop 、A--C

Page 29: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

1. 词法规则

( 4 )标识符定义常数、变量、信号、端口、子程序或参数的名字。◆扩展标识符的要求( 93 标准): •两端以反斜杠来界定; •可以以数字或“ _”打头 ; • 允许包含图形符号; •允许使用 VHDL 保留字。 •扩展标识符中的英文字母区分字母大小写;如: \74LS163\、 \Sig_#N\ 、 \entity\、 \ENTITY\ 等都是合法的扩展标识符。

黄淮学院

Page 30: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

1. 词法规则

( 5 )下标名及下标段名下标名:用于指示数组型变量或信号的某一个元素。格式 :

下标段名:用于指示数组型变量或信号的某一段元素。格式 :

黄淮学院

标识符(表达式)

标识符(表达式 to/downto 表达式)如: a : std_logic_vector(7 downto 0) a(7), a(6)… a(0) a(7downto0), a(7 downto 4), a(5 downto 3)…

Page 31: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

1. 词法规则

( 6 )保留字(关键字)

是 VHDL 中具有特别含义的单词,只能做为固定的用途,用户不能用其做为标识符。

如: if else elsif end wait when case entity architecture package component xnor xor

黄淮学院

Page 32: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

2. VHDL 的数据对象

三种对象:常量( Constant ) 变量( Variable ) 信号( Signal ) 三种对象的物理含义: •常量代表数字电路中的电源、地、恒定逻辑值等常数 •变量代表暂存某些值的载体,常用于描述算法; •信号代表物理设计中的某一条硬件连接线,包括输入、输出端口

黄淮学院

三种对象的特点及说明场合: 信号:全局量, 用于 architecture 、 package、 entitiy 。 变量:局部量,用于 process、 function 、 procedure 。 常量:全局量,可用于上面两种场合。其作用范围取决于常量被定义的位置。

Page 33: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

2. VHDL 的数据对象

1 、常量说明 常量说明:对某一个常量名赋予一个固定的值。 格式:

例 : Constant Vcc: real:=5.0; --定义 Vcc 的数据类型是实数,赋值为 5.0V Constant bus_width : integer := 8; --定义总线宽度为常数 8常量数据类型必须与表达式的数据类型一致。常量是一个恒定不变的量,一旦被赋值就不能再改变。

黄淮学院

constant 常数名:数据类型: = 表达式;

Page 34: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

2. VHDL 的数据对象 2 、变量说明变量只能在进程语句、函数语句和过程语句结构中使用。变量的赋值是直接的,非预设的,分配给变量的值立即成为当前值,变量不能表达“连线”或存储元件,不能设置传输延迟量。变量定义语句格式:

例: Variable count: integer 0 to 255:=20 ; -- 定义 count整数变量,变化 范围 0~ 255 ,初始值为 20。 变量的初值可用于仿真,但综合时被忽略。

黄淮学院

variable 变量名:数据类型 : = 初始值;

变量赋值语句: 目标变量名 := 表达式 ; x:=10.0; -- 实数变量赋值为 10.0Y:=1.5+x; -- 运算表达式赋值,注意表达式必须与目标变量的数据类型相同

Page 35: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

2. VHDL 的数据对象

3 、信号说明信号表示逻辑门的输入或输出,类似于连接线,也可以表达存储元件的状态。信号通常在构造体、程序包和实体中说明。信号定义语句格式:

黄淮学院

signal 信号名:数据类型:=初始值;

例如: Signal clock: bit :=‘0’ ; --定义时钟信号类型,初始值为 0

Signal count: BIT_VECTOR(3 DOWNTO 0); --定义 count为 4 位位矢量

注:① . 综合时初值被忽略。 ②. 在进程和子程序中只能使用信号,不能说明信号。

信号赋值语句: 目标信号名 <= 表达式 ; x<=9;Z<=x after 5 ns; -- 在 5ns后将 x 的值赋予 z

Page 36: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

2. VHDL 的数据对象 4 、信号与变量的区别①信号除当前值外有许多相关信息,如历史信息;而变量只有当前值。②进程对信号敏感而不对变量敏感。③信号可以是多个进程的全局信号。例:进程中信号与变量的使用

黄淮学院

信号与变量的区别例:进程中信号与变量的使用entity ex is port(…..);end ex;architecture arch_ex of ex is signal a, b :std_logic;begin process(a, b) variable c, d : std_logic; begin c:= a + b; d:= a - b; …… end process;end arch_ex;

Page 37: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

2. VHDL 的数据对象

5 、信号与端口的区别:除没有方向说明外,信号与 实体的“端口( PORT )” 概念相似。端口是一种隐形的信号。

entity exam is port([signal] a, b: in std_logic; [signal] c: out std_logic); end exam; 端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。 信号本身无方向,可读可写。

黄淮学院

Page 38: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

VHDL 是一种强数据类型语言。 要求设计实体中的每一个常数、信号、变量、函数以及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和作用。 VHDL 数据类型分为: •标准数据类型 • 用户自定义数据类型 • IEEE 预定义标准( 1 )标准数据类型( 10 种)●整数: (Integer)integer 表示所有正的和负的整数。硬件实现时,利用 32 位的位矢量来表示。可实现的整数范围为: -( -1) ~ ( -1) 。 VHDL 综合器要求对具体的整数作出范围限定,否则无法综合成硬件电路。 如: signal s : integer range 0 to 15; 信号 s 的取值范围是 0-15 ,可用 4 位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。黄淮学院

312

312 312

Page 39: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 1 )标准数据类型( 10 种)●自然数( natural )和正整数( positive ) natural是 integer 的子类型,表示非负整数。 positive是 integer 的子类型,表示正整数。

●实数( REAL )或称浮点数, 取值范围: -1.0E38 - +1.0E38 。实数类型仅能用于VHDL 仿真器,一般综合器不支持。

1.0 --十进制浮点数 8# 43.6# e+4 --八进制浮点数 43.6E-4 --十进制浮点数

黄淮学院

Page 40: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 1 )标准数据类型( 10 种)●位( bit ) bit 表示一位的信号值。取值为 0和 1 ,用于逻辑运算,放在单引号中,如 ‘ 0’ 或 ‘ 1’ 。●位矢量 ( bit_vector )位矢量使用双引号括起来的一组位数据,如“ 1011” 。使用位矢量时必须注明位宽,即数组中元素个数和排列,如: SIGNAL S1: BIT_VECTOR( 15 DOWNTO 0 );●布尔量( boolean ) 布尔量具有两种状态: false 和 true 常用于逻辑函数,取值为 FALSE和 TRUE ,不是数值,不能运算,一般用于关系运算符。如相等( = )、比较( < )等中作逻辑比较。 如, bit 值转化成 boolean 值: boolean_var := (bit_var = ‘1’);●字符( CHARACTER ) ●字符串

黄淮学院

Page 41: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 1 )标准数据类型( 10 种)●时间: (Time) 物理量数据,完整的包括整数和单位两个部分,用至少一个空格隔开,仅用于仿真不可综合;如: 55 ms, 20 ns●错误等级( Severity Level ) : 表示系统状态,仅用于仿真不可综合;仿真中用来指示系统的工作状态,共有四种: NOTE (注意)、 WARNING (警告)、 ERROR (出错)、 FAILURE (失败)

黄淮学院

Page 42: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 2 )用户自定义数据类型可以由用户定义的数据类型有:枚举类型、整数类型、数组类型、存取类型、文件类型、时间类型、实数类型。用户用 TYPE 语句和子类型定义语句 SUBTYPE 实现用户自定义数据类型。 TYPE 语句的格式为:TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 或TYPE 数据类型名 IS 数据类型定义例如:数组: type value_type is array (127 downto 0) of integer; type matrix_type is array (0 to 15, 0 to 31) of std_logic ;枚举: type states is (idle, decision, read, write); type boolean is (false, true); type bit is (‘0’ ,‘ 1’) ;

黄淮学院

Page 43: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 2 )用户自定义数据类型SUBTYPE 语句的格式为:SUBTYPE 子类型名 IS 基本数据类型定义 RANGE 约束范围

如: subtype digits is integer range 0 to 9; 由 subtype 语句定义的数据类型称为子类型。

黄淮学院

Page 44: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 3 ) IEEE 预定义标准 标准逻辑位( Std_Logic ):

黄淮学院

‘U’ , -- 初始值;‘ X’ , -- 不定;‘0’ , --0 ; ‘ 1’ , --1‘Z’ , -- 高阻;‘W’ , --弱信号不定‘L’ , --弱信号 0;‘ H’ , --弱信号 1‘-’ -- 不可能情况

标准逻辑位矢量( Std_Logic_vector ):基于 Std_Logic类型的数组;使用 Std_Logic 和 Std_Logic_Vector 要调用 IEEE 库中的 Std_Logic_1164 程序包;就综合而言,能够在数字器件中实现的是“-、 0、 1、 Z”四种状态。 在条件语句中,必须要全面考虑 Std_Logic 的所有可能取值情况,否则综合器可能会插入不希望的锁存器。

Page 45: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

3. VHDL 的数据类型

( 4 ) 数据类型转换VHDL 为强定义类型语言,不同类型的数据不能进行运算和直接赋值。不同类型的数据对象必须经过类型转换,才能相互操作。

黄淮学院

1 )直接类型转换方式 对相互间非常关联的数据类型(如整型、浮点型),可进行直接类型转换。格式: 数据类型标识符(表达式)如: variable a, b : real; variable c, d : integer; …… a:= real( c) ; d:= integer( b) ;2 )类型转换函数方式 通过调用类型转换函数,使相互操作的数据对象的类型一致,从而完成相互操作。

Page 46: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言 (VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

数据类型转换

黄淮学院

程序包 函数名称 功 能

STD_LOGIC_1164

TO_BIT 由 STD_LOGIC 转换为 BIT

TO_BIT VECTOR 由 STD_LOGIC_VECTOR 转换为 BIT_VECTOR

TO_STD ULOGIC 由 BIT 转换为 STD_LOGIC

TO_ STD ULOGIC VECTOR

由 BIT_VECTOR 转换为STD_LOGIC_VECTOR

STD_LOGIC_ARITH

CONV_INTEGER 由 UNSIGNED、 SIGNED 转换为 INTEGER

CONV_UNSIGNED 由 INTEGER、 SIGNED 转换为UNSIGNED

CONV_ STD_LOGIC_VECTOR

由INTEGER、 UNSIGNED、 SIGNED 转换为STD_LOGIC_VECTOR

STD_LOGIC_UNSIGNED

CONV_INTEGER 由 STD_LOGIC_VECTOR 转换为 INTEGER

在“ STD_LOGIC_1164” 、“ STD_LOGIC_ARITH” 和 “ STD_LOGIC_UNSIGNED” 的程序包中提供的数据类型变换函数。

Page 47: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

4. VHDL 的运算操作符

黄淮学院

( 1 )运算符●算术运算符:+, -, * , / , MOD , REM , SLL , SRL , SLA , SRA ,ROL , ROR , **, ABS

关系运算符:=, /=, < , > , <= , >=

赋值运算符: <=, :=

逻辑运算符: AND, OR, NAND, NOR, XNOR, NOT, XOR

关联运算符: =>其他运算符:+, -, & (加操作符“ +” 、减操作符“ -” 、 串联(并置)操作符“ &” )

Page 48: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言(VHDL)

Text

Txt

5.3 VHDL 基本元素

Text

4. VHDL 的运算操作符

黄淮学院

( 2 )运算符优先级别

乘法运算符( / , MOD , REM , * ) 正负运算符:+, -,

加减、并置运算符:+, -, &

关系运算符:=, /=, < , > , <= , >=

逻辑运算符: AND, OR, NAND, NOR, XNOR, NOT, XOR

逻辑、算术运算符( NOT , **, ABS )

取余运算( a REM b )的符号与 a 相同,其绝对值小于 b 的绝对值。 例如:( -5) REM 2=( -1 ) 5 REM 2=( 1 )取模运算( a MOD b )的符号与 b 相同,其绝对值小于 b 的绝对值。 例如:( -5)MOD 2=1 5 MOD (- 2)=( -1 )

Page 49: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

黄淮学院

Entity( 实体)

Architecture 1 (构造体)

Architecture N

process( 进程结构)

block( 块结构)

subprograms( 子程序)

procedure (过程)

function( 函数)

如何使用 VHDL 描述硬件实体

Page 50: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 1 )行为描述法:( behavioral description )这是以元器件或电路模块为基础的描述方法,描述元器件或电路模块之间输入、输出的逻辑关系,是对它们性能或行为的描述。在 VHDL 语言中对这一类的描述称作行为描述。( 2 )数据流描述法:数据流描述( dataflow description )法主要反映数据经过一定的逻辑运算后在输入和输出之间的传送过程。这种描述方法以表示数据在设计实体中从输入到输出的传输或流向为目的。使用并发语句( concurrent procedure call也叫并发过程调用语句)描述。( 3 )结构描述法:( structural description ),它以描述元部件( component )为基础,通过描述模块与模块之间的连接关系来表示被设计实体的构成和性能。这种描述方法适用于多层次设计,把一个复杂的系统分解成多个子系统,将每一个子系统设计成一个模块,再用结构描述法将各模块之间的连接关系写出来形成一个整体。

黄淮学院

又称算法级描述,即采用进程语句顺序描述设计实体的行为,这是最高层

次的描述方法。

又称寄存器( RTL )级描述,即采用进程语句顺序描述数据流在控制流作用下被加工、处理和存储的全过程。此描述方式与采用原理图输入方式进行电路设计处于同

一个层次。

又称门级描述,即采用并行处理语句,使用最基本的逻辑门单元描述设计实体内的结构组织

和元件互联关系

Page 51: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 1 )行为描述法:描述该设计单元的功能 ( 即该单元能做些什么 ) 。往往不涉及设计实体的电路结构。主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送 ; 程序中,往往大量采用算术运算、关系运算、惯性延时、传输延时等难以进行逻辑综合和不能进行逻辑综合的 VHDL 语句。采用行为描述的 VHDL 程序主要用于系统数学模型的仿真或系统工作原理的仿真。描述硬件电路的行为模式由指令 process (进程)引导,配合 if…then…else, case…is…when 等具有顺序性的指令来完成。在行为描述里,其程序的设计特性与普通的高级语言十分相似,它们会依指令语句出现的顺序作先后的处理。

黄淮学院

特点:对硬件知识的依赖最少,程序结构简单 .

Page 52: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 1 )行为描述法:例:例: 22选选 11 数据选择器数据选择器———— 采用行为描述方式采用行为描述方式

黄淮学院

ENTITY mux21a ISPORT( a, b: IN BIT; s: IN BIT; y: OUT BIT);END mux21a;ARCHITECHURE behv OF mux21a IS BEGIN y<=a WHEN s=‘0’ ELSE b; END behv;

实体实体

结构体结构体 特点:对硬件知识的依赖最少,程序结构简单 .

Page 53: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 1 )行为描述法:

黄淮学院

例: 例: 88 位比较器结构体的行为描述位比较器结构体的行为描述 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL; ENTITY comparator IS PORT ( a, b : IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 ); c : OUT STD_LOGIC) ; END comparator ; ARCHITECTURE behavior OF comparator IS BEGIN PROCESS ( a, b ) BEGIN IF a = b THEN c<=’1’ ; ELSE c<=’0’; END IF ; END PROCESS; END behavior ;

8 位比较器a=b

a

bcc

Page 54: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 2 )数据流描述法:以类似于寄存器传输级的方式描述数据的传输和变换。主要使用并行的信号赋值语句,以类似于寄存器传输级的方式描述数据的传输和变换。主要使用并行的信号赋值语句,显式表示该设计单元的行为,隐式表示该设计单元的结构。显式表示该设计单元的行为,隐式表示该设计单元的结构。 RTLRTL 描述是用于逻辑综描述是用于逻辑综合的实体描述方法。 与行为描述不同,合的实体描述方法。 与行为描述不同, RTLRTL 描述中指定了各个寄存器的时钟,确定描述中指定了各个寄存器的时钟,确定了存储单元的复用结构及总线,指定了电路元件之间的连接关系。 了存储单元的复用结构及总线,指定了电路元件之间的连接关系。 RTLRTL 数据模型描数据模型描述的语句与实际寄存器的结构模型之间存在直接的映射关系,程序的描述隐含了电路述的语句与实际寄存器的结构模型之间存在直接的映射关系,程序的描述隐含了电路结构。 在结构。 在 RTLRTL 描述中,信号代表了硬件中数据的实际移动方向以及电路的互连关系。描述中,信号代表了硬件中数据的实际移动方向以及电路的互连关系。由于由于 RTLRTL 描述用于逻辑综合,故描述用于逻辑综合,故 RTLRTL 描述对语句有严格限制描述对语句有严格限制 ::

一些难以综合的语句(如信号代入中的延时等)一些难以综合的语句(如信号代入中的延时等) 一些抽象的数据类型(如实数、记录、文件等)一些抽象的数据类型(如实数、记录、文件等) 一些难以综合或不可综合的运算符(如除法一些难以综合或不可综合的运算符(如除法 // 、乘方、乘方 **** 等)等) ————都不能在程序中使用都不能在程序中使用

黄淮学院

Page 55: 《 电子设计自动化 》

Company Logo

根据电子实体的逻辑表达式或逻辑真值表进行描述程序结构简单 , 容易进行逻辑综合 , 综合结果最优化;无法应用于大型设计中 ;利用信号的赋值方式来描述电路内信号数据的流动情形

直接式的信号赋值“ <=” 条件式的信号赋值“ when…else” 选择式的信号赋值“ with…select…when”

3 种信号赋值方式皆为并发性的赋值,没有时间的前后顺序 黄淮学院

5.4 VHDL 语言的基本描述语句 1. 结构体的描述方法

第五章 硬件描述语言

( 2 )数据流描述法: 特点:

Page 56: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法( 2 )数据流描述法:

黄淮学院

例:例: 22选选 11 数据选择器数据选择器————采用寄存器传输(采用寄存器传输( RTLRTL )描述方式)描述方式ENTITY mux21a IS

PORT( a, b: IN BIT;

s: IN BIT;

y: OUT BIT);

END mux21a;

ARCHITECHURE dataflow OF mux21a IS

BEGIN

y<=(b AND s) OR (NOT s AND a);

END dataflow;

实体实体

结结构构体体

Page 57: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 2 )数据流描述法:

黄淮学院

Y <= A and B;Z <= (NOT A) and (NOT D) or C;

两个信号赋值语句的执行没有所谓的先后顺序

对于硬件电路来说,所有的逻辑门在任何时刻都处于执行状态,这是与对于硬件电路来说,所有的逻辑门在任何时刻都处于执行状态,这是与传统计算机语言的根本不同之处!传统计算机语言的根本不同之处!

Page 58: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 3 )结构描述法:结构化描述是常用的层次化设计方法。层次化设计便于多人协作,同时并行设计。在结构化设计中,每个设计层次可以作为一个元件,而无需考虑元件的复杂性。每个元件可以分别仿真,然后将各个元件组合起来构成系统,进行整体调试。描述该设计单元的硬件结构 (该硬件是如何构成的 ) 。主要使用元件例化语句及配置指定语句描述元件的类型及元件的互连关系用户将自己设计的电路标准化后作为一个元件放在库中供调用的过程称为元件例化,或者称为标准化。

步骤步骤 11 :元件的声明:元件的声明

步骤步骤 22 :各元件间的连线映射(:各元件间的连线映射( MappingMapping )) 黄淮学院

COMPONENT 元件名 IS PORT ( 端口名表 ) ;END COMPONENT ;

例化名 : 元件名 PORT MAP( [端口名 =>] 连接端口名 ,...);

Page 59: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 3 )结构描述法:

黄淮学院

映射方式 参数映射关系和端口映射关系有两种:位置映射和名称映射。 1.位置映射方法 PORT MAP (a(0) , b(0), x(0) ); PORT ( a , b: IN STD_LOGIC ; c: OUT STD_LOGIC ); -- 元件

2. 名称映射方法 U0:xnor2 PORT MAP (a=>a(0), c=> x(0), b=>b(0) );

Page 60: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

( 3 )结构描述法:

黄淮学院

例:例: 88 位比较器结构体的结构化描述位比较器结构体的结构化描述

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY comparator IS PORT ( a, b: IN STD_LOGIC_VECTOR ( 7 DOWNTO 0 ); c: OUT STD_LOGIC ); END comparator; ARCHITECTURE structure OF comparator IS SIGNAL x: STD_LIGIC_VECTOR ( 7 DOWNTO 0 ) ; COMPONENT xnor2 PORT ( a, b: IN STD_LOGIC; c: OUT STD_LOGIC ); END COMPONENT; BEGIIN U0 : xnor2 PORT MAP ( a(0), b(0), x (0) ); U1 : xnor2 PORT MAP ( a(1), b(1), x (1) ); U2 : xnor2 PORT MAP ( a(2), b(2), x (2) ); U3 : xnor2 PORT MAP ( a(2), b(2), x (2) ); U4 : xnor2 PORT MAP ( a(4), b(4), x (4) ); U5 : xnor2 PORT MAP ( a(5), b(5), x (5) ); U6 : xnor2 PORT MAP ( a(6), b(6), x (6) ); U7 : xnor2 PORT MAP (a(7),b(7),x (7)); c<= x(0) AND x(1) AND x(2) AND x (3) AND x(4) AND x(5) AND x(6) AND x(7) ; END structure;

Page 61: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法( 3 )结构描述法:

黄淮学院

例:例: 88 位比较器结构体的结构化描述位比较器结构体的结构化描述底层元件二输入同或门的描述底层元件二输入同或门的描述    LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL; ENTITY xnor2 ISENTITY xnor2 IS PORT ( a, b: IN STD_LOGIC;PORT ( a, b: IN STD_LOGIC; c: OUT STD_LOGIC );c: OUT STD_LOGIC ); END xnor2;END xnor2; ARCHITECTURE bool OF xnor2 ISARCHITECTURE bool OF xnor2 IS BEGINBEGIN c<=NOTc<=NOT ( ( NOT a)AND b OR a AND( NOT b));( ( NOT a)AND b OR a AND( NOT b)); END bool;END bool;

a0b0

a1b1

a6b6

a7b7

=

&

=

=

=c

x(0)

x(1)

x(6)

x(7)

Page 62: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

1. 结构体的描述方法

黄淮学院

数据流描述 /RTL 描述——信号赋值语句 行为描述——进程 / 数学模型 结构描述——元件例化 / 逻辑元件连接

( 4 )总结

Page 63: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

2. VHDL 基本描述语句

并行语句和顺序语句是程序设计中两类基本描述语句。在逻辑系统的设计中,这些语句能够从多方面完整地描述数字系统的硬件结构和基本逻辑功能,其中包括通信的方式、信号的赋值、多层次的元件例化以及系统的行为等。( 1 ) VHDLVHDL 的并行语句的并行语句 在 VHDL 中,并行语句有多种语句格式,各种并行语句的执行都是同步进行的,或者说是并行运行的,其执行的方式与书写的顺序无关。 这种并行性是由硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。 并行语句在执行时,各并行语句之间可以有信息来往,也可以互为独立、互不相关。 另外,每一并行语句内部的语句可以有两种不同的运行方式,即并行执行方式 ( 如块语句 ) 和顺序执行方式 ( 如进程语句 ) 。

黄淮学院

Page 64: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Txt

5.4 VHDL 语言的基本描述语句

Text

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句

左图所示给出了常用的并行语句以及在同一结构体中各种并行语句运行的示意图。 这些语句不必同时使用,每一语句模块都可以独立异步运行,模块之间并行运行,并通过信号可交换信息。

ARCHI TECTURE

进程语句

块语句

并行信号赋值语句

元件例化语句

生成语句

END ARCHI TECTURE

信号 信号 信号 信号

Page 65: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 1 )进程语句 (PROCESS)进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。进程语句是 VHDL 程序中使用最频繁和最能体现 VHDL 语言特点的一种语句,其原因大概是由于它的并行和顺序行为的双重性,以及其行为描述风格的特殊性。一个结构体中可以包括多个进程语句,各进程语句之间或各进程语句与其他并行语句之间的通信是依靠信号 (SIGNAL)来传递的。进程语句通常由一段程序构成,虽然进程语句本身是并行语句,但其内部的语句是由顺序语句构成的。因此,在编写 PROCESS 的内部语句时要特别注意各语句书写的先后顺序,不同的语句书写顺序将导致不同的硬件设计结果。

Page 66: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

5.4 VHDL 语言的基本描述语句

Text

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 1 )进程语句 (PROCESS)

进程语句的书写格式为: [ 标号 :]PROCESS(信号 1,信号 2,…) [ 进程说明语句 ] BEGIN [ 顺序语句 ] END PROCESS [标号 ];

(2)敏感信号。小括号中的信号是进程的敏感信号,进程的敏感信号可以由一个或多个组成,它是进程内所用到的一些信号。当任何一个敏感信号发生变化时,该进程才能被执行 ( 或激活 ) ,其内部的顺序语句才能被执行一遍,当进程最后一条语句执行完成后,将返回到进程的第一条语句,以等待下一次敏感信号的变化。

(1) 标号。标号是进程的名称,是为了区别同一结构体中的不同进程而设置

的,但它并不是必需的。

(3) 进程说明语句。进程说明语句用于对该进程内所用到的“局部数据”进行定义 ( 如常数、变量、信号等 ) ,这里所说的“局部数据”就是该数据只对本进程有效,只能用于本进程内,不可用于其他进程或并行语句中。若想把“局部数据”带出进程,则必须把该数据传递给“全局信号” ( 在结构体说明语句或实体说明部分所定义的信号 ) ,由“全局信号”带出该进程并可为其他进程或并

行语句所使用。

Page 67: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

2. VHDL 基本语句

黄淮学院

进程的工作原理

执行过程终止

当某个敏感信号的值发生变化时,每个进程语句立即完成进程内顺序语句所定义的功能行为。

顺序语句所定义的功能行为的结果可以赋值给信号,并通过信号被其他的进程读取或赋值。

Page 68: 《 电子设计自动化 》

Company Logo

进程与时钟在每个上升沿启动一次进程(执行进程内所有的语句)。

上升沿描述: Clock’ EVENT AND Clock=‘1’

下降沿描述: Clock’ EVENT AND Clock=‘0’

上升沿描述: rising_edge (Clock)

下降沿描述: falling_edge (Clock)黄淮学院

第五章 硬件描述语言5.4 VHDL 语言的基本描述语句

1 )进程语句 (PROCESS)

Page 69: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

Text

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 1 )进程语句 (PROCESS)

【例】ARCHITECTURE a OF states_mach ISBEGIN P1:PROCESS(clk) BEGIN IF (clk´event AND clk=´1´) THEN current_state<=next_state; END IF; END PROCESS; ┇END a;

P1 为进程标号,时钟 clk 为敏感信号。每当 clk 发生一次变化时, BEGIN和 END PROCESS之间的顺序语句就会运行一次。由于时钟 clk变化包括上升沿和下降沿,为了准确描述,在顺序语句中用了一个条件判断语句“ IF (clk´event AND clk=´1´) THEN”来判断 clk 的上升沿。若要判断 clk的下降沿,可用“ IF (clk´event AND clk=´0´) THEN” 语句。

Page 70: 《 电子设计自动化 》

Company Logo

进程的启动

黄淮学院

第五章 硬件描述语言5.4 VHDL 语言的基本描述语句

1 )进程语句 (PROCESS)

当 process 的敏感信号参数表中没有列出任何敏感信号时,进程通过 wait 语句启动。ARCHITECTURE Behavior OF state IS

BEGIN

PROCESS --敏感信号列表为空BEGIN

wait until Clock; --等待 clock激活进程 IF ( drive=‘1’) THEN CASE output IS WHEN s1 => output <= s2; WHEN s2 => output <= s3; WHEN s3 => output <= s4; WHEN s4 => output <= s1; END CASE ; END IF ;END PROCESS;

END;

Page 71: 《 电子设计自动化 》

Company Logo

进程注意事项

黄淮学院

第五章 硬件描述语言5.4 VHDL 语言的基本描述语句

1 )进程语句 (PROCESS)

进程本身是并行语句,但内部为顺序语句; 进程在敏感信号发生变化时被激活,在使用了敏感表的进程中不能含 wait

语句; 在同一进程中对同一信号多次赋值,只有最后一次生效; 在不同进程中,不可对同一信号进行赋值; 一个进程不可同时对时钟上、下沿敏感。 进程中的信号赋值是在进程挂起时生效的,而变量赋值是即时生效。 相对于结构体而言,信号具有全局性,是进程间进行并行联系的重要途径。 进程为综合器支持,且其建模方式直接影响仿真和综合结果,综合后对应于进程的硬件结构对进程中所有可读入信号都是敏感的。

Page 72: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句并行信号赋值语句有三种形式:简单信号赋值语句、选择信号赋值语句和条件信号赋值语句。这三种信号赋值语句的共同特点是赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体中的执行是同时发生的。①简单信号赋值语句简单信号赋值语句是并行语句结构的最基本单元,它的语句书写格式如下:

赋值目标 <=表达式;

应用该赋值语句时一定要注意,赋值目标的数据对象必须是信号,赋值运算符“ <=”两边的数据类型必须一致。

Page 73: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

①简单信号赋值语句

【例】本例的结构体中描述了 3 个基本的逻辑门。 ENTITY gate IS PORT(a,b:IN BIT; y1,y2,y3:OUT BIT); END gate; ARCHITECTURE one OF gate IS BEGIN y1<=a AND b; -- 与门 y2<=a OR b; -- 或门 y3<=NOT a; --非门 END one;

Page 74: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

②选择信号赋值语句 选择信号赋值语句的书写格式如下:

WITH 选择表达式 SELECT 赋值目标信号 <=表达式 WHEN 选择值 , 表达式 WHEN 选择值 , … 表达式 WHEN 选择值 ;

a.当“选择表达式”的值发生变化时,将启动此语句对各子句的“选择值”进行测试对比。当发现有满足条件的子句时,就将此子句中的“表达式”值赋给“赋值目标信号”。

Page 75: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

b.每条子句应以“ ,” 结束,最后一条子句以“ ;” 结束。

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

②选择信号赋值语句

c.“选择值”不能有重复,且“选择值”应包含“选择表达式”的所有取值,不允许存在选择值涵盖不全的情况。

【例】用选择信号赋值语句设计一个 4选 1 数据选择器。其符号见图。其中 SEL[1..0]为 2 位地址输入端, A、 B、 C、 D 为数据输入端, Y 为数据输出端。当 SEL[1..0] 为“ 00” 时, Y=A ;当 SEL[1..0] 为“ 01” 时,Y=B ;当 SEL[1..0] 为“ 10” 时, Y=C ;当 SEL[1..0] 为“ 11” 时, Y=D 。

Page 76: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

②选择信号赋值语句

ENTITY mux4_1 IS PORT(a,b,c,d:IN BIT; sel:IN BIT_VECTOR(1 DOWNTO 0); y:OUT BIT); END mux4_1; ARCHITECTURE one OF mux4_1 IS BEGIN WITH sel SELECT y<=a WHEN “00”, b WHEN “01”, c WHEN “10”, d WHEN “11”; END one;

Page 77: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

③条件信号赋值语句 条件信号赋值语句书写格式如下:

目标信号 <=表达式 WHEN 赋值条件 ELSE 表达式 WHEN 赋值条件 ELSE … 表达式 ;

a.条件信号赋值语句与选择信号赋值语句的最大区别在于后者的各个“选择值”之间处于同一优先级,而前者的各个“赋值条件”具有优先顺序,优先级由高到低的顺序与语句书写顺序一致。

Page 78: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

③条件信号赋值语句 b.当某个“赋值条件”得到满足 ( 即其值为“真” ) 时,立即将该条件“ WHEN”前的“表达式”值赋给“目标信号”;当几个“赋值条件”都得到满足时,优先级高的那个条件“ WHEN”前的“表达式”值赋给“目标信号”;当所有的“赋值条件”都得不到满足时,最后一个“ ELSE” 关键词后的“表达式”值赋给“目标信号”。c.每行语句后没有标点符号,最后一行“表达式”用“ ;” 结束。

Page 79: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 2 )并行信号赋值语句

③条件信号赋值语句 【例】用条件信号赋值语句设计4选 1 数据选择器。

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux4_1 IS PORT(a,b,c,d:IN BIT; sel:IN BIT_VECTOR(1 DOWNTO 0); y:OUT BIT); END mux4_1; ARCHITECTURE one OF mux4_1 IS BEGIN y<=a WHEN sel=“00” ELSE b WHEN sel=“01” ELSE c WHEN sel=“10” ELSE d; END one;

Page 80: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句元件例化语句引入的是一种连接关系,即将预先设计好的设计实体定义成一个元件,然后利用例化语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入了一个低一级的设计层次。也可以这样来理解例化语句,当前设计实体相当于一个较大的电路系统,预先设计好的设计实体相当于一个要插在这个电路系统板上的芯片,而当前设计实体中的例化语句则相当于这块电路板上准备接收此芯片的一个插座。

Page 81: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句

元件例化语句通常由元件声明和元件例化两部分组成。语句书写格式如下:

--元件声明部分 COMPONENT 元件名 GENERIC(参数表 ); PORT(端口信息 ); END COMPONENT;--元件例化部分 例化名 : 元件名 PORT MAP(端口名 =>连接端口名 ,…);

列出对外通信的各端口名

元件定义语句

当前系统与准备接入的元件对应端口相连的通信端口。

名字关联方式: port map 语句中位置可以任意;位置关联方式:端口名和关联连接符号可省去,连接端口名的排列方式与所需例化的元件端口定义中的端口名相对应。

Page 82: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句a. 第一部分的“元件声明”,是对预先设计好的元件的定义语句,相当于对一个已有的设计实体进行封装,使其只留出对外的接口界面,也就像一个集成芯片只对外留出几个引脚一样。“类属表”可定义一些参数;“端口信息”可列出已有元件端口的名称、模式、数据类型。该部分可放在结构体中“语句说明部分”。 b. 第二部分的“元件例化”,用于说明当前设计实体和被调用元件的连接关系。其中,“例化名”是必须的,它类似于当前电路系统板上的一个插座名;而“元件名”则是已定义好的、准备在此插座上插入的元件 ( 或芯片 )名称;“端口名”是已有的元件 ( 或芯片 )的端口名称;“ =>” 是关联 (连接 ) 符号;“连接端口名”则是当前系统与准备接入的元件对应端口相连的通信端口,相当于插座上各插针的引脚名。

Page 83: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句c. 已有元件的“端口名”与当前系统的“连接端口名”的关联描述有两种方式。 一种是名字关联方式,在这种方式下,已有元件的“端口名”、关联符号“ =>”都是必须存在的,“端口名 =>连接端口名”在 PORT MAP 语句中的位置可以是任意的; 另一种是位置关联方式,在这种方式下,“端口名”和“ =>”都可省去,在 PORT MAP 子句中只列出当前系统中的“连接端口名”即可,但要求“连接端口名”的排列顺序与“元件声明”中已有元件“端口信息”中所列的端口名排列顺序相同,书写格式为 例化名 : 元件名 PORT MAP(连接端口名 1, 连接端口名 2,…);

Page 84: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句 【例】利用例化语句设计图示的电路。

&

&

&

U1

U2

U3a

b

z

temp1

temp2

c

d

--首先完成与非门的设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY nand2 IS PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC); END nand2; ARCHITECTURE one OF nand2 IS BEGIN y<=a NAND b; END one;

Page 85: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句 【例】利用例化语句设计图示的电路。

&

&

&

U1

U2

U3a

b

z

temp1

temp2

c

d

-- 利用例化语句完成设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ord4 IS PORT(a,b,c,d:IN STD_LOGIC; z:OUT STD_LOGIC); END ord4; ARCHITECTURE behv OF ord4 IS COMPONENT nand2 -- 元件声明部分 PORT(a,b:IN STD_LOGIC; y:OUT STD_LOGIC); END COMPONENT;

Page 86: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 3 )元件例化语句 【例】利用例化语句设计图示的电路。

&

&

&

U1

U2

U3a

b

z

temp1

temp2

c

d

SIGNAL temp1,temp2:STD_LOGIC; BEGIN -- 元件例化部分 U1:nand2 PORT MAP(a,b,temp1); --按位置关联 U2:nand2 PORT MAP(a=>c,b=>d,y=>temp2); --按名字关联 U3:nand2 PORT MAP(temp1,temp2,y=>z); --混合关联 END behv;

Page 87: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 4 )生成语句 (GENERATE)

生成语句具有复制作用,它可以生成与已有的某个元件或设计单元电路完全相同的一组并行元件或设计单元电路结构。 生成语句的书写格式有以下两种形式:

[ 标号 :]FOR 循环变量 IN 取值范围 GENERATE [ 说明语句 ;] 并行语句 ; END GENERATE [ 标号 ];

[ 标号 :]IF 条件 GENERATE [ 说明语句 ;] 并行语句 ; END GENERATE [ 标号 ];

a. 生成语句的生成方式有“ FOR” 和“ IF”两种,它们用于规定并行语句的复制方

式。b.“说明语句”用于对元件的数据类型、数据对象等作一些局部说明。

c.“ 并行语句”是用来复制的基本单元,主要包括元件、进程语句、块语句、并行信号赋值语句,甚至生成语句,这表示生成语句允许存在嵌套结构,因而可用于生成元件的多维阵列结构。

d.“ 标号”并非是必需的,但如果在嵌套式生成语句结构中就是十分重要的。

f. 对于“ FOR” 语句结构,主要用来描述设计中的一些有规律的单元结构,其“循环变量”是一个局部变量,它根据“取值范围”而自动递增或递减。“取值范围”的书写格式有以下两种方式:表达式 TO 表达式 ; --递增方式 ,如 1 TO 5 表达式 DOWNTO 表达式 ; --递减方式 ,如 5 DOWNTO 1

Page 88: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 4 )生成语句 (GENERATE)

【例】利用 GENERATE 语句产生 4个 D触发器,如图所示。

Page 89: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

黄淮学院

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff_4 IS PORT(clk,clrn,prn:IN STD_LOGIC; d:IN STD_LOGIC_VECTOR(3 DOWNTO 0); q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END dff_4; ARCHITECTURE beh OF dff_4 IS COMPONENT dff ---- 元件声明 PORT(d,clk,clrn,prn:IN STD_LOGIC; q:OUT STD_LOGIC); END COMPONENT;BEGIN d4:FOR i IN 3 DOWNTO 0 GENERATE -- 生成语句 u:dff PORT MAP(d(i),clk,clrn,prn,q(i)); -- 元件例化 END GENERATE; END beh;

Page 90: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 5 )块语句 (BLOCK) 使用过 Protel软件的都知道,画一个较大的电路原理图时,通常把它分成几个子模块来绘制,而其中的每个子模块都可以是一个具体的电路原理图;倘若子模块仍很大,还可以往下再分子模块。 VHDL 语言中的块语句结构的应用与此类似。 事实上,块语句的应用只是一种将结构体中的并行描述语句进行组合的方法,其目的是为了改善并行语句的可读性,一般应用于较复杂的 VHDL 程序中。块语句对复杂并行结构的划分仅限于形式上的,从综合的角度来看,它不会改变电路的结构和逻辑功能。

Page 91: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 5 )块语句 (BLOCK) 块语句的书写格式为:块标号名 :BLOCK[块保护表达式 ]

[ 接口说明语句 ] [ 类属参数说明语句 ] BEGIN 并行语句 END BLOCK 块标号名 ;

在关键词“ BLOCK” 的前面必须设置一个块标号,并在结尾语句“ END BLOCK”右侧也写上此标号 (此处的块标号不是必需的 ) 。

“接口说明语句” 的适用范围仅限于当前 BLOCK 内部,对于块外来说是不透明的,即不能适合于外部环境或由外部环境所调用。 “并行语句”可包含任

何并行语句结构。

Page 92: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 5 )块语句 (BLOCK)

【例】利用 BLOCK 语句描述全加器。

ENTITY add IS PORT(ain,bin,cin:IN BIT; sum,cout:OUT BIT);END add;ARCHITECTURE a OF add ISSIGNAL so1,co1,co2:BIT; -- 全局信号BEGINP1:BLOCK SIGNAL a,b:BIT; -- 局部信号 ,只适用块 P1 BEGIN -半加器 1 的描述语句; END BLOCK P1;

P2:BLOCK BEGIN -半加器 2 的描述语句; END BLOCK P2;P3:BLOCK BEGIN -将 2 个半加器组合成全加器的连接部分描述语句; END BLOCK P3;END a;

Page 93: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 1 ) VHDLVHDL 的并行语句的并行语句 5 )块语句 (BLOCK)

【例】本例是一个 BLOCK 语句嵌套的例子。

…B1:BLOCK SIGNAL s1:BIT; -- 对于块 B1、 B2、 B3都适用 BEGIN s1<=a AND b; B2:BLOCK SIGNAL s2:BIT; -- 对块 B2、 B3适用 BEGIN s2<= c AND d; B3:BLOCK BEGIN z<=s2; END BLOCK B3; END BLOCK B2; y<=s1; END BLOCK B1;…

Page 94: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 顺序语句是 VHDL 程序设计中很重要的语句系列之一,它能够从多个侧面完整地描述数字系统的硬件结构和基本逻辑功能。顺序语句与传统软件编程语言中的语句执行方式十分相似。所谓的顺序,主要指的是语句的执行 (指仿真执行 )顺序与它们书写顺序基本一致。但应注意的是,这里的顺序是从仿真软件的运行或顺应 VHDL 语法的编程思路而言的,其相应的硬件逻辑工作方式未必如此 。顺序语句只能出现在进程 (PROCESS) 中,而进程本身属于并行语句,这就是说在同一设计实体中,所有的进程都是并行执行的,而每一个进程内部的语句是顺序执行的。

顺序语句综合后,映射为实际的门电路,系统一上电,门电路开始工作。电路可实现逻辑上的顺序执行,实际上所有门电路是并行工作的。

Page 95: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句

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

Page 96: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 1 )赋值语句顺序语句中的赋值语句与并行语句中的赋值语句功能相似,它们都可用来对某一赋值目标进行赋值。但二者是有区别的,并行赋值语句的赋值目标只能是信号 (SIGNAL) ,而顺序赋值语句不但可对信号赋值,也可以对变量 (VARIABLE) 进行赋值。 顺序赋值语句的书写格式有如下两种:

对变量赋值时,其语句格式为 变量赋值目标 :=赋值源 ; 对信号赋值时,其语句格式为 信号赋值目标 <=赋值源 ;

Page 97: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 1 )赋值语句

【例】ENTITY exam IS PORT(a,b:IN BIT; y:OUT BIT);END exam;ARCHITECTURE one OF exam ISSIGNAL c:BIT; --定义全局信号 cBEGIN PROCESS(a,b) -- 进程 VARIABLE d:BIT; --定义局部变量 d BEGIN d:=a NAND b; --顺序赋值语句 c<=d; --顺序赋值语句 END PROCESS; -- 结束进程 y<=c NAND a; -- 并行赋值语句END one;

Page 98: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句(又称转向控制语句):通过条件控制开关决定是否执行一条或几条语句,或重复执行一条或几条语句,或跳过一条或几条语句。

分为五种: if 语句、 case 语句、 loop 语句、 next 语句、 exit 语句

① if 语句 if 语句的书写格式如下三种:

第一种格式 ( 简化的 IF 语句 ) IF 条件表达式 THEN 顺序语句 ; END IF;

这种语句的执行情况是,当程序执行到该语句时,首先检测关键词“ IF”后的“条件表达式”的布尔值是否为真 (TURE) 。如果为真,那么 (THEN) 将顺序执行“顺序语句”中的各条语句,直到“ END IF;” ;如果为假 (FALSE) ,则不执行“顺序语句”,直接到跳到“ END IF” ,结束 IF 语句的执

行。

Page 99: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

① if 语句

第二种格式 ( 两分支结构 ) IF 条件表达式 THEN 顺序语句 ; ELSE 顺序语句 ; END IF;

这种语句的执行情况是,当关键词“ IF”后的“条件表达式”为真时,则顺序执行其下面的“顺序语句”中的各条语句,当

“顺序语句”执行完成后,直接跳到“ END IF;”, 结束 IF 语句的执行;当“ IF”后的“条件表达式”为假时,则程序直接跳到关键词“ ELSE” ,执行其下面的顺序语句,直到“ END IF;” 。因此

它是一种两分支的结构。

Page 100: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

① if 语句

第三种格式 ( 多分支结构 ) IF 条件表达式 THEN 顺序语句 ; ELSIF 条件表达式 THEN 顺序语句 ; … ELSE 顺序语句 ; END IF;

该格式通过关键词“ ELSIF” 设定了多个判断条件 (条件表达式 ) ,这些判断条件的优先顺序 (从高到低 ) 与书写“条件表达式”的先后顺序一致。当某一判断条件为真时,则顺序执行其后的“顺序语句”,执行完成后,直接跳到“ END IF;”当某一判断条件为假时,则跳过其后的“顺序语句”,再测试下一个条件表达式。当所有的条件表达式都为假时,则执行关键词“ ELSE”下的“顺序语句”。因此它是一种多分支结构,功能与并行语句中的条件信号赋值语句类似。

IFIF 语句可以嵌套使用,但嵌套的层数不宜过多。语句可以嵌套使用,但嵌套的层数不宜过多。

Page 101: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

① if 语句

【例】用 IF 语句描述一个简单的 D触发器。ENTITY dff IS PORT(d,clk:IN BIT; q:OUT BIT); END dff; ARCHITECTURE one OF dff IS BEGIN PROCESS(clk) BEGIN IF (clk’event AND clk=’1’) THEN q<=d; END IF; END PROCESS;END ARCHITECTURE one ;

Page 102: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

① if 语句

【例】用 IF 语句描述一个 2输入端的与门。 ENTITY and2 IS PORT(a,b:IN BIT; y:OUT BIT); END and2; ARCHITECTURE one OF and2 IS BEGIN PROCESS(a,b) BEGIN IF (a=’1’ AND b=’1’) THEN y<=’1’; ELSE y<=’0’; END IF; END PROCESS; END one;

Page 103: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

① if 语句

【例】用 IF 语句描述一个带异步清零 clrn( 低电平有效 ) 和使能端 en( 高电平有效 )的 D触发器。

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff IS PORT(clk,d,clrn,en:IN STD_LOGIC; q:OUT STD_LOGIC); END dff; ARCHITECTURE one OF dff IS SIGNAL qout:STD_LOGIC; BEGIN PROCESS(clrn,clk)

BEGIN IF (clrn=’0’) THEN qout<=’0’; ELSIF (clk’event AND clk=’1’) THEN IF (en=’1’) THEN --IF 语句的嵌套使用 qout<=d; ELSE qout<=qout; END IF; END IF; END PROCESS; q<=qout; END one;

Page 104: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

② case 语句 casecase 语句的书写格式如下:语句的书写格式如下:

CASE 表达式 IS WHEN 选择值 =>顺序语句 ; WHEN 选择值 =>顺序语句 ; … END CASE;

语句执行时,首先计算“表达式”的值,然后执行与“表达式”值相同的“选择值”后的“顺序语句”,最后“ END CASE” 。这里要注意,“ =>”不是操作符,它只相当于“ THEN” 的作用。从这一点上来说, CASE 语句和并行选择信号赋值语句的功能相当。

Page 105: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

② case 语句 casecase 语句的书写格式如下:语句的书写格式如下:

CASE 表达式 IS WHEN 选择值 =>顺序语句 ; WHEN 选择值 =>顺序语句 ; … END CASE;

条件句中的“选择值”必须在“表达式”的取值范围内,并且要完全覆盖“表达式”的所有取值。 当“选择值”不能完全覆盖“表达式”的所有取值时,则最后一个条件语句中的“选择值”必须用“ OTHERS”表示,以表示“选择值”未能列出“表达式”的其他取值。关键词“ OTHERS”只能出现一次,且只能作为最后一种条件取值。这一点对于定义成 STD_LOGIC和STD_LOGIC_VECTOR 的数据类型尤为重要。

Page 106: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

② case 语句 casecase 语句的书写格式如下:语句的书写格式如下:

CASE 表达式 IS WHEN 选择值 =>顺序语句 ; WHEN 选择值 =>顺序语句 ; … END CASE;

“选择值”可以有以下四种不同的表达方式:单个数值,如 4 ;数值选择范围,如 (2 TO 4) ,表示取值为 2、 3和 4 ;并列数值,如 3│5 ,表示取值为 3或 5 。

每一条件语句中的“选择值”只能出现一次,不能有相同“选择值”的条件语句。

Page 107: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

② case 语句 casecase 语句的书写格式如下:语句的书写格式如下:

CASE 表达式 IS WHEN 选择值 =>顺序语句 ; WHEN 选择值 =>顺序语句 ; … END CASE;

与 IF 语句相比, CASE 语句组的程序可读性比较好,这是因为它把条件中“表达式”的所有取值都列了出来,可执行条件一目了然。但对相同的逻辑功能描述,综合后,用 CASE 语句描述比 IF 描述耗用更多的硬件资源。因此,对本身就具有优先逻辑关系的描述 ( 如优先编码器 ) ,采用 IF 语句比 CASE 语句更合适。

Page 108: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

② case 语句

【例】用 CASE 语句描述 4选 1 数据选择器

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4_1 IS PORT(a,b,c,d:IN STD_LOGIC; sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC);END mux4_1;ARCHITECTURE one OF mux4_1 ISBEGIN PROCESS(sel,a,b,c,d) BEGIN CASE sel IS WHEN “00”=>y<=a; WHEN “01”=>y<=b; WHEN “10”=>y<=c; WHEN “11”=>y<=d; WHEN OTHERS=>y<=’X’; END CASE; END PROCESS;END one;

Page 109: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

③ loop 语句 ,LOOP 语句就是循环语句,它可以使所包含的一组顺序语句被循环执行。 常用的书写格式如下:

[ 标号 :]FOR 循环变量 IN 循环范围 LOOP 顺序语句 ; END LOOP [标号 ];

“循环变量”是一个临时变量,属于 LOOP 语句的局部变量,它由 LOOP 语句自动定义,不必事先定义。该变量只能作为赋值源,不能被赋值。使用时应注意,在 LOOP 语句范围内不要再使用其他与此循环变量同名的标识符。

“循环范围”规定循环语句被执行的次数。“循环变量”从“循环范围”的初值开始,每执行完一次“顺序语句”后递增 1 ,直到达到“循环范围”指定

的最大值。

Page 110: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

③ loop 语句 【例】用 FOR_LOOP 语句描述下图的电路。

ENTITY exam_1 IS PORT(a:IN BIT_VECTOR(0 TO 3); out1:OUT BIT_VECTOR(0 TO 3)); END exam_1;ARCHITECTURE beh OF exam_1 IS BEGIN PROCESS(a) VARIABLE b:BIT;BEGIN b:=’1’; FOR i IN 0 TO 3 LOOP b:=a(3-i) AND b; out1(i)<=b; END LOOP; END PROCESS; END beh;

Page 111: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

④ next 语句 ,,在在 LOOPLOOP 语句中,语句中, NEXTNEXT 语句用于跳出本次循环。其格式有以下三种:语句用于跳出本次循环。其格式有以下三种:

NEXT;

NEXT [标号 ] ;NEXT [标号 ] [WHEN 条件表达式 ] ;

无条件终止当前的循环,跳回到本次循环 LOOP 语句开始处,开始下次循环。

无条件终止当前的循环,跳转到指定标号的 LOOP 语句开始处,重新开始执行循环操作。

当条件表达式的值为 TRUE ,则执行NEXT 语句,进入跳转操作,否则继

续向下执行。

Page 112: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 2 ) 流程控制语句

⑤ exitexit 语句语句 ,,EXITEXIT 语句与语句与 NEXTNEXT 语句具有十分相似的语句格式和跳转功能,都是语句具有十分相似的语句格式和跳转功能,都是 LOOPLOOP语句的内部控制语句,作用是结束循环状态。与语句的内部控制语句,作用是结束循环状态。与 NEXTNEXT 语句的区别是语句的区别是 EXITEXIT 语句跳向语句跳向LOOPLOOP 语句的终点。语句的终点。 EXITEXIT 语句格式也有三种:语句格式也有三种: EXIT;

EXIT LOOP 标号 ;

EXIT LOOP 标号 WHEN 条件表达式 ;

使用方式与使用方式与 NEXTNEXT 语句类似。语句类似。

Page 113: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 3 )子程序调用语句子程序调用语句

VHDLVHDL 程序可以应用子程序更有效的完成重复性工作。子程序模块是利用顺序语句定程序可以应用子程序更有效的完成重复性工作。子程序模块是利用顺序语句定义和完成算法的,但它不能像进程那样从本结构体的其他块或进程结构中读取信号值义和完成算法的,但它不能像进程那样从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序界面端口进行通信。或向信号赋值,只能通过子程序调用与子程序界面端口进行通信。 子程序被调用时,首先要进行初始化,执行处理功能后,将处理结果传递给主程序。子程子程序被调用时,首先要进行初始化,执行处理功能后,将处理结果传递给主程序。子程序内部的值不能保持,子程序返回后才能被再次调用并初始化。序内部的值不能保持,子程序返回后才能被再次调用并初始化。子程序有两种类型:子程序有两种类型:过程过程和和函数函数。。

Page 114: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 3 )子程序调用语句子程序调用语句①过程过程 (PROCEDURE)(PROCEDURE) 语句语句

过程语句书写格式为:过程语句书写格式为:

PROCEDURE 过程名 ( 参数表 ) IS [ 说明部分; ]BEGIN 过程语句部分;END PROCEDURE 过程名;

Page 115: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 3 )子程序调用语句子程序调用语句②函数函数 (FUNCTION)(FUNCTION) 语句语句

函数函数 (FUNCTION)(FUNCTION) 函数的语句书写格式为:函数的语句书写格式为:

FUNCTION 函数名 ( 参数表 ) RETURN 数据类型 IS [ 说明部分; ]BEGIN 顺序语句; RETURN[返回变量名 ] ;END RETURN 函数名;

Page 116: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 3 )子程序调用语句子程序调用语句

(1)(1)过程调用语句书写格式为:过程调用语句书写格式为:

过程名 ([参数名 =>]表达式 { , [ 参数名 =>]表达式 });

(2)(2) 函数调用语句书写格式为:函数调用语句书写格式为:

函数名 ([参数名 =>]表达式 { , [ 参数名 =>]表达式 }); 与过程调用不同之处在于调用函数将返回一个指定类型的值。

Page 117: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 4 ) NULLNULL 语句语句

NULLNULL 语句称为空操作语句,执行该语句只是使程序走到下一个语句语句称为空操作语句,执行该语句只是使程序走到下一个语句

书写格式如下:书写格式如下:

NULL;

Page 118: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.4 VHDL 语言的基本描述语句

2. VHDL 基本语句

黄淮学院

( 2 ) VHDLVHDL 的顺序语句的顺序语句 4 ) NULLNULL 语句语句 【例】使用 NULL 语句重新描述 4选 1 数据选择器。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4_1 IS PORT(a,b,c,d:IN STD_LOGIC; sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0); y:OUT STD_LOGIC);END mux4_1;ARCHITECTURE one OF mux4_1 ISBEGIN PROCESS(sel,a,b,c,d) BEGIN CASE sel IS WHEN “00”=>y<=a; WHEN “01”=>y<=b; WHEN “10”=>y<=c; WHEN “11”=>y<=d; WHEN OTHERS=>NULL; --NULL 用于排除一些不用的条件 END CASE; END PROCESS;END one;

Page 119: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.5 常见逻辑单元的 VHDL 描述

1.组合逻辑设计

黄淮学院

Page 120: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.5 常见逻辑单元的 VHDL 描述

2. 时序逻辑电路设计

黄淮学院

Page 121: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.6 VHDL 仿真与综合

仿真( Simulation ,也称模拟),不接触具体的硬件系统利用计算机对电路设计的逻辑行为和运行功能进行模拟检测,较大规模的 VHDL 系统设计的最后完成必须经历多层次的仿真测试过程,包括针对系统的 VHDL 行为仿真、分模块的时序仿真和硬件仿真,直至最后系统级的硬件仿真测试。

1. VHDL 仿真

黄淮学院

对 VHDL 源文件进行语法及语义检查,将其转换为中间数据格式。

保存中间数据结果,提供VHDL 源程序中需要的设计库和程序包。功能仿真是在未经布线和适配前,用 VHDL 源程序综合后的文件进行仿真。时序仿真是将设计综合后,由适配器完成具体芯片的映射后得到的文件进行仿真。

Page 122: 《 电子设计自动化 》

Company Logo

第五章 硬件描述语言

Text

Txt

5.6 VHDL 仿真与综合

2. VHDL 综合

黄淮学院

把 VHDL 描述转化为门级电路描述,设计过程中的每一步都可称为一个综合环节。 ( 1) 从自然语言转换到 VHDL 语言算法表示,即自然语言综合; (2) 从算法表示转换到寄存器传输级 (Register Transport Level, RTL) ,即从行为域到结构域的综合,即行为综合; (3) RTL 级表示转换到逻辑门 (包括触发器 ) 的表示,即逻辑综合; (4) 从逻辑门表示转换到版图表示 (ASIC 设计 ) ,或转换到 FPGA 的配置网表文件,可称为版图综合或结构综合。有了版图信息就可以把芯片生产出来了。有了对应的配置文件,就可以使对应的 FPGA变成具有专门功能的电路器件。

Page 123: 《 电子设计自动化 》

Company Logo

习题一 1 、 VHDL 的优点是什么? 2 、 VHDL 中最基本的结构是什么?其作用各是什么? 3 、说明 inout、 out 和 buffer 有何异同点。 5 、 VHDL 中有哪 3 种数据对象?详细说明它们的功 能特点以及使用方法。 6 、表达式 c <= a + b 中, a、 b和 c 的数据类型 都是 std_logic_vector ,是否能直接进行加 法运算?说明原因和解决方法。

第五章 硬件描述语言

黄淮学院

Page 124: 《 电子设计自动化 》

Company Logo

5.6.1 仿真激励信号的产生

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADDER4 IS

PORT ( a, b : IN INTEGER RANGE 0 TO 15; c : OUT INTEGER RANGE 0 TO 15 );

END ADDER4;ARCHITECTURE one OF ADDER4 IS

BEGINc <= a + b;

END one;

Page 125: 《 电子设计自动化 》

Company Logo

ENTITY SIGGEN ISPORT ( sig1 : OUT INTEGER RANGE 0 TO 15;

sig2 : OUT INTEGER RANGE 0 TO 15 );END;ARCHITECTURE Sim OF SIGGEN IS

BEGINsig1 <= 10, 5 AFTER 200 ns, 8 AFTER 400 ns;sig2 <= 3, 4 AFTER 100 ns, 6 AFTER 300 ns;

END;

SIGGEN 的仿真输出波形

① 用 VHDL写一个波形信号发生器

方法一

Page 126: 《 电子设计自动化 》

Company Logo

ENTITY BENCH ISEND;ARCHITECTURE one OF BENCH IS

COMPONENT ADDER4PORT ( a, b : integer range 0 to 15;

c : OUT INTEGER RANGE 0 TO 15 );END COMPONENT;COMPONENT SIGGEN

PORT ( sig1 : OUT INTEGER RANGE 0 TO 15;sig2 : OUT INTEGER RANGE 0 TO 15 );

END COMPONENT;SIGNAL a, b, c : INTEGER RANGE 0 TO 15;

BEGINU1 : ADDER4 PORT MAP (a, b, c);U2 : SIGGEN PORT MAP (sig1=>a, sig2=>b);

END;

② 将波形信号发生器与 ADDER4组装为一个 VHDL 仿真测试模块

BENCH 仿真波形图

Page 127: 《 电子设计自动化 》

Company Logo

force a 0 (强制信号的当前值为 0 )force b 0 0, 1 10 (强制信号 b 在时刻 0 的值为 0 ,在时刻 10 的值为 1 )force clk 0 0, 1 15 –repeat 20 ( clk 为周期信号,周期为 20 )

利用仿真器的波形设置命令施加激励信号

force命令的格式如下:

force <信号名 > <值 > [< 时间 >][, <值 > < 时间 > …] [-repeat <周期 >]

force a 10 0, 5 200, 8 400force b 3 0, 4 100, 6 300

BENCH 仿真波形图

① 初始化仿真过程后,在命令行中输入命令:

② 执行 RUN命令。

对 ADDER4 的结构体进行仿真:

Page 128: 《 电子设计自动化 》

Company Logo

5.6.2 VHDL测试基准( Test Bench )

Library IEEE;use IEEE.std_logic_1164.all;entity counter8 is

port (CLK, CE, LOAD, DIR, RESET: in STD_LOGIC;DIN: in INTEGER range 0 to 255;COUNT: out INTEGER range 0 to 255 );

end counter8;architecture counter8_arch of counter8 is

begin process (CLK, RESET) variable COUNTER: INTEGER range 0 to 255;begin

if RESET='1' then COUNTER := 0;elsif CLK='1' and CLK'event then if LOAD='1' then COUNTER := DIN;

8 位计数器源程序:

Page 129: 《 电子设计自动化 》

Company Logo

Elseif CE='1' then if DIR='1' then

if COUNTER =255 then COUNTER := 0; else COUNTER := COUNTER + 1;end if;

else if COUNTER =0 then COUNTER := 255; else COUNTER := COUNTER-1;

end if; end if; end if; end if; end if; COUNT <= COUNTER; end process; end counter8_arch;

Page 130: 《 电子设计自动化 》

Company Logo

Entity testbench is end testbench;Architecture testbench_arch of testbench isFile RESULTS: TEXT open WRITE_MODE is "results.txt";Component counter8

port ( CLK: in STD_LOGIC;RESET: in STD_LOGIC;CE, LOAD, DIR: in STD_LOGIC;DIN: in INTEGER range 0 to 255;COUNT: out INTEGER range 0 to 255 );

end component;shared variable end_sim : BOOLEAN := false;signal CLK, RESET, CE, LOAD, DIR: STD_LOGIC;signal DIN: INTEGER range 0 to 255;signal COUNT: INTEGER range 0 to 255;procedure WRITE_RESULTS (

CLK, CE, LOAD, LOAD, RESET : STD_LOGIC;DIN, COUNT : INTEGER ) isVariable V_OUT : LINE;

测试基准文件( Test Bench ):

Page 131: 《 电子设计自动化 》

Company Logo

Begin

write(V_OUT, now, right, 16, ps); -- 输入时间write(V_OUT, CLK, right, 2);

write(V_OUT, RESET, right, 2);

write(V_OUT, CE, right, 2);

write(V_OUT, LOAD, right, 2);

write(V_OUT, DIR, right, 2);

write(V_OUT, DIN, right, 257);

--write outputs

write(V_OUT, COUNT, right, 257);

writeline(RESULTS,V_OUT);

end WRITE_RESULTS;

begin

UUT: COUNTER8

port map (CLK => CLK,RESET => RESET,

CE => CE, LOAD => LOAD,

DIR => DIR, DIN => DIN,

COUNT => COUNT );

Page 132: 《 电子设计自动化 》

Company Logo

CLK_IN: processBeginif end_sim = false then CLK <= '0';Wait for 15 ns;CLk <='1';Wait for 15 ns; Else

Wait;end if;

end process;STIMULUS: processBegin

RESET <= '1'; CE <= ‘1’; --计数使能

DIR <= ‘1’; -- 加法计数 DIN <= 250; -- 输入数据 LOAD <= ‘0’; --禁止加载输入的数据 wait for 15 ns; RESET <= '0';wait for 1 us;

CE <= ‘0’; --禁止计数脉冲信号进入wait for 200 ns;

CE <= '1';wait for 200 ns;

Page 133: 《 电子设计自动化 》

Company Logo

DIR <= '0';wait for 500 ns;

LOAD <= '1';wait for 60 ns;

LOAD <= '0';wait for 500 ns;

DIN <= 60;DIR <= '1';LOAD <= '1';

wait for 60 ns;LOAD <= '0';

wait for 1 us;CE <= '0';

wait for 500 ns;CE <= '1';

wait for 500 ns;end_sim :=true;

wait;end process;

WRITE_TO_FILE: WRITE_RESULTS(CLK,RESET,CE,LOAD,DIR,DIN,COUNT);End testbench_arch;

Page 134: 《 电子设计自动化 》

Company Logo

8 位计数器测试基准仿真部分波形图

Page 135: 《 电子设计自动化 》

Company Logo