VHDL语言的基本知识点罗列
VHDL入门教程

VHDL入门教程VHDL(Very High-speed Integrated Circuit HardwareDescription Language)是一种用于设计数字电路的硬件描述语言。
它是IEEE 1076标准中规定的一种语言,广泛应用于数字电路的设计、仿真和综合等领域。
本文将为大家介绍VHDL的基础知识和入门教程。
一、VHDL的基本概念1. 实体(Entity):VHDL代码的最高层次,用于定义模块的输入、输出和内部信号。
2. 架构(Architecture):定义了实体中的各个信号和组合逻辑的行为。
3. 信号(Signal):表示数据在电路中的传输和操作。
4. 进程(Process):定义了组合逻辑的行为,用于描述信号之间的关系。
5. 实体声明(Entity Declaration):用于描述模块的名称、输入、输出和内部信号。
6. 架构声明(Architecture Declaration):用于描述模块的内部逻辑。
二、VHDL的基本语法1.实体声明语法:```entity entity_name isport ( port_list );end entity_name;```其中,entity_name是实体的名称,port_list是实体的输入、输出和内部信号。
2.架构声明语法:```architecture architecture_name of entity_name issignal signal_list;beginprocess (sensitivity_list)begin--逻辑行为描述end process;end architecture_name;```其中,architecture_name是架构的名称,entity_name是实体的名称,signal_list是架构的内部信号,sensitivity_list是触发事件的信号列表。
三、VHDL的基本例子下面以一个简单的4位加法器为例介绍VHDL的编写和仿真流程。
第一部分VHDL语言基础知识

第1部分VHDL语言基础知识第1章概述1.1 电子器件的发展和现状电子技术的发展总是同电子器件的发展密切相关的,由于电子器件的不断更新换代,电子技术得到了飞速发展,当今信息技术被广泛应用在国民经济的方方面面。
多媒体技术的普及、高速宽带网络的建设、数字电视的出现以及与我们日常生活息息相关的各种家用电器,都离不开微处理器、存储器和一些采用行业标准的专用芯片。
这些电子器件的发展经历了从电子管、晶体管、小规模集成电路、中规模集成电路到大规模集成电路和超大规模集成电路几个阶段,其发展趋势是体积越来越小,集成度越来越高。
随着半导体技术的迅速发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担,系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好在自己的实验室里就能设计并制造出适用的ASIC芯片,并且能够得到实际的应用。
使用ASIC完成电子系统的设计,其优点是集成度高、保密性强、可大幅度地减少印刷电路板的面积和接插件、电路性能好并能降低装配和调试费用、更适合较大规模批量生产、降低生产成本。
例如,现在微机中使用的显卡、网卡、数字电视等都是专用的ASIC芯片。
采用ASIC设计的不足之处是一次性的投资大,设计周期一般比较长,不便于以后修改设计,因而近几年在ASIC领域出现了一种半定制电路,即现场可编程逻辑器件FPLD。
目前使用较多的可编程逻辑器是现场可编程门阵列FPGA(field programmable gate array)和复杂可编程逻辑器件CPLD(complex programmable gate array)。
早期使用的可编程器件有PROM、EPROM、E2PROM、PAL、GAL等,这些芯片的容量一般比较小,只能完成简单的数字逻辑功能,这些器件基本上是使用专用的编程器进行装载。
CPLD和FPGA的芯片是在早期使用的PAL和GAL基础上发展起来的,相比早期的可编程器件,现场可编程逻辑器件FPLD的容量大,器件的容量远远大于PAL和GAL,更适合做时序和组合逻辑电路的设计,不但集成度高,而且逐渐向低功耗发展,芯片的使用电压有+5V、+3.3V和+2.5 V几种,有的芯片外部是+5V而内部的工作电压则是+3.3V或+2.5V。
第四讲VHDL语言基础知识

