EDA第五章.ppt

Download Report

Transcript EDA第五章.ppt

《电子设计自动化》
Company
LOGO
主讲人:熊娟
黄淮学院电子科学与工程系
本学期主要内容
1
EDA技术基础
2
Protel 99se/DXP的使用
3
Multisim的使用
4
可编程逻辑器件
5
硬件描述语言
6
可编程器件开发系统
Company Logo
教学目的:认识EDA技术,掌握常用EDA工具的
使用方法(Protel 99se\ Multisim\Quartus2),掌握
一种设计语言(VHDL)。
学时数:72学时(课堂教学36学时,上机实验
36学时)
Company Logo
推荐教材及参考书
《电子设计自动化》
张永生主编
中国电力出版社
《EDA技术入门与提
高》,王行、熊寿葵
、李衍主编,西安电
子科技大学出版社
;
《电子设计自动化技
术及应用》,李方明
主编,清华大学出版
社;
《VHDL程序设计教
程》,邢建平 曾繁
泰主编,清华大学出
版社 ;
《Protel 99SE电路
设计技术入门与应用
》,李东生主编,电
子工业出版社 ;
《电路设计与制板—
—Protel DXP入门与
提高》,老虎工作室
主编,人民邮电出版
社;
《Multisim 10电路设
计及应用》,王冠华
主编,国防工业出版
社;
Company Logo
第五章 硬件描述语言(VHDL)
5.1
VHDL概述
5.2
VHDL基本结构
5.3
VHDL基本元素
5.4
VHDL基本描述语句
5.5
常见逻辑单元的VHDL描述
5.6
VHDL仿真与综合
Company Logo
第五章 硬件描述语言(VHDL)
5.1 VHDL概述
1. VHDL的涵义及其发展
(1)涵义
Text
HDL----Hardware Description Language(硬件描述语言)
一种用于描述数字电路的功能或行为的语言。常用的HDL是VHDL、Verilog HDL和
ABEL。
Txt
VHDL:(全称是“超高速集成电路硬件描述语言”)
VHSIC (Very High Speed Integrated Circuit) Hardware Description Language
VHDL主要用于描述数字系统的结构、行 为、功能和接口。
Text
VHDL将一个设计(元件、电路、系统)分为:外部(可视部分、端口)和
内部(不可
视部分、内部功能、算法)。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.1 VHDL概述
1. VHDL的涵义及其发展
(2)发展
Text
20世纪80年代初由美国国防部在实施超高速集成电路(VHSIC)项目时开发的。
1987年由 IEEE 协会批准为 IEEE 工业标准,称为 IEEE1076-1987。各EDA公司相继
推出支持VHDL的设计环境。
1993年被更新为 93 标准,即IEEE1076-1993。进一步提高抽象描述层次,扩展了系
Txt
统描述能力。
1995年,我国国家技术监督局推荐VHDL做为电子设计自动化硬件描述语言的国家标
准。
Text
EDA工具及 HDL的流行,使电子系统向集成化、大规模和高速度等方向发展。
美国硅谷约有80%的 ASIC和 FPGA/CPLD 已采用 HDL进行设计。
黄淮学院
Company Logo
用VHDL描述的可置数16位计数器
第五章 硬件描述语言(VHDL)
16位计数器电路原理图
5.1 VHDL概述
2. VHDL的特点
Text
(1)VHDL具有强大的语言结构,系统硬件描述能力强、设计效率高;具有较高的抽象
描述能力。(如:一个可置数的16位计数器)
(2)VHDL语言可读性强,易于修改和发现错误。
Txt
(3)VHDL具有丰富的仿真语句和库函数,可对VHDL源代码进行早期功能仿真,有利
于大系统的设计与验证。
(4)VHDL设计不依赖于器件,与工艺无关 。
(5)移植性好。
(6)VHDL体系符合TOP-DOWN和CE(并行工程)设计思想。
Text
(7)VHDL设计效率高,产品上市时间快,成本低。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
补充知识
VHDL与C、C++的区别:
C、C++ 代替汇编等语言
VHDL 代替原理图、逻辑状态图等
VHDL与电原理图描述的区别:
VHDL具有较强的抽象描述能力,可进行系统行为级别的描述。描述简洁,效率高。
VHDL描述与实现工艺无关。
电原理图描述需给出完整、具体的电路结构图,不能进行抽象描述。描述繁杂,效率
低。电原理图描述与实现工艺有关。
VHDL与常规计算机程序的区别:
VHDL从根本上是并发执行的,通常称之为代码。
VHDL中只有在进程(PROCESS)、函数(FUNCTION)和过程(PROCEDURE)内部的
语句才是顺序执行的。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.2 VHDL基本结构
一个完整的VHDL语言程序通常包含5部分:
◆实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中所有的输入和
输出端口;
Text
◆结构体 (Architecture):描述系统内部的具体结构和操作(行为);
◆包集合 (Package):存放各设计模块能共享的数据类型、常数和子程序等;
◆配置 (Configuration):指定实体所对应的结构体;
Txt
◆库 (Library):存放已经编译的实体、结构体、包集合和配置。
不管是简单的数字电路(可以是一个与门),还是复杂的数字电路(可以是一个微处理
Text
器或一个系统),其基本构成是一致的。它们主要是由实体说明(Entity
Declaration)
和结构体(Architecture Body)两部分构成。
黄淮学院
Company Logo
第五章 硬件描述语言(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;
个器件逻辑功能
的实现
a
c
b
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.2 VHDL基本结构
库
STD库:包集合“Standard”和“Textio”
WORK库:当前工作库
1.库分类
IEEE库:标准包集合STD_LOGIC_1164
用户自定义库:
设计库(隐含
打开)(不需
定义
资源库(用
LIBRARY)
2. 库说明——放在设计单元的最前面
LIBRARY 库名;
ALL
USE 库名. 程序包名.项目名;
LIBRARY ieee;
USE ieee. Std_logic_1164.all;
黄淮学院
Company Logo
常用库
Company Logo
第五章 硬件描述语言(VHDL)
包集合
5.2 VHDL基本结构
1. 是库结构中的一个层次
2. 单纯地罗列设计中经常用到的信号定义、数据类型、元件语句、函数定义、过程定义
等
3. 用于封装属于多个设计单元分享的信息
STD_LOGIC_1164程序包(std-logic类型以
及相关函数)
常用的预定义的程序包
STD_LOGIC_ARITH程序包(算术函数)
STD_LOGIC_UNSIGNED和
STD_LOGIC_SIGNED程序包(符合算术函
数和无符合算术函数)
STANDARD和TEXTIO程序包(标准和文
件输入/输出程序包)
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
配置
5.2 VHDL基本结构
配置可以把特定的结构体
关联到(指定给)一个确定的实体。
实体
结构体1
结构体N
Configuration 配置名 of 实体名 is
For 选配结构体名
End For;
End 配置名;
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
配置
例: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;
5.2 VHDL基本结构
Configuration pg1 of decode is
For struc1
End For;
End pg1;
Configuration pg2 of decode is
For struc2
End For;
End pg2;
译码器实体
译码器
结构体2
结构体1
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
实体
实体的一般格式为:
5.2 VHDL基本结构
用来表示被设计电路芯片的名称。
由英文字母和数字组合而成,不
允许有中文字符,第一个字符必
须是英文字母。必须与VHDL程序
的文件名称相同。
a
b
test
c
library ieee;
use ieee.std_logic_1164.all;
ENTITY 实体名 IS
[ GENERIC(常数名:数据类型:设定值)]
PORT
( 端口名1:端口方向 端口类型;
……
端口名n:端口方向 端口类型);
END [实体名];
entity test is
port ( a,b: in std_logic;
c: out std_logic);
end test;
要点:
以 entity 实体名 is 开始;以 end 实体名;
结束
实体的主要内容为端口(port) 说明,其中主要
包括:信号名、信号模式、信号类型
architecture behav of test is
begin
c<=a and b;
黄淮学院
end behav;
Company Logo
第五章 硬件描述语言(VHDL)
实体
5.2 VHDL基本结构
1. 类属(Generic)说明
由英文字母和数字组
合而成,第一个字符
必须是英文字母
类属为设计实体与外界通信的静态信息提供通道,用来规定端口的大小、实体中子元件
的数目和实体的定时特性等。类属说明是可选部分。如果需要,可使用以“GENERIC”
语句来指定该设计单元的类属参数(如延时、功耗等)。
格式:
GENERIC(常数名:数据类型:设定值;
∶
常数名:数据类型:设定值);
例如: GENERIC(wide:integer:=32);
GENERIC(tmp:integer:=1ns);
VHDL综合器仅支
持数据类型为整数
的类属值。
--说明宽度为32
--说明延时1 ns
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
实体
5.2 VHDL基本结构
1. 类属(Generic)说明
例如:加入类属说明的2输入的与门的实体说明
ENTITY and2 IS
--定义risew为上升沿
GENERIC ( risew: TIME :=1ns;
fallw: TIME :=1ns );
--定义fallw为下降沿
PORT ( A: IN STD_LOGIC;
--定义A、B和Y为逻辑位
B: IN STD_LOGIC;
Y: OUT STD_LOGIC );
END and2;
同类型的参数名可放在同一个说明语句中。
GENERIC (rise,fall:time);
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
实体
2. 端口(port)说明
5.2 VHDL基本结构
端口说明的一般格式为:
port (端口名{,端口名} :信号方向
数据类型;);
port (x,y: IN Bit;
sum: OUT Bit;
input: IN Bit_Vector(1 TO n);
端口命名:英
Output: OUT Bit);
文字母/英文
x
字母加数字
y
实
input
VHDL:不区分大小写!
体
output
sum
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
实体
5.2 VHDL基本结构
同方向、同类型的端
口可放在同一个说明
语句中。
2. 端口(port)说明
信号流动的方向(端口模式),端口模式用来说明数据传输通过该端口的方向。端
口模式有以下几类:
IN(输入):仅允许数据流进入端口。主要用于时钟输入、控制输入、单向数据输入。
OUT(输出):仅允许数据流由实体内部流出端口。该模式通常用于终端计数一类的输
出,不能用于反馈。
INOUT(双向):可以允许数据流入或流出该实体。该模式也允许用于内部反馈。
BUFFER(输出/内部反馈):该模式允许数据流出该实体和作为内部反馈时用,但不允
许作为双向端口使用。该端口只能在实体内赋值,不能外部驱动。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
实体
5.2 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);
x
test
output
y
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
实体举例
二选一电路的实体说明:
entity mux is
port (
a: in std_logic;
b: in std_logic;
s: in std_logic;
f: out std_logic
);
end mux;
A
B
S
mux
F
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
可任意取,
但一般用描述方式定
结构体
义
behav(行为级);
结构体定义了设计单元具体的功能,描述了该基本设计单元的行为、元件和内部的连接
dataflow(数据流
关系。
级); struc(门级)
结构体的一般格式如下:
5.2 VHDL基本结构
ARCHITECTURE 结构体名 OF 实体名 IS
[声明语句]
BEGIN
是指对结构体需要使用的信号、常数、数据类型和函数进
功能描述语句
行定义和说明。
END [结构体名];
具体描述结构体的功能和行为。以各种不同的描述风格
一个实体可对应多个结构体,每个结构体代表该实体功能的不同实现方案或不同实现方
式。同一时刻只有一个结构体起作用,通过CONFIGURATION决定用哪个结构体进行仿
表达:信号赋值语句;元件例化语句;进程语句等,这些语
真或综合。
句都是并发(同时)执行的,与排列顺序无关。
 在结构体描述中,具体给出了输入、输出信号之间的逻辑关系。即它定义
黄淮学院
了设计单元的具体功能。
Company Logo
第五章 硬件描述语言(VHDL)
结构体举例
二选一电路的结构体描述2:
architecture rtl of mux is
begin
architecture first_rtl of mux is -- 结构体定义
mux_p: process (a,b,s)
begin
begin
mux_p: process (a,b,s)
if ( s=‘1’ ) then
begin
顺
功能描述 进
f <= a;
f <= (a and s) or (b and not s);
序
语句
else
程
end process mux_p;
语
f <= b;
end first_rtl;
句
end if;
end process mux_p;
end rtl;
二选一电路的结构体描述1:
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
1. 词法规则
(1)注释
由两个短线“--”开始的一行文字,如:
Text
-- this is a counter
(2)数字
十进制整数表示法:如: 5E2(=500),51e0(=51),12_345(=12345),
012(=12)
Txt
实数(带小数的十进制数):必需带小数点。如:23.34,0.0,44.99E-2(=0.4499)
以数制基数表示: 2#1111_1110#(=254) , 10#170#(=170) , 16#2E#(=46)
格式: 基数#数字文字#E指数
Text
(3)字符和字符串
字符:用单引号引起来的ASCII字符,可以是数字,也可以是符号或字母。区分大小写.如:
黄淮学院
‘*’,‘Z’
字符串:用双引号引起来一维的字符数组。区分大小写.如:“FALSE”, O“34”
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
1. 词法规则
(4)标识符
Text
定义常数、变量、信号、端口、子程序或参数的名字。
◆基本标识符的要求(短标识符)(87标准):
• 以英文字母开头;
Txt
• 不连续使用下划线“_”;
• 不以下划线“_”结尾;
• 由26个大小写英文字母、数字0-9及下划线“_”组成的字符串。
•基本标识符中的英文字母不分大小写;
• VHDL的保留字(关键字)不能作为标识符使用。
Text
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
1. 词法规则
(4)标识符
合法标识符
my_counter、
Decoder_1、
FFT、
Sig_N、
Not_Ack、
State0、
entity1
Text
不合法标识符
_Decoder_1、
Txt
2FFT、
Sig_#N、
Not-Ack、
ALL_RST_、
Text
AB AC、
loop、
A--C
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
1. 词法规则
(4)标识符
Text
定义常数、变量、信号、端口、子程序或参数的名字。
◆扩展标识符的要求(93标准):
•两端以反斜杠来界定; •可以以数字或“_”打头;
Txt
•允许包含图形符号;
•允许使用VHDL保留字。
•扩展标识符中的英文字母区分字母大小写;
如: \74LS163\、\Sig_#N\、 \entity\、\ENTITY\等都是合法的扩展标识符。
Text
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 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
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
1. 词法规则
(6)保留字(关键字)
Text
是VHDL中具有特别含义的单词,只能做为固定的用途,用户不能用其做为标识符。
Txt
如:if else elsif end wait when case
entity architecture package component
xnor xor
Text
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
2. VHDL的数据对象
三种对象:常量(Constant)
Text
变量(Variable)
信号(Signal)
三种对象的物理含义:
Txt
•常量代表数字电路中的电源、地、恒定逻辑值等常数
•变量代表暂存某些值的载体,常用于描述算法;
•信号代表物理设计中的某一条硬件连接线,包括输入、输出端口
三种对象的特点及说明场合:
Text
信号:全局量, 用于architecture、 package、entitiy。
变量:局部量,用于process、function、 procedure。
常量:全局量,可用于上面两种场合。其作用范围取决于常量被定义的位置。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
2. VHDL的数据对象
1、常量说明
Text
常量说明:对某一个常量名赋予一个固定的值。
格式:
constant 常数名:数据类型:=
表达式;
Txt
例:
Constant Vcc:real:=5.0; --定义Vcc的数据类型是实数,赋值为5.0V
Constant bus_width: integer := 8; --定义总线宽度为常数8
常量数据类型必须与表达式的数据类型一致。常量是一个恒定不变的量,一旦被赋值就
Text
不能再改变。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
2. VHDL的数据对象
2、变量说明
Text
变量只能在进程语句、函数语句和过程语句结构中使用。变量的赋值是直接的,非
预设的,分配给变量的值立即成为当前值,变量不能表达“连线”或存储元件,不
能设置传输延迟量。
变量定义语句格式:
Txt
variable 变量名:数据类型 :=初始值;
例:
Variable count: integer 0 to 255:=20 ; -- 定义count整数变量,变化
Text 范围0~255,初始值为20。
变量的初值可用于仿真,但综合时被忽略。
变量赋值语句:
目标变量名 := 表达式;
黄淮学院
x:=10.0; -- 实数变量赋值为10.0
Company Logo
Y:=1.5+x; -- 运算表达式赋值,注意表达式必须与目标变量的数据类型相同
第五章 硬件描述语言(VHDL)
5.3 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
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
信号与变量的区别
例:进程中信号与变量的使用
4、信号与变量的区别 entity ex is
Text
①信号除当前值外有许多相关信息,如历史信息;而变量只有当前值。②进程对信号敏
port(…..);
感而不对变量敏感。③信号可以是多个进程的全局信号。
end ex;
例:进程中信号与变量的使用
architecture arch_ex of ex is
signal a, b :std_logic;
Txt
begin
process(a, b)
variable c, d : std_logic;
begin
c:= a + b; Text
d:= a - b;
……
黄淮学院
end process;
end arch_ex;
Company Logo
2. VHDL的数据对象
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
2. VHDL的数据对象
5、信号与端口的区别:
Text
除没有方向说明外,信号与 实体的“端口(PORT)” 概念相似。端口是一种隐形的信
号。
Txt
entity exam is
port([signal] a, b: in std_logic;
[signal] c: out std_logic);
end exam;
端口是一种有方向的信号。即输出端口不能读出数据,只能写入数据;输入端口不能
Text
写入数据,只能读出数据。 信号本身无方向,可读可写。
黄淮学院
Company Logo
2 31
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
VHDL是一种强数据类型语言。 要求设计实体中的每一个常数、信号、变量、函数以
Text
及设定的各种参量都必须具有确定的数据类型,并且相同数据类型的量才能互相传递和
作用。
VHDL数据类型分为:
•标准数据类型
Txt
• 用户自定义数据类型
• IEEE 预定义标准
(1)标准数据类型(10种)
●整数:(Integer)
Text
integer 表示所有正的和负的整数。硬件实现时,利用32位的位矢量来表示。可实现的整
数范围为: -( 2 -1) ~( 2 -1) 。 VHDL综合器要求对具体的整数作出范围限定,
否则无法综合成硬件电路。 如:signal s : integer range 0 to 15; 信号 s 的取值范围是
黄淮学院
0-15,可用4位二进制数表示,因此 s 将被综合成由四条信号线构成的信号。
31
31
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
Text
(1)标准数据类型(10种)
●自然数(natural)和正整数(positive)
natural是integer的子类型,表示非负整数。 positive是integer的子类型,表示正整数。
Txt
●实数(REAL)或称浮点数, 取值范围:-1.0E38 - +1.0E38。实数类型仅能用于VHDL
仿真器,一般综合器不支持。
1.0
--十进制浮点数
8#43.6#e+4 --八进制浮点数
43.6E-4
--十进制浮点数
Text
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
Text
(1)标准数据类型(10种)
●位(bit)
bit 表示一位的信号值。取值为0和1,用于逻辑运算,放在单引号中,如 ‘0’ 或
‘1’。
Txt
●位矢量 (bit_vector)
位矢量使用双引号括起来的一组位数据,如“1011”。使用位矢量时必须注明位宽,即数
组中元素个数和排列,如:SIGNAL S1:BIT_VECTOR(15 DOWNTO 0);
●布尔量(boolean)
Text
布尔量具有两种状态:false 和 true常用于逻辑函数,取值为FALSE和TRUE,不是
数值,不能运算,一般用于关系运算符。如相等(=)、比较(<)等中作逻辑比较。 如,
bit 值转化成boolean 值: boolean_var := (bit_var = ‘1’);
●字符(CHARACTER)
黄淮学院
●字符串
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
Text
(1)标准数据类型(10种)
●时间:(Time)
物理量数据,完整的包括整数和单位两个部分,用至少一个空格隔开,仅用于仿真
不可综合;如:55 ms,20 ns
Txt
●错误等级(Severity Level) :
表示系统状态,仅用于仿真不可综合;仿真中用来指示系统的工作状态,共有四种:
NOTE(注意)、 WARNING(警告)、 ERROR(出错)、 FAILURE(失败)
Text
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
Text
(2)用户自定义数据类型
可以由用户定义的数据类型有:枚举类型、整数类型、数组类型、存取类型、文件类型、
时间类型、实数类型。
用户用TYPE语句和子类型定义语句SUBTYPE实现用户自定义数据类型。TYPE语句的格
Txt
式为:
TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型 或
TYPE 数据类型名 IS 数据类型定义
例如:
Text 0) of integer;
数组:type value_type is array (127 downto
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’);
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
Text
(2)用户自定义数据类型
SUBTYPE语句的格式为:
SUBTYPE 子类型名 IS 基本数据类型定义 RANGE 约束范围
Txt
如:subtype digits is integer range 0 to 9;
由subtype 语句定义的数据类型称为子类型。
Text
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
(3) IEEE 预定义标准
标准逻辑位(Std_Logic):
‘U’, --初始值;‘X’,
--不定;
Text
‘0’, --0; ‘1’, --1
‘Z’, --高阻;‘W’, --弱信号不定
‘L’, --弱信号0;‘H’, --弱信号1
Txt
‘-’
--不可能情况
标准逻辑位矢量( Std_Logic_vector):基于Std_Logic类型的数组;
使用Std_Logic和 Std_Logic_Vector要调用IEEE库中的Std_Logic_1164 程序包;就
综合而言,能够在数字器件中实现的是“-、0、1、Z”四种状态。
在条件语句中,必须要全面考虑Std_Logic的所有可能取值情况,否则综合器可能
Text
会插入不希望的锁存器。
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
3. VHDL的数据类型
(4) 数据类型转换
Text
VHDL为强定义类型语言,不同类型的数据不能进行运算和直接赋值。不同类型的数据
对象必须经过类型转换,才能相互操作。
1)直接类型转换方式
Txt
对相互间非常关联的数据类型(如整型、浮点型),可进行直接类型转换。格式:
数据类型标识符(表达式)
如:variable a, b : real;
variable c, d : integer;
……
Text
a:= real(c);
d:= integer(b);
2)类型转换函数方式
黄淮学院
通过调用类型转换函数,使相互操作的数据对象的类型一致,从而完成相互操作。
Company Logo
第五章 硬件描述语言(VHDL)
数据类型转换
5.3 VHDL基本元素
在“STD_LOGIC_1164”、“STD_LOGIC_ARITH”和
提供的数据类型变换函数。
程序包
函数名称
TO_BIT
Text
TO_BIT VECTOR
STD_LOGIC_1164
TO_STD ULOGIC
Txt
TO_ STD ULOGIC VECTOR
CONV_INTEGER
STD_LOGIC_ARITH
CONV_UNSIGNED
Text
CONV_ STD_LOGIC_VECTOR
STD_LOGIC_UNSIGNED
CONV_INTEGER
“STD_LOGIC_UNSIGNED”的程序包中
功 能
由STD_LOGIC转换为BIT
由STD_LOGIC_VECTOR转换为
BIT_VECTOR
由BIT转换为STD_LOGIC
由BIT_VECTOR转换为
STD_LOGIC_VECTOR
由UNSIGNED、SIGNED转换为
INTEGER
由INTEGER、SIGNED转换为
UNSIGNED
由INTEGER、UNSIGNED、SIGNED
转换为STD_LOGIC_VECTOR
黄淮学院
由STD_LOGIC_VECTOR转换为
Company Logo
INTEGER
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
4. VHDL的运算操作符
Text
(1)运算符
●算术运算符:+, -, *, / , MOD, REM ,SLL ,SRL ,SLA, SRA ,ROL ,
ROR ,**,ABS
 关系运算符:=, /=,<, > , <=,Txt
