《
This presentation is the property of its rightful owner.
Sponsored Links
1 / 135

《 电子设计自动化 》 PowerPoint PPT Presentation


  • 104 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

《 电子设计自动化 》

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3966805

《电子设计自动化》

EDA

主讲人:熊娟

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


3966805

6

2

3

5

4

1

可编程器件开发系统

Protel 99se/DXP的使用

Multisim的使用

硬件描述语言

可编程逻辑器件

EDA技术基础

本学期主要内容

Company Logo


3966805

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

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

Company Logo


3966805

《EDA技术入门与提高》,王行、熊寿葵、李衍主编,西安电子科技大学出版社 ;

《电子设计自动化技术及应用》,李方明主编,清华大学出版社 ;

《VHDL程序设计教程》,邢建平 曾繁泰主编,清华大学出版社 ;

《Protel 99SE电路设计技术入门与应用》,李东生主编,电子工业出版社 ;

《电路设计与制板——Protel DXP入门与提高》,老虎工作室主编,人民邮电出版社 ;

《Multisim 10电路设计及应用》,王冠华 主编,国防工业出版社 ;

《电子设计自动化》

张永生主编

中国电力出版社

推荐教材及参考书

Company Logo


3966805

5.1

5.3

5.4

5.5

5.6

VHDL概述

VHDL基本描述语句

常见逻辑单元的VHDL描述

5.2

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

VHDL基本结构

VHDL基本元素

VHDL仿真与综合

Company Logo


3966805

5.1 VHDL概述

黄淮学院

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

1. VHDL的涵义及其发展

(1)涵义

HDL----Hardware Description Language(硬件描述语言)

一种用于描述数字电路的功能或行为的语言。常用的HDL是VHDL、Verilog HDL和ABEL。

Text

Txt

VHDL:(全称是“超高速集成电路硬件描述语言”)

VHSIC (Very High Speed Integrated Circuit) Hardware Description Language

VHDL主要用于描述数字系统的结构、行 为、功能和接口。

VHDL将一个设计(元件、电路、系统)分为:外部(可视部分、端口)和 内部(不可视部分、内部功能、算法)。

Text

Company Logo


3966805

5.1 VHDL概述

黄淮学院

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

1. VHDL的涵义及其发展

(2)发展

20世纪80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。

1987年由 IEEE 协会批准为 IEEE 工业标准,称为 IEEE1076-1987。各EDA公司相继推出支持VHDL的设计环境。

1993年被更新为 93 标准,即IEEE1076-1993。进一步提高抽象描述层次,扩展了系统描述能力。

1995年,我国国家技术监督局推荐VHDL做为电子设计自动化硬件描述语言的国家标准。

Text

Txt

Text

EDA工具及 HDL的流行,使电子系统向集成化、大规模和高速度等方向发展。

美国硅谷约有80%的ASIC和FPGA/CPLD 已采用 HDL进行设计。

Company Logo


3966805

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

16位计数器电路原理图

5.1 VHDL概述

黄淮学院

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

2. VHDL的特点

Text

(1)VHDL具有强大的语言结构,系统硬件描述能力强、设计效率高;具有较高的抽象描述能力。(如:一个可置数的16位计数器)

(2)VHDL语言可读性强,易于修改和发现错误。

(3)VHDL具有丰富的仿真语句和库函数,可对VHDL源代码进行早期功能仿真,有利于大系统的设计与验证。

(4)VHDL设计不依赖于器件,与工艺无关 。

(5)移植性好。

(6)VHDL体系符合TOP-DOWN和CE(并行工程)设计思想。

(7)VHDL设计效率高,产品上市时间快,成本低。

Txt

Text

Company Logo


3966805

补充知识

黄淮学院

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

VHDL与C、C++的区别:

C、C++ 代替汇编等语言

VHDL 代替原理图、逻辑状态图等

VHDL与电原理图描述的区别:

VHDL具有较强的抽象描述能力,可进行系统行为级别的描述。描述简洁,效率高。

VHDL描述与实现工艺无关。

电原理图描述需给出完整、具体的电路结构图,不能进行抽象描述。描述繁杂,效率低。电原理图描述与实现工艺有关。

VHDL与常规计算机程序的区别:

VHDL从根本上是并发执行的,通常称之为代码。

VHDL中只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的语句才是顺序执行的。

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

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

◆实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中所有的输入和 输出端口;

◆结构体 (Architecture):描述系统内部的具体结构和操作(行为);

◆包集合 (Package):存放各设计模块能共享的数据类型、常数和子程序等;

◆配置 (Configuration):指定实体所对应的结构体;

◆库 (Library):存放已经编译的实体、结构体、包集合和配置。

Text

Txt

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

Text

Company Logo


3966805

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

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

a

a

c

c

b

b

黄淮学院

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

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 IS

BEGIN

c<=a AND b;

END behav;

实体

说明

结构体

Company Logo


3966805

5.2 VHDL基本结构

STD库:包集合“Standard”和“Textio”

WORK库:当前工作库

黄淮学院

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

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

1.库分类

IEEE库:标准包集合STD_LOGIC_1164

资源库(用LIBRARY)

用户自定义库:

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

LIBRARYieee;

USE ieee. Std_logic_1164.all;

LIBRARY库名;

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

ALL

Company Logo


3966805

常用库

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

包集合

