标识符是实体,构造体,常数,变量,信号,端口,子程序或参数等的名称的字符串。标识符是最常用的操作数或标识的名称 。在VHDL语言中有一部分标识符已被保留作为关键字使用,如entity,ENTITY,ARCHITECTURE, Begin,end等,关键字不能作为一般标识符使用。由于VHDL语言不区分大小写,因此像ABC,Abc,ABc,AbC, aBC等都属于同一个标识符。同其它计算机语言一样,VHDL标识符的书写也有规则和要求。下面就VHDL语言标识符的书写规则和使用详细介绍如下。
1. VHDL语言标识符书写规则
- VHDL语言的标识符不区分大小写字母。
ABC,Abc, ABc, AbC, aBC,abc等都是同一个标识符。
- 已经用作关键字的标识符,不能再做一般标识符使用。
如if, IF , iF, If等都是作为程序分支语句的关键字,因此不能再使用这四种的任何一种作为实体,构造体,进程的名称,也不能作为信号或变量名的使用。
- VHDL语言标识符构成
- 有效的字符 :
- 英文字母包括 26 个大小写字母,如 a ,b ,c,x, z A, Y, Z等;
- 数字包括 0~9 ;
- 及下划线 _。
- 规则及要求
- 任何标识符必须以英文字母开头;
- 必须是单一下划线 _ 且其前后都必须有英文字母或数字
- 标识符中的英语字母不分大小写 , 如: Start_123 和 start_123是同一个标识符。
- 扩展标识符,VHDL’93 及以后的标准都支持扩展标识符
- 扩展标识符以反斜杠来界定 可以以数字打头
- 有效的字符 :
如\74LS373\ 及\Hello World\等都是合法的标识符
-
-
- 允许包含图形符号(如回车符 换行符等) 也允许包含空格符
-
如\IRDY#\,\C/BE\ ,\A or B\ 等也都是合法的标识符
-
-
- 两个反斜杠之前允许有多个下划线相邻
-
如\–xyxz-\
-
-
- 扩展标识符要分大小写,如: \_ABC\与\_abc\为不同的标识符。
- 扩展标识符与短标识符不同
- 扩展标识符如果含有一个反斜杠, 则用两个反斜杠来代替它,支持扩展标识符的目的是免受 1987 标准中的短标识符的限制 描述起来更为直观和方便 但是目前仍有许多 VHDL 工具不支持扩展标识符,因此如果使用扩展标识符,应查阅相关EDA工具提供的文档,或直接综合查看是否有错误信息。
-
2. 标识符举例
- 合法的标识符
Decoder_1 , FFT , Sig_N , Not_Ack, State0 Idle等都是合法标识符。
- 非法的标识符
_Decoder_1 – 起始为非英文字母
2FFT – 起始为数字
Sig_#N – 符号 # 不能成为标识符的构成
Not-Ack –短线 符号 "-" 不能作为标识符的构成元素,需使用下划线 "_"替代短线。
RyY_RST_ — 标识符最后一个字符不能是下划线 _,只能是数字或字母。
data_ _BUS — 标识符中不能有双下划线
return — return在VHDL语言中已经被用作关键词
关于扩展标识符的使用,一般在可综合的代码设计中建议使用正常标识符,在testbench的编写中可以使用扩展标识符,特别是在使用宏定义或打印语句中使用扩展标识符有利于字符串的识别。