>=
赋值运算符:<=,:=
逻辑运算符:AND,OR,NAND,NOR,XNOR,NOT,XOR
关联运算符:=>
Text
其他运算符:+, -,&(加操作符“+”、减操作符“-”、 串联(并置)操作符“&”)
黄淮学院
Company Logo
第五章 硬件描述语言(VHDL)
5.3 VHDL基本元素
4. VHDL的运算操作符
(2)运算符优先级别
Text
逻辑、算术运算符( NOT, **,ABS)
乘法运算符(/ , MOD, REM, * )
正负运算符:+, -, Txt
加减、并置运算符:+, -, &
关系运算符:=, /=,<, > , <=, >=
Text
逻辑运算符:AND,OR,NAND,NOR,XNOR,NOT,XOR
取余运算(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
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
如何使用VHDL描述硬件实体
Entity(实体)
Text
Architecture 1(构造体)
process(进程结构)
Txt
Architecture N
subprograms(子程序)
block(块结构)
Text
procedure(过程)
function(函数)
黄淮学院
Company Logo
第五章 硬件描述语言
又称寄存器(RTL)
级描述,即采用进程
又称算法级描述,
5.4 VHDL语言的基本描述语句
语句顺序描述数据流
即采用进程语句顺
在控制流作用下被加
序描述设计实体的
又称门级描述,即采用
工、处理和存储的全
行为,这是最高层
并行处理语句,使用最
1.结构体的描述方法
次的描述方法。
过程。此描述方式与
基本的逻辑门单元描述
采用原理图输入方式
(1)行为描述法:(
behavioral description)这是以元器件或电路模块为基础的描述
设计实体内的结构组织
Text
进行电路设计处于同
方法,描述元器件或电路模块之间输入、输出的逻辑关系,是对它们性能或行为的描述。
和元件互联关系
一个层次。
在VHDL语言中对这一类的描述称作行为描述。
(2)数据流描述法:数据流描述(dataflow description)法主要反映数据经过一定的
Txt
逻辑运算后在输入和输出之间的传送过程。这种描述方法以表示数据在设计实体中从输
入到输出的传输或流向为目的。使用并发语句(concurrent procedure call也叫并发过
程调用语句)描述。
(3)结构描述法:(structural description),它以描述元部件(component)为基
础,通过描述模块与模块之间的连接关系来表示被设计实体的构成和性能。这种描述方
Text
法适用于多层次设计,把一个复杂的系统分解成多个子系统,将每一个子系统设计成一
个模块,再用结构描述法将各模块之间的连接关系写出来形成一个整体。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(1)行为描述法: 特点:对硬件知识的依赖最少,程序结构简单.
Text
描述该设计单元的功能(即该单元能做些什么)。往往不涉及设计实体的电路结构。
主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送;程序中,往往大量
采用算术运算、关系运算、惯性延时、传输延时等难以进行逻辑综合和不能进行逻辑综
Txt
合的VHDL语句。
采用行为描述的VHDL程序主要用于系统数学模型的仿真或系统工作原理的仿真。
描述硬件电路的行为模式由指令 process(进程)引导,配合if…then…else,
case…is…when等具有顺序性的指令来完成。在行为描述里,其程序的设计特性与普通
的高级语言十分相似,它们会依指令语句出现的顺序作先后的处理。
Text
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(1)行为描述法:例:2选1数据选择器——
Text采用行为描述方式
ENTITY mux21a IS
PORT( a, b: IN BIT;
Txt
实体
s: IN BIT;
y: OUT BIT);
END mux21a;
ARCHITECHURE behv OF mux21a ISText
BEGIN
y<=a WHEN s=‘0’ ELSE
结构体
黄淮学院
b;
特点:对硬件知识的依赖最少,程序结构简单.Company Logo
END behv;
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(1)行为描述法:
Text
例: 8位比较器结构体的行为描述
LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY comparator IS
Txt ( 7 DOWNTO 0 );
PORT ( a, b : IN STD_LOGIC_VECTOR
c : OUT STD_LOGIC) ;
END comparator ;
ARCHITECTURE behavior OF comparator IS
BEGIN
PROCESS ( a, b )
Text a
BEGIN
8位比较器
IF a = b THEN c<=’1’ ;
c
ELSE c<=’0’;
a=b
END IF;
b
黄淮学院
END PROCESS;
END behavior ;
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(2)数据流描述法:
Text
以类似于寄存器传输级的方式描述数据的传输和变换。主要使用并行的信号赋值语
句,显式表示该设计单元的行为,隐式表示该设计单元的结构。RTL描述是用于逻辑
综合的实体描述方法。 与行为描述不同,RTL描述中指定了各个寄存器的时钟,确
Txt
定了存储单元的复用结构及总线,指定了电路元件之间的连接关系。
RTL数据模型
描述的语句与实际寄存器的结构模型之间存在直接的映射关系,程序的描述隐含了
电路结构。 在RTL描述中,信号代表了硬件中数据的实际移动方向以及电路的互连
关系。由于RTL描述用于逻辑综合,故RTL描述对语句有严格限制:
一些难以综合的语句(如信号代入中的延时等)
Text
一些抽象的数据类型(如实数、记录、文件等)
一些难以综合或不可综合的运算符(如除法/、乘方**等)
——都不能在程序中使用
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(2)数据流描述法:
特点:
根据电子实体的逻辑表达式或逻辑真值表进行描述
程序结构简单,容易进行逻辑综合,综合结果最优化;
无法应用于大型设计中;
利用信号的赋值方式来描述电路内信号数据的流动情形



直接式的信号赋值“<=”
条件式的信号赋值“when…else”
选择式的信号赋值“with…select…when”
3种信号赋值方式皆为并发性
的赋值,没有时间的前后顺序
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(2)数据流描述法:
Text
例:2选1数据选择器——采用寄存器传输(RTL)描述方式
ENTITY mux21a IS
PORT( a, b: IN BIT;
s: IN BIT;
实体
Txt
y: OUT BIT);
END mux21a;
Text
ARCHITECHURE dataflow OF mux21a IS
BEGIN
y<=(b AND s) OR (NOT s AND a);
END dataflow;
结
构
体
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(2)数据流描述法:
Text
两个信号赋值语
句的执行没有所
谓的先后顺序
Y <= A and B;
Z <= (NOT A) and (NOT D) or C;
Txt
Text
对于硬件电路来说,所有的逻辑门在任何时刻都处于执行状态,这是与
传统计算机语言的根本不同之处!
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(3)结构描述法:
Text
结构化描述是常用的层次化设计方法。层次化设计便于多人协作,同时并行设计。在结
构化设计中,每个设计层次可以作为一个元件,而无需考虑元件的复杂性。每个元件可
以分别仿真,然后将各个元件组合起来构成系统,进行整体调试。
Txt
描述该设计单元的硬件结构(该硬件是如何构成的)。主要使用元件例化语句及配置指定语
句描述元件的类型及元件的互连关系用户将自己设计的电路标准化后作为一个元件放在
库中供调用的过程称为元件例化,或者称为标准化。
步骤1:元件的声明 COMPONENT 元件名IS
PORT (端口名表);
Text
END COMPONENT;
步骤2:各元件间的连线映射(Mapping)
例化名:元件名PORT MAP( [端口名=>] 连接端口名,...);
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(3)结构描述法:
映射方式
Text
参数映射关系和端口映射关系有两种:位置映射和名称映射。
1.位置映射方法
PORT MAP (a(0) ,Txt
b(0), x(0) );
PORT ( a , b: IN STD_LOGIC ;
c: OUT STD_LOGIC ); --元件
2. 名称映射方法
Text(a=>a(0), c=> x(0), b=>b(0) );
U0:xnor2 PORT MAP
黄淮学院
Company Logo
第五章
硬件描述语言
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY comparator IS
5.4
PORT
( a,VHDL语言的基本描述语句
b: IN STD_LOGIC_VECTOR
( 7 DOWNTO 0 );
c: OUT STD_LOGIC );
1.结构体的描述方法
END comparator;
ARCHITECTURE structure OF comparator IS
(3)结构描述法:
SIGNAL x: Text
STD_LIGIC_VECTOR ( 7 DOWNTO 0 ) ;
COMPONENT xnor2
例:8位比较器结构体的结构化描述
PORT ( a, b: IN STD_LOGIC; c: OUT STD_LOGIC );
END COMPONENT;
BEGIIN
Txt
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) );
Text
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);
Company Logo
END structure;
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
=
a0
b0
1.结构体的描述方法
(3)结构描述法:
例:8位比较器结构体的结构化描述
Text
x(0)
x(1)
=
a1
b1
底层元件二输入同或门的描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; Txt a6
ENTITY xnor2 IS
b6
PORT ( a, b: IN STD_LOGIC;
c: OUT STD_LOGIC );
a7
END xnor2;
Text b7
ARCHITECTURE bool OF xnor2 IS
BEGIN
c<=NOT ( ( NOT a)AND b OR a AND( NOT b));
END bool;
&
x(6)
c
=
=
x(7)
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1.结构体的描述方法
(4)总结
Text