关键词 VHDL 实体 逻辑功能
此两处必须同名
逻辑行为描述
1、实体
格式
ENTITY 实体名 IS [GENERIC ( 类属表 );] [PORT ( 端口表 );] END 实体名;
说明
实体说明所设计的逻辑电路的输入、输 出信号及其特性(输入(in)输出(out)、双向 (inout)、buffer)
•文件(FILES)是传输大量数据的客体,包含一些专门数据 类型的数值。
对象说明的一般格式是: <对象类型> < 标识符表>:<子类型说明> <信号种类>: =<表达式>; 说明 标识符 <子类型说明>是类型名或类型名加限制条件 <信号种类>为BUS或REGISTER,该项为任选项 :=<表达式>为对象赋初值
IS
一个包集合由包集合标题和包集合体两 大部分组成。 包集合体是一个可选项。
5、库
格式
LIBRARY 库名; USE 库名. 程序包名. All;
USE语句的使用有两种常用格式: USE 库名.程序包名.项目名 ; USE 库名.程序包名.ALL ;
VHDL库的种类
• IEEE库:IEEE标准库, 是按IEEE组织制定的 工业标准进行编写的, 是内容丰富的资源库 使用需声明 • •STD_LOGIC_1164 程序包 •STD_LOGIC_ARITH 程序包 •STD_LOGIC_UNSIGNED 程序包
STD库:VHDL标准库,STANDARD和 TEXTIO程序包即收入在STD库中 使用无需声明
VHDL库的种类
• • •
ASIC库:EDA厂商提供库 使用需声明 WORK库:现行作业库,当前工作目录的所有设计 使用无需声明 USER库:用户自定义库 使用需声明
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 输出 右图所示为并置运算符操作的电路示意。
第1章VHDL语言基础

位矢量(BIT_VECTOR)。若端口定义为BIT,则其信号值 是一个1位的二进制数,取值只能是0或1;若端口定义为 BIT_VECTOR,则其信号值是一组二进制数。
➢ 在电路中,如果实体代表一个器件符号,则结构体描述了 这个符号的内部行为。当把这个符号例化成一个实际的器 件安装到电路上时,则需用配置语句为这个例化的器件指 定一个结构体(即指定一种实现方案),或由编译器自动选一 个结构体。
1. 结构体的一般语句格式 ARCHITECTURE 结构体名 OF 实体名 IS [说明语句;] BEGIN [功能描述语句;] END [ARCHITECTURE] [结构体名];
1.1 VHDL程序基本结构
一、VHDL程序设计约定 ➢ 语句结构描述中方括号“[ ]”内的内容为可选内容。 ➢ 对于VHDL的编译器和综合器来说,程序文字的大小写是不
加区分的。 ➢ 程序中的注释使用双横线“- -”。 ➢ 源程序命名与实体同名(MAX+plus Ⅱ要求)。
二、VHDL程序设计引例( 74LS00的设计 )
③ 信号赋值语句将设计实体内的处理结果向定义的信号或界面 端口进行赋值。
④ 子程序调用语句用于调用一个已设计好的子程序。
⑤ 元件例化语句对其他的设计实体作元件调用说明,并将此元 件的端口与其他的元件、信号或高层次实体的界面端口进行 连接。
A
A NAND2
Y
Y
B
B
(a)
A1
A NAND2
U1 Y
Y1
B1
B
A2
A NAND2
VHDL语言的基本知识点罗列

VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。
使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。
任何标识符必须以英文字母开头。
λ末字符不能为下划线。
λb)不允许出现两个连续下划线。
标识符中不区分大小写字母。
λVHDL定义的保留子或称关键字,不能用作标识符。
λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。
以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。
注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。
所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。
标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。
常数一被赋值就不能在改变。
一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。
常量的使用范围取决于它被定义的位置。
程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。
2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。
用作局部数据存储。
在仿真过程中。
它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
变量常用在实现某种算法的赋值语句中。
VHDL语言的基本知识点罗列

VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。
使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。
任何标识符必须以英文字母开头。
λ末字符不能为下划线。
λb)不允许出现两个连续下划线。
标识符中不区分大小写字母。
λVHDL定义的保留子或称关键字,不能用作标识符。
λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。
以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。
注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。
所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。
标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。
常数一被赋值就不能在改变。
一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。
常量的使用范围取决于它被定义的位置。
程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。
2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。
用作局部数据存储。
在仿真过程中。
它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
变量常用在实现某种算法的赋值语句中。
VHDL语言教程