1. 是库结构中的一个层次

2. 单纯地罗列设计中经常用到的信号定义、数据类型、元件语句、函数定义、过程定义等

3. 用于封装属于多个设计单元分享的信息

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

STD_LOGIC_ARITH程序包(算术函数)

常用的预定义的程序包

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

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

Company Logo


3966805

5.2 VHDL基本结构

实体

结构体1

结构体N

黄淮学院

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

配置

配置可以把特定的结构体

关联到(指定给)一个确定的实体。

Configuration配置名 of实体名 is

For 选配结构体名

End For;

End 配置名;

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

配置

Configuration pg1 of decode is

For struc1

End For;

End pg1;

例:2-4 译码器设计

方案1:反相器+3输入与门

方案2:单一逻辑门与非门

Entity decode is

Port( …);

End decode;

Architecture struc1 of decode is

Begin

….

End struc1;

Architecture struc2 of decode is

Begin

….

End struc2;

Configuration pg2 of decode is

For struc2

End For;

End pg2;

译码器实体

译码器

结构体2

译码器

结构体1

Company Logo


3966805

a

c

5.2 VHDL基本结构

test

b

黄淮学院

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

实体

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

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 is

begin

c<=a and b;

end behav;

实体的一般格式为:

ENTITY实体名 IS

[ GENERIC(常数名:数据类型:设定值)]

PORT

( 端口名1:端口方向 端口类型;

……

端口名n:端口方向 端口类型);

END[实体名];

要点:

以 entity 实体名 is开始;以 end 实体名;结束

实体的主要内容为端口(port) 说明,其中主要包括:信号名、信号模式、信号类型

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

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

实体

1. 类属(Generic)说明

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

格式:

GENERIC(常数名:数据类型:设定值;

常数名:数据类型:设定值);

VHDL综合器仅支持数据类型为整数的类属值。

例如: GENERIC(wide:integer:=32); --说明宽度为32

GENERIC(tmp:integer:=1ns); --说明延时1 ns

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

实体

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);

Company Logo


3966805

5.2 VHDL基本结构

端口命名:英文字母/英文字母加数字

x

y

output

input

sum

黄淮学院

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

实体

2. 端口(port)说明

端口说明的一般格式为:

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

port (x,y: IN Bit;

sum: OUT Bit;

input: IN Bit_Vector(1 TO n);

Output: OUT Bit);

VHDL:不区分大小写!

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

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

实体

2. 端口(port)说明

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

IN(输入):仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。

OUT(输出):仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输出,不能用于反馈。

INOUT(双向):可以允许数据流入或流出该实体。该模式也允许用于内部反馈。

BUFFER(输出/内部反馈):该模式允许数据流出该实体和作为内部反馈时用,但不允许作为双向端口使用。该端口只能在实体内赋值,不能外部驱动。

Company Logo


3966805

5.2 VHDL基本结构

test

x

y

黄淮学院

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

实体

2. 端口(port)说明

  • 数据类型:用来指定每个端口信号的取值类型,原则上可以是任何标准的数据类型和用户自定义类型。VHDL提供了10种数据类型。

  • IEEE1706-93标准规定的数据类型包括: Boolen(布尔型)、 bit(位型)、 bit_vector(位矢量型)、integer integer (整数型)等。

  • 当用户使用了IEEE库中的程序包后,可以使用预先定义的std_Logic(标准逻辑位)数据类型和std_Logic_vector(标准逻辑矢量)数据类型等。

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

port (x: IN Bit;

y: IN Bit;

Output: OUT Bit);

output

Company Logo


3966805

实体举例

mux

A

B

F

S

黄淮学院

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

二选一电路的实体说明:

entity mux is

port (a: in std_logic;b: in std_logic;

s: in std_logic;f: out std_logic );

end mux;

Company Logo


3966805

5.2 VHDL基本结构

黄淮学院

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

可任意取,

但一般用描述方式定义

behav(行为级); dataflow(数据流级); struc(门级)

结构体

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

结构体的一般格式如下:

ARCHITECTURE结构体名 OF实体名IS

[声明语句]

BEGIN

功能描述语句

END [结构体名];

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

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

  • 一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方式。同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿真或综合。

  • 在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。即它定义了设计单元的具体功能。

Company Logo


3966805

结构体举例

功能描述语句

顺序语句

进程

黄淮学院

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

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

architecture rtl of mux is

begin

mux_p: process (a,b,s)

beginif ( s=‘1’ ) then f <= a;

else f <= b;end if;

end process mux_p;

end rtl;

二选一电路的结构体描述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;

-- 结构体定义

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

1. 词法规则

(1)注释

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

Text

(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)

Txt

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

Text

(3)字符和字符串

字符:用单引号引起来的ASCII字符,可以是数字,也可以是符号或字母。区分大小写.如:‘*’,‘Z’

字符串:用双引号引起来一维的字符数组。区分大小写.如:“FALSE”, O“34”

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

1. 词法规则

(4)标识符

定义常数、变量、信号、端口、子程序或参数的名字。

◆基本标识符的要求(短标识符)(87标准):

• 以英文字母开头;

• 不连续使用下划线“_”;

• 不以下划线“_”结尾;

• 由26个大小写英文字母、数字0-9及下划线“_”组成的字符串。

•基本标识符中的英文字母不分大小写;

