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

VHDL语言的基本要素一、数据对象VHDL语言的主要数据对象有信号,变量,常量。
信号—信号是电路中的物理量,对应于电路的连线、节点;信号说明全局量,用于描述中的构造体(Architecture), 实体(Intity),程序包(package)。
变量—变量是程序运算中的中间量,并不对应电路中的物理量。
变量说明局部量,用于进程语句(process), 函数(Function), 过程(procedure)。
常量—常数也不对应电路中的物理量,当常量说明全局量,在构造体(Architecture), 实体(Intity),程序包(package),进程语句(process), 函数(Function), 过程(procedure)中均可使用。
数据对象的定义格式:signal 信号名:数据类型,约束条件,表达式Variable 变量名:数据类型,约束条件:=表达式Constant 常量名:数据类型,约束条件:=表达式例如:Variable count:INTEGER RANGE 0 TO 255:=10Constant Daly:Time:=100ns信号代入和变量赋值的区别:两者形式不同,操作过程也不相同。
变量赋值符“:=”,信号的代入符“<=”。
在变量的赋值语句中,该语句一当执行,其值立即将赋予变量;而信号的代入,其语句执行后不会立即使信号发生代入,在下条语句执行时,仍使用原来的信号值,如进程语句中的敏感表的信号代入就是如此。
二、数据类型VHDL语言中的数据类型,一般而言可分为:标量类型和组合类型。
在实际使用中,也可分成予定义类型和用户定义类型。
VHDL语言是强类型的语言,主要可按如下分类和变换处理。
①标准数据类型⑴整数⑵实数(浮点数)-1.0E+38~+1.0E38 ⑶位bit(0,1)⑷位矢量⑸布尔量,“假”,“真”⑹字符(ASCⅡ)字符⑺时间⑻错误等级⑼自然数(大于等于0的整数)⑽字符串(字符矢量)②用户定义的数据类型TYPE 数据类型名{数据类型名} 数据类型定义⑴枚举类型⑵整数类型⑶实数类型⑷数组类型⑸存取类型⑹文件类型⑺记录类型⑻时间类型③用户定义子类型SUBTUPE 子类型名IS 数据类型名[范围]例:SUBTYPE digit is INTEGER RANGE 0 TO 9④数据类型转换数据类型的变换函数通常由“STD_LOGIC_1164”,“STD_LOGIC_ARITH”,“STD_LOGIC_UNSIGNED”的程序包提供例如,在STD_LOGIC_1164程序包中,TO_STD LOGIC VECTOR(A) 由BIT_VECTOR转换为STD_LOGIC_VECTORTO_BITVECTOR(A) 由STO_LOGIC_VECTOR转为BIT_VECTORTO_STDLOGIC(A) 由BIT转换为STD_LOGICTO_BIT(A) 由STD_LOGIC转换成BIT signal a: BIT_VECTOR(11 DOWNTO 0)signal b: STD_LOGIC_VECTOR(11 DOWNTO 0)a<=X”A8” 十六进制值可赋予位矢量b<=X”A8” 语法错,十六进制不能赋予.STD 矢量b<=TO_STDLOGICVECTOR(X“AF7”)b<=TO_STDLOGICVECTOR(O“5177”)八进制变换b<=TO_STDLOGICVECTCR(B“1010_1111_0111”)下表中也给出一些典型的类型变换函数三、运算符运算符的优先级如下表所示:运算符的优先级例如,并置运算符的使用:tmp_b<=b AND (en&en&en&en) y <= a & tmp_b第一个语句表示b 的4位位矢量由en 进行选择 得到一个4位位矢量输出第二个语句表示4位位矢量a 和4位位矢量b 再 次连接(并置)构成8位的位矢量y 输出 右图所示为并置运算符操作的电路示意。
第四章 VHDL语言基础精品PPT课件