数据流描述/RTL描述——信号赋值语句
Txt

行为描述——进程/数学模型

结构描述——元件例化/逻辑元件连接
Text
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本描述语句
并行语句和顺序语句是程序设计中两类基本描述语句。在逻辑系统的设计中,这些
Text
语句能够从多方面完整地描述数字系统的硬件结构和基本逻辑功能,其中包括通信的方
式、信号的赋值、多层次的元件例化以及系统的行为等。
(1) VHDL的并行语句
在VHDL中,并行语句有多种语句格式,各种并行语句的执行都是同步进行的,或者
Txt
说是并行运行的,其执行的方式与书写的顺序无关。
这种并行性是由硬件本身的并行性决定的,即一旦电路接通电源,它的各部分就会
按照事先设计好的方案同时工作。
并行语句在执行时,各并行语句之间可以有信息来往,也可以互为独立、互不相关。
Text
另外,每一并行语句内部的语句可以有两种不同的运行方式,即并行执行方式(如块
语句)和顺序执行方式(如进程语句)。
黄淮学院
Company Logo
ARCHITECTURE
第五章 硬件描述语言
并
元
进 信号 块 信号
信号
信号 生
行
件
成
语
程
信
例
语
句
语
号
化
句
句
赋
语
值
句
语
句
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
END ARCHITECTURE
左图所示给出了常用的并行语句以及在同一
Txt结构体中各种并行语句运行的示意图。
这些语句不必同时使用,每一语句模块
都可以独立异步运行,模块之间并行运行,
并通过信号可交换信息。
Text
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
1)进程语句(PROCESS)
进程语句定义顺序语句模块,用于将从外部获得的信号值,或内部的运算数据向其他的
信号进行赋值。
Txt
进程语句是VHDL程序中使用最频繁和最能体现VHDL语言特点的一种语句,其原因大概
是由于它的并行和顺序行为的双重性,以及其行为描述风格的特殊性。一个结构体中可
以包括多个进程语句,各进程语句之间或各进程语句与其他并行语句之间的通信是依靠
信号(SIGNAL)来传递的。
Text
进程语句通常由一段程序构成,虽然进程语句本身是并行语句,但其内部的语句是由顺
序语句构成的。因此,在编写PROCESS的内部语句时要特别注意各语句书写的先后顺序,
不同的语句书写顺序将导致不同的硬件设计结果。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
1)进程语句(PROCESS)
(2)敏感信号。小括号中的信号是进程的敏感
信号,进程的敏感信号可以由一个或多个组
成,它是进程内所用到的一些信号。当任何
一个敏感信号发生变化时,该进程才能被执
行(或激活),其内部的顺序语句才能被执行一
Text
遍,当进程最后一条语句执行完成后,将返
回到进程的第一条语句,以等待下一次敏感
信号的变化。
进程语句的书写格式为:
[标号:]PROCESS(信号1,信号2,…)
[进程说明语句]
BEGIN
[顺序语句]
END PROCESS [标号];
Text
(1)标号。标号是进程的名称,是为了
区别同一结构体中的不同进程而设置
的,但它并不是必需的。
(3)进程说明语句。进程说明语句用于对
该进程内所用到的“局部数据”进行定
义(如常数、变量、信号等),这里所说
的“局部数据”就是该数据只对本进程
有效,只能用于本进程内,不可用于其
他进程或并行语句中。若想把“局部数
据”带出进程,则必须把该数据传递给
“全局信号”(在结构体说明语句或实体
说明部分所定义的信号),由“全局信号”
带出该进程并可为其他进程或并行语句
黄淮学院
所使用。
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
执行过程终止
2. VHDL基本语句
进程的工作原理
Text
当某个敏感信号的值发生
Txt
变化时,每个进程语句立
即完成进程内顺序语句所
定义的功能行为。
Text
顺序语句所定义的功
能行为的结果可以赋值给
信号,并通过信号被其他
黄淮学院
的进程读取或赋值。
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1)进程语句(PROCESS)
进程与时钟
在每个上升沿启动一次进程(执行进程内所有的语句)。
上升沿描述:Clock’ EVENT AND Clock=‘1’
下降沿描述:Clock’ EVENT AND Clock=‘0’
上升沿描述: rising_edge (Clock)
下降沿描述: falling_edge (Clock)
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
TextP1为进程标号,时钟clk为敏感信号。每当
clk发生一次变化时,BEGIN和END
1)进程语句(PROCESS)
PROCESS之间的顺序语句就会运行一次。
【例】
由于时钟clk变化包括上升沿和下降沿,为
ARCHITECTURE a OF states_mach ISTxt了准确描述,在顺序语句中用了一个条件判
BEGIN
断语句“IF (clk´event AND clk=´1´)
P1:PROCESS(clk)
THEN”来判断clk的上升沿。若要判断clk的
BEGIN
下降沿,可用“IF (clk´event AND
IF (clk´event AND clk=´1´) THEN clk=´0´) THEN”语句。
Text
current_state<=next_state;
END IF;
END PROCESS;
黄淮学院
┇
END a;
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;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
1)进程语句(PROCESS)
进程注意事项
 进程本身是并行语句,但内部为顺序语句;
 进程在敏感信号发生变化时被激活,在使用了敏感表的进程中不能含wait语