• VHDL的保留字(关键字)不能作为标识符使用。

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

1. 词法规则

(4)标识符

Text

不合法标识符

合法标识符

_Decoder_1、

2FFT、

Sig_#N、

Not-Ack、

ALL_RST_、

AB AC、

loop、

A--C

my_counter、

Decoder_1、

FFT、

Sig_N、

Not_Ack、

State0、

entity1

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

1. 词法规则

(4)标识符

定义常数、变量、信号、端口、子程序或参数的名字。

◆扩展标识符的要求(93标准):

•两端以反斜杠来界定; •可以以数字或“_”打头;

•允许包含图形符号;

•允许使用VHDL保留字。

•扩展标识符中的英文字母区分字母大小写;

如: \74LS163\、\Sig_#N\、 \entity\、\ENTITY\等都是合法的扩展标识符。

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

1. 词法规则

(5)下标名及下标段名

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

格式:

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

格式:

Text

标识符(表达式)

Txt

标识符(表达式 to/downto 表达式)

Text

如:a : std_logic_vector(7 downto 0)

a(7), a(6)… a(0)

a(7downto0), a(7 downto 4), a(5 downto 3)…

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

1. 词法规则

(6)保留字(关键字)

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

如:if else elsif end wait when case

entity architecture package component

xnor xor

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

2. VHDL的数据对象

三种对象:常量(Constant)

变量(Variable)

信号(Signal)

三种对象的物理含义:

•常量代表数字电路中的电源、地、恒定逻辑值等常数

•变量代表暂存某些值的载体,常用于描述算法;

•信号代表物理设计中的某一条硬件连接线,包括输入、输出端口

Text

Txt

三种对象的特点及说明场合:

信号:全局量, 用于architecture、 package、entitiy。

变量:局部量,用于process、function、 procedure。

常量:全局量,可用于上面两种场合。其作用范围取决于常量被定义的位置。

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

2. VHDL的数据对象

1、常量说明

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

格式:

例:

Constant Vcc:real:=5.0; --定义Vcc的数据类型是实数,赋值为5.0V

Constant bus_width: integer :=8; --定义总线宽度为常数8

常量数据类型必须与表达式的数据类型一致。常量是一个恒定不变的量,一旦被赋值就不能再改变。

Text

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

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

2. VHDL的数据对象

2、变量说明

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

变量定义语句格式:

例:

Variable count: integer 0 to 255:=20; -- 定义count整数变量,变化

范围0~255,初始值为20。

变量的初值可用于仿真,但综合时被忽略。

Text

Txt

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

Text

变量赋值语句:

目标变量名 := 表达式;

x:=10.0; -- 实数变量赋值为10.0

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

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

2. VHDL的数据对象

3、信号说明

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

Text

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

Txt

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

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

Text

信号赋值语句:

目标信号名 <= 表达式;

x<=9;

Z<=x after 5 ns; -- 在5ns后将x的值赋予z

注:①. 综合时初值被忽略。

②. 在进程和子程序中只能使用信号,不能说明信号。

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

2. VHDL的数据对象

信号与变量的区别

例:进程中信号与变量的使用

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;

4、信号与变量的区别

①信号除当前值外有许多相关信息,如历史信息;而变量只有当前值。②进程对信号敏感而不对变量敏感。③信号可以是多个进程的全局信号。

例:进程中信号与变量的使用

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

2. VHDL的数据对象

5、信号与端口的区别:

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

entity exam is

port([signal] a, b: in std_logic;

[signal] c: out std_logic);

end exam;

端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能写入数据,只能读出数据。 信号本身无方向,可读可写。

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

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 将被综合成由四条信号线构成的信号。

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

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 --十进制浮点数

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

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)

●字符串

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

3. VHDL的数据类型

(1)标准数据类型(10种)

●时间:(Time)

物理量数据,完整的包括整数和单位两个部分,用至少一个空格隔开,仅用于仿真不可综合;如:55 ms,20 ns

●错误等级(Severity Level) :

表示系统状态,仅用于仿真不可综合;仿真中用来指示系统的工作状态,共有四种:

NOTE(注意)、 WARNING(警告)、 ERROR(出错)、 FAILURE(失败)

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

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’);

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

3. VHDL的数据类型

(2)用户自定义数据类型

SUBTYPE语句的格式为:

SUBTYPE 子类型名 IS 基本数据类型定义 RANGE 约束范围

如:subtype digits is integer range 0 to 9;

由subtype 语句定义的数据类型称为子类型。

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

3. VHDL的数据类型

(3) IEEE 预定义标准

标准逻辑位(Std_Logic):

‘U’, --初始值;‘X’, --不定;

‘0’, --0; ‘1’, --1

‘Z’, --高阻;‘W’, --弱信号不定

‘L’, --弱信号0;‘H’, --弱信号1

‘-’ --不可能情况

Text

Txt

标准逻辑位矢量( Std_Logic_vector):基于Std_Logic类型的数组;

使用Std_Logic和 Std_Logic_Vector要调用IEEE库中的Std_Logic_1164 程序包;就综合而言,能够在数字器件中实现的是“-、0、1、Z”四种状态。

在条件语句中,必须要全面考虑Std_Logic的所有可能取值情况,否则综合器可能会插入不希望的锁存器。

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

3. VHDL的数据类型

(4) 数据类型转换