VHDL语言教程VHDL是一种硬件描述语言,用于描述数字电路和系统,并进行硬件的设计和仿真。
它被广泛应用于数字电路设计、嵌入式系统开发和可编程逻辑控制器等领域。
本教程将介绍VHDL语言的基本概念和语法,帮助您了解和学习这门强大的硬件描述语言。
一、VHDL概述VHDL是Very High Speed Integrated Circuit Hardware Description Language的缩写,意为高速集成电路硬件描述语言。
它是一种硬件描述语言,用于描述数字电路和系统。
与传统的电路设计方法相比,使用VHDL可以更加方便、高效地进行电路设计和测试。
1.VHDL的起源和发展VHDL最早由美国国防部为了解决数字电路设计复杂、效率低下的问题而研发。
后来,VHDL成为了一种IEEE标准(IEEE1076)并被广泛应用于数字电路设计和仿真。
2.VHDL的优点VHDL具有以下几个优点:-高级抽象:VHDL提供了一种高级描述电路的方法,使得设计者能够更加方便地表达复杂的电路结构和行为。
-可重用性:VHDL支持模块化设计,使得设计者可以将电路的不同部分进行抽象和封装,提高了电路的可重用性。
-高效仿真:VHDL可以进行高效的电路仿真和测试,有助于验证电路设计的正确性和可靠性。
-灵活性:VHDL可以应用于各种不同类型和规模的电路设计,从小规模的数字逻辑电路到大规模的系统级设计。
二、VHDL语法和基本概念1.VHDL的结构VHDL程序由程序单元(unit)组成,程序单元是VHDL描述的最小单元。
程序单元包括实体(entity)、结构(architecture)、过程(process)和包(package)等。
2. 实体(entity)实体是VHDL描述电路模块的一个部分,包括输入输出端口、信号声明和实体标识符等。
3. 结构(architecture)结构描述了实体的具体电路结构和行为,包括组件声明、信号赋值和行为描述等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VHDL语言的基本知识点罗列1 VHDL语言的标识符VHDL中的标识符可以是常数、变量、信号、端口、子程序或参数的名字。
使用标识符要遵守如下法则:a)标识符由字母(A…Z;a…z)、数字和下划线字符组成。
任何标识符必须以英文字母开头。
λ末字符不能为下划线。
λb)不允许出现两个连续下划线。
标识符中不区分大小写字母。
λVHDL定义的保留子或称关键字,不能用作标识符。
λc) VHDL中的注释由两个连续的短线(--)开始,直到行尾。
以下是非法标识符:-Decoder —起始不能为非英文字母3DOP —起始不能为数字Large#number —“#”不能成为标识符的构成符号Data__bus —不能有双下划线Copper_ —最后字符不能为下划线On —关键字不能用作标识符。
注:在AHDL语言中标识符要区分大小写,但在VHDL语言中不区分大小写。
所以写程序时,一定要养成良好的书写习惯,应用关键字时用大写,自己定义的标识符用小写。
标识符表示的几种数据对象的详细说明如下:1) 常数(Constant )常数是一个固定的值,主要是为了使设计实体中的常数更容易阅读和修改。
常数一被赋值就不能在改变。
一般格式:CONSTANT 常数名:数据类型:=表达式;例:CONSTANT Vcc: REAL: =5.0;—设计实体的电源电压指定常数所赋得值应与定义的数据类型一致。
常量的使用范围取决于它被定义的位置。
程序包中定义的常量具有最大的全局化特性,可以用在调用此程序包的所有设计实体中;设计实体中某一结构体中定义的常量只能用于此结构体;结构体中某一单元定义的常量,如一个进程中,这个常量只能用在这一进程中。
2) 变量(Variable)变量是一个局部变量,它只能在进程语句、函数语句和进程语句结构中使用。
用作局部数据存储。
在仿真过程中。
它不像信号那样,到了规定的仿真时间才进行赋值,变量的赋值是立即生效的。
变量常用在实现某种算法的赋值语句中。
一般格式:VARIABLE 变量名数据类型约束条件:=表达式;例:VARIABLE x,y:INTEGER; —定义x,y为整数变量VARIABLE count: INTEGER RANGE0 TO255:=10; —定义计数变量范围变量的适用范围仅限于定义了变量的进程或子程序中。
若将变量用于进程之外,必须该值赋给一个相同的类型的信号,即进程之间传递数据靠的信号。
变量赋值语句的语法格式如下:目标变量:=表达式;变量赋值符号是“:=”。
赋值语句右方的表达式必须是一个与目标变量有相同数据类型的数值。
变量不能用于硬件连线和存储元件。
3) 信号(Signal)信号是描述硬件系统的基本数据对象,它类似于连接线,它除了没有数据流动方向说明以外,其它性质与实体的端口(Port)概念一致。
变量的值可以传递给信号,而信号的值不能传递给变量。
信号通常在构造体、包集合和实体中说明。
信号说明格式为:SIGNAL 信号名:数据类型;信号初始值的设置不是必需的,而且初始值仅在VHDL的行为仿真中有效。
1.变量变量只能在进程、函数和过程中使用,一旦赋值立即生效。
例:VARIABLE x, y: INTEGER;VARIABLE count: INTEGER RANGE 0 TO 255:=10;2.信号信号除了没有方向的概念以外几乎和端口概念一致。
例:SIGNAL sys_clk: BIT:=‟0‟;SIGNAL ground: BIT:=‟0‟在程序中,信号值输入信号时采用代入符”<=”,而不是赋值符“:=”,同时信号可以附加延时。
信号传送语句:s1<=s2 AFTER 10ns信号是一个全局量,可以用来进行进程之间的通信3.信号与变量的区别:信号赋值可以有延迟时间,变量赋值无时间延迟;信号除当前值外还有许多相关值,如历史信息等,变量只有当前值;进程对信号敏感,对变量不敏感;信号可以是多个进程的全局信号,但变量只在定义它之后的顺序域可见;信号可以看作硬件的一根连线,但变量无此对应关系。
2 VHDL语言的数据类型VHDL语言提供了许多标准的数据类型,用户也可自定义数据类型,这样使VHDL语言的描述能力和自由度进一步提高。
但VHDL语言的数据类型的定义相当严格,不同类型之间的数据不能直接代入。
而且相同数据类型,但位长不同的也不能直接代入,否则EDA工具在编译综合时会报告类型错。
因此,为了熟练地使用VHDL 语言编写程序,必须很好的理解各种数据意义。
2.1. VHDL标准的数据类型1) 整数(Integer)整数类型的数代表正整数、负整数和零,表示的范围-(231-1)~(231-1),它与算术整数相似,可进行“+”,“-”,“*”,“/”等算术运算,不能用于逻辑运算。
2) 实数(Real)实数类型也类似于数学上的实数,或称浮点数,表示范围为-1.0E38~1.0E38.3) 位(Bit)在数字系统中信号通常采用一个位来表示,取值值能是1获0。
4) 位矢量(Bit_Vector)位矢量是用双引号括起来的一组位数据,使用位矢量必须注明位宽。
例如:SIGNALa:BIT_VEVCTOR(7to0)信号a被定义为一个具有8位位宽的矢量,最左位为a(7),最右位为a(0)。
5) 布尔量(Boolean)一个布尔量具有两个状态:“真”或“假”。
布尔量不属于数值,因此不能用于运算,它只能通过关系运算符获得。
一般这一类型的数据初始值总为FALSE.6) 字符(Character)字符也是一种数据类型,字符类型通常用单引号引起来,如…A‟。
字符类型区分大小写,如…B‟不同于…b‟。
7) 字符串(String)字符串是由双引号括起来的一个字符序列,也称字符矢量或字符串数组。
常用于程序的提示和说明,如“STRING”等。
8) 时间(Time)时间是一个物理数据。
完整的时间类型包括整数和单位两部分;整数与单位之间至少留一个空格,如55 ms,2 ns。
在包集合STANDARD中给除了时间的预定义,其单位为fs,ps,ns,us,ms,sec,min,hr。
在系统仿真时,时间数据很有用,可用它表示信号延时,从而使模型系统能更逼近实际系统的运行环境。
9) 错误等级(Severity Level)在VHDL仿真器中,错误等级用来指示设计系统的工作状态,它有四种:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。
在仿真过程中,可输出这四种状态以提示系统当前的工作状态。
10) 自然数(Natural)和正整数(Positive)自然数是整数的一个子类型,非负的整数,即为零和正整数。
而Positive只能为正整数。
2.2. IEEE预定义标准逻辑位与矢量在IEEE库的程序包STD_LOGIC1164中,定义了两个重要的数据类型,即标准逻辑位STD_LOGIC和标准逻辑矢量STD_LOGIC_VECTOR,使得STD_LOGIC数据可以具有如下的9种不同的值:“U”—初始值“0”—0“Z”—高阻“L”—弱信号0“X ”—不定“1”—1“W”—弱信号不定“H”—弱信号1“_”—不可能情况注意在使用该类型数据时,在程序中必须写出库说明语句和使用包集合的说明语句。
3 VHDL语言的运算操作符在VHDL语言中共用4类操作符,可以分别进行逻辑运算(Logic)、关系运算(Relational)、算术运算(Arithmetic)和并置运算(Concatenation)。
被操作符所操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。
需要注意的是,各家EDA综合软件对运算操作符支持程序各不相同,使用时应参考综合工具说明。
1) 逻辑运算符运算符在VHDL语言中逻辑运算符有6种,他们分别为:NOT(非)OR(或)AND(与)NOR(或非)NAND(与非)XOR(异或)2) 关系运算符关系运算符它们分别是:=(等于)/=(不等于)<(小于)<=(小于等于)>(大于)>=(大于等于)3) 算术运算符+(加)/(除)SLL(逻辑左移)ROR(逻辑循环右移)-(减)MOD(求模)SRL(逻辑右移)ABS(取绝对值)*(乘)REM(取余)SLA(算术左移)4) 其他运算符<=(信号赋值):=(信号赋值)-(负)+ (正)& (并置运算符,用于位的连接)=>(并联运算符,在元件例化时可用于形参倒实参的映射)4 VHDL语言的结构VHDL语言主要组成构件有设计实体(Entity)、结构体(Architecture)、子程序(Function Procedure )、集合包(Package)和库(Library),前四种称为可编译的设计单元。
一个VHDL 设计就是有这四种构件的组成,编译之后将它们放在制定的库中共享。
其中,实体用于描述设计的接口界面信号,它规定端口数目,端口方向和端口类型。
它与硬件电路设计中的符号相对应。
而结构体指定设计的真实行为,性能和结构,与硬件电路设计中的原理图相对应。
子程序是可被调用的执行某一特定功能算法的集合。
集合包则是为了使常用的数据类型、常数和子程序对于其他设计块可用而集中充放的一批设计单元和约定。
4.1 设计实体实体的定义语法为:ENTITY 实体名IS[端口说明];END 实体名;端口说明书写格式如下:PORT(端口名{,端口名}:方向数据类型名;………………端口名{,端口名}:方向数据类型名);例如,一个二选一路数据选择器的设计实体可描述如下:ENTITY selection ISPORT(a, b, sel: IN BIT;C : OUT BIT );END selection;4.2 构造体用于描述系统内部的结构和行为。
构造体部分定义了设计单元的具体功能(行为)。
1. 构造体句法如下:ARCHITECTURE 构造体名OF 实体名IS[定义语句]内部信号,常数,数据类型,函数等的定义;BEGIN[并行处理语句];END 构造体名;例如:ARCHITECTURE dataflow OF selection ISBEGINq<=(a AND set) OR (NOT sel AND d1);END dataflow;4.2.1 构造体的子结构描述在规模较大的电路设计中,全部电路都用唯一的一个模块来描述是非常不方便的。
为此,电路设计者总希望将整个电路分成若干个相对比较大的模块来进行电路的描述。
这样,一个构造体可以用几个子结构,既相对比较独立的几个模块来构成。
VHDL语言可以有以下三种形式的子结构描述语句:1) 子程序:VHDL提供两种子程序:函数(FUNCTION)和过程(PROCEDURE)函数函数的定义形式如下:FUNCTION<函数名称><接口表>RETURN<数据类型>IS[定义语句];BEGIN<函数语句部分>;END 函数名称;.下面是一个比较器的例子:FUNCTION max(a, b: INTEGER) RETURN INTEGER IS BEGINIF (a>=b)THEN RETURN a;ELSE RETURN b;END IF;END max;一个函数定义好后,可以在其它地方调用。