句;
 在同一进程中对同一信号多次赋值,只有最后一次生效;
 在不同进程中,不可对同一信号进行赋值;
 一个进程不可同时对时钟上、下沿敏感。
 进程中的信号赋值是在进程挂起时生效的,而变量赋值是即时生效。
 相对于结构体而言,信号具有全局性,是进程间进行并行联系的重要途径。
 进程为综合器支持,且其建模方式直接影响仿真和综合结果,综合后对应于
黄淮学院
进程的硬件结构对进程中所有可读入信号都是敏感的。
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
2)并行信号赋值语句
并行信号赋值语句有三种形式:简单信号赋值语句、选择信号赋值语句和条件信号赋值
语句。这三种信号赋值语句的共同特点是赋值目标必须都是信号,所有赋值语句与其他
Txt
并行语句一样,在结构体中的执行是同时发生的。
①简单信号赋值语句
简单信号赋值语句是并行语句结构的最基本单元,它的语句书写格式如下:
赋值目标<=表达式;
应用该赋值语句时一定要注意,赋值目标的数据对象必须是信号,赋值运算符“<=”两边
黄淮学院
的数据类型必须一致。
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句 【例】本例的结构体中描述了3个基本的逻辑门。
Text
ENTITY gate IS
2)并行信号赋值语句
PORT(a,b:IN BIT;
y1,y2,y3:OUT BIT);
①简单信号赋值语句
END gate; Txt
ARCHITECTURE one OF gate IS
BEGIN
y1<=a AND b; --与门
y2<=a OR b; --或门
y3<=NOT a; --非门
END one;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
2)并行信号赋值语句
②选择信号赋值语句
选择信号赋值语句的书写格式如下:
Txt
WITH 选择表达式 SELECT
赋值目标信号<=表达式 WHEN 选择值,
表达式 WHEN 选择值,
…
表达式 WHEN 选择值;
a.当“选择表达式”的值发生变化时,将启动此语句对各子句的“选择值”进行测试对
黄淮学院
比。当发现有满足条件的子句时,就将此子句中的“表达式”值赋给“赋值目标信
号”。
Company Logo
第五章 硬件描述语言
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
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
2)并行信号赋值语句
②选择信号赋值语句
ENTITY mux4_1 IS
Text
PORT(a,b,c,d:IN BIT;
sel:IN BIT_VECTOR(1 DOWNTO 0);
y:OUT BIT);
END mux4_1;
Txt
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;
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
2)并行信号赋值语句
③条件信号赋值语句 条件信号赋值语句书写格式如下:
Txt
目标信号<=表达式 WHEN 赋值条件 ELSE
表达式 WHEN 赋值条件 ELSE
…
表达式;
a.条件信号赋值语句与选择信号赋值语句的最大区别在于后者的各个“选择值”之间处于
同一优先级,而前者的各个“赋值条件”具有优先顺序,优先级由高到低的顺序与语句
黄淮学院
书写顺序一致。
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
2)并行信号赋值语句
③条件信号赋值语句
Txt
b.当某个“赋值条件”得到满足(即其值为“真”)时,立即将该条件“WHEN”前的“表
达式”值赋给“目标信号”;当几个“赋值条件”都得到满足时,优先级高的那个条件
“WHEN”前的“表达式”值赋给“目标信号”;当所有的“赋值条件”都得不到满足时,
最后一个“ELSE”关键词后的“表达式”值赋给“目标信号”。
c.每行语句后没有标点符号,最后一行“表达式”用“;”结束。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
2)并行信号赋值语句
③条件信号赋值语句
【例】用条件信号赋值语句设计
4选1数据选择器。
LIBRARY IEEE;
USE Text
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);
Txt
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;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
3)元件例化语句
元件例化语句引入的是一种连接关系,即将预先设计好的设计实体定义成一个元件,然
后利用例化语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体
Txt
引入了一个低一级的设计层次。也可以这样来理解例化语句,当前设计实体相当于一个
较大的电路系统,预先设计好的设计实体相当于一个要插在这个电路系统板上的芯片,
而当前设计实体中的例化语句则相当于这块电路板上准备接收此芯片的一个插座。
黄淮学院
Company Logo
第五章 硬件描述语言
2. VHDL基本语句
(1) VHDL的并行语句
名字关联方式:port map语句中位置可以任意;
5.4 VHDL语言的基本描述语句
位置关联方式:端口名和关联连接符号可省去,连
接端口名的排列方式与所需例化的元件端口定义中
的端口名相对应。
Text
列出对外通信的各端口名
3)元件例化语句
元件例化语句通常由元件声明和元件例化两部分组成。语句书写格式如下:
Txt
当前系统与准备接
--元件声明部分
入的元件对应端口相连
COMPONENT 元件名
的通信端口。
GENERIC(参数表);
元件定
PORT(端口信息);
义语句
END COMPONENT;
--元件例化部分
例化名:元件名 PORT
MAP(端口名=>连接端口名,…);
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
3)元件例化语句
a.第一部分的“元件声明”,是对预先设计好的元件的定义语句,相当于对一个已有的设
计实体进行封装,使其只留出对外的接口界面,也就像一个集成芯片只对外留出几个引
Txt
脚一样。“类属表”可定义一些参数;“端口信息”可列出已有元件端口的名称、模式、
数据类型。该部分可放在结构体中“语句说明部分”。
b.第二部分的“元件例化”,用于说明当前设计实体和被调用元件的连接关系。其中,
“例化名”是必须的,它类似于当前电路系统板上的一个插座名;而“元件名”则是已
定义好的、准备在此插座上插入的元件(或芯片)名称;“端口名”是已有的元件(或芯片)
的端口名称;“=>”是关联(连接)符号;“连接端口名”则是当前系统与准备接入的元件
对应端口相连的通信端口,相当于插座上各插针的引脚名。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
3)元件例化语句
c.已有元件的“端口名”与当前系统的“连接端口名”的关联描述有两种方式。
一种是名字关联方式,在这种方式下,已有元件的“端口名”、关联符号“=>”都是必
Txt
须存在的,“端口名=>连接端口名”在PORT MAP语句中的位置可以是任意的;
另一种是位置关联方式,在这种方式下,“端口名”和“=>”都可省去,在PORT
MAP子句中只列出当前系统中的“连接端口名”即可,但要求“连接端口名”的排列顺
序与“元件声明”中已有元件“端口信息”中所列的端口名排列顺序相同,书写格式为
例化名:元件名 PORT MAP(连接端口名1, 连接端口名2,…);
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
3)元件例化语句
a
U1
&
temp1
b
c
d
U2
&
temp2
Text
【例】利用例化语句设计图示的电路。
U3
&
z
--首先完成与非门的设计
LIBRARY IEEE;
Txt
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;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
3)元件例化语句
a
U1
&
temp1
b
c
d
U2
&
temp2
Text
【例】利用例化语句设计图示的电路。
U3
&
z
--利用例化语句完成设计
LIBRARY IEEE;
Txt
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;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
3)元件例化语句
a
U1
&
temp1
b
c
d
U2
&
temp2
Text
【例】利用例化语句设计图示的电路。
U3
&
z
SIGNAL temp1,temp2:STD_LOGIC;
BEGIN
Txt
--元件例化部分
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;
黄淮学院
Company Logo
第五章 硬件描述语言
c.“并行语句”是用来
复制的基本单元,主
要包括元件、进程语
句、块语句、并行信
5.4 VHDL语言的基本描述语句
号赋值语句,甚至生
成语句,这表示生成
a.生成语句的生成方式有“FOR”
2.语句允许存在嵌套结
VHDL基本语句
和“IF”两种,它们用于规定并
构,因而可用于生成
行语句的复制方式。
(1)元件的多维阵列结构。
VHDL的并行语句
Text b.“说明语句”用于对元件的
数据类型、数据对象等作一些
4)生成语句(GENERATE)
局部说明。
生成语句具有复制作用,它可以生成与已有的某个元件或设计单元电路完全相同的一组
并行元件或设计单元电路结构。 生成语句的书写格式有以下两种形式:
Txt
[标号:]FOR 循环变量 IN 取值范围 GENERATE
f.对于“FOR”语句结构,主要用来描述设计中的一些有规律的单元结构,其
[说明语句;]
“循环变量”是一个局部变量,它根据“取值范围”而自动递增或递减。
并行语句;
“取值范围”的书写格式有以下两种方式:表达式
TO 表达式; --递增方式,
END GENERATE [标号];
d.“标号”并非是必需的,
如1 TO 5
但如果在嵌套式生成语句
表达式
DOWNTO
--递减方式,如5 DOWNTO 1
[标号:]IF
条件 表达式;
GENERATE
结构中就是十分重要的。
[说明语句;]
并行语句;
黄淮学院
END GENERATE [标号];
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
4)生成语句(GENERATE)
【例】利用GENERATE语句产生4个D触发器,如图所示。
Txt
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY dff_4 IS
PORT(clk,clrn,prn:IN STD_LOGIC;
Text
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
----元件声明 Txt
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;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
Text
5)块语句(BLOCK)
使用过Protel软件的都知道,画一个较大的电路原理图时,通常把它分成几个子模块来绘
制,而其中的每个子模块都可以是一个具体的电路原理图;倘若子模块仍很大,还可以
Txt
往下再分子模块。VHDL语言中的块语句结构的应用与此类似。
事实上,块语句的应用只是一种将结构体中的并行描述语句进行组合的方法,其目的是
为了改善并行语句的可读性,一般应用于较复杂的VHDL程序中。块语句对复杂并行结构
的划分仅限于形式上的,从综合的角度来看,它不会改变电路的结构和逻辑功能。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
在关键词“BLOCK”的前面必须设置一个块标号,
并在结尾语句“END BLOCK”右侧也写上此标
号(此处的块标号不是必需的)。
Text
5)块语句(BLOCK)
块标号名:BLOCK[块保护表达式]
块语句的书写格式为:
[接口说明语句]
[类属参数说明语句]
Txt
BEGIN
并行语句
“接口说明语句” 的适用范 END BLOCK 块标号名;
围仅限于当前BLOCK内部,
对于块外来说是不透明的,
即不能适合于外部环境或由
“并行语句”可包含任何
外部环境所调用。
并行语句结构。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
5)块语句(BLOCK)
【例】利用BLOCK语句描述全加器。
Text
P2:BLOCK
BEGIN
-半加器2的描述语句;
END BLOCK P2;
P3:BLOCK
Txt
BEGIN
-将2个半加器组合成全加器的连接部分描述语句;
END BLOCK P3;
END a;
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;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(1) VHDL的并行语句
5)块语句(BLOCK)
【例】本例是一个BLOCK语句嵌套的例子。
Text
…
B1:BLOCK
SIGNAL s1:BIT; --对于块B1、B2、B3都适
用
Txt
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;…
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
顺序语句是VHDL程序设计中很重要的语句系列之一,它能够从多个侧面完整地描述数字
系统的硬件结构和基本逻辑功能。
顺序语句与传统软件编程语言中的语句执行方式十分相似。所谓的顺序,主要指的是语
Txt
句的执行(指仿真执行)顺序与它们书写顺序基本一致。但应注意的是,这里的顺序是从仿
真软件的运行或顺应VHDL语法的编程思路而言的,其相应的硬件逻辑工作方式未必如
此。
顺序语句只能出现在进程(PROCESS)中,而进程本身属于并行语句,这就是说在同一设
计实体中,所有的进程都是并行执行的,而每一个进程内部的语句是顺序执行的。
顺序语句综合后,映射为实际的门电路,系统一上电,门电路开始工作。电路可实现逻
辑上的顺序执行,实际上所有门电路是并行工作的。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
 赋值语句
 流程控制语句