VHDL为强定义类型语言,不同类型的数据不能进行运算和直接赋值。不同类型的数据

对象必须经过类型转换,才能相互操作。

Text

1)直接类型转换方式

对相互间非常关联的数据类型(如整型、浮点型),可进行直接类型转换。格式:

数据类型标识符(表达式)

如:variable a, b : real;

variable c, d : integer;

……

a:= real(c);

d:= integer(b);

2)类型转换函数方式

通过调用类型转换函数,使相互操作的数据对象的类型一致,从而完成相互操作。

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

数据类型转换

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

Text

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

4. VHDL的运算操作符

Text

  • (1)运算符

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

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

  • 赋值运算符:<=,:=

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

  • 关联运算符:=>

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

Txt

Text

Company Logo


3966805

5.3 VHDL基本元素

黄淮学院

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

4. VHDL的运算操作符

(2)运算符优先级别

Text

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

乘法运算符(/ , MOD, REM, * )

正负运算符:+, -,

Txt

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

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

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

Text

取余运算(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)

Company Logo


3966805

5.4 VHDL语言的基本描述语句

Entity(实体)

block(块结构)

subprograms(子程序)

procedure(过程)

function(函数)

process(进程结构)

Architecture 1(构造体)

Architecture N

黄淮学院

第五章 硬件描述语言

如何使用VHDL描述硬件实体

Text

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

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

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

1.结构体的描述方法

(1)行为描述法:( behavioral description)这是以元器件或电路模块为基础的描述方法,描述元器件或电路模块之间输入、输出的逻辑关系,是对它们性能或行为的描述。在VHDL语言中对这一类的描述称作行为描述。

(2)数据流描述法:数据流描述(dataflow description)法主要反映数据经过一定的逻辑运算后在输入和输出之间的传送过程。这种描述方法以表示数据在设计实体中从输入到输出的传输或流向为目的。使用并发语句(concurrent procedure call也叫并发过程调用语句)描述。

(3)结构描述法:(structural description),它以描述元部件(component)为基础,通过描述模块与模块之间的连接关系来表示被设计实体的构成和性能。这种描述方法适用于多层次设计,把一个复杂的系统分解成多个子系统,将每一个子系统设计成一个模块,再用结构描述法将各模块之间的连接关系写出来形成一个整体。

Text

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(1)行为描述法:

描述该设计单元的功能(即该单元能做些什么)。往往不涉及设计实体的电路结构。

主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送;程序中,往往大量采用算术运算、关系运算、惯性延时、传输延时等难以进行逻辑综合和不能进行逻辑综合的VHDL语句。

采用行为描述的VHDL程序主要用于系统数学模型的仿真或系统工作原理的仿真。

描述硬件电路的行为模式由指令 process(进程)引导,配合if…then…else,case…is…when等具有顺序性的指令来完成。在行为描述里,其程序的设计特性与普通的高级语言十分相似,它们会依指令语句出现的顺序作先后的处理。

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

Text

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

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

Text

ENTITY mux21a IS

PORT( 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;

Txt

实体

Text

结构体

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

8位比较器

a=b

a

b

c

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(1)行为描述法:

Text

例: 8位比较器结构体的行为描述

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 ;

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

  • (2)数据流描述法:

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

  • 一些难以综合的语句(如信号代入中的延时等)

  • 一些抽象的数据类型(如实数、记录、文件等)

  • 一些难以综合或不可综合的运算符(如除法/、乘方**等)

  • ——都不能在程序中使用

Text

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

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

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(2)数据流描述法:

特点:

  • 根据电子实体的逻辑表达式或逻辑真值表进行描述

  • 程序结构简单,容易进行逻辑综合,综合结果最优化;

  • 无法应用于大型设计中;

  • 利用信号的赋值方式来描述电路内信号数据的流动情形

    • 直接式的信号赋值“<=”

    • 条件式的信号赋值“when…else”

    • 选择式的信号赋值“with…select…when”

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(2)数据流描述法:

Text

例:2选1数据选择器——采用寄存器传输(RTL)描述方式

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;

Txt

实体

Text

结构体

Company Logo


3966805

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

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(2)数据流描述法:

Text

Y <= A and B;

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

Txt

Text

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(3)结构描述法:

结构化描述是常用的层次化设计方法。层次化设计便于多人协作,同时并行设计。在结构化设计中,每个设计层次可以作为一个元件,而无需考虑元件的复杂性。每个元件可以分别仿真,然后将各个元件组合起来构成系统,进行整体调试。

描述该设计单元的硬件结构(该硬件是如何构成的)。主要使用元件例化语句及配置指定语句描述元件的类型及元件的互连关系用户将自己设计的电路标准化后作为一个元件放在库中供调用的过程称为元件例化,或者称为标准化。

步骤1:元件的声明

步骤2:各元件间的连线映射(Mapping)

Text

Txt

COMPONENT 元件名IS

PORT (端口名表);

END COMPONENT;

Text

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(3)结构描述法:

Text

映射方式

参数映射关系和端口映射关系有两种:位置映射和名称映射。

1.位置映射方法

PORT MAP (a(0) , b(0), x(0) );

PORT ( a , b: IN STD_LOGIC ;

c: OUT STD_LOGIC ); --元件 

Txt

2. 名称映射方法

U0:xnor2 PORT MAP (a=>a(0), c=> x(0), b=>b(0) );

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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;

1.结构体的描述方法

(3)结构描述法:

Text

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

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

a0

b0

a1

b1

a6

b6

a7

b7

x(0)

x(1)

c

x(6)

x(7)

黄淮学院

&

=

=

=

=

第五章 硬件描述语言

1.结构体的描述方法

(3)结构描述法:

Text

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

底层元件二输入同或门的描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY xnor2 IS

PORT ( a, b: IN STD_LOGIC;

c: OUT STD_LOGIC );

END xnor2;

ARCHITECTURE bool OF xnor2 IS

BEGIN

c<=NOT( ( NOT a)AND b OR a AND( NOT b));

END bool;

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

1.结构体的描述方法

(4)总结

Text

  • 数据流描述/RTL描述——信号赋值语句

  • 行为描述——进程/数学模型

  • 结构描述——元件例化/逻辑元件连接

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本描述语句

并行语句和顺序语句是程序设计中两类基本描述语句。在逻辑系统的设计中,这些语句能够从多方面完整地描述数字系统的硬件结构和基本逻辑功能,其中包括通信的方式、信号的赋值、多层次的元件例化以及系统的行为等。

(1) VHDL的并行语句

在VHDL中,并行语句有多种语句格式,各种并行语句的执行都是同步进行的,或者说是并行运行的,其执行的方式与书写的顺序无关。

这种并行性是由硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会按照事先设计好的方案同时工作。

并行语句在执行时,各并行语句之间可以有信息来往,也可以互为独立、互不相关。

另外,每一并行语句内部的语句可以有两种不同的运行方式,即并行执行方式(如块语句)和顺序执行方式(如进程语句)。

Text

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

左图所示给出了常用的并行语句以及在同一结构体中各种并行语句运行的示意图。

这些语句不必同时使用,每一语句模块都可以独立异步运行,模块之间并行运行,并通过信号可交换信息。

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

1)进程语句(PROCESS)

