(精品)第二章VHDL语言元素.ppt

上传人:gsy****95 文档编号:85140437 上传时间:2023-04-10 格式:PPT 页数:47 大小:743KB
返回 下载 相关 举报
(精品)第二章VHDL语言元素.ppt_第1页
第1页 / 共47页
(精品)第二章VHDL语言元素.ppt_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《(精品)第二章VHDL语言元素.ppt》由会员分享,可在线阅读,更多相关《(精品)第二章VHDL语言元素.ppt(47页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第二章第二章 VHDLVHDL语言元素语言元素 2.1VHDL语言的客体语言的客体2.2VHDL语言的数据类型语言的数据类型2.3VHDL数据类型转换数据类型转换2.4VHDL词法规则与标识符词法规则与标识符总总目录目录章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节2.1 VHDL2.1 VHDL语言的客体语言的客体 VHDLVHDL语言中,可以赋予一个质的对象就称为客体。语言中,可以赋予一个质的对象就称为客体。客体主要包括以下三种:变量(客体主要包括以下三种:变量(VARIABLEVARIABLE)、)、常量常量(CONSTANTCONSTANT)、)、信号(信号(SIGNAL

2、SIGNAL)。)。2.1.1常量(常量(CONSTANT)(常数常数)定定义义一一个个常常数数主主要要是是为为了了使使设设计计实实体体中中的的某某些些量量易易于于阅阅读读和和修修改改。常常数数说说明明就就是是对对某某一一常常数数名名赋赋予予一一个个固固定定的的值值。通通常常在在程程序序开开始始前前进进行行赋赋值值,该该值值的的数数据据类型在说明语句中说明。类型在说明语句中说明。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录例如:例如:CONSTANTVcc:REAL:=5.0;CONSTANTFbus:BIT_VECTOR:=“1011”;CONSTANTDelay

3、:TIME:=10ns;注注:常量是一个恒定不变的值,一旦做了数据类型和常量是一个恒定不变的值,一旦做了数据类型和赋赋值定义,它在程序中就不能再改变。值定义,它在程序中就不能再改变。常数说明语句格式为:常数说明语句格式为:CONSTANT常数名:数据类型常数名:数据类型:=表达式;表达式;章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录变变量量只只能能在在进进程程和和子子程程序序中中用用,是是一一个个局局部部量量,不不能能将将信信息息带带出出对对它它做做出出定定义义的的当当前前设设计计单单元元。与与信信号号不不同同,变变量量的的赋赋值值是是理理想想化化数数据据传传输输,

4、其其赋赋值值是是立立即即生生效效的的,不存在任何的延时行为。不存在任何的延时行为。变量定义语句的格式为:变量定义语句的格式为:VARIABLE变量名变量名:数据类型数据类型:约束条件约束条件:=初始值;初始值;例如:例如:VARIABLEn:INTEGERRANGE0TO15:=2;VARIABLEa:INTEGER;2.1.2变量(变量(VARIABLE)章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录变量赋值语句的格式为:变量赋值语句的格式为:目标变量名目标变量名:=表达式;表达式;赋赋值值语语句句“:=”右右边边的的表表达达式式必必须须与与目目标标变变量量具具有有

5、相相同同的的数数据据类类型型,这这个个表表达达式式可可以以是是一一个个运运算算表表达达式也可以是一个数值。式也可以是一个数值。变变量量赋赋值值语语句句左左边边的的目目标标变变量量可可以以是是单单值值变变量量,也也可以是变量的集合。可以是变量的集合。例如定义变量:例如定义变量:VARIABLEa,b:=REAL;VARIABLEx,y:=BIT_VECTOR(0TO7););章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录信号是电子电路内部硬件连接的抽象。它可以作为设信号是电子电路内部硬件连接的抽象。它可以作为设计实体中的并行语句模块间交流信息的通道。计实体中的并行语句模

6、块间交流信息的通道。信号及其相关的延时语句明显地体现了硬件系统的特信号及其相关的延时语句明显地体现了硬件系统的特征。征。信号定义语句的格式为:信号定义语句的格式为:SIGNAL信号名:数据类型:约束条件信号名:数据类型:约束条件:=表达式;表达式;例如:例如:SIGNALgnd:BIT:=0;SIGNALdata:STD_LOGIC_VECTOR(7DOWNTO0);2.1.3 信号(信号(SIGNAL)章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录信号赋值语句表达式为:信号赋值语句表达式为:目标信号名目标信号名=表达式;表达式;符符号号“=”表表示示赋赋值值操操作作

7、,即即将将数数据据信信息息传传入入。数数据据信信息息传传入入时时可可以以设设置置延延时时过过程程,这这与与器器件件的的实实际际传传播播延时十分接近。延时十分接近。因因此此信信号号值值的的代代入入采采用用“=”代代入入符符,而而不不是是像像变变量赋值时那样用量赋值时那样用“:”。但但信信号号定定义义时时初初始始赋赋值值符符号号“:”,即即仿仿真真的的时时间间坐标是从赋初始值开始的。坐标是从赋初始值开始的。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录注意注意:变量和信号都必须先定义变量和信号都必须先定义,后赋值。注意赋值符后赋值。注意赋值符“=”和和“:”的差别。的差别

8、。信号赋值语句举例:信号赋值语句举例:x=y;a=1;s1=s2AFTER10ns;信号与变量的区别:信号与变量的区别:信信号号和和变变量量是是VHDL中中重重要要的的客客体体,他他们们之之间间的的主主要区别有:要区别有:(1)信号赋值至少要有信号赋值至少要有延时;而变量赋值没有。延时;而变量赋值没有。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录(2)信信号号除除当当前前值值外外有有许许多多相相关关的的信信息息,如如历历史史信信息息和和投投影波形;而变量只有当前值。影波形;而变量只有当前值。(3)进程对信号敏感而不对变量敏感。进程对信号敏感而不对变量敏感。(4)信信

9、号号可可以以是是多多个个进进程程的的全全局局信信号号;而而变变量量只只在在定定义义他他们的顺序域可见(共享变量除外)。们的顺序域可见(共享变量除外)。(5)信号是硬件中连线的抽象描述,他们的功能是保存变信号是硬件中连线的抽象描述,他们的功能是保存变化的数据值和连接子元件,信号在元件的端口连接元件。化的数据值和连接子元件,信号在元件的端口连接元件。变量在硬件中没有类似的对应关系,他们用于硬件特变量在硬件中没有类似的对应关系,他们用于硬件特性的高层次建模所需要的计算中。性的高层次建模所需要的计算中。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录2.2 VHDL语言的数据类

10、型语言的数据类型 在对在对VHDLVHDL的客体进行定义时,都要指定其数据类型。的客体进行定义时,都要指定其数据类型。VHDLVHDL有多种标准的数据类型,并且允许用户自定义数据有多种标准的数据类型,并且允许用户自定义数据类型。类型。在在VHDLVHDL语言语义约束中,对类型的要求反映在赋值语语言语义约束中,对类型的要求反映在赋值语句的目标与源的一致,表达式中操作的一致,子类型中句的目标与源的一致,表达式中操作的一致,子类型中 约束与类型的一致等许多方面。约束与类型的一致等许多方面。2.2.1 VHDL2.2.1 VHDL中预定义的数据类型(编程者可直接使用)中预定义的数据类型(编程者可直接使

11、用)预定义类型在预定义类型在VHDLVHDL标准程序包标准程序包STANDARDSTANDARD中定义,在中定义,在 应用中自动包含进应用中自动包含进VHDLVHDL的源文件,不需要的源文件,不需要USEUSE语句显示语句显示 调用。调用。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录1.整数(整数(INTEGER)整数与数学中整数的定义相似,可以使用预定义运整数与数学中整数的定义相似,可以使用预定义运算操作符,如加算操作符,如加“”、减、减“”、乘、乘“”、除、除“”进行算术运算。在进行算术运算。在VHDL语言中,整数的表示范语言中,整数的表示范围为围为214748

12、36472147483647,即从,即从(2311)到到(2311)。2.实数(实数(REAL)在在进进行行算算法法研研究究或或实实验验时时,作作为为对对硬硬件件方方案案的的抽抽象象手手段段,常常常常采采用用实实数数四四则则运运算算。实实数数的的定定义义值值范范围围为为1.0E+38+1.0E+38。实实数数有有正正负负数数,书书写写时时一一定定要要有有小小数点。例如:数点。例如:1.0,+2.5,1.0E+38数据类型说明如下数据类型说明如下数据类型说明如下数据类型说明如下:章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录3.位位(BIT)用用来来表表示示数数字字系系

13、统统中中的的信信号号值值。位位值值用用字字符符0或或者者1(将将值值放放在在引引号号中中)表表示示。与与整整数数中中的的1和和0不不同同,1和和0仅仅表示一个位的两种取值。仅仅表示一个位的两种取值。位位数数据据可可以以用用来来描描述述数数字字系系统统中中总总线线的的值值。位位数数据据不不同于布尔数据,可以用转换函数进行转换。同于布尔数据,可以用转换函数进行转换。4.位矢量位矢量(BIT_VECTOR)位位矢矢量量是是用用双双引引号号括括起起来来的的一一组组数数据据。例例如如:“001100”,X“00bb”。在在这这里里位位矢矢量量前前面面的的X表表示示是是十十六六进进制制。用用位位矢矢量量数

14、数据据表表示示总总线线状状态态最最形形象象也也最最方方便便,在在VHDL程程序序中中将将会会经经常常遇遇到到。使使用用位位矢矢量量时时必必须须注注明明位宽,即数组中元素个数和排列位宽,即数组中元素个数和排列.例如:例如:SIGNALs1:BIT_VECTOR(15DOWNTO0););章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录5.布尔量布尔量(BOOLEAN)一个布尔量具有两种状态,一个布尔量具有两种状态,“真真”或者或者“假假”。虽然布尔量也是。虽然布尔量也是二值枚举量,但它和位不同没有数值的含义,也不能进行算术运算。二值枚举量,但它和位不同没有数值的含义,也不

15、能进行算术运算。它能进行关系运算。例如,它可以在它能进行关系运算。例如,它可以在if语句中被测试,测试结果产生语句中被测试,测试结果产生一个布尔量一个布尔量TRUE或者或者FALSE。6.字符字符(CHARACTER)字符也是一种数据类型,所定义的字符量通常用单引号括起来,字符也是一种数据类型,所定义的字符量通常用单引号括起来,如如a。一般情况下一般情况下VHDL对大小写不敏感,但对字符量中的大小对大小写不敏感,但对字符量中的大小写则认为是不一样的。例如,写则认为是不一样的。例如,B不同于不同于b。字符量中的字符可以是从字符量中的字符可以是从a到到z中的任一个字母,从中的任一个字母,从0到到9

16、中的任一中的任一个数以及空格或者特殊字符,如个数以及空格或者特殊字符,如$,%等等。等等。包集合包集合standard中给出了预定义的中给出了预定义的128个个ASC码字符,不能打印码字符,不能打印的用标识符给出。的用标识符给出。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录7.字符串字符串(STRING)字字符符串串是是由由双双引引号号括括起起的的一一个个字字符符序序列列,也也称称字字符符矢矢量量或或字字符符串串组组。字字符符串串常常用用于于程程序序的的提提示示和和说说明明。字字符符串举例如下:串举例如下:VATIABLEstring_1:STRING(0TO3);

17、string_1:=“abcd”;8.时间时间(TIME)时时间间是是一一个个物物理理量量数数据据。完完整整的的时时间间量量数数据据应应包包含含整整数数和和单单位位两两部部分分,而而且且整整数数和和单单位位之之间间至至少少应应留留一一个个空格的位置。例如空格的位置。例如55sec,2min等。等。字符字符1与整数与整数1和实数和实数1.0都是不相同的,当要明确都是不相同的,当要明确指出指出1的字符数据的字符数据时,则可写为:时,则可写为:CHARACTER(1)。)。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录9.错误等级错误等级(SEVERITYLEVEL)错错误

18、误等等级级类类型型数数据据用用来来表表征征系系统统的的状状态态,共共有有4种种:note(注注意意),warning(警警告告),error(出出错错),failure(失败)。失败)。在在系系统统仿仿真真过过程程中中可可以以用用这这4种种状状态态来来提提示示系系统统当当前前的的工工作作情情况况,从从而而使使设设计计人人员员随随时时了了解解当当前前系系统统工工作作的的情况,并根据系统的不同状态采取相应的对策。情况,并根据系统的不同状态采取相应的对策。在在包包集集合合STANDARD中中给给出出了了时时间间的的预预定定义义,其其单单位位为为fs,ps,ns,s,ms,sec,min和和hr。例例

19、如如:20s,100ns,3sec。在在系系统统仿仿真真时时,时时间间数数据据特特别别有有用用,用用它它可可以以表表示示信信号号延延时时,从从而而使使模模型型系系统统能能更更逼逼近近实实际际系系统统的的运运行行环境。环境。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录上述上述10种数据类型是种数据类型是VHDL语言中标准的数据类型,在语言中标准的数据类型,在编程时可以直接引用。如果用户需使用这编程时可以直接引用。如果用户需使用这10种以外的数据种以外的数据类型,则必须进行自定义。但大多数的类型,则必须进行自定义。但大多数的CAD厂商已在包集厂商已在包集合中对标准数据类

20、型进行了扩展。例如,数组型数据等,合中对标准数据类型进行了扩展。例如,数组型数据等,请同学们注意。请同学们注意。10.大大于于等等于于零零的的整整数数(自自然然数数)(NATURAL),正正整整数数(POSITIVE)这这两两种种数数据据是是整整数数的的子子类类,NATURAL类类数数据据为为取取0和和0以上的正整数;而以上的正整数;而POSITIVE则只能为正整数。则只能为正整数。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录可以由用户定义的数据类型有:可以由用户定义的数据类型有:枚举(枚举(ENUMERATED)类型;类型;整数(整数(INTEGER)类型;类型;

21、实数(实数(REAL)、)、浮点数(浮点数(FLOATING)类型;类型;数组(数组(ARRAY)类型;类型;存取(存取(ACCESS)类型;类型;文件(文件(FILE)类型;类型;记录(记录(RECORDE)类型;类型;时间(时间(TIME)类型(物理类型)。类型(物理类型)。2.2.2用户自定义的数据类型用户自定义的数据类型 章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录用户自定义数据类型方式用户自定义数据类型方式用户自定义数据类型方式用户自定义数据类型方式用户可采用类型定义语句用户可采用类型定义语句type和子类型定义语句和子类型定义语句subtype自定义数据

22、类自定义数据类型,如枚举类型、整数类型、数组类型、记录类型、时间类型及实数型,如枚举类型、整数类型、数组类型、记录类型、时间类型及实数类型等。类型等。1)type语句语句格式:格式:type数据类型名数据类型名is数据类型定义数据类型定义of基本数据类型;基本数据类型;或或type数据类型名数据类型名is数据类型定义;数据类型定义;例:例:typestatesis(read,write););signalpresent_state,next_state:states;再举一例自定义数据类型再举一例自定义数据类型week如下:如下:typeweekis(sun,mon,tue,wed,thu,f

23、ri,sat););signalhotel,home:week;上述对信号上述对信号hotel和和home的定义表明它们是自定义数据的定义表明它们是自定义数据类型类型week,因此这两个信号之间可以相互作用,因为,因此这两个信号之间可以相互作用,因为只有它们属于同一数据类型。只有它们属于同一数据类型。2)subtype语句语句subtype语语句句用用来来定定义义数数据据类类型型的的子子类类型型。VHDL规规定定任任何何基基本本数数据据类类型型均均可可定定义义其其子子类类型型。子子类类型型与与其其父父类类型型完完全兼容。全兼容。格式:格式:subtype子类型名子类型名is基本数据类型基本数据

24、类型range约束范围;约束范围;例:例:typeintegeris2147483647to+2147483647;typeiisintegerrange0to50;subtypenaturalisintegerrange0to+2147483647;subtypeciisirange0to30;subtypediiscirange0to10;subtypedataisbit_vector(3downto0);subtypelower_dataisdata;第第三三句句定定义义自自然然数数为为整整数数数数据据类类型型的的子子类类型型;第第四四句句定定义义ci为为i的的子子类类型型。第第五五句句

25、定定义义di为为ci的的子子类类型型,VHDL允允许许定定义义子子类类型型的的子子类类型型;第第六六句句,使使用用约约束束条条件件(3downto0)对对非非限限定定性性数数组组bit_vector作作具具体体说说明;第七句,明;第七句,lower_data是是data的一个子类型。的一个子类型。用户自定义数据类型用户自定义数据类型1.枚举类型枚举类型如:Type year is(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);Signal thismoth:year;result=sep else 0;1.标准化数据类型标准化数据类型IEEE

26、93增增加加了了多多值值逻逻辑辑包包STD_LOGIC_1164,使使得得“STD_LOGIC”数据具有数据具有9种不同的值。种不同的值。其定义如下所示:其定义如下所示:2.2.3IEEE预定义标准预定义标准章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录TYPESTD_LOGICIS(U,-初始值初始值X,-不定不定0,-01,-1Z,-高阻高阻W,-弱信号不定弱信号不定L,-弱信号弱信号0H,-弱信号弱信号1-不可能情况不可能情况););章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录与与其其他他程程序序设设计计语语言言相相似似,VHDL中中

27、的的表表达达式式也也是是由由运运算算符符将将基基本本元元素素连连接接起起来来形形成成。这这里里的的基基本本元元素素包包括括对对象名、文字、函数调用及用括号括起来的表达式。象名、文字、函数调用及用括号括起来的表达式。在在VHDL语言中共有语言中共有4类操作符,可以分别进行逻辑运类操作符,可以分别进行逻辑运算(算(LOGICAL)、)、关系运算(关系运算(RELATIONAL)、)、算术算术运算(运算(ARITHMETIC)和并置运算和并置运算(CONCATENATION)。)。需要指出的是操作符操作的对象是操作数,且操作数需要指出的是操作符操作的对象是操作数,且操作数的类型应该和操作符所要求的类

28、型相一致。另外,运算操的类型应该和操作符所要求的类型相一致。另外,运算操作符是有优先级的,例如,逻辑运算符作符是有优先级的,例如,逻辑运算符not,在所有操作在所有操作符中优先级最高。符中优先级最高。2.4VHDL操作符操作符 章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录1.逻辑运算符逻辑运算符在在VHDL语言中,共有语言中,共有6种逻辑运算符,他们分别是:种逻辑运算符,他们分别是:NOT取反;取反;AND与;与;OR或;或;NAND与非;与非;NOR或非;或非;XOR异或。异或。这这6种逻辑运算符可以对种逻辑运算符可以对“STD_LOGIC”和和“BIT”等等逻辑

29、型数据、逻辑型数据、“STD_LOGIC_VECTOR”逻辑型数组及布尔逻辑型数组及布尔数据进行逻辑运算。数据进行逻辑运算。必须注意必须注意:运算符的左边和右边,以及代入的信号的数运算符的左边和右边,以及代入的信号的数据类型必须是相同的。据类型必须是相同的。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录2.算术运算符算术运算符VHDL语言中有语言中有5类算术运算符,他们分别是:类算术运算符,他们分别是:求和操作符:求和操作符:(加)、(减)(加)、(减)求求积积操操作作符符:*(乘乘)、/(除除)、MOD(求求模模)、REM(取余)取余)符号操作符:符号操作符:(正)

30、、(负)(正)、(负)混合操作符:混合操作符:*(指数)、(指数)、ABS(取绝对值)取绝对值)移位操作符:移位操作符:SLL(逻辑左移)、逻辑左移)、SRL(逻辑右移)、逻辑右移)、SLA(算术左移)、算术左移)、SRA(算术右移)、算术右移)、ROL(逻辑循逻辑循环左移)、环左移)、ROR(逻辑循环右移)逻辑循环右移)章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录3.关系运算符关系运算符VHDL语言中有语言中有6种关系运算符,他们分别是:种关系运算符,他们分别是:=等于;等于;/=不等于;不等于;小于;小于;大于;大于;=大于等于;大于等于;章目录章目录第一节第一