Sec.4.2. VHDL程序结构
1. VHDL程序结构 2. ⑴.实体说明(Entity declaration)
3. ⑵.结构体(Architecture body) 4. 定义与概念
5. ⑴.实体说明 6. ⑵.结构体
2.实体说明和结构体之间的关系
⑴.“包裹皮” 的概念
实体①
⑵.实体和结构体之间的关系
END Majority_vote; ARCHITECTURE examp1 OF Majority_vote IS
BEGIN Y<=(a and b)or (b and c)or (a and c);
END examp1;
三.Signal(信号)及其并行性
定义:信号是电子电路内部硬件实体相互连接的信息表示。
表4-1.数字系统各层次划分及功能
层次名称 系统级(算法级)
寄存器传输级 (RTL级) 逻辑级(门级) 电路级
行为级描述
针对设计技术条 件、流程图、算 法进行系统级综 合
寄存器传输
逻辑函数、状态 方程 传输函数
各层次功能及结构
结构级描述
物理层表示的对象
处理器、控制器、存 集成电路芯片、印刷电路
储器、总线等
第四章 VHDL语言基础
VHDL语法和语句
本章任务
• 1.VHDL语言的基础知识,如何用VHDL语言描述数字系统。 • 2.VHDL程序结构,实体和结构体的概念。实体说明、结构体说明。结
构体的3种描述方法。 • 3.QuartusⅡ开发软件及应用。图形编辑方法;数字系统的VHDL文
本文件编辑方法。 • 4.一些基本的VHDL语法。 • 数组(Array)、 • 并行语句(Concurrent Statement)、 • 选择信号代入语句(Selected Signal Assignment Statement)、 • 并行信号赋值语句(Concurrent Signal Assignment
第4章VHDL语言基础

END 结构体名;
4.1.3 结构体部分
结构体组成
结
构 体
说
明 结
构
体 结 构 体
功 能 描 述
常数说明 数据类型说明
信号说明 例化元件说明 子程序说明
块语句 进程语句 信号赋值语句 子程序调用语句 元件例化语句
结构体描述风格
行为描述 描述该设计单元的功能,主要使用函数、过程和进程语 句,以算法形式描述数据的变换和传送
例4-4
Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all;
行为描述
Entity eqcomp4 is Port (a,b: in std_logic_vector (3 downto 0); equals: out std_logic);
4.1.2 实体部分
实体(ENTITY)
实体是一个设计实体的表层设计单元,其功能是 对这个设计实体与外部电路进行接口描述。它规定了 设计单元的输入/输出接口信号或引脚,是设计实体 经封装后对外的一个通信界面。类似于原理图中的一 个部件符号。
4.1.2 实体部分
实体格式
ENTITY 实体名 IS
书写格式: GENERIC([常数名:数据类型[:设定值]
{;常数名:数据类型[:=设定值 ]}); 例4-1
GENERIC (cntwidth : integer:=4);
4.1.2 实体部分
PORT端口
用于定义模块所有的输入/输出信号,相当于定义一个 模块符号
第4章VHDL语言要素

"ERROR"
"Both S and Q equal to 1" "X" "BB$CC"
பைடு நூலகம்
(2) 数位字符串
数位字符串也称位矢量 是预定义的数据类型 Bit 的一位数组 数位字符串与文字 字符串相似 但所代表的是二进制 八进制或十六进制的数组 它们所代表的位矢量的长
度即为等值的二进制数的位数 字符串数值的数据类型是一维的枚举型数组 与文字字符
KONXIN 杭州康芯电子有限公司 KONXIN
59
第 4 章 VHDL 语言要素
量和常量十分相似 但信号这一数据对象比较特殊 它具有更多的硬件特征 是 VHDL 中
最有特色的语言要素之一
从硬件电路系统来看 变量和信号相当于组合电路系统中门与门间的连线及其连线
上的信号值 常量相当于电路中的恒定电平 如 GND 或 VCC 接口 从行为仿真和 VHDL
下例各信号分别以段的方式进行赋值 内部则按对应位的方式分别进行赋值
SIGNAL a z : BIT_VECTOR (0 TO 7) ;
SIGNAL b : STD_LOGIC_VECTOR (4 DOWNTO 0) ;
SIGNAL c : STD_LOGIC_VECTOR (0 TO 4) ;
SIGNAL e : STD_LOGIC_VECTOR (0 TO 3) ;
-- 可计算型下标表示
5 段名
段名即多个下标名的组合 段名将对应数组中某一段的元素 段名的表达形式是
标识符(表达式 方向 表达式)
这里的标识符必须是数组类型的信号名或变量名 每一个表达式的数值必须在数组 元素下标号范围以内 并且必须是可计算的(立即数) 方向用 TO 或者 DOWNTO 来表示 TO 表示数组下标序列由低到高 如(2 TO 8) DOWNTO 表示数组下标序列由高到低 如(8 DOWNTO 2) 所以段中两表达式值的方向必须与原数组一致
VHDL语言要素

标准数据类型
10、自然数(NATURAL) 正整数(POSITIVE) 自然数是整数的一个子类型,包括0和正整数;
正整数也是整数的一个子类型。 只能是正整数数据除定义类型外,有时还需
要定义约束范围。 INTEGER RANGE 100 DOWNTO 0 BIT_ VECTOR (3 DOWNTO 0) REAL RANGE 2.0 TO 30.0
信号与变量区别
信号赋值可以有延迟时间,变量赋值无时间延迟 信号除当前值外还有许多相关值,如历史信息等,变量
只有当前值 进程对信号敏感,对变量不敏感 信号可以是多个进程的全局信号,但变量只在定义它之
后的顺序域可见 信号可以看作硬件的一根连线,但变量无此对应关系 赋值的形式不同;声明的位置不同
TYPE current IS REAL RANGE -1E4 TO 1E4
VARIABLE A:CURRENT; A:=1E3;
A:=1E10;
用户自定义的数据类型
4、数组(ARRAY) 格式:TYPE 数据类型名 IS ARRAY 范围 OF 原数据类型名; 例:TYPE word IS ARRAY (1 TO 8) OF STD_LOGIC; TYPE word IS ARRAY (INTEGER 1 TO 8) OF STD_LOGIC; 数组常在总线、ROM和RAM中使用。
第三讲要点回顾
有效标识符 变量信号的区别 三种数据类型 三类属性 四种操作符
标识符
标识符(Identifiers)由英文字母“a”到“z”、 “A”到“Z”、数字“0”到“9”以及下划线 “_”组成 使用时注意: 1、VHDL不区分大小写 2、标识符一定要以字母开头 3、下划线不能放在结尾 4、下划线不能连用 5、保留字(关键字)不能做标识符
EDA技术和VHDL设计第4章 VHDL语言要素.ppt

10#235#
(十进制数表示,等于235)
2#1110_1011#
(二进制数表示,等于235)
8#353#
(八进制数表示,等于235)
16#EB#
(十六进制数表示,等于235)
16#E#E1
(十六进制数表示,等于16#E0#,等于
2#11100000#,等于224)
16#F.01#E2
(十六进制数表示,等于16#F01#,等于3841.00)
Data_ _bus Copper_ _ Return tx_clk
--非法标识符,不能含有多个下划线 --非法标识符,不能以下划线结束 --非法标识符,关键字不能用作标识符 --合法标识符
11
第4章 VHDL语言要素 VHDL93标准还支持扩展标识符,以反斜杠来界定,免
去了87标准中基本标识符的一些限制,如:可以以数字打头, 允许包含图形符号,允许使用VHDL保留字,区分字母大小 写等。扩展标识符举例:\entity\、\2chip\、\EDA\、\eda\、 \aa\\bb\。但目前仍有较多VHDL工具不支持扩展标识符,所 以本书仍以87标准为准。由于VHDL语言不区分大小写,在 书写时一定要养成良好的书写习惯。一般而言,应用关键词 时应大写,自行定义的标识符应小写。
2
第4章 VHDL语言要素 其中,数字间的下划线仅仅是为了提高文字的可读性,相当 于一个空的间隔符,没有其他意义,也不影响文字本身的数 值。 (2) 实数(Real)。实数也是十进制的数,但必须带有小数 点。它类似于数学上的实数,或称浮点数,表示范围是 1.0E38~1.0E38。实数的表达方式举例: 0.0,123.45,6.0,78.99E - 2( = 0.7899), 12_345.678_999(=12345.678999)
VHDL语言要素

VHDL语言要素
3. 标识符 保留字:VHDL已定义的关键字,
ENTITY ARCHITECTURE CASE BUFFER AND BEGIN END FOR IF THEN IN OUT ELSIF
OR NOT XOR NOR INOUT ….
短标识符--由用户创建的符合VHDL‟87规定的标识符 扩展标识符--VHDL‟93规定的标识符
SIGNAL TEMP :STD_LOGIC:=„0‟‟ SIGNAL A:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SIG_A:INTEGER RANGE 0 TO 15; TEMP<=„1‟; A<=“1001”; A(0)<=„0‟; SIG_A<=14;
VHDL语言要素
VHDL语言要素
VHDL语言要素
信号和变量的区别
信号 赋值符号 功能 作用范围 行为 <= 电路的内部连接 全局,进程和进程之间的通信 延迟一定时间后才赋值 变量 := 内部数据交换 进程的内部 立即赋值
VHDL语言要素
三、常量(CONSTANT)
常数(Constant)
•固定值,不能在程序中被改变 •增强程序的可读性,便于修改程序 •在综合后,连接到电源和地 •可在Library、Entity、Architecture、Process中进行定
VHDL语言要素
第四章 VHDL语言要素
语言要素: 编程语句的基本单元。
文字及标识符 数据对象 VHDL 语言要素 数据类型 操作符
VHDL语言要素
4.1 VHDL文字规则
数字 数值 文
字符/字符串
字 标识符
保留字 自定义
VHDL语言要素
第4章 VHDL语言基础

4.2.4 操作符
与传统的程序设计语言一样,VHDL的各种表达式由操作数和操作 符组成。其中,操作数是各种运算的对象,而运算操作符则规定 运算的方式。VHDL中共有四类操作符:算术运算符、关系运算符、 逻辑运算符和符号运算符。 1.操作符的功能和使用操作数的数据类型 2.各种操作符的使用说明
4.1.4 库
在使用VHDL语言进行设计时,需要将别人或自己的设计成果汇集 在一个或几个库中,方便调用,以便提高设计效率。VHDL库就是 用于存放预定义好的数据类型、子程序等设计单元的集合体。 1.VHDL库 VHDL中的库大致可归纳为5种,分别为IEEE库、STD库、ASIC 矢量库、WORK库和用户定义库。
b:=3.0;
c:=d+e; 信号赋值语句的格式为: 信号名 <= 信号变量表达式;
例如,用户对信号“a”进行赋值,代码如下所示:
a<=b;
4.3.2 IF语句
句 Then 顺序语句
IF语句是一种条件语句,它根据语句中所设置的一种或多种条件,有选择地执行指定的顺序语 句,其语句的格式有三种,分别如下所示: //第一种IF语句结构
[实体说明部分]; END[ENTITY]<实体名>;
1.GENERIC类属说明语句 2.PORT端口说明
4.1.2 结构体
设计单元中的结构体主要用来描述设计的内部结构或逻辑功能。 在设计中,设计人员常常将一个设计实体比喻成一个盒子,实体说 明可以被看作是一个“黑盒子”。通过它,只能了解其输入和输 出,无法知道盒子的内容。而结构体描述盒子内部的详细内容。 在VHDL语言中,一个结构体的具体格式,如下所示: ARCHITECTURE<结构体名>OF<实体名>IS [结构体说明部分]; BEGIN <并行处理语句>;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章VHDL的语言要素
4.1 VHDL的数据对象
与其他高级语言一样,VHDL中把用来承载数据的容器叫做VHDL的数据对象,VHDL的数据对象主要有信号、常量和变量三类。
1 常量
在VHDL中,常量是一种不变的量,它只能在对它定义时进行赋值,并在整个程序中保持该值不变。
常量的功能一方面可以在电路中代表电源、地线等,另一方面可提高程序的可读性,也便于修改程序。
常量定义的格式为:
CONSTANT 常量名:数据类型:=表达式;
[例3.4] 常量定义举例
CONSTANT V: INTEGER:=8;
2 变量
变量是临时数据的容器,它没有物理意义,并且只能在进程和子程序中定义,也只能在进程和子程序中使用。
变量一旦赋值立即生效。
变量定义的描述格式为:VARIABLE 变量名:数据类型[:=表达式];
[例3.5]变量定义举例
VARIABLE y: INTEGER;
3 信号
信号是VHDL的一种重要数据对象,它定义了电路中的连线和元件的端口。
其中端口和内部信号定义的差别是在端口定义中多了一个端口模式的定义。
信号是一个全局量,可以用来进行各模块之间的通信。
信号定义的格式为:
SIGNAL 信号名:数据类型;
[例3.6]信号定义举例
SIGNAL A: STD_LOGIC;
4.2 VHDL的数据类型
VHDL是一种强类型的语言,每一个数据对象都必须具有确定的数据类型定义,并且只有在相同数据类型的数据对象之间,才能进行数据交换。
VHDL预定义了大量的数据类型,下面介绍几种最常用的数据类型。
1 整数数据类型(INTEGER)
整数类型的数有正整数负整数和零,在VHDL中其取值范围是:
-2147483547---2147483646 。
2 实数数据类型(REAL)
VHDL的实数与数学中的实数或浮点数相似,只是范围被限定为:-1.0E38---1.0E38,并且在书写时一定要有小数。
3 位数据类型(BIT)
在数字系统中,信号经常用位数据类型表示,位数据类型属于枚举类型,其值是用带单引号的‘1’和‘0’表示。
4 位矢量数据类型(BIT_VECTOR)
位矢量是用双引号括起来的一组位数据,例如“010101”,通常用来表示数据总线。
5 布尔量数据类型(BOOLEAN)
布尔量数据类型也属于枚举类型,其值只有“TRUE”和“FALSE”两种状态,通常用来表示关系运算和关系运算结果。
6 字符数据类型(CHARACTER)
VHDL的字符数据类型表示ASCII码的128个字符,书写时要求用单引号括起来,并且要区分大小写。
例如:‘A’,‘a’等。
7 字符串数据类型(STRING)
字符串是双引号括起来的一串字符。
例如:“laksdklakld”
8 STD_LOGIC数据类型
与位数据类型相似,STD_LOGIC数据类型也属于枚举类型,但它的取值有下面的九种:‘U’初始值
‘X’不定
‘0’0
‘1’1
‘Z’高阻
‘W’弱信号不定
‘L’弱信号0
‘H’弱信号1
‘-’不可能情况。
9 STD_LOGIC_VECTOR数据类型
STD_LOGIC_VECTOR数据类型,表示的是用双引号括起来的一组STD_LOGIC数据“10101101”,通常用来表示数据总线。
由于STD_LOGIC的九种取值,更能反映电路的实际情况,所以在VHDL描述中一般用STD_LOGIC和STD_LOGIC_VECTOR,取代BIT和BIT_VECTOR等数据类型。
因为STD_LOGIC数据类型,是在IEEE库的STD_LOGIC_1164程序包中说明的,所以当在设计中要使用这种数据类型时,必须在VHDL的库、程序包说明语区,加入下列库、程序包说明语句:
[例3.7]库、程序包说明举例
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
4.3 VHDL语言的操作符和表达式
VHDL中大量的设计思想是用表达式配合实现的。
与其他高级软件编程语言相似,VHDL的表达式由操作数和操作符组成。
操作数由前面介绍的具有确定数据类型的数据对象担任。
操作符用来连接操作数,以完成所要求的数据的处理和转换。
VHDL具有丰富的预定义操作符,由这些操作符可以完成各种形式的表达式的功能。
预定义操作符可分为四种类型:算术操作符,关系操作符,逻辑操作符和连接操作符。
下面分别介绍四种类型的操作符和对应的简单的表达式,关于表达式的综合表示形式将在后面的具体实例中进行介绍。
1 逻辑操作符和逻辑表达式
逻辑操作符在逻辑表达式中,用来完成逻辑类型数据对象的逻辑操作。
VHDL的逻辑操作符如表3.2所示。
表3.2 逻辑操作符
[例3.8]简单逻辑表达式举例
A and B
not Z
注意,逻辑操作符左右的数据类型必须相同
2 算数操作符和算数表达式
VHDL提供的完成算数运算的操作符如表3.3所示。
表3.3 算数操作符
[例3.9]简单算数表达式举例
A +
B –C
3 关系操作符和关系表达式
关系操作符在关系表达式中,用于进行相同数据类型数据对象间的比较,关系表达式的结果是布尔类型,VHDL提供的关系操作符如表3.4所示。
表3.4 关系操作符
[例3.10]简单关系表达举例
Y >= G
注意,小于等于符号和信号赋值符号的形式完全相同,只能从程序上下文中进行区别。
4 并置操作符和并置表达式
VHDL提供的并置操作符是”&”。
它主要用来将普通操作数或数组组合起来,以形成新的操作数。
例如”HE”&”LLO”的结果为”HELLO”;‘0’& …1‟ & “010110”的结果为”01010110”。