进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的信号进行赋值。

进程语句是VHDL程序中使用最频繁和最能体现VHDL语言特点的一种语句,其原因大概是由于它的并行和顺序行为的双重性,以及其行为描述风格的特殊性。一个结构体中可以包括多个进程语句,各进程语句之间或各进程语句与其他并行语句之间的通信是依靠信号(SIGNAL)来传递的。

进程语句通常由一段程序构成,虽然进程语句本身是并行语句,但其内部的语句是由顺序语句构成的。因此,在编写PROCESS的内部语句时要特别注意各语句书写的先后顺序,不同的语句书写顺序将导致不同的硬件设计结果。

Txt

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

2. VHDL基本语句

(1) VHDL的并行语句

Text

1)进程语句(PROCESS)

进程语句的书写格式为:

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

[标号:]PROCESS(信号1,信号2,…)

[进程说明语句]

BEGIN

[顺序语句]

END PROCESS [标号];

Text

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

进程的工作原理

黄淮学院

第五章 硬件描述语言

执行过程终止

2. VHDL基本语句

Text

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

Txt

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

Text

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

进程与时钟

第五章 硬件描述语言

1)进程语句(PROCESS)

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

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

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

上升沿描述: rising_edge (Clock)

下降沿描述: falling_edge (Clock)

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

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

Text

1)进程语句(PROCESS)

【例】

ARCHITECTURE a OF states_mach IS

BEGIN

P1:PROCESS(clk)

BEGIN

IF (clk´event AND clk=´1´) THEN

current_state<=next_state;

END IF;

END PROCESS;

END a;

Txt

Text

Company Logo


3966805

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;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

进程注意事项

第五章 硬件描述语言

1)进程语句(PROCESS)

  • 进程本身是并行语句,但内部为顺序语句;

  • 进程在敏感信号发生变化时被激活,在使用了敏感表的进程中不能含wait语句;

  • 在同一进程中对同一信号多次赋值,只有最后一次生效;

  • 在不同进程中,不可对同一信号进行赋值;

  • 一个进程不可同时对时钟上、下沿敏感。

  • 进程中的信号赋值是在进程挂起时生效的,而变量赋值是即时生效。

  • 相对于结构体而言,信号具有全局性,是进程间进行并行联系的重要途径。

  • 进程为综合器支持,且其建模方式直接影响仿真和综合结果,综合后对应于进程的硬件结构对进程中所有可读入信号都是敏感的。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

2)并行信号赋值语句

并行信号赋值语句有三种形式:简单信号赋值语句、选择信号赋值语句和条件信号赋值语句。这三种信号赋值语句的共同特点是赋值目标必须都是信号,所有赋值语句与其他并行语句一样,在结构体中的执行是同时发生的。

Txt

①简单信号赋值语句

简单信号赋值语句是并行语句结构的最基本单元,它的语句书写格式如下:

赋值目标<=表达式;

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

【例】本例的结构体中描述了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;

(1) VHDL的并行语句

Text

2)并行信号赋值语句

①简单信号赋值语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

2)并行信号赋值语句

②选择信号赋值语句

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

Txt

WITH 选择表达式 SELECT

赋值目标信号<=表达式 WHEN 选择值,

表达式 WHEN 选择值,

表达式 WHEN 选择值;

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

2)并行信号赋值语句

②选择信号赋值语句

Txt

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

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。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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;