31、节第二节第二节第三节第三节第四节第四节总总目录目录4.并置运算符并置运算符&连接连接SIGNALg,h,i:STD_LOGIC;SIGNALc,d,e:STD_LOGIC_VECTOR(1TO0););d=i&NOTh;a=c&d;元素与元素并置,形成长度为元素与元素并置,形成长度为2的数组的数组数组与数组并置,形成长度为数组与数组并置,形成长度为4的数组的数组章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录运算符运算符优先级优先级NOT,ABS,*,/,MOD,REM+(正号),(负号)正号),(负号)+,&SLL,SLA,SRL,SRA,ROL,ROR=,/=,=A

32、ND,OR,NAND,NOR,XOR,XNOR最高优先级最高优先级最低优先级最低优先级5.VHDL操作符的优先顺序操作符的优先顺序 章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录【例例5-4】SIGNAL a,b,c:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL d,e,f,g:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL h,I,j,k:STD_LOGIC;SIGNAL l,m,n,o,p:BOOLEAN;.a=b AND c;-b、c 相与后向相与后向a赋值,赋值,a、b、c的数据类型同属的数据类型同属4位长的位

33、矢量位长的位矢量 d=e OR f OR g;-两个操作符两个操作符OR相同,不需括号相同,不需括号 h=(i NAND j)NAND k;-NAND不属不属AND、OR、XOR三种算符中的一种,三种算符中的一种,必须加括号必须加括号 l=(m XOR n)AND(o XOR p);-操作符不同,必须加括号操作符不同,必须加括号 h=i AND j AND k;-两个操作符都是两个操作符都是AND,不必加括号不必加括号 h=i AND j OR k;-两个操作符不同,未加括号,表达错误两个操作符不同,未加括号,表达错误 a=b AND e;-操作数操作数b 与与 e的位矢长度不一致,表达错误的