Txt
 空操作语句
 等待语句
 子程序调用语句
 返回语句
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
1)赋值语句
顺序语句中的赋值语句与并行语句中的赋值语句功能相似,它们都可用来对某一赋值目
标进行赋值。但二者是有区别的,并行赋值语句的赋值目标只能是信号(SIGNAL),而顺
Txt
序赋值语句不但可对信号赋值,也可以对变量(VARIABLE)进行赋值。
顺序赋值语句的书写格式有如下两种:
对变量赋值时,其语句格式为
变量赋值目标:=赋值源;
对信号赋值时,其语句格式为
信号赋值目标<=赋值源;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
1)赋值语句
【例】
ENTITY exam IS
PORT(a,b:IN
BIT;
Text
y:OUT BIT);
END exam;
ARCHITECTURE one OF exam IS
SIGNAL c:BIT;
Txt --定义全局信号c
BEGIN
PROCESS(a,b) --进程
VARIABLE d:BIT; --定义局部变量d
BEGIN
d:=a NAND b; --顺序赋值语句
c<=d;
--顺序赋值语句
END PROCESS; --结束进程
y<=c NAND a; --并行赋值语句
END one;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
这种语句的执行情况是,当程序执
行到该语句时,首先检测关键词
(2) VHDL的顺序语句
Text “IF”后的“条件表达式”的布尔
值是否为真(TURE)。如果为真,
2) 流程控制语句(又称转向控制语句):通过条件控制开关决定是否执行一条或几条
那么(THEN)将顺序执行“顺序语
语句,或重复执行一条或几条语句,或跳过一条或几条语句。
句”中的各条语句,直到“END
分为五种:if语句、case语句、loop语句、next语句、exit语句
Txt IF;”;如果为假(FALSE),则不执
行“顺序语句”,直接到跳到
① if语句
if语句的书写格式如下三种:
“END IF”,结束IF语句的执行。
第一种格式(简化的IF语句)
IF 条件表达式 THEN
顺序语句;
END IF;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
① if语句
这种语句的执行情况是,当关键词“IF”
后的“条件表达式”为真时,则顺序执行
其下面的“顺序语句”中的各条语句,当
Text“顺序语句”执行完成后,直接跳到
“END IF;”,结束IF语句的执行;当“IF”
后的“条件表达式”为假时,则程序直接
跳到关键词“ELSE”,执行其下面的顺
Txt
序语句,直到“END IF;”。因此它是一
种两分支的结构。
第二种格式(两分支结构)
IF 条件表达式
顺序语句;
ELSE
顺序语句;
END IF;
THEN
黄淮学院
Company Logo
第五章 硬件描述语言
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
① if语句
该格式通过关键词“ELSIF”设定了多个判断条件(条件
5.4 VHDL语言的基本描述语句
表达式),这些判断条件的优先顺序(从高到低)与书写
“条件表达式”的先后顺序一致。当某一判断条件为真
时,则顺序执行其后的“顺序语句”,执行完成后,直
接跳到“END IF;”当某一判断条件为假时,则跳过其后
的“顺序语句”,再测试下一个条件表达式。当所有的
Text
条件表达式都为假时,则执行关键词“ELSE”下的“顺
序语句”。因此它是一种多分支结构,功能与并行语句
中的条件信号赋值语句类似。
Txt
第三种格式(多分支结构)
IF 条件表达式 THEN
顺序语句;
ELSIF 条件表达式 THEN
顺序语句;
…
IF语句可以嵌套使用,但嵌套的层数不宜过多。
ELSE
顺序语句;
黄淮学院
END IF;
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
① if语句
【例】用IF语句描述一个简单的D触发器。
Text
ENTITY dff IS
PORT(d,clk:IN BIT;
q:OUT BIT);
END dff;
Txt
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 ;
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
① if语句
【例】用IF语句描述一个2输入端的与门。
Text
ENTITY and2 IS
PORT(a,b:IN BIT;
y:OUT BIT);
END and2;
Txt
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;
Company Logo
END one;
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
【例】用IF语句描述一个带异步清零clrn(低电平有效)和使能端
Text
en(高电平有效)的D触发器。
① if语句
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’;
Txt
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;
黄淮学院
Company Logo
第五章 硬件描述语言
语句执行时,首先计算“表达式”
5.4 VHDL语言的基本描述语句
的值,然后执行与“表达式”值
相同的“选择值”后的“顺序语
2. VHDL基本语句
句”,最后“END CASE”。这
里要注意,“=>”不是操作符,它
(2) VHDL的顺序语句
Text 只相当于“THEN”的作用。从这
一点上来说,CASE语句和并行
2) 流程控制语句
选择信号赋值语句的功能相当。
② case语句
case语句的书写格式如下:
Txt
CASE 表达式 IS
WHEN 选择值 =>顺序语句;
WHEN 选择值 =>顺序语句;
…
END CASE;
黄淮学院
Company Logo
第五章 硬件描述语言
条件句中的“选择值”必须在“表达
式”的取值范围内,并且要完全覆盖
“表达式”的所有取值。
5.4 VHDL语言的基本描述语句
当“选择值”不能完全覆盖“表达式”
的所有取值时,则最后一个条件语句
中的“选择值”必须用“OTHERS”表
2. VHDL基本语句
示,以表示“选择值”未能列出“表
(2) VHDL的顺序语句
Text 达式”的其他取值。关键词
“OTHERS”只能出现一次,且只能作
2) 流程控制语句
为最后一种条件取值。这一点对于定
② case语句
case语句的书写格式如下: 义成STD_LOGIC和
Txt STD_LOGIC_VECTOR的数据类型尤
CASE 表达式 为重要。
IS
WHEN 选择值
WHEN 选择值
…
END CASE;
=>顺序语句;
=>顺序语句;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
“选择值”可以有以下四种不同的表达
方式:单个数值,如4;数值选择范围,
(2) VHDL的顺序语句
Text
如(2 TO 4),表示取值为2、3和4;并
2) 流程控制语句
列数值,如3│5,表示取值为3或5。
② case语句
case语句的书写格式如下:
Txt
CASE 表达式 IS
WHEN 选择值 =>顺序语句;
WHEN 选择值 =>顺序语句;
…
END CASE;
每一条件语句中的“选择
值”只能出现一次,不能
黄淮学院
有相同“选择值”的条件
Company Logo
语句。
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
与IF语句相比,CASE语句组的程
序可读性比较好,这是因为它把条
件中“表达式”的所有取值都列了
2. VHDL基本语句
出来,可执行条件一目了然。但对
相同的逻辑功能描述,综合后,用
(2) VHDL的顺序语句
Text
CASE语句描述比IF描述耗用更多
2) 流程控制语句
的硬件资源。因此,对本身就具有
优先逻辑关系的描述(如优先编码
② case语句
case语句的书写格式如下:
器),采用IF语句比CASE语句更合
Txt
CASE 表达式 IS 适。
WHEN 选择值
WHEN 选择值
…
END CASE;
=>顺序语句;
=>顺序语句;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
② case语句
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);
【例】用CASE语句描述4选1数据选择器
y:OUT
Text STD_LOGIC);
END mux4_1;
ARCHITECTURE one OF mux4_1 IS
BEGIN
PROCESS(sel,a,b,c,d)
Txt
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;
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
2) 流程控制语句
“循环变量”是一个临时变量,属于LOOP语句的局
部变量,它由LOOP语句自动定义,不必事先定义。
该变量只能作为赋值源,不能被赋值。使用时应注
意,在LOOP语句范围内不要再使用其他与此循环变
Text
量同名的标识符。
③ loop语句,LOOP语句就是循环语句,它可以使所包含的一组顺序语句被循环执行。
常用的书写格式如下:
Txt
[标号:]FOR 循环变量 IN 循环范围
顺序语句;
END LOOP [标号];
LOOP
“循环范围”规定循环语句被执行的次
数。“循环变量”从“循环范围”的初
值开始,每执行完一次“顺序语句”后 黄淮学院
递增1,直到达到“循环范围”指定的最 Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
ENTITY exam_1 IS
PORT(a:IN BIT_VECTOR(0 TO 3);
out1:OUT BIT_VECTOR(0 TO 3));
2. VHDL基本语句
END exam_1;
ARCHITECTURE
beh OF exam_1 IS
(2) VHDL的顺序语句
Text
BEGIN
2) 流程控制语句
PROCESS(a)
VARIABLE b:BIT;
③ loop语句
【例】用FOR_LOOP语句描述下图的电路。
BEGIN
Txt
b:=’1’;
FOR i IN 0 TO 3 LOOP
b:=a(3-i) AND b;
out1(i)<=b;
END LOOP;
END PROCESS;
END beh;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
无条件终止当前的循环,跳回到本次循环
LOOP语句开始处,开始下次循环。
2. VHDL基本语句
(2) VHDL的顺序语句
Text
2) 流程控制语句
④ next语句 ,在LOOP语句中,NEXT语句用于跳出本次循环。其格式有以下三种:
无条件终止当前的循环,跳转到指定标号
的LOOP语句开始处,重新开始执行循环
Txt
操作。
NEXT;
NEXT [标号];
NEXT [标号] [WHEN 条件表达式];
当条件表达式的值为TRUE,则执行
NEXT语句,进入跳转操作,否则继续向
下执行。
黄淮学院
Company Logo
第五章 硬件描述语言
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
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
3)子程序调用语句
VHDL程序可以应用子程序更有效的完成重复性工作。子程序模块是利用顺序语句定
义和完成算法的,但它不能像进程那样从本结构体的其他块或进程结构中读取信号值
Txt
或向信号赋值,只能通过子程序调用与子程序界面端口进行通信。
子程序被调用时,首先要进行初始化,执行处理功能后,将处理结果传递给主程序。子
程序内部的值不能保持,子程序返回后才能被再次调用并初始化。
子程序有两种类型:过程和函数。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
3)子程序调用语句
①过程(PROCEDURE)语句
Txt
过程语句书写格式为:
PROCEDURE 过程名(参数表) IS
[说明部分;]
BEGIN
过程语句部分;
END PROCEDURE 过程名;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
3)子程序调用语句
②函数(FUNCTION)语句
函数(FUNCTION)
Txt
函数的语句书写格式为:
FUNCTION 函数名(参数表) RETURN 数据类型 IS
[说明部分;]
BEGIN
顺序语句;
RETURN[返回变量名];
END RETURN 函数名;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
3)子程序调用语句
(1)过程调用语句书写格式为:
Txt
过程名([参数名=>]表达式{,[参数名=>]表达式});
(2)函数调用语句书写格式为:
函数名([参数名=>]表达式{,[参数名=>]表达式});
与过程调用不同之处在于调用函数将返回一个指定类型的值。
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
2. VHDL基本语句
(2) VHDL的顺序语句
Text
4) NULL语句
NULL语句称为空操作语句,执行该语句只是使程序走到下一个语句
Txt
书写格式如下:
NULL;
黄淮学院
Company Logo
第五章 硬件描述语言
5.4 VHDL语言的基本描述语句
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY mux4_1 IS
2. VHDL基本语句
PORT(a,b,c,d:IN STD_LOGIC;
sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);
(2) VHDL的顺序语句
y:OUT
STD_LOGIC);
Text
END mux4_1;
4) NULL语句
【例】使用NULL语句重新描述4选1数据选择器。
ARCHITECTURE one OF mux4_1 IS
BEGIN
PROCESS(sel,a,b,c,d)
Txt
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;
Company Logo
第五章 硬件描述语言
5.5 常见逻辑单元的VHDL描述
1.组合逻辑设计
Text
Txt
黄淮学院
Company Logo
第五章 硬件描述语言
5.5 常见逻辑单元的VHDL描述
2.时序逻辑电路设计
Text
Txt
黄淮学院
Company Logo
第五章 硬件描述语言
5.6 VHDL仿真与综合
1. VHDL仿真
对VHDL源文件进行语法及语义检
仿真(Simulation,也称模拟),不接触具体的硬件系统利用计算机对电路设计的逻辑
Text
查,将其转换为中间数据格式。
行为和运行功能进行模拟检测,较大规模的VHDL系统设计的最后完成必须经历多层次的
仿真测试过程,包括针对系统的VHDL行为仿真、分模块的时序仿真和硬件仿真,直至最
后系统级的硬件仿真测试。
保存中间数据结果,提供VHDL源
Txt
程序中需要的设计库和程序包。
功能仿真是在未经布线和适配前,
用VHDL源程序综合后的文件进行
仿真。时序仿真是将设计综合后,
由适配器完成具体芯片的映射后
得到的文件进行仿真。
黄淮学院
Company Logo
第五章 硬件描述语言
5.6 VHDL仿真与综合
2. VHDL综合
把VHDL描述转化为门级电路描述,设计过程中的每一步都可称为一个综合环节。
Text
(1) 从自然语言转换到VHDL语言算法表示,即自然语言综合;
(2) 从算法表示转换到寄存器传输级(Register Transport Level,RTL),即从行为域
到结构域的综合,即行为综合;
Txt
(3) RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合;
(4) 从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称
为版图综合或结构综合。有了版图信息就可以把芯片生产出来了。有了对应的配置文
件,就可以使对应的FPGA变成具有专门功能的电路器件。
黄淮学院
Company Logo
第五章 硬件描述语言
 习题一
 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 仿真激励信号的产生
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
 方法一
① 用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
② 将波形信号发生器与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

利用仿真器的波形设置命令施加激励信号
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的结构体进行仿真:
① 初始化仿真过程后,在命令行中输入命令:
force a 10 0, 5 200, 8 400
force b 3 0, 4 100, 6 300
BENCH仿真波形图
② 执行RUN命令。
Company Logo
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
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
测试基准文件(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
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
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
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
8位计数器测试基准仿真部分波形图
Company Logo
Company Logo