(1) VHDL的并行语句

Text

2)并行信号赋值语句

②选择信号赋值语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

2)并行信号赋值语句

③条件信号赋值语句

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

Txt

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

表达式 WHEN 赋值条件 ELSE

表达式;

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

2)并行信号赋值语句

③条件信号赋值语句

Txt

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

c.每行语句后没有标点符号,最后一行“表达式”用“;”结束。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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;

(1) VHDL的并行语句

Text

2)并行信号赋值语句

③条件信号赋值语句

Txt

【例】用条件信号赋值语句设计

4选1数据选择器。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

3)元件例化语句

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

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

元件定义语句

黄淮学院

第五章 硬件描述语言

名字关联方式:port map语句中位置可以任意;

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

2. VHDL基本语句

(1) VHDL的并行语句

Text

列出对外通信的各端口名

3)元件例化语句

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

Txt

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

--元件声明部分

COMPONENT 元件名

GENERIC(参数表);

PORT(端口信息);

END COMPONENT;

--元件例化部分

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

3)元件例化语句

a.第一部分的“元件声明”,是对预先设计好的元件的定义语句,相当于对一个已有的设计实体进行封装,使其只留出对外的接口界面,也就像一个集成芯片只对外留出几个引脚一样。“类属表”可定义一些参数;“端口信息”可列出已有元件端口的名称、模式、数据类型。该部分可放在结构体中“语句说明部分”。

b.第二部分的“元件例化”,用于说明当前设计实体和被调用元件的连接关系。其中,“例化名”是必须的,它类似于当前电路系统板上的一个插座名;而“元件名”则是已定义好的、准备在此插座上插入的元件(或芯片)名称;“端口名”是已有的元件(或芯片)的端口名称;“=>”是关联(连接)符号;“连接端口名”则是当前系统与准备接入的元件对应端口相连的通信端口,相当于插座上各插针的引脚名。

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

3)元件例化语句

c.已有元件的“端口名”与当前系统的“连接端口名”的关联描述有两种方式。

一种是名字关联方式,在这种方式下,已有元件的“端口名”、关联符号“=>”都是必须存在的,“端口名=>连接端口名”在PORT MAP语句中的位置可以是任意的;

另一种是位置关联方式,在这种方式下,“端口名”和“=>”都可省去,在PORT MAP子句中只列出当前系统中的“连接端口名”即可,但要求“连接端口名”的排列顺序与“元件声明”中已有元件“端口信息”中所列的端口名排列顺序相同,书写格式为

例化名:元件名 PORT MAP(连接端口名1, 连接端口名2,…);

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

3)元件例化语句

【例】利用例化语句设计图示的电路。

--首先完成与非门的设计

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;

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

3)元件例化语句

【例】利用例化语句设计图示的电路。

--利用例化语句完成设计

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;

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

3)元件例化语句

【例】利用例化语句设计图示的电路。

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;

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

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

第五章 硬件描述语言

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

2. VHDL基本语句

(1) VHDL的并行语句

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

Text

4)生成语句(GENERATE)

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

生成语句的书写格式有以下两种形式:

Txt

[标号:]FOR 循环变量 IN 取值范围 GENERATE

[说明语句;]

并行语句;

END GENERATE [标号];

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

表达式 DOWNTO 表达式; --递减方式,如5 DOWNTO 1

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

[标号:]IF 条件 GENERATE

[说明语句;]

并行语句;

END GENERATE [标号];

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

4)生成语句(GENERATE)

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

Txt

Company Logo


3966805

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;

Text

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(1) VHDL的并行语句

Text

5)块语句(BLOCK)

使用过Protel软件的都知道,画一个较大的电路原理图时,通常把它分成几个子模块来绘制,而其中的每个子模块都可以是一个具体的电路原理图;倘若子模块仍很大,还可以往下再分子模块。VHDL语言中的块语句结构的应用与此类似。

事实上,块语句的应用只是一种将结构体中的并行描述语句进行组合的方法,其目的是为了改善并行语句的可读性,一般应用于较复杂的VHDL程序中。块语句对复杂并行结构的划分仅限于形式上的,从综合的角度来看,它不会改变电路的结构和逻辑功能。

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

2. VHDL基本语句

(1) VHDL的并行语句

Text

5)块语句(BLOCK)

块语句的书写格式为:

块标号名:BLOCK[块保护表达式]

[接口说明语句]

[类属参数说明语句]

BEGIN

并行语句

END BLOCK 块标号名;

Txt

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

“并行语句”可包含任何并行语句结构。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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

(1) VHDL的并行语句

Text

P2:BLOCK

BEGIN

-半加器2的描述语句;

END BLOCK P2;

P3:BLOCK

BEGIN

-将2个半加器组合成全加器的连接部分描述语句;

END BLOCK P3;

END a;

5)块语句(BLOCK)

ENTITY add IS

PORT(ain,bin,cin:IN BIT;

sum,cout:OUT BIT);

END add;

ARCHITECTURE a OF add IS

SIGNAL so1,co1,co2:BIT; --全局信号

BEGIN

P1:BLOCK

SIGNAL a,b:BIT; --局部信号,只适用块P1

BEGIN

-半加器1的描述语句;

END BLOCK P1;

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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

(1) VHDL的并行语句

Text