34、位矢长度不一致,表达错误 h=i OR l;-i 的数据类型是位的数据类型是位STD_LOGIC,而,而l的数据类型是的数据类型是.-布尔量布尔量BOOLEAN,因而不能相互作用,表达错误。因而不能相互作用,表达错误。逻辑操作符逻辑操作符关系操作符关系操作符【例例】ENTITY relational_ops_1 IS PORT(a,b:IN BITVECTOR(0 TO 3);m:OUT BOOLEAN);END relational_ops_1;ARCHITECTURE example OF relational_ops_1 IS BEGIN output=(a=b);END example

35、;【例例5-6】ENTITY relational_ops_2 IS PORT(a,b:IN INTEGER RANGE 0 TO 3;m:OUT BOOLEAN);END relational_ops_2;ARCHITECTURE example OF relational_ops_2 IS BEGIN output=b);END example;六种关系运算操六种关系运算操作符:作符:“=”(等于等于)、“/=”(不等于不等于)、“”(大于大于)、“=”(大于等于大于等于)“=”(小于等于小于等于)算术操作符算术操作符表表算术操作符分类表算术操作符分类表1.1.求和操作符求和操作符VARI

36、ABLE a,b,c,d,e,f:INTEGER RANGE 0 TO 255;.a:=b+c;d:=e f ;【例例】PROCEDURE adding_e(a:IN INTEGER;b:INOUT INTEGER)IS.b:=a+b;【例例5-9】PACKAGE example_arithmetic IS TYPE small_INt IS RANGE 0 TO 7;END example_arithmetic;USE WORK.example_arithmetic.ALL;ENTITY arithmetic IS PORT(a,b:IN SMALL_INT;c:OUT SMALL_INT)

