第3章 VHDL的语言要素.ppt
《第3章 VHDL的语言要素.ppt》由会员分享,可在线阅读,更多相关《第3章 VHDL的语言要素.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 本章内容提要本章内容提要p VHDL 的标识符的标识符p 数据对象数据对象p 数据类型数据类型p 运算操作符运算操作符第第3章章 VHDL的语言要素的语言要素3.1 VHDL的标识符的标识符o 标识符是最常用的命名符,标识符可以是常数、标识符是最常用的命名符,标识符可以是常数、变量、信号、端口、子程序、实体、结构体的变量、信号、端口、子程序、实体、结构体的名称等;名称等;oVHDL的标识符有两种,基本标识符的标识符有两种,基本标识符(VHDL87版版)和扩展标识符和扩展标识符(VHDL93版版)。VHDL93版对版对VHDL87版的标识符语法规则进行了扩展,形版的标识符语法规则进行了扩展,形
2、成了成了VHDL93版的标识符语法规则,以反斜杠版的标识符语法规则,以反斜杠“”界定界定VHDL基本标识符的命名必须遵循如下规则:基本标识符的命名必须遵循如下规则:基本标识符由字母、数字和下划线组成基本标识符由字母、数字和下划线组成 第一个字符必须是字母第一个字符必须是字母 最后一个字符不能是下划线最后一个字符不能是下划线 不允许连续不允许连续2个下划线个下划线 保留字保留字(关键字关键字)不能用于标识符不能用于标识符 大小写是等效的大小写是等效的下面是合法的标识符:下面是合法的标识符:Decoder_1,fft,sig_N,state,aaa一、基本标识符一、基本标识符扩展标识符用反斜杠来界
3、定,可以以数字打头;扩展标识符用反斜杠来界定,可以以数字打头;例:例:74ls173,controller_docode 都是合法的标识都是合法的标识符符允许包含图形符号和空格;允许包含图形符号和空格;例:例:$500&T,A OR B 都是合法的标识符都是合法的标识符允许多个下划线相邻;允许多个下划线相邻;例:例:out_entity 是合法的标识符是合法的标识符扩展标识符区分大小写,且与短标识符不同;扩展标识符区分大小写,且与短标识符不同;例:例:adder,Adder,adder是不同的标识符是不同的标识符扩展标识符的名字如果含有一个反斜杠,则用相邻的两扩展标识符的名字如果含有一个反斜杠
4、,则用相邻的两个反斜杠来代表它;个反斜杠来代表它;例:例:text表示该扩展标识符的名称是表示该扩展标识符的名称是text二、扩展标识符二、扩展标识符VHDL的保留字的保留字(VHDL87版版)3.2 VHDL的数据对象的数据对象 凡是可以被赋值的对象就称为数据对象。凡是可以被赋值的对象就称为数据对象。VHDL中有以下中有以下4类数据对象:类数据对象:l 变量(变量(VARIABLE)l 常量(常量(CONSTANT)l 信号(信号(SIGNAL)l 文件文件*(FILE)包含在包含在VHDL93 标准中标准中 变量和常量与其它计算机高级语言中所说的变量和常量是一致的,而信号则是VHDL特有的
5、数据对象;在电子电路设计中,这3类对象通常具有一定的物理含义,信号对应的代表数字电路中的一根硬件连接线;常数对应于数字电路中的电源和地等;变量无直接的对应关系,通常只用来暂时的保存某些信号的值。对象声明的一般格式对象声明的一般格式对象类型对象类型 对象名对象名:数据类型:数据类型:=初始值初始值 CONSTANT INTEGER VARIABLE BIT SIGNAL CONSTANT CONSTANT 常量名常量名常量名常量名 :数据类型数据类型数据类型数据类型 :=:=表达式;表达式;表达式;表达式;说明:说明:说明:说明:l l 常量名的命名遵循常量名的命名遵循常量名的命名遵循常量名的命
6、名遵循VHDLVHDL标识符的命名规则;标识符的命名规则;标识符的命名规则;标识符的命名规则;l l常量在设计中一旦被赋值就不能再改变常量在设计中一旦被赋值就不能再改变常量在设计中一旦被赋值就不能再改变常量在设计中一旦被赋值就不能再改变;l l 常量的数据类型可以是标量型和复合型,但不能是文常量的数据类型可以是标量型和复合型,但不能是文常量的数据类型可以是标量型和复合型,但不能是文常量的数据类型可以是标量型和复合型,但不能是文件型和存取型(件型和存取型(件型和存取型(件型和存取型(AccessAccess););););l l 常量可以在实体、结构体、程序包、进程、块和子程常量可以在实体、结构
7、体、程序包、进程、块和子程常量可以在实体、结构体、程序包、进程、块和子程常量可以在实体、结构体、程序包、进程、块和子程序的说明部分中被定义。常量的使用范围取决于它被定序的说明部分中被定义。常量的使用范围取决于它被定序的说明部分中被定义。常量的使用范围取决于它被定序的说明部分中被定义。常量的使用范围取决于它被定义的位置。义的位置。义的位置。义的位置。一、常量(一、常量(一、常量(一、常量(CONSTANTCONSTANT)1.1.常量声明格式:常量声明格式:常量声明格式:常量声明格式:CONSTANT VCC:REAL:=5.0;CONSTANT PI:REAL:=3.14;CONSTANT D
8、ELAY_time:TIME:=10 ns;CONSTANT ROM_size:INTEGER:=16#FFFF#;2.2.常量声明示例:常量声明示例:常量声明示例:常量声明示例:二、变量(二、变量(二、变量(二、变量(VARIABLEVARIABLE)1.1.变量的声明格式:变量的声明格式:变量的声明格式:变量的声明格式:VARIABLE VARIABLE 变量名:数据类型变量名:数据类型变量名:数据类型变量名:数据类型 约束条件约束条件约束条件约束条件 :=初始值初始值初始值初始值;2.2.变量的赋值格式:目标变量名变量的赋值格式:目标变量名变量的赋值格式:目标变量名变量的赋值格式:目标变
9、量名:=:=表达式;表达式;表达式;表达式;说明:说明:说明:说明:变量允许多次赋值,且赋值立即生效,不能产生附加延变量允许多次赋值,且赋值立即生效,不能产生附加延变量允许多次赋值,且赋值立即生效,不能产生附加延变量允许多次赋值,且赋值立即生效,不能产生附加延时(它是一种理想化的数据传输过程)时(它是一种理想化的数据传输过程)时(它是一种理想化的数据传输过程)时(它是一种理想化的数据传输过程);变量定义时允许设置初始值,但在综合时,综合器将略变量定义时允许设置初始值,但在综合时,综合器将略变量定义时允许设置初始值,但在综合时,综合器将略变量定义时允许设置初始值,但在综合时,综合器将略去所有的初
10、始值;去所有的初始值;去所有的初始值;去所有的初始值;对变量进行赋值时,目标变量可以是单值变量,也可以对变量进行赋值时,目标变量可以是单值变量,也可以对变量进行赋值时,目标变量可以是单值变量,也可以对变量进行赋值时,目标变量可以是单值变量,也可以是数组型变量;是数组型变量;是数组型变量;是数组型变量;在在在在VHDLVHDL中,变量只能在进程和子程序(过程和函数)中,变量只能在进程和子程序(过程和函数)中,变量只能在进程和子程序(过程和函数)中,变量只能在进程和子程序(过程和函数)中使用,它是一个局部量。中使用,它是一个局部量。中使用,它是一个局部量。中使用,它是一个局部量。3 3、变量使用示
11、例:、变量使用示例:、变量使用示例:、变量使用示例:VARIABLE x,y,z:INTEGER;VARIABLE COUNT:INTEGER RANGE 0 TO 255:=10;VARIABLE a,b:BIT_VECTOR(0 to 7);b:=”1010101”;a:=b;a(3 to 6):=(1,1,0,1););-注意赋值注意赋值符号两边的位宽必须相等符号两边的位宽必须相等a(0 to 5):=b(2 to 7);a(7):=0;注意上例中对数组中单个元素赋值和多个元素赋值时的差异。注意上例中对数组中单个元素赋值和多个元素赋值时的差异。信信号号是是VHDL语语言言独独有有的的数数
12、据据对对象象,信信号号相相当当于于电电路路中中元元件件之之间间的的连连线线,或或者者认认为为是是电电路路内内部部的的某某一一节节点点。信信号号除除了了没没有有数数据据流流动动方方向向的的说说明明以以外外,其其它它性性质质与与实实体体的的端端口口概念是一致的。概念是一致的。1.信号声明格式:信号声明格式:SIGNAL 信号名:数据类型信号名:数据类型 约束条件约束条件:表达式;表达式;2.信号赋值格式:信号赋值格式:信号名信号名=表达式;表达式;三、信号(三、信号(SIGNAL)p 信号的赋值符号是信号的赋值符号是“=”,但赋初值符号也是,但赋初值符号也是“:=”;p 信号没有方向性:可以被赋值
13、,也可被读取;信号没有方向性:可以被赋值,也可被读取;p信信号号通通常常在在实实体体、结结构构体体和和包包集集合合中中定定义义,但但不不能能在在进进程和子程序中定义;程和子程序中定义;p 信信号号赋赋值值不不是是立立即即发发生生的的,需需要要经经过过一一个个特特定定的的延延时时量量后才有效;后才有效;p 在在进进程程中中,只只能能将将信信号号列列入入敏敏感感表表,而而不不能能将将变变量量列列入入敏感表;敏感表;p 在在一一个个进进程程中中,允允许许对对同同一一信信号号有有多多个个驱驱动动源源(即即对对其其进行多次赋值),但只有最后的赋值语句有效;进行多次赋值),但只有最后的赋值语句有效;信号的
14、使用说明:信号的使用说明:信号的使用说明:信号的使用说明:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity test isport(a,b:in integer range 0 to 7;c,d:out integer range 0 to 15);end entity test;architecture behav of test is signal cc,dd:integer range 0 to 15;beginprocess(a,b)begin cc=a+b;-赋值语句不会执行
15、赋值语句不会执行 dd=a-b;cc=a-b;-最后一个赋值语句有效最后一个赋值语句有效 c=cc;d=dd;end process;end behav;3 3、信号的使用示例:多个驱动源对同一信号赋值、信号的使用示例:多个驱动源对同一信号赋值、信号的使用示例:多个驱动源对同一信号赋值、信号的使用示例:多个驱动源对同一信号赋值定义了两个定义了两个信号信号cc,ddMAX+plusII警告:警告:Found multiple assignments to the same signal in a Process Statementonly the last assignment will tak
16、e effect.端口其实也端口其实也是信号是信号p变变量量赋赋值值立立即即生生效效,而而信信号号赋赋值值需需要要在在delta()延延时时量量(延延时时:系系统统自自动动设设置置一一个个微微小小延延时时量量)系系统统或或者者用用户户指指定定的的延延时时周周期期后后(用用AFTER子子句句 指指定定)才才生生效效这这是是信号和标量的本质区别所在;信号和标量的本质区别所在;p信信号号不不允允许许在在进进程程和和子子程程序序中中声声明明,而而变变量量(不不包包括括共共享变量)只能在进程和子程序中使用;享变量)只能在进程和子程序中使用;p赋赋值值符符号号不不同同:信信号号的的赋赋值值符符号号是是“=
17、”,而而变变量量的的赋赋值符号为值符号为“:=”;p在在进进程程(PROCESS)中中,只只能能把把信信号号列列入入敏敏感感信信号号表表,而不能将变量列入敏感表;而不能将变量列入敏感表;4 4、信号和变量的区别信号和变量的区别信号和变量的区别信号和变量的区别signal d:std_logic;beginProc_A:process(a,b,c,d)begin d=a;x=b+d;d=c;y=b+d;end process Proc_A;Proc_B:process(a,b,c,d)variable d:std_logic;begin d:=a;x=b+d;d:=c;y=b+d;end pro
18、cess Proc_B;例例例例1 1:思考以下两个进程的运行结果有何不同:思考以下两个进程的运行结果有何不同:思考以下两个进程的运行结果有何不同:思考以下两个进程的运行结果有何不同?进程进程Proc_A运行结果为:运行结果为:x=b+c;y=b+c;进程进程Proc_B运行结果为:运行结果为:x=b+a;y=b+c;process(reset,clk)variable aa,bb:integer range 0 to 9;beginif reset=1 then aa:=1;bb:=0;elsif rising_edge(clk)then if aa=1 then bb:=4;end if;
19、if bb=4 then aa:=5;end if;end if;a=aa;b=bb;end process;end;process(reset,clk)beginif reset=1 then aa=1;bb=0;elsif rising_edge(clk)then if aa=1 then bb=4;end if;if bb=4 then aa=5;end if;end if;a=aa;b=bb;end process;end;例例例例2 2:思考以下两个进程的运行结果有何不同?:思考以下两个进程的运行结果有何不同?:思考以下两个进程的运行结果有何不同?:思考以下两个进程的运行结果有何不同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 VHDL的语言要素 VHDL 语言 要素
限制150内