5)块语句(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;…

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

顺序语句是VHDL程序设计中很重要的语句系列之一,它能够从多个侧面完整地描述数字系统的硬件结构和基本逻辑功能。

顺序语句与传统软件编程语言中的语句执行方式十分相似。所谓的顺序,主要指的是语句的执行(指仿真执行)顺序与它们书写顺序基本一致。但应注意的是,这里的顺序是从仿真软件的运行或顺应VHDL语法的编程思路而言的,其相应的硬件逻辑工作方式未必如此 。

顺序语句只能出现在进程(PROCESS)中,而进程本身属于并行语句,这就是说在同一设计实体中,所有的进程都是并行执行的,而每一个进程内部的语句是顺序执行的。

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

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

  • 赋值语句

  • 流程控制语句

  • 空操作语句

  • 等待语句

  • 子程序调用语句

  • 返回语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

1)赋值语句

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

Txt

顺序赋值语句的书写格式有如下两种:

对变量赋值时,其语句格式为

变量赋值目标:=赋值源;

对信号赋值时,其语句格式为

信号赋值目标<=赋值源;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

【例】

ENTITY exam IS

PORT(a,b:IN BIT;

y:OUT BIT);

END exam;

ARCHITECTURE one OF exam IS

SIGNAL c:BIT; --定义全局信号c

BEGIN

PROCESS(a,b) --进程

VARIABLE d:BIT; --定义局部变量d

BEGIN

d:=a NAND b; --顺序赋值语句

c<=d; --顺序赋值语句

END PROCESS; --结束进程

y<=c NAND a; --并行赋值语句

END one;

(2) VHDL的顺序语句

Text

1)赋值语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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

(2) VHDL的顺序语句

Text

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

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

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

Txt

第一种格式(简化的IF语句)

IF 条件表达式 THEN

顺序语句;

END IF;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

这种语句的执行情况是,当关键词“IF”后的“条件表达式”为真时,则顺序执行其下面的“顺序语句”中的各条语句,当“顺序语句”执行完成后,直接跳到“END IF;”,结束IF语句的执行;当“IF”后的“条件表达式”为假时,则程序直接跳到关键词“ELSE”,执行其下面的顺序语句,直到“END IF;”。因此它是一种两分支的结构。

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

① if语句

Txt

第二种格式(两分支结构)

IF 条件表达式 THEN

顺序语句;

ELSE

顺序语句;

END IF;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

① if语句

Txt

第三种格式(多分支结构)

IF 条件表达式 THEN

顺序语句;

ELSIF 条件表达式 THEN

顺序语句;

ELSE

顺序语句;

END IF;

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

【例】用IF语句描述一个简单的D触发器。

(2) VHDL的顺序语句

Text

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 ;

2) 流程控制语句

① if语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

【例】用IF语句描述一个2输入端的与门。

(2) VHDL的顺序语句

Text

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;

2) 流程控制语句

① if语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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

(2) VHDL的顺序语句

Text

2) 流程控制语句

① if语句

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;

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)

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

② case语句

case语句的书写格式如下:

Txt

CASE 表达式 IS

WHEN 选择值 =>顺序语句;

WHEN 选择值 =>顺序语句;

END CASE;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

条件句中的“选择值”必须在“表达式”的取值范围内,并且要完全覆盖“表达式”的所有取值。

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

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

② case语句

case语句的书写格式如下:

Txt

CASE 表达式 IS

WHEN 选择值 =>顺序语句;

WHEN 选择值 =>顺序语句;

END CASE;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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

(2) VHDL的顺序语句

Text

2) 流程控制语句

② case语句

case语句的书写格式如下:

Txt

CASE 表达式 IS

WHEN 选择值 =>顺序语句;

WHEN 选择值 =>顺序语句;

END CASE;

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

② case语句

case语句的书写格式如下:

Txt

CASE 表达式 IS

WHEN 选择值 =>顺序语句;

WHEN 选择值 =>顺序语句;

END CASE;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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 IS

BEGIN

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;

2. VHDL基本语句

(2) VHDL的顺序语句

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

Text

2) 流程控制语句

② case语句

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

③ loop语句,LOOP语句就是循环语句,它可以使所包含的一组顺序语句被循环执行。

常用的书写格式如下:

Txt

[标号:]FOR 循环变量 IN 循环范围 LOOP

顺序语句;

END LOOP [标号];

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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;

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

③ loop语句

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

Txt

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

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

(2) VHDL的顺序语句

Text

2) 流程控制语句

④ next语句

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

,在LOOP语句中,NEXT语句用于跳出本次循环。其格式有以下三种:

Txt

NEXT;

NEXT [标号];

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

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

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

2) 流程控制语句

⑤ exit语句,EXIT语句与NEXT语句具有十分相似的语句格式和跳转功能,都是LOOP语句的内部控制语句,作用是结束循环状态。与NEXT语句的区别是EXIT语句跳向LOOP语句的终点。

Txt

EXIT语句格式也有三种:

EXIT;

EXIT LOOP 标号;

EXIT LOOP 标号 WHEN 条件表达式;

使用方式与NEXT语句类似。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

3)子程序调用语句

VHDL程序可以应用子程序更有效的完成重复性工作。子程序模块是利用顺序语句定义和完成算法的,但它不能像进程那样从本结构体的其他块或进程结构中读取信号值或向信号赋值,只能通过子程序调用与子程序界面端口进行通信。