37、;END arithmetic;ARCHITECTURE example OF arithmetic IS BEGIN c=a+b;ENDexample;2.2.求积操作符求积操作符算术操作符算术操作符3.3.符号操作符符号操作符求积操作符包括求积操作符包括*(乘乘)、/(/(除除)、MOD(MOD(取模取模)和和RED(RED(取余取余)四种操作符。四种操作符。符号操作符符号操作符“+”+”和和“”的操作数只有的操作数只有一个一个算术操作符算术操作符4.4.混合操作符混合操作符【例例】SIGNAL a,b:INTEGER RANGE 8 to 7;SIGNAL c:INTEGER RANGE

38、 0 to 15;SIGNAL d:INTEGER RANGE 0 to 3;a=ABS(b);c=2*d;混合操作符包括乘方混合操作符包括乘方“*”操作符和取绝对值操作符和取绝对值“ABS”操作符两种操作符两种SLLSLL逻辑左移逻辑左移SRLSRL逻辑右移逻辑右移移空的位补零移空的位补零SLASLA算术左移算术左移SRASRA算术右移算术右移移空的位由最初首位补移空的位由最初首位补ROLROL逻辑循环左移逻辑循环左移RORROR逻辑循环右移逻辑循环右移移出的位依次填补移空的位移出的位依次填补移空的位算术操作符算术操作符5.5.移位操作符移位操作符移位操作符的语句格式是:移位操作符的语句格式

39、是:标识符标识符 移位操作符移位操作符 移位位数移位位数 ;例:例:“1 1001001001001”SLL 1=SLL 1=“0010010010010 0”“1001001001001 1”SRL 1=SRL 1=“0 0100100100100”“1 1001001001001”SLA 1=SLA 1=“0010010010011 1”“1001001001001 1”SRA 1=SRA 1=“1 1100100100100”“1 1001001001001”ROL 1=ROL 1=“0010010010011 1”“1001001001001 1”ROR 1=ROR 1=“1 1100

40、100100100”2.4VHDL词法规则与标识符词法规则与标识符 2.4.1词法规则词法规则1.注释注释 为了提高为了提高VHDL源程序的可读性,在源程序的可读性,在VHDL中可以写中可以写入注释。入注释。注释以注释以-开头直到本行末尾的一段文字。在开头直到本行末尾的一段文字。在MUX+PLUS中可以看见,敲入中可以看见,敲入-之后,后面字体的之后,后面字体的颜色就发生改变。颜色就发生改变。注释不是注释不是VHDL设计描述的一部分,编译后存入数据设计描述的一部分,编译后存入数据库中的信息不包含注释。库中的信息不包含注释。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录

41、注释举例:注释举例:Q:OUTSTD_LOGIC_VECTOR(11DOWNTO0););-A/D转换数据输出显示(行注释)转换数据输出显示(行注释)-SRAM数据写入控制状态机(段注释)数据写入控制状态机(段注释)WRIT_STATE:PROCESS(clk,rst)-SRAM写入控制状态机时序电路进程写入控制状态机时序电路进程2.数字数字数数字字型型文文字字可可以以有有多多种种表表达达方方式式:可可以以是是十十进进制制数数,也也可可以以表表示示为为二二进进制制、八八进进制制或或十十六六进进制制等等为为基基的的数数,可以是整数,也可以是含有小数点的浮点数。可以是整数,也可以是含有小数点的浮点

42、数。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录现举例如下现举例如下:(1)十进制整数表示法:十进制整数表示法:如如:012578_456(=78456)2E6在在相相邻邻数数字字之之间间插插入入下下划划线线,对对十十进进制制数数值值不不产产生生影影响响,仅仅仅仅是是为为了了提提高高文文字字的的可可读读性性。允允许许在在数数字字之之前前冠冠以若干个以若干个0,但不允许在数字之间存在空格。,但不允许在数字之间存在空格。(2)以基表示的数:用这种方式表示的数由五个部分组成。以基表示的数:用这种方式表示的数由五个部分组成。第第一一部部分分,用用十十进进制制数数标标明明数数

43、值值进进位位的的基基数数;第第二二部部分分,数数值值隔隔离离符符号号“#”;第第三三部部分分,表表达达的的文文字字;第第四四部部分分,指指数数隔隔离离符符号号“#”;第第五五部部分分,用用十十进进制制表表示的指数部分,这一部分的数如果为示的指数部分,这一部分的数如果为0可以省去不写。可以省去不写。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录如如:2#111_1011#8#1473#16#A8#E1016#F.01#E+4对以基表示的数而言,相邻数字间插入下划线不影响对以基表示的数而言,相邻数字间插入下划线不影响数值。基的最小数为数值。基的最小数为2,最大数为,最大数

44、为16,以基表示的数中允,以基表示的数中允许出现许出现A至至F的字母,大小写字母意义无区别。的字母,大小写字母意义无区别。(3)实数:实数必须带有小数点。实数:实数必须带有小数点。如如:12.00.03.146_741_113.66652.6E2(4)物理量文字:综合器不支持物理量文字的综合。物理量文字:综合器不支持物理量文字的综合。如如:60s(秒)秒)100m(米)米)177A(安培)安培)章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录3.字符和字符串字符和字符串字字符符是是用用单单引引号号引引起起来来的的ASC字字符符,可可以以是是数数值值,也可以是符号或字母,