Txt

子程序被调用时,首先要进行初始化,执行处理功能后,将处理结果传递给主程序。子程序内部的值不能保持,子程序返回后才能被再次调用并初始化。

子程序有两种类型:过程和函数。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

3)子程序调用语句

①过程(PROCEDURE)语句

Txt

过程语句书写格式为:

PROCEDURE 过程名(参数表) IS

[说明部分;]

BEGIN

过程语句部分;

END PROCEDURE 过程名;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

3)子程序调用语句

②函数(FUNCTION)语句

Txt

函数(FUNCTION)

函数的语句书写格式为:

FUNCTION 函数名(参数表) RETURN 数据类型 IS

[说明部分;]

BEGIN

顺序语句;

RETURN[返回变量名];

END RETURN 函数名;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

3)子程序调用语句

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

Txt

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

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

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

与过程调用不同之处在于调用函数将返回一个指定类型的值。

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

2. VHDL基本语句

(2) VHDL的顺序语句

Text

4) NULL语句

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

Txt

书写格式如下:

NULL;

Company Logo


3966805

5.4 VHDL语言的基本描述语句

黄淮学院

第五章 硬件描述语言

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 IS

BEGIN

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;

2. VHDL基本语句

(2) VHDL的顺序语句

Text

4) NULL语句

【例】使用NULL语句重新描述4选1数据选择器。

Txt

Company Logo


3966805

5.5 常见逻辑单元的VHDL描述

黄淮学院

第五章 硬件描述语言

1.组合逻辑设计

Text

Txt

Company Logo


3966805

5.5 常见逻辑单元的VHDL描述

黄淮学院

第五章 硬件描述语言

2.时序逻辑电路设计

Text

Txt

Company Logo


3966805

5.6 VHDL仿真与综合

黄淮学院

第五章 硬件描述语言

1. VHDL仿真

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

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

Text

保存中间数据结果,提供VHDL源程序中需要的设计库和程序包。

Txt

功能仿真是在未经布线和适配前,用VHDL源程序综合后的文件进行仿真。时序仿真是将设计综合后,由适配器完成具体芯片的映射后得到的文件进行仿真。

Company Logo


3966805

5.6 VHDL仿真与综合

黄淮学院

第五章 硬件描述语言

2. VHDL综合

把VHDL描述转化为门级电路描述,设计过程中的每一步都可称为一个综合环节。

Text

(1) 从自然语言转换到VHDL语言算法表示,即自然语言综合;

(2) 从算法表示转换到寄存器传输级(Register Transport Level,RTL),即从行为域到结构域的综合,即行为综合;

(3) RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合;

(4) 从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。有了版图信息就可以把芯片生产出来了。有了对应的配置文件,就可以使对应的FPGA变成具有专门功能的电路器件。

Txt

Company Logo


3966805

黄淮学院

第五章 硬件描述语言

  • 习题一

  • 1、VHDL的优点是什么?

  • 2、VHDL中最基本的结构是什么?其作用各是什么?

  • 3、说明inout、out 和 buffer有何异同点。

  • 5、VHDL中有哪 3种数据对象?详细说明它们的功

  • 能特点以及使用方法。

  • 6、表达式 c <= a + b 中,a、b和c的数据类型

  • 都是 std_logic_vector,是否能直接进行加

  • 法运算?说明原因和解决方法。

Company Logo


5 6 1

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

BEGIN

c <= a + b;

END one;

Company Logo


3966805

  • 方法一

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

ENTITY SIGGEN IS

PORT ( sig1 : OUT INTEGER RANGE 0 TO 15;

sig2 : OUT INTEGER RANGE 0 TO 15 );

END;

ARCHITECTURE Sim OF SIGGEN IS

BEGIN

sig1 <= 10, 5 AFTER 200 ns, 8 AFTER 400 ns;

sig2 <= 3, 4 AFTER 100 ns, 6 AFTER 300 ns;

END;

SIGGEN的仿真输出波形

Company Logo


3966805

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

ENTITY BENCH IS

END;

ARCHITECTURE one OF BENCH IS

COMPONENT ADDER4

PORT ( 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;

BEGIN

U1 : ADDER4 PORT MAP (a, b, c);

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

END;

BENCH仿真波形图

Company Logo


3966805

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

force命令的格式如下:

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

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)

对ADDER4的结构体进行仿真:

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

BENCH仿真波形图

force a 10 0, 5 200, 8 400

force b 3 0, 4 100, 6 300

  • 执行RUN命令。

Company Logo


5 6 2 vhdl test bench

5.6.2 VHDL测试基准(Test Bench)

8位计数器源程序:

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;

Company Logo


3966805

Else

if 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;

Company Logo


3966805

测试基准文件(Test Bench):

Entity testbench is end testbench;

Architecture testbench_arch of testbench is

File 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 ) is

Variable V_OUT : LINE;

Company Logo


3966805

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 );

Company Logo


3966805

CLK_IN: process

Begin

if end_sim = false then CLK <= '0';

Wait for 15 ns;

CLk <='1';

Wait for 15 ns;

Else

Wait;

end if;

end process;

STIMULUS: process

Begin

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;

Company Logo


3966805

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;

Company Logo


3966805

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

Company Logo


3966805

Thanks!

Company Logo


  • Login