45、也可以是符号或字母,如如:E,e,$,23,A字字符符串串是是一一维维的的字字符符数数组组,需需放放在在双双引引号号中中。有有两两种种类型的字符串:文字字符串和位矢量字符串。类型的字符串:文字字符串和位矢量字符串。文字字符串是用双引号引起来的一串文字。文字字符串是用双引号引起来的一串文字。如如:“FALSE”,“X”,“THISISEND”章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录位位矢矢量量字字符符串串是是被被双双引引号号引引起起来来的的扩扩展展的的数数字字序序列列,数字序列前冠以基数说明符。数字序列前冠以基数说明符。基数符有基数符有“B”、“O”、“X”,他们

46、的含义如下。他们的含义如下。B:二二进进制制基基数数符符号号,表表示示二二进进制制位位0或或1,在在字字符符串串中中每一个位表示一个每一个位表示一个BIT。O:八八进进制制基基数数符符号号,在在字字符符串串中中每每一一个个数数代代表表一一个个八八进制数,即代表一个进制数,即代表一个3位(位(BIT)的二进制数。的二进制数。X:十十六六进进制制基基数数符符号号,代代表表一一个个十十六六进进制制数数,即即代代表表一个一个4位二进制数。位二进制数。例如:例如:B“1011_1111”,O“152”,X“F821”章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录4.下标名下标名

47、下标名用于指示数组型变量或信号的某一元素。下标名用于指示数组型变量或信号的某一元素。SIGNALa,b:BIT_VECTOR(0TO3););SIGNALs:INTEGERRANGE0TO2;SIGNALx,y:BIT;x=a(s);y=b(3);上例中,上例中,a(s)为一下标语句,为一下标语句,s是不可计算的下标名,是不可计算的下标名,只能在特定情况下进行综合;只能在特定情况下进行综合;b(3)的下标为的下标为3,可以进,可以进行综合。行综合。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录标识符是最常用的操作符,可以是常数、变量、信标识符是最常用的操作符,可以是常

48、数、变量、信号、端口、子程序或参数的名字。号、端口、子程序或参数的名字。标识符规则是标识符规则是VHDL语言中符号书写的一般规则,为语言中符号书写的一般规则,为EDA工具提供了标准的书写规范。工具提供了标准的书写规范。VHDL93对对VHDL87版本的标识符语法规则进行了扩版本的标识符语法规则进行了扩展,通常称展,通常称:VHDL87版本标识符为短标识符,版本标识符为短标识符,VHDL93版标识符为扩展标识符。版标识符为扩展标识符。2.4.2 标识符标识符章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录1.短标识符短标识符VHDL短标识符需遵守以下规则:短标识符需遵守以

49、下规则:(1)必须以英文字母开头;)必须以英文字母开头;(2)英文字母、数字()英文字母、数字(09)和下划线都是有效的字符;)和下划线都是有效的字符;(3)短标识符不区分大小写;)短标识符不区分大小写;(4)下划线()下划线(_)的前后都必须有英文字母或数字。)的前后都必须有英文字母或数字。一般的,在书写程序时,应将一般的,在书写程序时,应将VHDL的保留字大写或的保留字大写或黑体,设计者自己定义的字符小写,以使得程序便于阅黑体,设计者自己定义的字符小写,以使得程序便于阅读和检查。尽管读和检查。尽管VHDL仿真综合时不区分大小写,但一仿真综合时不区分大小写,但一个优秀的硬件程序设计师应该养成良好的习惯。个优秀的硬件程序设计师应该养成良好的习惯。章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录例:例:合法的标识符:合法的标识符:S_MACHINE,present_state,sig3不合法的标识符:不合法的标识符:present-state,3states,cons_,_now 21A,_fft,and_4,max#2uc,a-b,return章目录章目录第一节第一节第二节第二节第三节第三节第四节第四节总总目录目录

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com